From e49603ee438eb3307579f10a4bd6b86fac494c8e Mon Sep 17 00:00:00 2001 From: sz Date: Sun, 8 Dec 2024 14:02:32 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B5=B7=E5=BA=95=E5=B0=8F=E7=BA=B5?= =?UTF-8?q?=E9=98=9F=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Contracts/Decision/DecisionStorage.abi | 1 + .../Contracts/Decision/DecisionStorage.bin | 1 + .../Contracts/Decision/DecisionStorage.go | 445 + .../Contracts/Decision/DecisionStorage.sol | 74 + .../Contracts/KeyShare/KVTable.abi | 1 + .../Contracts/KeyShare/KVTable.bin | 0 .../Contracts/KeyShare/KeyShare.abi | 1 + .../Contracts/KeyShare/KeyShare.bin | 1 + .../Contracts/KeyShare/KeyShare.go | 614 ++ .../Contracts/KeyShare/KeyShare.sol | 79 + .../Digital_Hufu/Contracts/KeyShare/Table.abi | 1 + .../Digital_Hufu/Contracts/KeyShare/Table.bin | 0 .../Digital_Hufu/Contracts/KeyShare/Table.sol | 91 + .../Contracts/KeyShare/TableManager.abi | 1 + .../Contracts/KeyShare/TableManager.bin | 0 .../Digital_Hufu/Contracts/README.md | 26 + .../Contracts/source/DecisionStorage.sol | 74 + .../Contracts/source/KeyShare.sol | 79 + .../Digital_Hufu/Contracts/source/Table.sol | 91 + .../Digital_Hufu/Projects/.gitignore | 8 + .../Digital_Hufu/Projects/README.md | 1 + .../Projects/TEE/.config_HW_DEBUG_x64 | 0 .../Digital_Hufu/Projects/TEE/.cproject | 216 + .../Digital_Hufu/Projects/TEE/.project | 28 + .../TEE/.settings/language.settings.xml | 73 + .../TEE/Enclave/Edger8rSyntax/Arrays.cpp | 113 + .../TEE/Enclave/Edger8rSyntax/Arrays.edl | 98 + .../TEE/Enclave/Edger8rSyntax/Arrays.o | Bin 0 -> 8112 bytes .../TEE/Enclave/Edger8rSyntax/Functions.cpp | 62 + .../TEE/Enclave/Edger8rSyntax/Functions.edl | 75 + .../TEE/Enclave/Edger8rSyntax/Functions.o | Bin 0 -> 6928 bytes .../TEE/Enclave/Edger8rSyntax/Pointers.cpp | 203 + .../TEE/Enclave/Edger8rSyntax/Pointers.edl | 180 + .../TEE/Enclave/Edger8rSyntax/Pointers.o | Bin 0 -> 15776 bytes .../TEE/Enclave/Edger8rSyntax/Types.cpp | 155 + .../TEE/Enclave/Edger8rSyntax/Types.edl | 87 + .../TEE/Enclave/Edger8rSyntax/Types.o | Bin 0 -> 27672 bytes .../Projects/TEE/Enclave/Enclave.config.xml | 12 + .../Projects/TEE/Enclave/Enclave.cpp | 866 ++ .../Projects/TEE/Enclave/Enclave.edl | 78 + .../Projects/TEE/Enclave/Enclave.h | 48 + .../Projects/TEE/Enclave/Enclave.lds | 11 + .../Projects/TEE/Enclave/Enclave.o | Bin 0 -> 283416 bytes .../TEE/Enclave/Enclave_private_test.pem | 39 + .../Projects/TEE/Enclave/Enclave_public.pem | 11 + .../Projects/TEE/Enclave/Enclave_t.c | 2691 ++++++ .../Projects/TEE/Enclave/Enclave_t.h | 99 + .../Projects/TEE/Enclave/Enclave_t.o | Bin 0 -> 82072 bytes .../TEE/Enclave/TrustedLibrary/Libc.cpp | 59 + .../TEE/Enclave/TrustedLibrary/Libc.edl | 55 + .../TEE/Enclave/TrustedLibrary/Libc.o | Bin 0 -> 7728 bytes .../TEE/Enclave/TrustedLibrary/Libcxx.cpp | 89 + .../TEE/Enclave/TrustedLibrary/Libcxx.edl | 52 + .../TEE/Enclave/TrustedLibrary/Libcxx.o | Bin 0 -> 148472 bytes .../TEE/Enclave/TrustedLibrary/Thread.cpp | 104 + .../TEE/Enclave/TrustedLibrary/Thread.edl | 51 + .../TEE/Enclave/TrustedLibrary/Thread.o | Bin 0 -> 8472 bytes .../Projects/TEE/Enclave/config.01.xml | 28 + .../Projects/TEE/Enclave/config.02.xml | 25 + .../Projects/TEE/Enclave/config.03.xml | 27 + .../Projects/TEE/Enclave/config.04.xml | 23 + .../Projects/TEE/Enclave/config.05.xml | 20 + .../Projects/TEE/Enclave/enclave_keys.txt | 8 + .../Projects/TEE/Include/user_types.h | 40 + .../Digital_Hufu/Projects/TEE/Makefile | 271 + .../Digital_Hufu/Projects/TEE/README.txt | 103 + .../Digital_Hufu/Projects/TEE/app | Bin 0 -> 7384336 bytes .../Projects/TEE/common/shared_macros.h | 33 + .../Projects/TEE/enclave.signed.so | Bin 0 -> 2656544 bytes .../Digital_Hufu/Projects/TEE/enclave.so | Bin 0 -> 2656544 bytes .../Digital_Hufu/Projects/TEE/nohup.out | 529 ++ .../Digital_Hufu/Projects/TEE/run.sh | 6 + .../Digital_Hufu/Projects/config/config.go | 141 + .../Digital_Hufu/Projects/config/config.yaml | 26 + .../contract/Decision/DecisionStorage.abi | 1 + .../contract/Decision/DecisionStorage.bin | 1 + .../contract/Decision/DecisionStorage.go | 445 + .../contract/Decision/DecisionStorage.sol | 74 + .../Projects/contract/KeyShare/KVTable.abi | 1 + .../Projects/contract/KeyShare/KVTable.bin | 0 .../Projects/contract/KeyShare/KeyShare.abi | 1 + .../Projects/contract/KeyShare/KeyShare.bin | 1 + .../Projects/contract/KeyShare/KeyShare.go | 614 ++ .../Projects/contract/KeyShare/KeyShare.sol | 79 + .../Projects/contract/KeyShare/Table.abi | 1 + .../Projects/contract/KeyShare/Table.bin | 0 .../Projects/contract/KeyShare/Table.sol | 91 + .../contract/KeyShare/TableManager.abi | 1 + .../contract/KeyShare/TableManager.bin | 0 .../Digital_Hufu/Projects/contract/README.md | 26 + .../contract/source/DecisionStorage.sol | 74 + .../Projects/contract/source/KeyShare.sol | 79 + .../Projects/contract/source/Table.sol | 91 + .../Digital_Hufu/Projects/controller/pool.go | 97 + .../Projects/controller/regulator.go | 132 + .../Projects/controller/tee_controller.go | 269 + .../Projects/controller/transaction.go | 560 ++ .../Projects/controller/wallet.go | 130 + .../Digital_Hufu/Projects/db.md | 143 + .../Digital_Hufu/Projects/docs | 1 + .../Digital_Hufu/Projects/errors/errors.go | 31 + .../wallet-12-20241115020658-success.txt | 8 + .../wallet-12-20241115071644-success.txt | 8 + .../Digital_Hufu/Projects/go.mod | 71 + .../Digital_Hufu/Projects/go.sum | 251 + .../Digital_Hufu/Projects/handler/common.go | 44 + .../Digital_Hufu/Projects/handler/invoice.go | 208 + .../Projects/handler/regulator.go | 225 + .../Digital_Hufu/Projects/handler/tee.go | 289 + .../Projects/handler/transaction.go | 407 + .../Digital_Hufu/Projects/handler/wallet.go | 144 + .../Digital_Hufu/Projects/main.go | 38 + .../Digital_Hufu/Projects/model/common.go | 36 + .../Digital_Hufu/Projects/model/db.go | 45 + .../Projects/model/transaction.go | 52 + .../Digital_Hufu/Projects/model/wallet.go | 19 + .../Digital_Hufu/Projects/router/router.go | 80 + .../Digital_Hufu/Projects/script | 1 + .../Digital_Hufu/Projects/server/.gitignore | 2 + .../Digital_Hufu/Projects/server/Dockerfile | 31 + .../Digital_Hufu/Projects/server/README.md | 54 + .../Projects/server/api/v1/enter.go | 13 + .../Projects/server/api/v1/example/enter.go | 13 + .../api/v1/example/exa_breakpoint_continue.go | 150 + .../server/api/v1/example/exa_customer.go | 176 + .../v1/example/exa_file_upload_download.go | 133 + .../server/api/v1/system/auto_code_history.go | 115 + .../server/api/v1/system/auto_code_package.go | 100 + .../server/api/v1/system/auto_code_plugin.go | 119 + .../api/v1/system/auto_code_template.go | 108 + .../Projects/server/api/v1/system/enter.go | 47 + .../Projects/server/api/v1/system/sys_api.go | 323 + .../server/api/v1/system/sys_authority.go | 202 + .../server/api/v1/system/sys_authority_btn.go | 80 + .../server/api/v1/system/sys_auto_code.go | 155 + .../server/api/v1/system/sys_captcha.go | 70 + .../server/api/v1/system/sys_casbin.go | 69 + .../server/api/v1/system/sys_dictionary.go | 129 + .../api/v1/system/sys_dictionary_detail.go | 148 + .../api/v1/system/sys_export_template.go | 258 + .../server/api/v1/system/sys_initdb.go | 64 + .../server/api/v1/system/sys_jwt_blacklist.go | 33 + .../Projects/server/api/v1/system/sys_menu.go | 265 + .../api/v1/system/sys_operation_record.go | 149 + .../server/api/v1/system/sys_params.go | 171 + .../server/api/v1/system/sys_system.go | 88 + .../Projects/server/api/v1/system/sys_user.go | 484 + .../Projects/server/config.docker.yaml | 220 + .../Digital_Hufu/Projects/server/config.yaml | 233 + .../Projects/server/config/auto_code.go | 22 + .../Projects/server/config/captcha.go | 9 + .../Projects/server/config/config.go | 36 + .../Projects/server/config/cors.go | 14 + .../Projects/server/config/db_list.go | 52 + .../Projects/server/config/disk.go | 9 + .../Projects/server/config/email.go | 11 + .../Projects/server/config/excel.go | 5 + .../Projects/server/config/gorm_mssql.go | 10 + .../Projects/server/config/gorm_mysql.go | 9 + .../Projects/server/config/gorm_oracle.go | 10 + .../Projects/server/config/gorm_pgsql.go | 17 + .../Projects/server/config/gorm_sqlite.go | 13 + .../Projects/server/config/jwt.go | 8 + .../Projects/server/config/mongo.go | 41 + .../Projects/server/config/oss_aliyun.go | 10 + .../Projects/server/config/oss_aws.go | 13 + .../Projects/server/config/oss_cloudflare.go | 10 + .../Projects/server/config/oss_huawei.go | 9 + .../Projects/server/config/oss_local.go | 6 + .../Projects/server/config/oss_qiniu.go | 11 + .../Projects/server/config/oss_tencent.go | 10 + .../Projects/server/config/redis.go | 10 + .../Projects/server/config/system.go | 14 + .../Projects/server/config/zap.go | 71 + .../Projects/server/core/internal/constant.go | 9 + .../Projects/server/core/internal/cutter.go | 121 + .../Projects/server/core/internal/zap_core.go | 68 + .../Projects/server/core/server.go | 45 + .../Projects/server/core/server_other.go | 19 + .../Projects/server/core/server_win.go | 21 + .../Projects/server/core/viper.go | 71 + .../Digital_Hufu/Projects/server/core/zap.go | 32 + .../Digital_Hufu/Projects/server/docs/docs.go | 8104 +++++++++++++++++ .../Projects/server/docs/swagger.json | 8078 ++++++++++++++++ .../Projects/server/docs/swagger.yaml | 4927 ++++++++++ .../Projects/server/global/global.go | 66 + .../Projects/server/global/model.go | 14 + .../Digital_Hufu/Projects/server/go.mod | 180 + .../Digital_Hufu/Projects/server/go.sum | 882 ++ .../Projects/server/initialize/db_list.go | 36 + .../server/initialize/ensure_tables.go | 106 + .../Projects/server/initialize/gorm.go | 77 + .../Projects/server/initialize/gorm_biz.go | 14 + .../Projects/server/initialize/gorm_mssql.go | 59 + .../Projects/server/initialize/gorm_mysql.go | 55 + .../Projects/server/initialize/gorm_oracle.go | 52 + .../Projects/server/initialize/gorm_pgsql.go | 50 + .../Projects/server/initialize/gorm_sqlite.go | 42 + .../server/initialize/internal/gorm.go | 48 + .../initialize/internal/gorm_logger_writer.go | 37 + .../server/initialize/internal/mongo.go | 29 + .../Projects/server/initialize/mongo.go | 151 + .../Projects/server/initialize/other.go | 32 + .../Projects/server/initialize/plugin.go | 15 + .../server/initialize/plugin_biz_v1.go | 34 + .../server/initialize/plugin_biz_v2.go | 16 + .../Projects/server/initialize/redis.go | 59 + .../server/initialize/register_init.go | 10 + .../Projects/server/initialize/router.go | 110 + .../Projects/server/initialize/router_biz.go | 16 + .../Projects/server/initialize/timer.go | 37 + .../Projects/server/initialize/validator.go | 22 + .../Digital_Hufu/Projects/server/main.go | 38 + .../Projects/server/middleware/casbin_rbac.go | 36 + .../Projects/server/middleware/cors.go | 73 + .../Projects/server/middleware/email.go | 60 + .../Projects/server/middleware/error.go | 61 + .../Projects/server/middleware/jwt.go | 81 + .../Projects/server/middleware/limit_ip.go | 92 + .../Projects/server/middleware/loadtls.go | 27 + .../Projects/server/middleware/logger.go | 89 + .../Projects/server/middleware/operation.go | 133 + .../Projects/server/model/common/basetypes.go | 36 + .../Projects/server/model/common/clearDB.go | 7 + .../server/model/common/request/common.go | 48 + .../server/model/common/response/common.go | 8 + .../server/model/common/response/response.go | 63 + .../model/example/exa_breakpoint_continue.go | 24 + .../server/model/example/exa_customer.go | 15 + .../model/example/exa_file_upload_download.go | 17 + .../response/exa_breakpoint_continue.go | 11 + .../model/example/response/exa_customer.go | 7 + .../response/exa_file_upload_download.go | 7 + .../server/model/system/request/jwt.go | 21 + .../server/model/system/request/sys_api.go | 14 + .../model/system/request/sys_authority_btn.go | 7 + .../model/system/request/sys_auto_code.go | 267 + .../system/request/sys_auto_code_package.go | 27 + .../model/system/request/sys_auto_history.go | 56 + .../server/model/system/request/sys_casbin.go | 27 + .../system/request/sys_dictionary_detail.go | 11 + .../system/request/sys_export_template.go | 14 + .../server/model/system/request/sys_init.go | 123 + .../server/model/system/request/sys_menu.go | 27 + .../system/request/sys_operation_record.go | 11 + .../server/model/system/request/sys_params.go | 14 + .../server/model/system/request/sys_user.go | 65 + .../server/model/system/response/sys_api.go | 18 + .../model/system/response/sys_authority.go | 12 + .../system/response/sys_authority_btn.go | 5 + .../model/system/response/sys_auto_code.go | 17 + .../model/system/response/sys_captcha.go | 8 + .../model/system/response/sys_casbin.go | 9 + .../server/model/system/response/sys_menu.go | 15 + .../model/system/response/sys_system.go | 7 + .../server/model/system/response/sys_user.go | 15 + .../Projects/server/model/system/sys_api.go | 28 + .../server/model/system/sys_authority.go | 23 + .../server/model/system/sys_authority_btn.go | 8 + .../server/model/system/sys_authority_menu.go | 19 + .../model/system/sys_auto_code_history.go | 67 + .../model/system/sys_auto_code_package.go | 17 + .../server/model/system/sys_base_menu.go | 42 + .../server/model/system/sys_dictionary.go | 20 + .../model/system/sys_dictionary_detail.go | 21 + .../model/system/sys_export_template.go | 44 + .../server/model/system/sys_jwt_blacklist.go | 10 + .../server/model/system/sys_menu_btn.go | 10 + .../model/system/sys_operation_record.go | 24 + .../server/model/system/sys_params.go | 20 + .../server/model/system/sys_system.go | 10 + .../Projects/server/model/system/sys_user.go | 62 + .../server/model/system/sys_user_authority.go | 11 + .../server/plugin/announcement/api/enter.go | 10 + .../server/plugin/announcement/api/info.go | 183 + .../plugin/announcement/config/config.go | 4 + .../server/plugin/announcement/gen/gen.go | 17 + .../plugin/announcement/initialize/api.go | 49 + .../plugin/announcement/initialize/gorm.go | 20 + .../plugin/announcement/initialize/menu.go | 22 + .../plugin/announcement/initialize/router.go | 15 + .../plugin/announcement/initialize/viper.go | 17 + .../server/plugin/announcement/model/info.go | 20 + .../plugin/announcement/model/request/info.go | 12 + .../server/plugin/announcement/plugin.go | 26 + .../plugin/announcement/plugin/plugin.go | 5 + .../plugin/announcement/router/enter.go | 10 + .../server/plugin/announcement/router/info.go | 31 + .../plugin/announcement/service/enter.go | 5 + .../plugin/announcement/service/info.go | 78 + .../server/plugin/customerservice/README.md | 63 + .../server/plugin/customerservice/api/api.go | 396 + .../plugin/customerservice/api/enter.go | 8 + .../plugin/customerservice/api/service.go | 484 + .../plugin/customerservice/config/config.go | 1 + .../plugin/customerservice/global/global.go | 1 + .../server/plugin/customerservice/main.go | 206 + .../plugin/customerservice/middleware/jwt.go | 45 + .../plugin/customerservice/model/model.go | 25 + .../customerservice/model/sysService.go | 18 + .../customerservice/model/sysServiceMsg.go | 18 + .../customerservice/model/sysServiceRecord.go | 21 + .../customerservice/model/sysServiceReply.go | 16 + .../customerservice/model/sysServiceScript.go | 15 + .../customerservice/model/sysTestUser.go | 11 + .../plugin/customerservice/router/enter.go | 7 + .../plugin/customerservice/router/router.go | 47 + .../plugin/customerservice/service/enter.go | 7 + .../plugin/customerservice/service/service.go | 129 + .../plugin/customerservice/service/ws/ws.go | 259 + .../plugin/customerservice/tools/jwt.go | 54 + .../plugin/customerservice/tools/limits.go | 77 + .../customerservice/tools/timeformat.go | 20 + .../Projects/server/plugin/email/README.MD | 75 + .../Projects/server/plugin/email/api/enter.go | 7 + .../server/plugin/email/api/sys_email.go | 53 + .../server/plugin/email/config/email.go | 11 + .../server/plugin/email/global/gloabl.go | 5 + .../Projects/server/plugin/email/main.go | 28 + .../plugin/email/model/response/email.go | 7 + .../server/plugin/email/router/enter.go | 7 + .../server/plugin/email/router/sys_email.go | 19 + .../server/plugin/email/service/enter.go | 7 + .../server/plugin/email/service/sys_email.go | 32 + .../server/plugin/email/utils/email.go | 82 + .../server/plugin/plugin-tool/utils/check.go | 50 + .../server/resource/function/api.go.tpl | 40 + .../server/resource/function/api.js.tpl | 32 + .../server/resource/function/server.go.tpl | 25 + .../server/resource/package/readme.txt.tpl | 7 + .../resource/package/server/api/api.go.tpl | 212 + .../resource/package/server/api/enter.go.tpl | 4 + .../package/server/model/model.go.tpl | 60 + .../server/model/request/request.go.tpl | 38 + .../package/server/router/enter.go.tpl | 4 + .../package/server/router/router.go.tpl | 42 + .../package/server/service/enter.go.tpl | 4 + .../package/server/service/service.go.tpl | 168 + .../resource/package/web/api/api.js.tpl | 130 + .../resource/package/web/view/form.vue.tpl | 250 + .../resource/package/web/view/table.vue.tpl | 909 ++ .../plugin/server/api/api.go.template | 207 + .../plugin/server/api/enter.go.template | 6 + .../plugin/server/config/config.go.template | 4 + .../plugin/server/gen/gen.go.template | 18 + .../plugin/server/initialize/api.go.template | 12 + .../plugin/server/initialize/gorm.go.template | 18 + .../plugin/server/initialize/menu.go.template | 12 + .../server/initialize/router.go.template | 14 + .../server/initialize/viper.go.template | 17 + .../plugin/server/model/model.go.template | 59 + .../server/model/request/request.go.template | 37 + .../resource/plugin/server/plugin.go.template | 26 + .../plugin/server/plugin/plugin.go.template | 5 + .../plugin/server/router/enter.go.template | 6 + .../plugin/server/router/router.go.template | 46 + .../plugin/server/service/enter.go.template | 7 + .../plugin/server/service/service.go.template | 168 + .../resource/plugin/web/api/api.js.template | 127 + .../plugin/web/form/form.vue.template | 251 + .../plugin/web/view/view.vue.template | 915 ++ .../Projects/server/router/enter.go | 13 + .../Projects/server/router/example/enter.go | 15 + .../server/router/example/exa_customer.go | 22 + .../example/exa_file_upload_and_download.go | 22 + .../Projects/server/router/system/enter.go | 44 + .../Projects/server/router/system/sys_api.go | 33 + .../server/router/system/sys_authority.go | 23 + .../server/router/system/sys_authority_btn.go | 19 + .../server/router/system/sys_auto_code.go | 40 + .../router/system/sys_auto_code_history.go | 17 + .../Projects/server/router/system/sys_base.go | 16 + .../server/router/system/sys_casbin.go | 19 + .../server/router/system/sys_dictionary.go | 22 + .../router/system/sys_dictionary_detail.go | 22 + .../router/system/sys_export_template.go | 28 + .../server/router/system/sys_initdb.go | 15 + .../Projects/server/router/system/sys_jwt.go | 14 + .../Projects/server/router/system/sys_menu.go | 27 + .../router/system/sys_operation_record.go | 19 + .../server/router/system/sys_params.go | 25 + .../server/router/system/sys_system.go | 22 + .../Projects/server/router/system/sys_user.go | 28 + .../Projects/server/service/enter.go | 13 + .../Projects/server/service/example/enter.go | 6 + .../example/exa_breakpoint_continue.go | 71 + .../server/service/example/exa_customer.go | 87 + .../example/exa_file_upload_download.go | 118 + .../service/system/auto_code_history.go | 217 + .../service/system/auto_code_package.go | 584 ++ .../service/system/auto_code_package_test.go | 105 + .../server/service/system/auto_code_plugin.go | 249 + .../service/system/auto_code_template.go | 409 + .../service/system/auto_code_template_test.go | 84 + .../Projects/server/service/system/enter.go | 24 + .../server/service/system/jwt_black_list.go | 84 + .../Projects/server/service/system/sys_api.go | 325 + .../server/service/system/sys_authority.go | 327 + .../service/system/sys_authority_btn.go | 60 + .../service/system/sys_auto_code_interface.go | 55 + .../service/system/sys_auto_code_mssql.go | 83 + .../service/system/sys_auto_code_mysql.go | 83 + .../service/system/sys_auto_code_oracle.go | 72 + .../service/system/sys_auto_code_pgsql.go | 135 + .../service/system/sys_auto_code_sqlite.go | 84 + .../server/service/system/sys_base_menu.go | 146 + .../server/service/system/sys_casbin.go | 221 + .../server/service/system/sys_dictionary.go | 112 + .../service/system/sys_dictionary_detail.go | 118 + .../service/system/sys_export_template.go | 421 + .../server/service/system/sys_initdb.go | 189 + .../server/service/system/sys_initdb_mssql.go | 92 + .../server/service/system/sys_initdb_mysql.go | 97 + .../server/service/system/sys_initdb_pgsql.go | 96 + .../service/system/sys_initdb_sqlite.go | 88 + .../server/service/system/sys_menu.go | 289 + .../service/system/sys_operation_record.go | 88 + .../server/service/system/sys_params.go | 82 + .../server/service/system/sys_system.go | 62 + .../server/service/system/sys_user.go | 317 + .../source/example/file_upload_download.go | 65 + .../Projects/server/source/system/api.go | 203 + .../server/source/system/api_ignore.go | 77 + .../server/source/system/authorities_menus.go | 83 + .../server/source/system/authority.go | 88 + .../Projects/server/source/system/casbin.go | 289 + .../server/source/system/dictionary.go | 71 + .../server/source/system/dictionary_detail.go | 121 + .../server/source/system/excel_template.go | 75 + .../Projects/server/source/system/menu.go | 102 + .../Projects/server/source/system/user.go | 107 + .../Projects/server/task/clearTable.go | 51 + .../Projects/server/utils/ast/ast.go | 231 + .../server/utils/ast/ast_auto_enter.go | 47 + .../Projects/server/utils/ast/ast_enter.go | 181 + .../Projects/server/utils/ast/ast_gorm.go | 166 + .../server/utils/ast/ast_init_test.go | 11 + .../Projects/server/utils/ast/ast_rollback.go | 173 + .../Projects/server/utils/ast/ast_router.go | 135 + .../Projects/server/utils/ast/ast_test.go | 32 + .../Projects/server/utils/ast/ast_type.go | 53 + .../Projects/server/utils/ast/import.go | 94 + .../Projects/server/utils/ast/interfaces.go | 17 + .../server/utils/ast/interfaces_base.go | 76 + .../server/utils/ast/package_enter.go | 85 + .../server/utils/ast/package_enter_test.go | 154 + .../utils/ast/package_initialize_gorm.go | 196 + .../utils/ast/package_initialize_gorm_test.go | 171 + .../utils/ast/package_initialize_router.go | 150 + .../ast/package_initialize_router_test.go | 158 + .../server/utils/ast/package_module_enter.go | 180 + .../utils/ast/package_module_enter_test.go | 185 + .../Projects/server/utils/ast/plugin_enter.go | 167 + .../server/utils/ast/plugin_enter_test.go | 200 + .../Projects/server/utils/ast/plugin_gen.go | 189 + .../server/utils/ast/plugin_gen_test.go | 127 + .../utils/ast/plugin_initialize_gorm.go | 111 + .../utils/ast/plugin_initialize_gorm_test.go | 138 + .../utils/ast/plugin_initialize_router.go | 124 + .../ast/plugin_initialize_router_test.go | 155 + .../server/utils/ast/plugin_initialize_v2.go | 52 + .../utils/ast/plugin_initialize_v2_test.go | 100 + .../server/utils/breakpoint_continue.go | 112 + .../Projects/server/utils/captcha/redis.go | 60 + .../Projects/server/utils/claims.go | 150 + .../Projects/server/utils/directory.go | 124 + .../Projects/server/utils/fmt_plus.go | 82 + .../Projects/server/utils/hash.go | 31 + .../Projects/server/utils/human_duration.go | 29 + .../server/utils/human_duration_test.go | 49 + .../Projects/server/utils/json.go | 34 + .../Projects/server/utils/json_test.go | 53 + .../Digital_Hufu/Projects/server/utils/jwt.go | 88 + .../Projects/server/utils/plugin/plugin.go | 18 + .../Projects/server/utils/plugin/v2/plugin.go | 11 + .../Projects/server/utils/reload.go | 18 + .../Projects/server/utils/request/http.go | 62 + .../Projects/server/utils/server.go | 126 + .../Projects/server/utils/timer/timed_task.go | 229 + .../server/utils/timer/timed_task_test.go | 72 + .../server/utils/upload/aliyun_oss.go | 75 + .../Projects/server/utils/upload/aws_s3.go | 97 + .../server/utils/upload/cloudflare_r2.go | 85 + .../Projects/server/utils/upload/local.go | 109 + .../Projects/server/utils/upload/obs.go | 69 + .../Projects/server/utils/upload/qiniu.go | 96 + .../server/utils/upload/tencent_cos.go | 61 + .../Projects/server/utils/upload/upload.go | 39 + .../Projects/server/utils/validator.go | 294 + .../Projects/server/utils/validator_test.go | 37 + .../Projects/server/utils/verify.go | 19 + .../Digital_Hufu/Projects/server/utils/zip.go | 53 + .../Digital_Hufu/Projects/supervisor/LLM.go | 5 + .../Digital_Hufu/Projects/supervisor/jury.go | 513 ++ .../Projects/supervisor/palyload.json | 171 + .../Digital_Hufu/Projects/utils/crypto.go | 97 + .../Digital_Hufu/Projects/utils/utils.go | 297 + .../web/.docker-compose/nginx/conf.d/my.conf | 26 + .../.docker-compose/nginx/conf.d/nginx.conf | 32 + .../Digital_Hufu/Projects/web/.dockerignore | 1 + .../Projects/web/.env.development | 11 + .../Digital_Hufu/Projects/web/.env.production | 7 + .../Digital_Hufu/Projects/web/.eslintignore | 4 + .../Digital_Hufu/Projects/web/.eslintrc.js | 17 + .../Digital_Hufu/Projects/web/.gitignore | 5 + .../Digital_Hufu/Projects/web/README.md | 26 + .../Digital_Hufu/Projects/web/babel.config.js | 8 + .../Digital_Hufu/Projects/web/index.html | 102 + .../Digital_Hufu/Projects/web/jsconfig.json | 10 + .../Digital_Hufu/Projects/web/limit.js | 37 + .../Digital_Hufu/Projects/web/openDocument.js | 15 + .../Digital_Hufu/Projects/web/package.json | 71 + .../Projects/web/postcss.config.js | 6 + .../Projects/web/public/favicon.ico | Bin 0 -> 5493 bytes .../Projects/web/public/favicon2.ico | Bin 0 -> 4286 bytes .../Digital_Hufu/Projects/web/src/App.vue | 41 + .../Digital_Hufu/Projects/web/src/api/api.js | 179 + .../Projects/web/src/api/authority.js | 85 + .../Projects/web/src/api/authorityBtn.js | 27 + .../Projects/web/src/api/autoCode.js | 189 + .../Projects/web/src/api/breakpoint.js | 43 + .../Projects/web/src/api/casbin.js | 32 + .../Projects/web/src/api/customer.js | 80 + .../Projects/web/src/api/email.js | 14 + .../Projects/web/src/api/exportTemplate.js | 97 + .../web/src/api/fileUploadAndDownload.js | 57 + .../Projects/web/src/api/github.js | 17 + .../web/src/api/hufu/abnormalTransactions.js | 110 + .../Projects/web/src/api/hufu/invoices.js | 110 + .../Projects/web/src/api/hufu/wallet.js | 110 + .../Projects/web/src/api/initdb.js | 27 + .../Digital_Hufu/Projects/web/src/api/jwt.js | 14 + .../Digital_Hufu/Projects/web/src/api/menu.js | 113 + .../Projects/web/src/api/sysDictionary.js | 80 + .../web/src/api/sysDictionaryDetail.js | 80 + .../web/src/api/sysOperationRecord.js | 48 + .../Projects/web/src/api/sysParams.js | 111 + .../Projects/web/src/api/system.js | 56 + .../Digital_Hufu/Projects/web/src/api/user.js | 181 + .../src/components/arrayCtrl/arrayCtrl.vue | 68 + .../src/components/bottomInfo/bottomInfo.vue | 27 + .../web/src/components/charts/index.vue | 56 + .../web/src/components/commandMenu/index.vue | 197 + .../web/src/components/customPic/index.vue | 104 + .../components/exportExcel/exportExcel.vue | 58 + .../components/exportExcel/exportTemplate.vue | 28 + .../components/exportExcel/importExcel.vue | 42 + .../web/src/components/office/docx.vue | 35 + .../web/src/components/office/excel.vue | 33 + .../web/src/components/office/index.vue | 53 + .../web/src/components/office/pdf.vue | 36 + .../web/src/components/richtext/rich-edit.vue | 90 + .../web/src/components/richtext/rich-view.vue | 62 + .../src/components/selectFile/selectFile.vue | 87 + .../selectImage/selectComponent.vue | 65 + .../components/selectImage/selectImage.vue | 276 + .../web/src/components/svgIcon/svgIcon.vue | 39 + .../web/src/components/upload/common.vue | 76 + .../web/src/components/upload/image.vue | 92 + .../src/components/warningBar/warningBar.vue | 33 + .../Projects/web/src/core/config.js | 20 + .../Projects/web/src/core/gin-vue-admin.js | 16 + .../Projects/web/src/core/global.js | 53 + .../Projects/web/src/directive/auth.js | 41 + .../Projects/web/src/hooks/charts.js | 19 + .../Projects/web/src/hooks/responsive.js | 35 + .../web/src/hooks/use-windows-resize.js | 23 + .../Digital_Hufu/Projects/web/src/main.js | 29 + .../Projects/web/src/pathInfo.json | 54 + .../Projects/web/src/permission.js | 139 + .../Projects/web/src/pinia/index.js | 13 + .../Projects/web/src/pinia/modules/app.js | 146 + .../web/src/pinia/modules/dictionary.js | 40 + .../Projects/web/src/pinia/modules/router.js | 147 + .../Projects/web/src/pinia/modules/user.js | 143 + .../web/src/plugin/announcement/api/info.js | 110 + .../web/src/plugin/announcement/form/info.vue | 121 + .../web/src/plugin/announcement/view/info.vue | 418 + .../web/src/plugin/email/api/email.js | 30 + .../web/src/plugin/email/view/index.vue | 63 + .../Projects/web/src/router/index.js | 31 + .../Projects/web/src/style/element/index.scss | 24 + .../web/src/style/element_visiable.scss | 137 + .../Projects/web/src/style/iconfont.css | 47 + .../Projects/web/src/style/main.scss | 53 + .../Projects/web/src/style/reset.scss | 508 ++ .../Projects/web/src/utils/asyncRouter.js | 32 + .../Projects/web/src/utils/btnAuth.js | 6 + .../Projects/web/src/utils/bus.js | 6 + .../Projects/web/src/utils/closeThisPage.js | 5 + .../Projects/web/src/utils/date.js | 30 + .../Projects/web/src/utils/dictionary.js | 35 + .../Projects/web/src/utils/doc.js | 3 + .../Projects/web/src/utils/downloadImg.js | 19 + .../Projects/web/src/utils/event.js | 29 + .../Projects/web/src/utils/fmtRouterTitle.js | 13 + .../Projects/web/src/utils/format.js | 139 + .../Projects/web/src/utils/image.js | 113 + .../Projects/web/src/utils/page.js | 9 + .../Projects/web/src/utils/request.js | 156 + .../Projects/web/src/utils/stringFun.js | 29 + .../Projects/web/src/view/about/index.vue | 198 + .../src/view/dashboard/components/banner.vue | 40 + .../src/view/dashboard/components/card.vue | 46 + .../components/charts-content-numbers.vue | 183 + .../components/charts-people-numbers.vue | 141 + .../src/view/dashboard/components/charts.vue | 58 + .../src/view/dashboard/components/index.js | 19 + .../src/view/dashboard/components/notice.vue | 78 + .../view/dashboard/components/pluginTable.vue | 63 + .../view/dashboard/components/quickLinks.vue | 91 + .../src/view/dashboard/components/table.vue | 49 + .../src/view/dashboard/components/wiki.vue | 42 + .../Projects/web/src/view/dashboard/index.vue | 34 + .../Projects/web/src/view/error/index.vue | 28 + .../Projects/web/src/view/error/reload.vue | 14 + .../view/example/breakpoint/breakpoint.vue | 295 + .../src/view/example/customer/customer.vue | 235 + .../Projects/web/src/view/example/index.vue | 22 + .../web/src/view/example/upload/upload.vue | 304 + .../abnormalTransactions.vue | 443 + .../abnormalTransactionsForm.vue | 109 + .../Projects/web/src/view/hufu/index.vue | 5 + .../web/src/view/hufu/invoices/invoices.vue | 491 + .../src/view/hufu/invoices/invoicesForm.vue | 149 + .../web/src/view/hufu/merchant/chart.vue | 147 + .../web/src/view/hufu/merchant/index.vue | 400 + .../web/src/view/hufu/regulator/getTx.vue | 362 + .../web/src/view/hufu/regulator/keys.vue | 447 + .../web/src/view/hufu/regulator/ops.vue | 143 + .../Projects/web/src/view/hufu/user/chart.vue | 136 + .../web/src/view/hufu/user/encrypted.vue | 612 ++ .../Projects/web/src/view/hufu/user/tx.vue | 205 + .../web/src/view/hufu/user/wallet.vue | 466 + .../Projects/web/src/view/init/index.vue | 395 + .../aside/asideComponent/asyncSubmenu.vue | 67 + .../layout/aside/asideComponent/index.vue | 48 + .../layout/aside/asideComponent/menuItem.vue | 47 + .../src/view/layout/aside/combinationMode.vue | 138 + .../web/src/view/layout/aside/headMode.vue | 91 + .../web/src/view/layout/aside/index.vue | 25 + .../web/src/view/layout/aside/normalMode.vue | 105 + .../web/src/view/layout/header/index.vue | 153 + .../web/src/view/layout/header/tools.vue | 181 + .../Projects/web/src/view/layout/index.vue | 106 + .../web/src/view/layout/screenfull/index.vue | 69 + .../web/src/view/layout/search/search.vue | 104 + .../web/src/view/layout/setting/index.vue | 200 + .../web/src/view/layout/tabs/index.vue | 413 + .../Projects/web/src/view/login/index.vue | 379 + .../Projects/web/src/view/person/person.vue | 507 ++ .../Projects/web/src/view/routerHolder.vue | 25 + .../web/src/view/superAdmin/api/api.vue | 891 ++ .../view/superAdmin/authority/authority.vue | 457 + .../superAdmin/authority/components/apis.vue | 173 + .../superAdmin/authority/components/datas.vue | 144 + .../superAdmin/authority/components/menus.vue | 248 + .../superAdmin/dictionary/sysDictionary.vue | 215 + .../dictionary/sysDictionaryDetail.vue | 362 + .../web/src/view/superAdmin/index.vue | 23 + .../menu/components/components-cascader.vue | 124 + .../web/src/view/superAdmin/menu/icon.vue | 1184 +++ .../web/src/view/superAdmin/menu/menu.vue | 808 ++ .../operation/sysOperationRecord.vue | 325 + .../src/view/superAdmin/params/sysParams.vue | 453 + .../web/src/view/superAdmin/user/user.vue | 559 ++ .../Projects/web/src/view/system/state.vue | 251 + .../autoCode/component/fieldDialog.vue | 492 + .../autoCode/component/previewCodeDialg.vue | 92 + .../src/view/systemTools/autoCode/index.vue | 1454 +++ .../view/systemTools/autoCodeAdmin/index.vue | 398 + .../src/view/systemTools/autoPkg/autoPkg.vue | 254 + .../exportTemplate/exportTemplate.vue | 963 ++ .../src/view/systemTools/formCreate/index.vue | 20 + .../web/src/view/systemTools/index.vue | 23 + .../view/systemTools/installPlugin/index.vue | 39 + .../src/view/systemTools/pubPlug/pubPlug.vue | 234 + .../src/view/systemTools/system/system.vue | 823 ++ .../Projects/web/tailwind.config.js | 30 + .../Digital_Hufu/Projects/web/vite.config.js | 103 + .../web/vitePlugin/componentName/index.js | 73 + .../Projects/web/vitePlugin/secret/index.js | 6 + 682 files changed, 92645 insertions(+) create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/Decision/DecisionStorage.abi create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/Decision/DecisionStorage.bin create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/Decision/DecisionStorage.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/Decision/DecisionStorage.sol create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KVTable.abi create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KVTable.bin create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KeyShare.abi create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KeyShare.bin create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KeyShare.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KeyShare.sol create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/Table.abi create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/Table.bin create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/Table.sol create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/TableManager.abi create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/TableManager.bin create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/README.md create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/source/DecisionStorage.sol create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/source/KeyShare.sol create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/source/Table.sol create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/.gitignore create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/README.md create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/.config_HW_DEBUG_x64 create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/.cproject create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/.project create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/.settings/language.settings.xml create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Arrays.cpp create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Arrays.edl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Arrays.o create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Functions.cpp create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Functions.edl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Functions.o create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Pointers.cpp create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Pointers.edl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Pointers.o create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Types.cpp create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Types.edl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Types.o create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.config.xml create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.cpp create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.edl create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.h create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.lds create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.o create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_private_test.pem create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_public.pem create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_t.c create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_t.h create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_t.o create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libc.cpp create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libc.edl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libc.o create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libcxx.cpp create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libcxx.edl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libcxx.o create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Thread.cpp create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Thread.edl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Thread.o create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.01.xml create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.02.xml create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.03.xml create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.04.xml create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.05.xml create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/enclave_keys.txt create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Include/user_types.h create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Makefile create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/README.txt create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/app create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/common/shared_macros.h create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/enclave.signed.so create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/enclave.so create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/nohup.out create mode 100755 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/run.sh create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/config/config.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/config/config.yaml create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/Decision/DecisionStorage.abi create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/Decision/DecisionStorage.bin create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/Decision/DecisionStorage.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/Decision/DecisionStorage.sol create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KVTable.abi create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KVTable.bin create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KeyShare.abi create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KeyShare.bin create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KeyShare.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KeyShare.sol create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/Table.abi create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/Table.bin create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/Table.sol create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/TableManager.abi create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/TableManager.bin create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/README.md create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/source/DecisionStorage.sol create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/source/KeyShare.sol create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/source/Table.sol create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/pool.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/regulator.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/tee_controller.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/transaction.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/wallet.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/db.md create mode 160000 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/docs create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/errors/errors.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/evidence/wallet-12-20241115020658-success.txt create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/evidence/wallet-12-20241115071644-success.txt create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/go.mod create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/go.sum create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/common.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/invoice.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/regulator.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/tee.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/transaction.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/wallet.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/main.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/model/common.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/model/db.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/model/transaction.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/model/wallet.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/router/router.go create mode 160000 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/script create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/.gitignore create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/Dockerfile create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/README.md create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/example/enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/example/exa_breakpoint_continue.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/example/exa_customer.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/example/exa_file_upload_download.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/auto_code_history.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/auto_code_package.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/auto_code_plugin.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/auto_code_template.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_api.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_authority.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_authority_btn.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_auto_code.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_captcha.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_casbin.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_dictionary.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_dictionary_detail.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_export_template.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_initdb.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_jwt_blacklist.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_menu.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_operation_record.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_params.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_system.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_user.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config.docker.yaml create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config.yaml create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/auto_code.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/captcha.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/config.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/cors.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/db_list.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/disk.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/email.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/excel.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_mssql.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_mysql.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_oracle.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_pgsql.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_sqlite.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/jwt.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/mongo.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_aliyun.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_aws.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_cloudflare.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_huawei.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_local.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_qiniu.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_tencent.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/redis.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/system.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/zap.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/internal/constant.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/internal/cutter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/internal/zap_core.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/server.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/server_other.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/server_win.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/viper.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/zap.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/docs/docs.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/docs/swagger.json create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/docs/swagger.yaml create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/global/global.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/global/model.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/go.mod create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/go.sum create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/db_list.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/ensure_tables.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_biz.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_mssql.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_mysql.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_oracle.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_pgsql.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_sqlite.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/internal/gorm.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/internal/gorm_logger_writer.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/internal/mongo.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/mongo.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/other.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/plugin.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/plugin_biz_v1.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/plugin_biz_v2.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/redis.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/register_init.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/router.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/router_biz.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/timer.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/validator.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/main.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/casbin_rbac.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/cors.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/email.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/error.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/jwt.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/limit_ip.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/loadtls.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/logger.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/operation.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/basetypes.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/clearDB.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/request/common.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/response/common.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/response/response.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/exa_breakpoint_continue.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/exa_customer.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/exa_file_upload_download.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/response/exa_breakpoint_continue.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/response/exa_customer.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/response/exa_file_upload_download.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/jwt.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_api.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_authority_btn.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_auto_code.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_auto_code_package.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_auto_history.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_casbin.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_dictionary_detail.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_export_template.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_init.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_menu.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_operation_record.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_params.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_user.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_api.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_authority.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_authority_btn.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_auto_code.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_captcha.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_casbin.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_menu.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_system.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_user.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_api.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_authority.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_authority_btn.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_authority_menu.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_auto_code_history.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_auto_code_package.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_base_menu.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_dictionary.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_dictionary_detail.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_export_template.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_jwt_blacklist.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_menu_btn.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_operation_record.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_params.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_system.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_user.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_user_authority.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/api/enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/api/info.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/config/config.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/gen/gen.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/api.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/gorm.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/menu.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/router.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/viper.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/model/info.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/model/request/info.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/plugin.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/plugin/plugin.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/router/enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/router/info.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/service/enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/service/info.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/README.md create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/api/api.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/api/enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/api/service.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/config/config.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/global/global.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/main.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/middleware/jwt.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/model.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysService.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysServiceMsg.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysServiceRecord.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysServiceReply.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysServiceScript.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysTestUser.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/router/enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/router/router.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/service/enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/service/service.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/service/ws/ws.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/tools/jwt.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/tools/limits.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/tools/timeformat.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/README.MD create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/api/enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/api/sys_email.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/config/email.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/global/gloabl.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/main.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/model/response/email.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/router/enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/router/sys_email.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/service/enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/service/sys_email.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/utils/email.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/plugin-tool/utils/check.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/function/api.go.tpl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/function/api.js.tpl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/function/server.go.tpl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/readme.txt.tpl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/api/api.go.tpl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/api/enter.go.tpl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/model/model.go.tpl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/model/request/request.go.tpl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/router/enter.go.tpl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/router/router.go.tpl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/service/enter.go.tpl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/service/service.go.tpl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/web/api/api.js.tpl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/web/view/form.vue.tpl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/web/view/table.vue.tpl create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/api/api.go.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/api/enter.go.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/config/config.go.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/gen/gen.go.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/api.go.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/gorm.go.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/menu.go.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/router.go.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/viper.go.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/model/model.go.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/model/request/request.go.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/plugin.go.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/plugin/plugin.go.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/router/enter.go.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/router/router.go.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/service/enter.go.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/service/service.go.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/web/api/api.js.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/web/form/form.vue.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/web/view/view.vue.template create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/example/enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/example/exa_customer.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/example/exa_file_upload_and_download.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_api.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_authority.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_authority_btn.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_auto_code.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_auto_code_history.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_base.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_casbin.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_dictionary.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_dictionary_detail.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_export_template.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_initdb.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_jwt.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_menu.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_operation_record.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_params.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_system.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_user.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/example/enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/example/exa_breakpoint_continue.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/example/exa_customer.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/example/exa_file_upload_download.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_history.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_package.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_package_test.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_plugin.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_template.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_template_test.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/jwt_black_list.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_api.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_authority.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_authority_btn.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_interface.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_mssql.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_mysql.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_oracle.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_pgsql.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_sqlite.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_base_menu.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_casbin.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_dictionary.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_dictionary_detail.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_export_template.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb_mssql.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb_mysql.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb_pgsql.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb_sqlite.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_menu.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_operation_record.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_params.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_system.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_user.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/example/file_upload_download.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/api.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/api_ignore.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/authorities_menus.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/authority.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/casbin.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/dictionary.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/dictionary_detail.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/excel_template.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/menu.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/user.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/task/clearTable.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_auto_enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_gorm.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_init_test.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_rollback.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_router.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_test.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_type.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/import.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/interfaces.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/interfaces_base.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_enter_test.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_initialize_gorm.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_initialize_gorm_test.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_initialize_router.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_initialize_router_test.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_module_enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_module_enter_test.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_enter.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_enter_test.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_gen.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_gen_test.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_gorm.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_gorm_test.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_router.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_router_test.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_v2.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_v2_test.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/breakpoint_continue.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/captcha/redis.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/claims.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/directory.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/fmt_plus.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/hash.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/human_duration.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/human_duration_test.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/json.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/json_test.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/jwt.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/plugin/plugin.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/plugin/v2/plugin.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/reload.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/request/http.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/server.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/timer/timed_task.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/timer/timed_task_test.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/aliyun_oss.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/aws_s3.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/cloudflare_r2.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/local.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/obs.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/qiniu.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/tencent_cos.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/upload.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/validator.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/validator_test.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/verify.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/zip.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/supervisor/LLM.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/supervisor/jury.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/supervisor/palyload.json create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/utils/crypto.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/utils/utils.go create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.docker-compose/nginx/conf.d/my.conf create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.docker-compose/nginx/conf.d/nginx.conf create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.dockerignore create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.env.development create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.env.production create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.eslintignore create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.eslintrc.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.gitignore create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/README.md create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/babel.config.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/index.html create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/jsconfig.json create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/limit.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/openDocument.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/package.json create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/postcss.config.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/public/favicon.ico create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/public/favicon2.ico create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/App.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/api.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/authority.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/authorityBtn.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/autoCode.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/breakpoint.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/casbin.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/customer.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/email.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/exportTemplate.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/fileUploadAndDownload.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/github.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/hufu/abnormalTransactions.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/hufu/invoices.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/hufu/wallet.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/initdb.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/jwt.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/menu.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/sysDictionary.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/sysDictionaryDetail.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/sysOperationRecord.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/sysParams.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/system.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/user.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/arrayCtrl/arrayCtrl.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/bottomInfo/bottomInfo.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/charts/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/commandMenu/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/customPic/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/exportExcel/exportExcel.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/exportExcel/exportTemplate.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/exportExcel/importExcel.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/office/docx.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/office/excel.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/office/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/office/pdf.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/richtext/rich-edit.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/richtext/rich-view.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/selectFile/selectFile.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/selectImage/selectComponent.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/selectImage/selectImage.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/svgIcon/svgIcon.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/upload/common.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/upload/image.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/warningBar/warningBar.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/core/config.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/core/gin-vue-admin.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/core/global.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/directive/auth.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/hooks/charts.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/hooks/responsive.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/hooks/use-windows-resize.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/main.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pathInfo.json create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/permission.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/index.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/modules/app.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/modules/dictionary.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/modules/router.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/modules/user.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/announcement/api/info.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/announcement/form/info.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/announcement/view/info.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/email/api/email.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/email/view/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/router/index.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/element/index.scss create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/element_visiable.scss create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/iconfont.css create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/main.scss create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/reset.scss create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/asyncRouter.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/btnAuth.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/bus.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/closeThisPage.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/date.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/dictionary.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/doc.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/downloadImg.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/event.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/fmtRouterTitle.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/format.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/image.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/page.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/request.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/stringFun.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/about/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/banner.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/card.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/charts-content-numbers.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/charts-people-numbers.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/charts.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/index.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/notice.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/pluginTable.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/quickLinks.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/table.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/wiki.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/error/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/error/reload.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/example/breakpoint/breakpoint.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/example/customer/customer.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/example/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/example/upload/upload.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/abnormalTransactions/abnormalTransactions.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/abnormalTransactions/abnormalTransactionsForm.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/invoices/invoices.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/invoices/invoicesForm.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/merchant/chart.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/merchant/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/regulator/getTx.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/regulator/keys.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/regulator/ops.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/user/chart.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/user/encrypted.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/user/tx.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/user/wallet.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/init/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/asideComponent/asyncSubmenu.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/asideComponent/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/asideComponent/menuItem.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/combinationMode.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/headMode.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/normalMode.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/header/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/header/tools.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/screenfull/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/search/search.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/setting/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/tabs/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/login/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/person/person.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/routerHolder.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/api/api.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/authority/authority.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/authority/components/apis.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/authority/components/datas.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/authority/components/menus.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/dictionary/sysDictionary.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/dictionary/sysDictionaryDetail.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/menu/components/components-cascader.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/menu/icon.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/menu/menu.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/operation/sysOperationRecord.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/params/sysParams.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/user/user.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/system/state.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoCode/component/fieldDialog.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoCode/component/previewCodeDialg.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoCode/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoCodeAdmin/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoPkg/autoPkg.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/exportTemplate/exportTemplate.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/formCreate/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/installPlugin/index.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/pubPlug/pubPlug.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/system/system.vue create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/tailwind.config.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/vite.config.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/vitePlugin/componentName/index.js create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/vitePlugin/secret/index.js diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/Decision/DecisionStorage.abi b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/Decision/DecisionStorage.abi new file mode 100644 index 000000000..f9d8f7663 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/Decision/DecisionStorage.abi @@ -0,0 +1 @@ +[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"evidence","type":"string"},{"indexed":false,"internalType":"string","name":"nodeID","type":"string"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"DecisionRecorded","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"decisions","outputs":[{"internalType":"string","name":"evidence","type":"string"},{"internalType":"string","name":"nodeID","type":"string"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getDecision","outputs":[{"internalType":"string","name":"evidence","type":"string"},{"internalType":"string","name":"nodeID","type":"string"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDecisionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"evidence","type":"string"},{"internalType":"string","name":"nodeID","type":"string"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"recordDecision","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"evidence","type":"string"}],"name":"verifyEvidence","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/Decision/DecisionStorage.bin b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/Decision/DecisionStorage.bin new file mode 100644 index 000000000..64acb8752 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/Decision/DecisionStorage.bin @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50610b7e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80636f13f95a1461005c578063af7548481461008c578063b829df82146100bf578063b8c0dbbd146100f2578063e4ff19da14610122575b600080fd5b610076600480360381019061007191906107ae565b610140565b6040516100839190610812565b60405180910390f35b6100a660048036038101906100a19190610863565b61014b565b6040516100b69493929190610927565b60405180910390f35b6100d960048036038101906100d49190610863565b610335565b6040516100e99493929190610927565b60405180910390f35b61010c600480360381019061010791906109a6565b610492565b6040516101199190610812565b60405180910390f35b61012a6105a5565b6040516101379190610a31565b60405180910390f35b600060019050919050565b6060806000806000805490508510610198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018f90610a98565b60405180910390fd5b60008086815481106101ad576101ac610ab8565b5b90600052602060002090600402016040518060800160405290816000820180546101d690610b16565b80601f016020809104026020016040519081016040528092919081815260200182805461020290610b16565b801561024f5780601f106102245761010080835404028352916020019161024f565b820191906000526020600020905b81548152906001019060200180831161023257829003601f168201915b5050505050815260200160018201805461026890610b16565b80601f016020809104026020016040519081016040528092919081815260200182805461029490610b16565b80156102e15780601f106102b6576101008083540402835291602001916102e1565b820191906000526020600020905b8154815290600101906020018083116102c457829003601f168201915b50505050508152602001600282015481526020016003820160009054906101000a900460ff161515151581525050905080600001518160200151826040015183606001519450945094509450509193509193565b6000818154811061034557600080fd5b906000526020600020906004020160009150905080600001805461036890610b16565b80601f016020809104026020016040519081016040528092919081815260200182805461039490610b16565b80156103e15780601f106103b6576101008083540402835291602001916103e1565b820191906000526020600020905b8154815290600101906020018083116103c457829003601f168201915b5050505050908060010180546103f690610b16565b80601f016020809104026020016040519081016040528092919081815260200182805461042290610b16565b801561046f5780601f106104445761010080835404028352916020019161046f565b820191906000526020600020905b81548152906001019060200180831161045257829003601f168201915b5050505050908060020154908060030160009054906101000a900460ff16905084565b60008060405180608001604052808681526020018581526020014281526020018415158152509050600081908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000190805190602001906105029291906105b1565b50602082015181600101908051906020019061051f9291906105b1565b506040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555050507f641014cc6abca52c1d84346d29137b54af42068d1b3b5b3c52e98b16eb08542881600001518260200151836040015184606001516040516105919493929190610927565b60405180910390a160019150509392505050565b60008080549050905090565b8280546105bd90610b16565b90600052602060002090601f0160209004810192826105df5760008555610626565b82601f106105f857805160ff1916838001178555610626565b82800160010185558215610626579182015b8281111561062557825182559160200191906001019061060a565b5b5090506106339190610637565b5090565b5b80821115610650576000816000905550600101610638565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6106bb82610672565b810181811067ffffffffffffffff821117156106da576106d9610683565b5b80604052505050565b60006106ed610654565b90506106f982826106b2565b919050565b600067ffffffffffffffff82111561071957610718610683565b5b61072282610672565b9050602081019050919050565b82818337600083830152505050565b600061075161074c846106fe565b6106e3565b90508281526020810184848401111561076d5761076c61066d565b5b61077884828561072f565b509392505050565b600082601f83011261079557610794610668565b5b81356107a584826020860161073e565b91505092915050565b6000602082840312156107c4576107c361065e565b5b600082013567ffffffffffffffff8111156107e2576107e1610663565b5b6107ee84828501610780565b91505092915050565b60008115159050919050565b61080c816107f7565b82525050565b60006020820190506108276000830184610803565b92915050565b6000819050919050565b6108408161082d565b811461084b57600080fd5b50565b60008135905061085d81610837565b92915050565b6000602082840312156108795761087861065e565b5b60006108878482850161084e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156108ca5780820151818401526020810190506108af565b838111156108d9576000848401525b50505050565b60006108ea82610890565b6108f4818561089b565b93506109048185602086016108ac565b61090d81610672565b840191505092915050565b6109218161082d565b82525050565b6000608082019050818103600083015261094181876108df565b9050818103602083015261095581866108df565b90506109646040830185610918565b6109716060830184610803565b95945050505050565b610983816107f7565b811461098e57600080fd5b50565b6000813590506109a08161097a565b92915050565b6000806000606084860312156109bf576109be61065e565b5b600084013567ffffffffffffffff8111156109dd576109dc610663565b5b6109e986828701610780565b935050602084013567ffffffffffffffff811115610a0a57610a09610663565b5b610a1686828701610780565b9250506040610a2786828701610991565b9150509250925092565b6000602082019050610a466000830184610918565b92915050565b7f496e646578206f7574206f6620626f756e647300000000000000000000000000600082015250565b6000610a8260138361089b565b9150610a8d82610a4c565b602082019050919050565b60006020820190508181036000830152610ab181610a75565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610b2e57607f821691505b60208210811415610b4257610b41610ae7565b5b5091905056fea2646970667358221220977b96c748e0423ec306543f50d16911b1ba1f1f2928bff91954f64010dea1d264736f6c634300080b0033 \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/Decision/DecisionStorage.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/Decision/DecisionStorage.go new file mode 100644 index 000000000..e28063252 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/Decision/DecisionStorage.go @@ -0,0 +1,445 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package Decision + +import ( + "fmt" + "math/big" + "strings" + + "github.com/FISCO-BCOS/go-sdk/v3/abi" + "github.com/FISCO-BCOS/go-sdk/v3/abi/bind" + "github.com/FISCO-BCOS/go-sdk/v3/types" + "github.com/ethereum/go-ethereum/common" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = big.NewInt + _ = strings.NewReader + _ = abi.U256 + _ = bind.Bind + _ = common.Big1 +) + +// DecisionStorageABI is the input ABI used to generate the binding from. +const DecisionStorageABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"evidence\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"nodeID\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"DecisionRecorded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"decisions\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"evidence\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"nodeID\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getDecision\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"evidence\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"nodeID\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDecisionCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"evidence\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"nodeID\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"recordDecision\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"evidence\",\"type\":\"string\"}],\"name\":\"verifyEvidence\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" + +// DecisionStorageBin is the compiled bytecode used for deploying new contracts. +var DecisionStorageBin = "0x608060405234801561001057600080fd5b50610b7e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80636f13f95a1461005c578063af7548481461008c578063b829df82146100bf578063b8c0dbbd146100f2578063e4ff19da14610122575b600080fd5b610076600480360381019061007191906107ae565b610140565b6040516100839190610812565b60405180910390f35b6100a660048036038101906100a19190610863565b61014b565b6040516100b69493929190610927565b60405180910390f35b6100d960048036038101906100d49190610863565b610335565b6040516100e99493929190610927565b60405180910390f35b61010c600480360381019061010791906109a6565b610492565b6040516101199190610812565b60405180910390f35b61012a6105a5565b6040516101379190610a31565b60405180910390f35b600060019050919050565b6060806000806000805490508510610198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018f90610a98565b60405180910390fd5b60008086815481106101ad576101ac610ab8565b5b90600052602060002090600402016040518060800160405290816000820180546101d690610b16565b80601f016020809104026020016040519081016040528092919081815260200182805461020290610b16565b801561024f5780601f106102245761010080835404028352916020019161024f565b820191906000526020600020905b81548152906001019060200180831161023257829003601f168201915b5050505050815260200160018201805461026890610b16565b80601f016020809104026020016040519081016040528092919081815260200182805461029490610b16565b80156102e15780601f106102b6576101008083540402835291602001916102e1565b820191906000526020600020905b8154815290600101906020018083116102c457829003601f168201915b50505050508152602001600282015481526020016003820160009054906101000a900460ff161515151581525050905080600001518160200151826040015183606001519450945094509450509193509193565b6000818154811061034557600080fd5b906000526020600020906004020160009150905080600001805461036890610b16565b80601f016020809104026020016040519081016040528092919081815260200182805461039490610b16565b80156103e15780601f106103b6576101008083540402835291602001916103e1565b820191906000526020600020905b8154815290600101906020018083116103c457829003601f168201915b5050505050908060010180546103f690610b16565b80601f016020809104026020016040519081016040528092919081815260200182805461042290610b16565b801561046f5780601f106104445761010080835404028352916020019161046f565b820191906000526020600020905b81548152906001019060200180831161045257829003601f168201915b5050505050908060020154908060030160009054906101000a900460ff16905084565b60008060405180608001604052808681526020018581526020014281526020018415158152509050600081908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000190805190602001906105029291906105b1565b50602082015181600101908051906020019061051f9291906105b1565b506040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555050507f641014cc6abca52c1d84346d29137b54af42068d1b3b5b3c52e98b16eb08542881600001518260200151836040015184606001516040516105919493929190610927565b60405180910390a160019150509392505050565b60008080549050905090565b8280546105bd90610b16565b90600052602060002090601f0160209004810192826105df5760008555610626565b82601f106105f857805160ff1916838001178555610626565b82800160010185558215610626579182015b8281111561062557825182559160200191906001019061060a565b5b5090506106339190610637565b5090565b5b80821115610650576000816000905550600101610638565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6106bb82610672565b810181811067ffffffffffffffff821117156106da576106d9610683565b5b80604052505050565b60006106ed610654565b90506106f982826106b2565b919050565b600067ffffffffffffffff82111561071957610718610683565b5b61072282610672565b9050602081019050919050565b82818337600083830152505050565b600061075161074c846106fe565b6106e3565b90508281526020810184848401111561076d5761076c61066d565b5b61077884828561072f565b509392505050565b600082601f83011261079557610794610668565b5b81356107a584826020860161073e565b91505092915050565b6000602082840312156107c4576107c361065e565b5b600082013567ffffffffffffffff8111156107e2576107e1610663565b5b6107ee84828501610780565b91505092915050565b60008115159050919050565b61080c816107f7565b82525050565b60006020820190506108276000830184610803565b92915050565b6000819050919050565b6108408161082d565b811461084b57600080fd5b50565b60008135905061085d81610837565b92915050565b6000602082840312156108795761087861065e565b5b60006108878482850161084e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156108ca5780820151818401526020810190506108af565b838111156108d9576000848401525b50505050565b60006108ea82610890565b6108f4818561089b565b93506109048185602086016108ac565b61090d81610672565b840191505092915050565b6109218161082d565b82525050565b6000608082019050818103600083015261094181876108df565b9050818103602083015261095581866108df565b90506109646040830185610918565b6109716060830184610803565b95945050505050565b610983816107f7565b811461098e57600080fd5b50565b6000813590506109a08161097a565b92915050565b6000806000606084860312156109bf576109be61065e565b5b600084013567ffffffffffffffff8111156109dd576109dc610663565b5b6109e986828701610780565b935050602084013567ffffffffffffffff811115610a0a57610a09610663565b5b610a1686828701610780565b9250506040610a2786828701610991565b9150509250925092565b6000602082019050610a466000830184610918565b92915050565b7f496e646578206f7574206f6620626f756e647300000000000000000000000000600082015250565b6000610a8260138361089b565b9150610a8d82610a4c565b602082019050919050565b60006020820190508181036000830152610ab181610a75565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610b2e57607f821691505b60208210811415610b4257610b41610ae7565b5b5091905056fea2646970667358221220977b96c748e0423ec306543f50d16911b1ba1f1f2928bff91954f64010dea1d264736f6c634300080b0033" +var DecisionStorageSMBin = "0x" + +// DeployDecisionStorage deploys a new contract, binding an instance of DecisionStorage to it. +func DeployDecisionStorage(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Receipt, *DecisionStorage, error) { + parsed, err := abi.JSON(strings.NewReader(DecisionStorageABI)) + if err != nil { + return common.Address{}, nil, nil, err + } + + var bytecode []byte + if backend.SMCrypto() { + bytecode = common.FromHex(DecisionStorageSMBin) + } else { + bytecode = common.FromHex(DecisionStorageBin) + } + if len(bytecode) == 0 { + return common.Address{}, nil, nil, fmt.Errorf("cannot deploy empty bytecode") + } + address, receipt, contract, err := bind.DeployContract(auth, parsed, bytecode, DecisionStorageABI, backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, receipt, &DecisionStorage{DecisionStorageCaller: DecisionStorageCaller{contract: contract}, DecisionStorageTransactor: DecisionStorageTransactor{contract: contract}, DecisionStorageFilterer: DecisionStorageFilterer{contract: contract}}, nil +} + +func AsyncDeployDecisionStorage(auth *bind.TransactOpts, handler func(*types.Receipt, error), backend bind.ContractBackend) (*types.Transaction, error) { + parsed, err := abi.JSON(strings.NewReader(DecisionStorageABI)) + if err != nil { + return nil, err + } + + var bytecode []byte + if backend.SMCrypto() { + bytecode = common.FromHex(DecisionStorageSMBin) + } else { + bytecode = common.FromHex(DecisionStorageBin) + } + if len(bytecode) == 0 { + return nil, fmt.Errorf("cannot deploy empty bytecode") + } + tx, err := bind.AsyncDeployContract(auth, handler, parsed, bytecode, DecisionStorageABI, backend) + if err != nil { + return nil, err + } + return tx, nil +} + +// DecisionStorage is an auto generated Go binding around a Solidity contract. +type DecisionStorage struct { + DecisionStorageCaller // Read-only binding to the contract + DecisionStorageTransactor // Write-only binding to the contract + DecisionStorageFilterer // Log filterer for contract events +} + +// DecisionStorageCaller is an auto generated read-only Go binding around a Solidity contract. +type DecisionStorageCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DecisionStorageTransactor is an auto generated write-only Go binding around a Solidity contract. +type DecisionStorageTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DecisionStorageFilterer is an auto generated log filtering Go binding around a Solidity contract events. +type DecisionStorageFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DecisionStorageSession is an auto generated Go binding around a Solidity contract, +// with pre-set call and transact options. +type DecisionStorageSession struct { + Contract *DecisionStorage // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// DecisionStorageCallerSession is an auto generated read-only Go binding around a Solidity contract, +// with pre-set call options. +type DecisionStorageCallerSession struct { + Contract *DecisionStorageCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// DecisionStorageTransactorSession is an auto generated write-only Go binding around a Solidity contract, +// with pre-set transact options. +type DecisionStorageTransactorSession struct { + Contract *DecisionStorageTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// DecisionStorageRaw is an auto generated low-level Go binding around a Solidity contract. +type DecisionStorageRaw struct { + Contract *DecisionStorage // Generic contract binding to access the raw methods on +} + +// DecisionStorageCallerRaw is an auto generated low-level read-only Go binding around a Solidity contract. +type DecisionStorageCallerRaw struct { + Contract *DecisionStorageCaller // Generic read-only contract binding to access the raw methods on +} + +// DecisionStorageTransactorRaw is an auto generated low-level write-only Go binding around a Solidity contract. +type DecisionStorageTransactorRaw struct { + Contract *DecisionStorageTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewDecisionStorage creates a new instance of DecisionStorage, bound to a specific deployed contract. +func NewDecisionStorage(address common.Address, backend bind.ContractBackend) (*DecisionStorage, error) { + contract, err := bindDecisionStorage(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &DecisionStorage{DecisionStorageCaller: DecisionStorageCaller{contract: contract}, DecisionStorageTransactor: DecisionStorageTransactor{contract: contract}, DecisionStorageFilterer: DecisionStorageFilterer{contract: contract}}, nil +} + +// NewDecisionStorageCaller creates a new read-only instance of DecisionStorage, bound to a specific deployed contract. +func NewDecisionStorageCaller(address common.Address, caller bind.ContractCaller) (*DecisionStorageCaller, error) { + contract, err := bindDecisionStorage(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &DecisionStorageCaller{contract: contract}, nil +} + +// NewDecisionStorageTransactor creates a new write-only instance of DecisionStorage, bound to a specific deployed contract. +func NewDecisionStorageTransactor(address common.Address, transactor bind.ContractTransactor) (*DecisionStorageTransactor, error) { + contract, err := bindDecisionStorage(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &DecisionStorageTransactor{contract: contract}, nil +} + +// NewDecisionStorageFilterer creates a new log filterer instance of DecisionStorage, bound to a specific deployed contract. +func NewDecisionStorageFilterer(address common.Address, filterer bind.ContractFilterer) (*DecisionStorageFilterer, error) { + contract, err := bindDecisionStorage(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &DecisionStorageFilterer{contract: contract}, nil +} + +// bindDecisionStorage binds a generic wrapper to an already deployed contract. +func bindDecisionStorage(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(DecisionStorageABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_DecisionStorage *DecisionStorageRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { + return _DecisionStorage.Contract.DecisionStorageCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_DecisionStorage *DecisionStorageRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, *types.Receipt, error) { + return _DecisionStorage.Contract.DecisionStorageTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_DecisionStorage *DecisionStorageRaw) TransactWithResult(opts *bind.TransactOpts, result interface{}, method string, params ...interface{}) (*types.Transaction, *types.Receipt, error) { + return _DecisionStorage.Contract.DecisionStorageTransactor.contract.TransactWithResult(opts, result, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_DecisionStorage *DecisionStorageCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { + return _DecisionStorage.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_DecisionStorage *DecisionStorageTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, *types.Receipt, error) { + return _DecisionStorage.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_DecisionStorage *DecisionStorageTransactorRaw) TransactWithResult(opts *bind.TransactOpts, result interface{}, method string, params ...interface{}) (*types.Transaction, *types.Receipt, error) { + return _DecisionStorage.Contract.contract.TransactWithResult(opts, result, method, params...) +} + +// Decisions is a free data retrieval call binding the contract method 0xb829df82. +// +// Solidity: function decisions(uint256 ) constant returns(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageCaller) Decisions(opts *bind.CallOpts, arg0 *big.Int) (struct { + Evidence string + NodeID string + Timestamp *big.Int + Approved bool +}, error) { + ret := new(struct { + Evidence string + NodeID string + Timestamp *big.Int + Approved bool + }) + out := ret + err := _DecisionStorage.contract.Call(opts, out, "decisions", arg0) + return *ret, err +} + +// Decisions is a free data retrieval call binding the contract method 0xb829df82. +// +// Solidity: function decisions(uint256 ) constant returns(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageSession) Decisions(arg0 *big.Int) (struct { + Evidence string + NodeID string + Timestamp *big.Int + Approved bool +}, error) { + return _DecisionStorage.Contract.Decisions(&_DecisionStorage.CallOpts, arg0) +} + +// Decisions is a free data retrieval call binding the contract method 0xb829df82. +// +// Solidity: function decisions(uint256 ) constant returns(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageCallerSession) Decisions(arg0 *big.Int) (struct { + Evidence string + NodeID string + Timestamp *big.Int + Approved bool +}, error) { + return _DecisionStorage.Contract.Decisions(&_DecisionStorage.CallOpts, arg0) +} + +// GetDecision is a free data retrieval call binding the contract method 0xaf754848. +// +// Solidity: function getDecision(uint256 index) constant returns(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageCaller) GetDecision(opts *bind.CallOpts, index *big.Int) (struct { + Evidence string + NodeID string + Timestamp *big.Int + Approved bool +}, error) { + ret := new(struct { + Evidence string + NodeID string + Timestamp *big.Int + Approved bool + }) + out := ret + err := _DecisionStorage.contract.Call(opts, out, "getDecision", index) + return *ret, err +} + +// GetDecision is a free data retrieval call binding the contract method 0xaf754848. +// +// Solidity: function getDecision(uint256 index) constant returns(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageSession) GetDecision(index *big.Int) (struct { + Evidence string + NodeID string + Timestamp *big.Int + Approved bool +}, error) { + return _DecisionStorage.Contract.GetDecision(&_DecisionStorage.CallOpts, index) +} + +// GetDecision is a free data retrieval call binding the contract method 0xaf754848. +// +// Solidity: function getDecision(uint256 index) constant returns(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageCallerSession) GetDecision(index *big.Int) (struct { + Evidence string + NodeID string + Timestamp *big.Int + Approved bool +}, error) { + return _DecisionStorage.Contract.GetDecision(&_DecisionStorage.CallOpts, index) +} + +// GetDecisionCount is a free data retrieval call binding the contract method 0xe4ff19da. +// +// Solidity: function getDecisionCount() constant returns(uint256) +func (_DecisionStorage *DecisionStorageCaller) GetDecisionCount(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _DecisionStorage.contract.Call(opts, out, "getDecisionCount") + return *ret0, err +} + +// GetDecisionCount is a free data retrieval call binding the contract method 0xe4ff19da. +// +// Solidity: function getDecisionCount() constant returns(uint256) +func (_DecisionStorage *DecisionStorageSession) GetDecisionCount() (*big.Int, error) { + return _DecisionStorage.Contract.GetDecisionCount(&_DecisionStorage.CallOpts) +} + +// GetDecisionCount is a free data retrieval call binding the contract method 0xe4ff19da. +// +// Solidity: function getDecisionCount() constant returns(uint256) +func (_DecisionStorage *DecisionStorageCallerSession) GetDecisionCount() (*big.Int, error) { + return _DecisionStorage.Contract.GetDecisionCount(&_DecisionStorage.CallOpts) +} + +// VerifyEvidence is a free data retrieval call binding the contract method 0x6f13f95a. +// +// Solidity: function verifyEvidence(string evidence) constant returns(bool) +func (_DecisionStorage *DecisionStorageCaller) VerifyEvidence(opts *bind.CallOpts, evidence string) (bool, error) { + var ( + ret0 = new(bool) + ) + out := ret0 + err := _DecisionStorage.contract.Call(opts, out, "verifyEvidence", evidence) + return *ret0, err +} + +// VerifyEvidence is a free data retrieval call binding the contract method 0x6f13f95a. +// +// Solidity: function verifyEvidence(string evidence) constant returns(bool) +func (_DecisionStorage *DecisionStorageSession) VerifyEvidence(evidence string) (bool, error) { + return _DecisionStorage.Contract.VerifyEvidence(&_DecisionStorage.CallOpts, evidence) +} + +// VerifyEvidence is a free data retrieval call binding the contract method 0x6f13f95a. +// +// Solidity: function verifyEvidence(string evidence) constant returns(bool) +func (_DecisionStorage *DecisionStorageCallerSession) VerifyEvidence(evidence string) (bool, error) { + return _DecisionStorage.Contract.VerifyEvidence(&_DecisionStorage.CallOpts, evidence) +} + +// RecordDecision is a paid mutator transaction binding the contract method 0xb8c0dbbd. +// +// Solidity: function recordDecision(string evidence, string nodeID, bool approved) returns(bool) +func (_DecisionStorage *DecisionStorageTransactor) RecordDecision(opts *bind.TransactOpts, evidence string, nodeID string, approved bool) (bool, *types.Transaction, *types.Receipt, error) { + var ( + ret0 = new(bool) + ) + out := ret0 + transaction, receipt, err := _DecisionStorage.contract.TransactWithResult(opts, out, "recordDecision", evidence, nodeID, approved) + return *ret0, transaction, receipt, err +} + +func (_DecisionStorage *DecisionStorageTransactor) AsyncRecordDecision(handler func(*types.Receipt, error), opts *bind.TransactOpts, evidence string, nodeID string, approved bool) (*types.Transaction, error) { + return _DecisionStorage.contract.AsyncTransact(opts, handler, "recordDecision", evidence, nodeID, approved) +} + +// RecordDecision is a paid mutator transaction binding the contract method 0xb8c0dbbd. +// +// Solidity: function recordDecision(string evidence, string nodeID, bool approved) returns(bool) +func (_DecisionStorage *DecisionStorageSession) RecordDecision(evidence string, nodeID string, approved bool) (bool, *types.Transaction, *types.Receipt, error) { + return _DecisionStorage.Contract.RecordDecision(&_DecisionStorage.TransactOpts, evidence, nodeID, approved) +} + +func (_DecisionStorage *DecisionStorageSession) AsyncRecordDecision(handler func(*types.Receipt, error), evidence string, nodeID string, approved bool) (*types.Transaction, error) { + return _DecisionStorage.Contract.AsyncRecordDecision(handler, &_DecisionStorage.TransactOpts, evidence, nodeID, approved) +} + +// RecordDecision is a paid mutator transaction binding the contract method 0xb8c0dbbd. +// +// Solidity: function recordDecision(string evidence, string nodeID, bool approved) returns(bool) +func (_DecisionStorage *DecisionStorageTransactorSession) RecordDecision(evidence string, nodeID string, approved bool) (bool, *types.Transaction, *types.Receipt, error) { + return _DecisionStorage.Contract.RecordDecision(&_DecisionStorage.TransactOpts, evidence, nodeID, approved) +} + +func (_DecisionStorage *DecisionStorageTransactorSession) AsyncRecordDecision(handler func(*types.Receipt, error), evidence string, nodeID string, approved bool) (*types.Transaction, error) { + return _DecisionStorage.Contract.AsyncRecordDecision(handler, &_DecisionStorage.TransactOpts, evidence, nodeID, approved) +} + +// DecisionStorageDecisionRecorded represents a DecisionRecorded event raised by the DecisionStorage contract. +type DecisionStorageDecisionRecorded struct { + Evidence string + NodeID string + Timestamp *big.Int + Approved bool + Raw types.Log // Blockchain specific contextual infos +} + +// WatchDecisionRecorded is a free log subscription operation binding the contract event 0x641014cc6abca52c1d84346d29137b54af42068d1b3b5b3c52e98b16eb085428. +// +// Solidity: event DecisionRecorded(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageFilterer) WatchDecisionRecorded(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _DecisionStorage.contract.WatchLogs(fromBlock, handler, "DecisionRecorded") +} + +func (_DecisionStorage *DecisionStorageFilterer) WatchAllDecisionRecorded(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _DecisionStorage.contract.WatchLogs(fromBlock, handler, "DecisionRecorded") +} + +// ParseDecisionRecorded is a log parse operation binding the contract event 0x641014cc6abca52c1d84346d29137b54af42068d1b3b5b3c52e98b16eb085428. +// +// Solidity: event DecisionRecorded(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageFilterer) ParseDecisionRecorded(log types.Log) (*DecisionStorageDecisionRecorded, error) { + event := new(DecisionStorageDecisionRecorded) + if err := _DecisionStorage.contract.UnpackLog(event, "DecisionRecorded", log); err != nil { + return nil, err + } + return event, nil +} + +// WatchDecisionRecorded is a free log subscription operation binding the contract event 0x641014cc6abca52c1d84346d29137b54af42068d1b3b5b3c52e98b16eb085428. +// +// Solidity: event DecisionRecorded(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageSession) WatchDecisionRecorded(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _DecisionStorage.Contract.WatchDecisionRecorded(fromBlock, handler) +} + +func (_DecisionStorage *DecisionStorageSession) WatchAllDecisionRecorded(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _DecisionStorage.Contract.WatchAllDecisionRecorded(fromBlock, handler) +} + +// ParseDecisionRecorded is a log parse operation binding the contract event 0x641014cc6abca52c1d84346d29137b54af42068d1b3b5b3c52e98b16eb085428. +// +// Solidity: event DecisionRecorded(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageSession) ParseDecisionRecorded(log types.Log) (*DecisionStorageDecisionRecorded, error) { + return _DecisionStorage.Contract.ParseDecisionRecorded(log) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/Decision/DecisionStorage.sol b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/Decision/DecisionStorage.sol new file mode 100644 index 000000000..19c90c817 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/Decision/DecisionStorage.sol @@ -0,0 +1,74 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.10 <0.8.20; + +contract DecisionStorage { + // 决策记录结构 + struct Decision { + string evidence; // 证据 + string nodeID; // 节点ID + uint256 timestamp; // 时间戳 + bool approved; // 是否批准 + } + + // 存储所有决策记录 + Decision[] public decisions; + + // 记录决策的事件 + event DecisionRecorded( + string evidence, + string nodeID, + uint256 timestamp, + bool approved + ); + + function recordDecision(string memory evidence, string memory nodeID, bool approved) public returns (bool) { + Decision memory newDecision = Decision({ + evidence: evidence, + nodeID: nodeID, + timestamp: block.timestamp, + approved: approved + }); + + // 存储决策 + decisions.push(newDecision); + + // 触发事件 + emit DecisionRecorded( + newDecision.evidence, + newDecision.nodeID, + newDecision.timestamp, + newDecision.approved + ); + + return true; + } + + // 验证证据 可以添加具体的验证逻辑 + function verifyEvidence(string memory evidence) public view returns (bool) { + // 目前返回true用于测试 + return true; + } + + // 获取决策记录数量 + function getDecisionCount() public view returns (uint256) { + return decisions.length; + } + + // 获取指定索引的决策记录 + function getDecision(uint256 index) public view returns ( + string memory evidence, + string memory nodeID, + uint256 timestamp, + bool approved + ) { + require(index < decisions.length, "Index out of bounds"); + Decision memory decision = decisions[index]; + return ( + decision.evidence, + decision.nodeID, + decision.timestamp, + decision.approved + ); + } + +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KVTable.abi b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KVTable.abi new file mode 100644 index 000000000..134580fc6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KVTable.abi @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"string","name":"key","type":"string"}],"name":"get","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"value","type":"string"}],"name":"set","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KVTable.bin b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KVTable.bin new file mode 100644 index 000000000..e69de29bb diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KeyShare.abi b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KeyShare.abi new file mode 100644 index 000000000..1103d5e2d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KeyShare.abi @@ -0,0 +1 @@ +[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"count","type":"int256"}],"name":"CreateResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"count","type":"int256"}],"name":"InsertResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"count","type":"int256"}],"name":"RemoveResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"count","type":"int256"}],"name":"UpdateResult","type":"event"},{"inputs":[{"internalType":"string","name":"tableName","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string[]","name":"fields","type":"string[]"}],"name":"createTable","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"desc","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"id","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"secret","type":"string"}],"name":"insert","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"id","type":"string"}],"name":"remove","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"id","type":"string"}],"name":"select","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"id","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"secret","type":"string"}],"name":"update","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KeyShare.bin b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KeyShare.bin new file mode 100644 index 000000000..55e893525 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KeyShare.bin @@ -0,0 +1 @@ +60806040523480156200001157600080fd5b506000600267ffffffffffffffff81111562000032576200003162000399565b5b6040519080825280602002602001820160405280156200006757816020015b6060815260200190600190039081620000515790505b5090506040518060400160405280600481526020017f6e616d650000000000000000000000000000000000000000000000000000000081525081600081518110620000b757620000b6620003c8565b5b60200260200101819052506040518060400160405280600681526020017f7365637265740000000000000000000000000000000000000000000000000000815250816001815181106200010f576200010e620003c8565b5b6020026020010181905250600060405180604001604052806040518060400160405280600281526020017f6964000000000000000000000000000000000000000000000000000000000000815250815260200183815250905061100273ffffffffffffffffffffffffffffffffffffffff166331a5a51e6040518060400160405280600b81526020017f745f6b65795f7368617265000000000000000000000000000000000000000000815250836040518363ffffffff1660e01b8152600401620001dc92919062000605565b6020604051808303816000875af1158015620001fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000222919062000683565b50600061100273ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040518060400160405280600b81526020017f745f6b65795f73686172650000000000000000000000000000000000000000008152506040518263ffffffff1660e01b8152600401620002979190620006b5565b602060405180830381865afa158015620002b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002db91906200073e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000347906200079a565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620007bc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b60005b838110156200043357808201518184015260208101905062000416565b8381111562000443576000848401525b50505050565b6000601f19601f8301169050919050565b60006200046782620003f7565b62000473818562000402565b93506200048581856020860162000413565b620004908162000449565b840191505092915050565b600082825260208201905092915050565b6000620004b982620003f7565b620004c581856200049b565b9350620004d781856020860162000413565b620004e28162000449565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000620005278383620004ac565b905092915050565b6000602082019050919050565b60006200054982620004ed565b620005558185620004f8565b935083602082028501620005698562000509565b8060005b85811015620005ab578484038952815162000589858262000519565b945062000596836200052f565b925060208a019950506001810190506200056d565b50829750879550505050505092915050565b60006040830160008301518482036000860152620005dc8282620004ac565b91505060208301518482036020860152620005f882826200053c565b9150508091505092915050565b600060408201905081810360008301526200062181856200045a565b90508181036020830152620006378184620005bd565b90509392505050565b600080fd5b60008160030b9050919050565b6200065d8162000645565b81146200066957600080fd5b50565b6000815190506200067d8162000652565b92915050565b6000602082840312156200069c576200069b62000640565b5b6000620006ac848285016200066c565b91505092915050565b60006020820190508181036000830152620006d181846200045a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200070682620006d9565b9050919050565b6200071881620006f9565b81146200072457600080fd5b50565b60008151905062000738816200070d565b92915050565b60006020828403121562000757576200075662000640565b5b6000620007678482850162000727565b91505092915050565b50565b60006200078260008362000402565b91506200078f8262000770565b600082019050919050565b60006020820190508181036000830152620007b58162000773565b9050919050565b6115c480620007cc6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80632fe99bdc1461006757806331c3e4561461009757806355f150f1146100c75780636a5bae4e146100e657806380599e4b14610116578063fcd7e3c114610146575b600080fd5b610081600480360381019061007c9190610a2f565b610177565b60405161008e9190610af2565b60405180910390f35b6100b160048036038101906100ac9190610a2f565b610309565b6040516100be9190610af2565b60405180910390f35b6100cf61051b565b6040516100dd929190610ca1565b60405180910390f35b61010060048036038101906100fb9190610dbe565b6105eb565b60405161010d9190610e7e565b60405180910390f35b610130600480360381019061012b9190610e99565b6106cf565b60405161013d9190610af2565b60405180910390f35b610160600480360381019061015b9190610e99565b6107b0565b60405161016e929190610ee2565b60405180910390f35b600080600267ffffffffffffffff81111561019557610194610904565b5b6040519080825280602002602001820160405280156101c857816020015b60608152602001906001900390816101b35790505b50905083816000815181106101e0576101df610f19565b5b60200260200101819052508281600181518110610200576101ff610f19565b5b60200260200101819052506000604051806040016040528087815260200183815250905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c6e105f836040518263ffffffff1660e01b81526004016102809190611012565b6020604051808303816000875af115801561029f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c39190611060565b90507fc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce816040516102f491906110c8565b60405180910390a18093505050509392505050565b600080600267ffffffffffffffff81111561032757610326610904565b5b60405190808252806020026020018201604052801561036057816020015b61034d6108bb565b8152602001906001900390816103455790505b50905060405180604001604052806040518060400160405280600481526020017f6e616d6500000000000000000000000000000000000000000000000000000000815250815260200185815250816000815181106103c1576103c0610f19565b5b602002602001018190525060405180604001604052806040518060400160405280600681526020017f73656372657400000000000000000000000000000000000000000000000000008152508152602001848152508160018151811061042a57610429610f19565b5b602002602001018190525060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166341ffd75f87846040518363ffffffff1660e01b81526004016104939291906111e9565b6020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190611060565b90507f8e5890af40fc24a059396aca2f83d6ce41fcef086876548fa4fb8ec27e9d292a8160405161050791906110c8565b60405180910390a180925050509392505050565b606080600061100273ffffffffffffffffffffffffffffffffffffffff16635d0d6d546040518060400160405280600b81526020017f745f6b65795f73686172650000000000000000000000000000000000000000008152506040518263ffffffff1660e01b81526004016105909190611220565b600060405180830381865afa1580156105ad573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105d691906113f9565b90508060000151816020015192509250509091565b6000806040518060400160405280858152602001848152509050600061100273ffffffffffffffffffffffffffffffffffffffff166331a5a51e87846040518363ffffffff1660e01b8152600401610644929190611486565b6020604051808303816000875af1158015610663573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106879190611060565b90507fb5636cd912a73dcdb5b570dbe331dfa3e6435c93e029e642def2c8e40dacf210816040516106b891906110c8565b60405180910390a18060030b925050509392505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380599e4b846040518263ffffffff1660e01b815260040161072b9190611220565b6020604051808303816000875af115801561074a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076e9190611060565b90507f4b930e280fe29620bdff00c88155d46d6d82a39f45dd5c3ea114dc31573581128160405161079f91906110c8565b60405180910390a180915050919050565b60608060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fcd7e3c1856040518263ffffffff1660e01b815260040161080f9190611220565b600060405180830381865afa15801561082c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906108559190611545565b9050606080600283602001515114156108ad5782602001516000815181106108805761087f610f19565b5b6020026020010151915082602001516001815181106108a2576108a1610f19565b5b602002602001015190505b818194509450505050915091565b604051806040016040528060608152602001606081525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61093c826108f3565b810181811067ffffffffffffffff8211171561095b5761095a610904565b5b80604052505050565b600061096e6108d5565b905061097a8282610933565b919050565b600067ffffffffffffffff82111561099a57610999610904565b5b6109a3826108f3565b9050602081019050919050565b82818337600083830152505050565b60006109d26109cd8461097f565b610964565b9050828152602081018484840111156109ee576109ed6108ee565b5b6109f98482856109b0565b509392505050565b600082601f830112610a1657610a156108e9565b5b8135610a268482602086016109bf565b91505092915050565b600080600060608486031215610a4857610a476108df565b5b600084013567ffffffffffffffff811115610a6657610a656108e4565b5b610a7286828701610a01565b935050602084013567ffffffffffffffff811115610a9357610a926108e4565b5b610a9f86828701610a01565b925050604084013567ffffffffffffffff811115610ac057610abf6108e4565b5b610acc86828701610a01565b9150509250925092565b60008160030b9050919050565b610aec81610ad6565b82525050565b6000602082019050610b076000830184610ae3565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b47578082015181840152602081019050610b2c565b83811115610b56576000848401525b50505050565b6000610b6782610b0d565b610b718185610b18565b9350610b81818560208601610b29565b610b8a816108f3565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b6000610bdd82610b0d565b610be78185610bc1565b9350610bf7818560208601610b29565b610c00816108f3565b840191505092915050565b6000610c178383610bd2565b905092915050565b6000602082019050919050565b6000610c3782610b95565b610c418185610ba0565b935083602082028501610c5385610bb1565b8060005b85811015610c8f5784840389528151610c708582610c0b565b9450610c7b83610c1f565b925060208a01995050600181019050610c57565b50829750879550505050505092915050565b60006040820190508181036000830152610cbb8185610b5c565b90508181036020830152610ccf8184610c2c565b90509392505050565b600067ffffffffffffffff821115610cf357610cf2610904565b5b602082029050602081019050919050565b600080fd5b6000610d1c610d1784610cd8565b610964565b90508083825260208201905060208402830185811115610d3f57610d3e610d04565b5b835b81811015610d8657803567ffffffffffffffff811115610d6457610d636108e9565b5b808601610d718982610a01565b85526020850194505050602081019050610d41565b5050509392505050565b600082601f830112610da557610da46108e9565b5b8135610db5848260208601610d09565b91505092915050565b600080600060608486031215610dd757610dd66108df565b5b600084013567ffffffffffffffff811115610df557610df46108e4565b5b610e0186828701610a01565b935050602084013567ffffffffffffffff811115610e2257610e216108e4565b5b610e2e86828701610a01565b925050604084013567ffffffffffffffff811115610e4f57610e4e6108e4565b5b610e5b86828701610d90565b9150509250925092565b6000819050919050565b610e7881610e65565b82525050565b6000602082019050610e936000830184610e6f565b92915050565b600060208284031215610eaf57610eae6108df565b5b600082013567ffffffffffffffff811115610ecd57610ecc6108e4565b5b610ed984828501610a01565b91505092915050565b60006040820190508181036000830152610efc8185610b5c565b90508181036020830152610f108184610b5c565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b6000610f6482610b95565b610f6e8185610f48565b935083602082028501610f8085610bb1565b8060005b85811015610fbc5784840389528151610f9d8582610c0b565b9450610fa883610c1f565b925060208a01995050600181019050610f84565b50829750879550505050505092915050565b60006040830160008301518482036000860152610feb8282610bd2565b915050602083015184820360208601526110058282610f59565b9150508091505092915050565b6000602082019050818103600083015261102c8184610fce565b905092915050565b61103d81610ad6565b811461104857600080fd5b50565b60008151905061105a81611034565b92915050565b600060208284031215611076576110756108df565b5b60006110848482850161104b565b91505092915050565b6000819050919050565b60006110b26110ad6110a884610ad6565b61108d565b610e65565b9050919050565b6110c281611097565b82525050565b60006020820190506110dd60008301846110b9565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000604083016000830151848203600086015261112c8282610bd2565b915050602083015184820360208601526111468282610bd2565b9150508091505092915050565b600061115f838361110f565b905092915050565b6000602082019050919050565b600061117f826110e3565b61118981856110ee565b93508360208202850161119b856110ff565b8060005b858110156111d757848403895281516111b88582611153565b94506111c383611167565b925060208a0199505060018101905061119f565b50829750879550505050505092915050565b600060408201905081810360008301526112038185610b5c565b905081810360208301526112178184611174565b90509392505050565b6000602082019050818103600083015261123a8184610b5c565b905092915050565b600080fd5b600080fd5b600061125f61125a8461097f565b610964565b90508281526020810184848401111561127b5761127a6108ee565b5b611286848285610b29565b509392505050565b600082601f8301126112a3576112a26108e9565b5b81516112b384826020860161124c565b91505092915050565b60006112cf6112ca84610cd8565b610964565b905080838252602082019050602084028301858111156112f2576112f1610d04565b5b835b8181101561133957805167ffffffffffffffff811115611317576113166108e9565b5b808601611324898261128e565b855260208501945050506020810190506112f4565b5050509392505050565b600082601f830112611358576113576108e9565b5b81516113688482602086016112bc565b91505092915050565b60006040828403121561138757611386611242565b5b6113916040610964565b9050600082015167ffffffffffffffff8111156113b1576113b0611247565b5b6113bd8482850161128e565b600083015250602082015167ffffffffffffffff8111156113e1576113e0611247565b5b6113ed84828501611343565b60208301525092915050565b60006020828403121561140f5761140e6108df565b5b600082015167ffffffffffffffff81111561142d5761142c6108e4565b5b61143984828501611371565b91505092915050565b6000604083016000830151848203600086015261145f8282610bd2565b915050602083015184820360208601526114798282610f59565b9150508091505092915050565b600060408201905081810360008301526114a08185610b5c565b905081810360208301526114b48184611442565b90509392505050565b6000604082840312156114d3576114d2611242565b5b6114dd6040610964565b9050600082015167ffffffffffffffff8111156114fd576114fc611247565b5b6115098482850161128e565b600083015250602082015167ffffffffffffffff81111561152d5761152c611247565b5b61153984828501611343565b60208301525092915050565b60006020828403121561155b5761155a6108df565b5b600082015167ffffffffffffffff811115611579576115786108e4565b5b611585848285016114bd565b9150509291505056fea2646970667358221220c4aba62bac51140354dd55b475ed3bde2226a18fc413bccf0b2fbfb1fec7c8dc64736f6c634300080b0033 \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KeyShare.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KeyShare.go new file mode 100644 index 000000000..21e5ab5b6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KeyShare.go @@ -0,0 +1,614 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package KeyShare + +import ( + "fmt" + "math/big" + "strings" + + "github.com/FISCO-BCOS/go-sdk/v3/abi" + "github.com/FISCO-BCOS/go-sdk/v3/abi/bind" + "github.com/FISCO-BCOS/go-sdk/v3/types" + "github.com/ethereum/go-ethereum/common" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = big.NewInt + _ = strings.NewReader + _ = abi.U256 + _ = bind.Bind + _ = common.Big1 +) + +// KeyShareABI is the input ABI used to generate the binding from. +const KeyShareABI = "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"CreateResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"InsertResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"RemoveResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"UpdateResult\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tableName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"fields\",\"type\":\"string[]\"}],\"name\":\"createTable\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"desc\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"id\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"secret\",\"type\":\"string\"}],\"name\":\"insert\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"id\",\"type\":\"string\"}],\"name\":\"remove\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"id\",\"type\":\"string\"}],\"name\":\"select\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"id\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"secret\",\"type\":\"string\"}],\"name\":\"update\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" + +// KeyShareBin is the compiled bytecode used for deploying new contracts. +var KeyShareBin = "0x60806040523480156200001157600080fd5b506000600267ffffffffffffffff81111562000032576200003162000399565b5b6040519080825280602002602001820160405280156200006757816020015b6060815260200190600190039081620000515790505b5090506040518060400160405280600481526020017f6e616d650000000000000000000000000000000000000000000000000000000081525081600081518110620000b757620000b6620003c8565b5b60200260200101819052506040518060400160405280600681526020017f7365637265740000000000000000000000000000000000000000000000000000815250816001815181106200010f576200010e620003c8565b5b6020026020010181905250600060405180604001604052806040518060400160405280600281526020017f6964000000000000000000000000000000000000000000000000000000000000815250815260200183815250905061100273ffffffffffffffffffffffffffffffffffffffff166331a5a51e6040518060400160405280600b81526020017f745f6b65795f7368617265000000000000000000000000000000000000000000815250836040518363ffffffff1660e01b8152600401620001dc92919062000605565b6020604051808303816000875af1158015620001fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000222919062000683565b50600061100273ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040518060400160405280600b81526020017f745f6b65795f73686172650000000000000000000000000000000000000000008152506040518263ffffffff1660e01b8152600401620002979190620006b5565b602060405180830381865afa158015620002b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002db91906200073e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000347906200079a565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620007bc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b60005b838110156200043357808201518184015260208101905062000416565b8381111562000443576000848401525b50505050565b6000601f19601f8301169050919050565b60006200046782620003f7565b62000473818562000402565b93506200048581856020860162000413565b620004908162000449565b840191505092915050565b600082825260208201905092915050565b6000620004b982620003f7565b620004c581856200049b565b9350620004d781856020860162000413565b620004e28162000449565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000620005278383620004ac565b905092915050565b6000602082019050919050565b60006200054982620004ed565b620005558185620004f8565b935083602082028501620005698562000509565b8060005b85811015620005ab578484038952815162000589858262000519565b945062000596836200052f565b925060208a019950506001810190506200056d565b50829750879550505050505092915050565b60006040830160008301518482036000860152620005dc8282620004ac565b91505060208301518482036020860152620005f882826200053c565b9150508091505092915050565b600060408201905081810360008301526200062181856200045a565b90508181036020830152620006378184620005bd565b90509392505050565b600080fd5b60008160030b9050919050565b6200065d8162000645565b81146200066957600080fd5b50565b6000815190506200067d8162000652565b92915050565b6000602082840312156200069c576200069b62000640565b5b6000620006ac848285016200066c565b91505092915050565b60006020820190508181036000830152620006d181846200045a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200070682620006d9565b9050919050565b6200071881620006f9565b81146200072457600080fd5b50565b60008151905062000738816200070d565b92915050565b60006020828403121562000757576200075662000640565b5b6000620007678482850162000727565b91505092915050565b50565b60006200078260008362000402565b91506200078f8262000770565b600082019050919050565b60006020820190508181036000830152620007b58162000773565b9050919050565b6115c480620007cc6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80632fe99bdc1461006757806331c3e4561461009757806355f150f1146100c75780636a5bae4e146100e657806380599e4b14610116578063fcd7e3c114610146575b600080fd5b610081600480360381019061007c9190610a2f565b610177565b60405161008e9190610af2565b60405180910390f35b6100b160048036038101906100ac9190610a2f565b610309565b6040516100be9190610af2565b60405180910390f35b6100cf61051b565b6040516100dd929190610ca1565b60405180910390f35b61010060048036038101906100fb9190610dbe565b6105eb565b60405161010d9190610e7e565b60405180910390f35b610130600480360381019061012b9190610e99565b6106cf565b60405161013d9190610af2565b60405180910390f35b610160600480360381019061015b9190610e99565b6107b0565b60405161016e929190610ee2565b60405180910390f35b600080600267ffffffffffffffff81111561019557610194610904565b5b6040519080825280602002602001820160405280156101c857816020015b60608152602001906001900390816101b35790505b50905083816000815181106101e0576101df610f19565b5b60200260200101819052508281600181518110610200576101ff610f19565b5b60200260200101819052506000604051806040016040528087815260200183815250905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c6e105f836040518263ffffffff1660e01b81526004016102809190611012565b6020604051808303816000875af115801561029f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c39190611060565b90507fc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce816040516102f491906110c8565b60405180910390a18093505050509392505050565b600080600267ffffffffffffffff81111561032757610326610904565b5b60405190808252806020026020018201604052801561036057816020015b61034d6108bb565b8152602001906001900390816103455790505b50905060405180604001604052806040518060400160405280600481526020017f6e616d6500000000000000000000000000000000000000000000000000000000815250815260200185815250816000815181106103c1576103c0610f19565b5b602002602001018190525060405180604001604052806040518060400160405280600681526020017f73656372657400000000000000000000000000000000000000000000000000008152508152602001848152508160018151811061042a57610429610f19565b5b602002602001018190525060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166341ffd75f87846040518363ffffffff1660e01b81526004016104939291906111e9565b6020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190611060565b90507f8e5890af40fc24a059396aca2f83d6ce41fcef086876548fa4fb8ec27e9d292a8160405161050791906110c8565b60405180910390a180925050509392505050565b606080600061100273ffffffffffffffffffffffffffffffffffffffff16635d0d6d546040518060400160405280600b81526020017f745f6b65795f73686172650000000000000000000000000000000000000000008152506040518263ffffffff1660e01b81526004016105909190611220565b600060405180830381865afa1580156105ad573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105d691906113f9565b90508060000151816020015192509250509091565b6000806040518060400160405280858152602001848152509050600061100273ffffffffffffffffffffffffffffffffffffffff166331a5a51e87846040518363ffffffff1660e01b8152600401610644929190611486565b6020604051808303816000875af1158015610663573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106879190611060565b90507fb5636cd912a73dcdb5b570dbe331dfa3e6435c93e029e642def2c8e40dacf210816040516106b891906110c8565b60405180910390a18060030b925050509392505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380599e4b846040518263ffffffff1660e01b815260040161072b9190611220565b6020604051808303816000875af115801561074a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076e9190611060565b90507f4b930e280fe29620bdff00c88155d46d6d82a39f45dd5c3ea114dc31573581128160405161079f91906110c8565b60405180910390a180915050919050565b60608060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fcd7e3c1856040518263ffffffff1660e01b815260040161080f9190611220565b600060405180830381865afa15801561082c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906108559190611545565b9050606080600283602001515114156108ad5782602001516000815181106108805761087f610f19565b5b6020026020010151915082602001516001815181106108a2576108a1610f19565b5b602002602001015190505b818194509450505050915091565b604051806040016040528060608152602001606081525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61093c826108f3565b810181811067ffffffffffffffff8211171561095b5761095a610904565b5b80604052505050565b600061096e6108d5565b905061097a8282610933565b919050565b600067ffffffffffffffff82111561099a57610999610904565b5b6109a3826108f3565b9050602081019050919050565b82818337600083830152505050565b60006109d26109cd8461097f565b610964565b9050828152602081018484840111156109ee576109ed6108ee565b5b6109f98482856109b0565b509392505050565b600082601f830112610a1657610a156108e9565b5b8135610a268482602086016109bf565b91505092915050565b600080600060608486031215610a4857610a476108df565b5b600084013567ffffffffffffffff811115610a6657610a656108e4565b5b610a7286828701610a01565b935050602084013567ffffffffffffffff811115610a9357610a926108e4565b5b610a9f86828701610a01565b925050604084013567ffffffffffffffff811115610ac057610abf6108e4565b5b610acc86828701610a01565b9150509250925092565b60008160030b9050919050565b610aec81610ad6565b82525050565b6000602082019050610b076000830184610ae3565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b47578082015181840152602081019050610b2c565b83811115610b56576000848401525b50505050565b6000610b6782610b0d565b610b718185610b18565b9350610b81818560208601610b29565b610b8a816108f3565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b6000610bdd82610b0d565b610be78185610bc1565b9350610bf7818560208601610b29565b610c00816108f3565b840191505092915050565b6000610c178383610bd2565b905092915050565b6000602082019050919050565b6000610c3782610b95565b610c418185610ba0565b935083602082028501610c5385610bb1565b8060005b85811015610c8f5784840389528151610c708582610c0b565b9450610c7b83610c1f565b925060208a01995050600181019050610c57565b50829750879550505050505092915050565b60006040820190508181036000830152610cbb8185610b5c565b90508181036020830152610ccf8184610c2c565b90509392505050565b600067ffffffffffffffff821115610cf357610cf2610904565b5b602082029050602081019050919050565b600080fd5b6000610d1c610d1784610cd8565b610964565b90508083825260208201905060208402830185811115610d3f57610d3e610d04565b5b835b81811015610d8657803567ffffffffffffffff811115610d6457610d636108e9565b5b808601610d718982610a01565b85526020850194505050602081019050610d41565b5050509392505050565b600082601f830112610da557610da46108e9565b5b8135610db5848260208601610d09565b91505092915050565b600080600060608486031215610dd757610dd66108df565b5b600084013567ffffffffffffffff811115610df557610df46108e4565b5b610e0186828701610a01565b935050602084013567ffffffffffffffff811115610e2257610e216108e4565b5b610e2e86828701610a01565b925050604084013567ffffffffffffffff811115610e4f57610e4e6108e4565b5b610e5b86828701610d90565b9150509250925092565b6000819050919050565b610e7881610e65565b82525050565b6000602082019050610e936000830184610e6f565b92915050565b600060208284031215610eaf57610eae6108df565b5b600082013567ffffffffffffffff811115610ecd57610ecc6108e4565b5b610ed984828501610a01565b91505092915050565b60006040820190508181036000830152610efc8185610b5c565b90508181036020830152610f108184610b5c565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b6000610f6482610b95565b610f6e8185610f48565b935083602082028501610f8085610bb1565b8060005b85811015610fbc5784840389528151610f9d8582610c0b565b9450610fa883610c1f565b925060208a01995050600181019050610f84565b50829750879550505050505092915050565b60006040830160008301518482036000860152610feb8282610bd2565b915050602083015184820360208601526110058282610f59565b9150508091505092915050565b6000602082019050818103600083015261102c8184610fce565b905092915050565b61103d81610ad6565b811461104857600080fd5b50565b60008151905061105a81611034565b92915050565b600060208284031215611076576110756108df565b5b60006110848482850161104b565b91505092915050565b6000819050919050565b60006110b26110ad6110a884610ad6565b61108d565b610e65565b9050919050565b6110c281611097565b82525050565b60006020820190506110dd60008301846110b9565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000604083016000830151848203600086015261112c8282610bd2565b915050602083015184820360208601526111468282610bd2565b9150508091505092915050565b600061115f838361110f565b905092915050565b6000602082019050919050565b600061117f826110e3565b61118981856110ee565b93508360208202850161119b856110ff565b8060005b858110156111d757848403895281516111b88582611153565b94506111c383611167565b925060208a0199505060018101905061119f565b50829750879550505050505092915050565b600060408201905081810360008301526112038185610b5c565b905081810360208301526112178184611174565b90509392505050565b6000602082019050818103600083015261123a8184610b5c565b905092915050565b600080fd5b600080fd5b600061125f61125a8461097f565b610964565b90508281526020810184848401111561127b5761127a6108ee565b5b611286848285610b29565b509392505050565b600082601f8301126112a3576112a26108e9565b5b81516112b384826020860161124c565b91505092915050565b60006112cf6112ca84610cd8565b610964565b905080838252602082019050602084028301858111156112f2576112f1610d04565b5b835b8181101561133957805167ffffffffffffffff811115611317576113166108e9565b5b808601611324898261128e565b855260208501945050506020810190506112f4565b5050509392505050565b600082601f830112611358576113576108e9565b5b81516113688482602086016112bc565b91505092915050565b60006040828403121561138757611386611242565b5b6113916040610964565b9050600082015167ffffffffffffffff8111156113b1576113b0611247565b5b6113bd8482850161128e565b600083015250602082015167ffffffffffffffff8111156113e1576113e0611247565b5b6113ed84828501611343565b60208301525092915050565b60006020828403121561140f5761140e6108df565b5b600082015167ffffffffffffffff81111561142d5761142c6108e4565b5b61143984828501611371565b91505092915050565b6000604083016000830151848203600086015261145f8282610bd2565b915050602083015184820360208601526114798282610f59565b9150508091505092915050565b600060408201905081810360008301526114a08185610b5c565b905081810360208301526114b48184611442565b90509392505050565b6000604082840312156114d3576114d2611242565b5b6114dd6040610964565b9050600082015167ffffffffffffffff8111156114fd576114fc611247565b5b6115098482850161128e565b600083015250602082015167ffffffffffffffff81111561152d5761152c611247565b5b61153984828501611343565b60208301525092915050565b60006020828403121561155b5761155a6108df565b5b600082015167ffffffffffffffff811115611579576115786108e4565b5b611585848285016114bd565b9150509291505056fea2646970667358221220c4aba62bac51140354dd55b475ed3bde2226a18fc413bccf0b2fbfb1fec7c8dc64736f6c634300080b0033" +var KeyShareSMBin = "0x" + +// DeployKeyShare deploys a new contract, binding an instance of KeyShare to it. +func DeployKeyShare(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Receipt, *KeyShare, error) { + parsed, err := abi.JSON(strings.NewReader(KeyShareABI)) + if err != nil { + return common.Address{}, nil, nil, err + } + + var bytecode []byte + if backend.SMCrypto() { + bytecode = common.FromHex(KeyShareSMBin) + } else { + bytecode = common.FromHex(KeyShareBin) + } + if len(bytecode) == 0 { + return common.Address{}, nil, nil, fmt.Errorf("cannot deploy empty bytecode") + } + address, receipt, contract, err := bind.DeployContract(auth, parsed, bytecode, KeyShareABI, backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, receipt, &KeyShare{KeyShareCaller: KeyShareCaller{contract: contract}, KeyShareTransactor: KeyShareTransactor{contract: contract}, KeyShareFilterer: KeyShareFilterer{contract: contract}}, nil +} + +func AsyncDeployKeyShare(auth *bind.TransactOpts, handler func(*types.Receipt, error), backend bind.ContractBackend) (*types.Transaction, error) { + parsed, err := abi.JSON(strings.NewReader(KeyShareABI)) + if err != nil { + return nil, err + } + + var bytecode []byte + if backend.SMCrypto() { + bytecode = common.FromHex(KeyShareSMBin) + } else { + bytecode = common.FromHex(KeyShareBin) + } + if len(bytecode) == 0 { + return nil, fmt.Errorf("cannot deploy empty bytecode") + } + tx, err := bind.AsyncDeployContract(auth, handler, parsed, bytecode, KeyShareABI, backend) + if err != nil { + return nil, err + } + return tx, nil +} + +// KeyShare is an auto generated Go binding around a Solidity contract. +type KeyShare struct { + KeyShareCaller // Read-only binding to the contract + KeyShareTransactor // Write-only binding to the contract + KeyShareFilterer // Log filterer for contract events +} + +// KeyShareCaller is an auto generated read-only Go binding around a Solidity contract. +type KeyShareCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// KeyShareTransactor is an auto generated write-only Go binding around a Solidity contract. +type KeyShareTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// KeyShareFilterer is an auto generated log filtering Go binding around a Solidity contract events. +type KeyShareFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// KeyShareSession is an auto generated Go binding around a Solidity contract, +// with pre-set call and transact options. +type KeyShareSession struct { + Contract *KeyShare // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// KeyShareCallerSession is an auto generated read-only Go binding around a Solidity contract, +// with pre-set call options. +type KeyShareCallerSession struct { + Contract *KeyShareCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// KeyShareTransactorSession is an auto generated write-only Go binding around a Solidity contract, +// with pre-set transact options. +type KeyShareTransactorSession struct { + Contract *KeyShareTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// KeyShareRaw is an auto generated low-level Go binding around a Solidity contract. +type KeyShareRaw struct { + Contract *KeyShare // Generic contract binding to access the raw methods on +} + +// KeyShareCallerRaw is an auto generated low-level read-only Go binding around a Solidity contract. +type KeyShareCallerRaw struct { + Contract *KeyShareCaller // Generic read-only contract binding to access the raw methods on +} + +// KeyShareTransactorRaw is an auto generated low-level write-only Go binding around a Solidity contract. +type KeyShareTransactorRaw struct { + Contract *KeyShareTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewKeyShare creates a new instance of KeyShare, bound to a specific deployed contract. +func NewKeyShare(address common.Address, backend bind.ContractBackend) (*KeyShare, error) { + contract, err := bindKeyShare(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &KeyShare{KeyShareCaller: KeyShareCaller{contract: contract}, KeyShareTransactor: KeyShareTransactor{contract: contract}, KeyShareFilterer: KeyShareFilterer{contract: contract}}, nil +} + +// NewKeyShareCaller creates a new read-only instance of KeyShare, bound to a specific deployed contract. +func NewKeyShareCaller(address common.Address, caller bind.ContractCaller) (*KeyShareCaller, error) { + contract, err := bindKeyShare(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &KeyShareCaller{contract: contract}, nil +} + +// NewKeyShareTransactor creates a new write-only instance of KeyShare, bound to a specific deployed contract. +func NewKeyShareTransactor(address common.Address, transactor bind.ContractTransactor) (*KeyShareTransactor, error) { + contract, err := bindKeyShare(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &KeyShareTransactor{contract: contract}, nil +} + +// NewKeyShareFilterer creates a new log filterer instance of KeyShare, bound to a specific deployed contract. +func NewKeyShareFilterer(address common.Address, filterer bind.ContractFilterer) (*KeyShareFilterer, error) { + contract, err := bindKeyShare(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &KeyShareFilterer{contract: contract}, nil +} + +// bindKeyShare binds a generic wrapper to an already deployed contract. +func bindKeyShare(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(KeyShareABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_KeyShare *KeyShareRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { + return _KeyShare.Contract.KeyShareCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_KeyShare *KeyShareRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.KeyShareTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_KeyShare *KeyShareRaw) TransactWithResult(opts *bind.TransactOpts, result interface{}, method string, params ...interface{}) (*types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.KeyShareTransactor.contract.TransactWithResult(opts, result, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_KeyShare *KeyShareCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { + return _KeyShare.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_KeyShare *KeyShareTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_KeyShare *KeyShareTransactorRaw) TransactWithResult(opts *bind.TransactOpts, result interface{}, method string, params ...interface{}) (*types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.contract.TransactWithResult(opts, result, method, params...) +} + +// Desc is a free data retrieval call binding the contract method 0x55f150f1. +// +// Solidity: function desc() constant returns(string, string[]) +func (_KeyShare *KeyShareCaller) Desc(opts *bind.CallOpts) (string, []string, error) { + var ( + ret0 = new(string) + ret1 = new([]string) + ) + out := &[]interface{}{ + ret0, + ret1, + } + err := _KeyShare.contract.Call(opts, out, "desc") + return *ret0, *ret1, err +} + +// Desc is a free data retrieval call binding the contract method 0x55f150f1. +// +// Solidity: function desc() constant returns(string, string[]) +func (_KeyShare *KeyShareSession) Desc() (string, []string, error) { + return _KeyShare.Contract.Desc(&_KeyShare.CallOpts) +} + +// Desc is a free data retrieval call binding the contract method 0x55f150f1. +// +// Solidity: function desc() constant returns(string, string[]) +func (_KeyShare *KeyShareCallerSession) Desc() (string, []string, error) { + return _KeyShare.Contract.Desc(&_KeyShare.CallOpts) +} + +// Select is a free data retrieval call binding the contract method 0xfcd7e3c1. +// +// Solidity: function select(string id) constant returns(string, string) +func (_KeyShare *KeyShareCaller) Select(opts *bind.CallOpts, id string) (string, string, error) { + var ( + ret0 = new(string) + ret1 = new(string) + ) + out := &[]interface{}{ + ret0, + ret1, + } + err := _KeyShare.contract.Call(opts, out, "select", id) + return *ret0, *ret1, err +} + +// Select is a free data retrieval call binding the contract method 0xfcd7e3c1. +// +// Solidity: function select(string id) constant returns(string, string) +func (_KeyShare *KeyShareSession) Select(id string) (string, string, error) { + return _KeyShare.Contract.Select(&_KeyShare.CallOpts, id) +} + +// Select is a free data retrieval call binding the contract method 0xfcd7e3c1. +// +// Solidity: function select(string id) constant returns(string, string) +func (_KeyShare *KeyShareCallerSession) Select(id string) (string, string, error) { + return _KeyShare.Contract.Select(&_KeyShare.CallOpts, id) +} + +// CreateTable is a paid mutator transaction binding the contract method 0x6a5bae4e. +// +// Solidity: function createTable(string tableName, string key, string[] fields) returns(int256) +func (_KeyShare *KeyShareTransactor) CreateTable(opts *bind.TransactOpts, tableName string, key string, fields []string) (*big.Int, *types.Transaction, *types.Receipt, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + transaction, receipt, err := _KeyShare.contract.TransactWithResult(opts, out, "createTable", tableName, key, fields) + return *ret0, transaction, receipt, err +} + +func (_KeyShare *KeyShareTransactor) AsyncCreateTable(handler func(*types.Receipt, error), opts *bind.TransactOpts, tableName string, key string, fields []string) (*types.Transaction, error) { + return _KeyShare.contract.AsyncTransact(opts, handler, "createTable", tableName, key, fields) +} + +// CreateTable is a paid mutator transaction binding the contract method 0x6a5bae4e. +// +// Solidity: function createTable(string tableName, string key, string[] fields) returns(int256) +func (_KeyShare *KeyShareSession) CreateTable(tableName string, key string, fields []string) (*big.Int, *types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.CreateTable(&_KeyShare.TransactOpts, tableName, key, fields) +} + +func (_KeyShare *KeyShareSession) AsyncCreateTable(handler func(*types.Receipt, error), tableName string, key string, fields []string) (*types.Transaction, error) { + return _KeyShare.Contract.AsyncCreateTable(handler, &_KeyShare.TransactOpts, tableName, key, fields) +} + +// CreateTable is a paid mutator transaction binding the contract method 0x6a5bae4e. +// +// Solidity: function createTable(string tableName, string key, string[] fields) returns(int256) +func (_KeyShare *KeyShareTransactorSession) CreateTable(tableName string, key string, fields []string) (*big.Int, *types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.CreateTable(&_KeyShare.TransactOpts, tableName, key, fields) +} + +func (_KeyShare *KeyShareTransactorSession) AsyncCreateTable(handler func(*types.Receipt, error), tableName string, key string, fields []string) (*types.Transaction, error) { + return _KeyShare.Contract.AsyncCreateTable(handler, &_KeyShare.TransactOpts, tableName, key, fields) +} + +// Insert is a paid mutator transaction binding the contract method 0x2fe99bdc. +// +// Solidity: function insert(string id, string name, string secret) returns(int32) +func (_KeyShare *KeyShareTransactor) Insert(opts *bind.TransactOpts, id string, name string, secret string) (int32, *types.Transaction, *types.Receipt, error) { + var ( + ret0 = new(int32) + ) + out := ret0 + transaction, receipt, err := _KeyShare.contract.TransactWithResult(opts, out, "insert", id, name, secret) + return *ret0, transaction, receipt, err +} + +func (_KeyShare *KeyShareTransactor) AsyncInsert(handler func(*types.Receipt, error), opts *bind.TransactOpts, id string, name string, secret string) (*types.Transaction, error) { + return _KeyShare.contract.AsyncTransact(opts, handler, "insert", id, name, secret) +} + +// Insert is a paid mutator transaction binding the contract method 0x2fe99bdc. +// +// Solidity: function insert(string id, string name, string secret) returns(int32) +func (_KeyShare *KeyShareSession) Insert(id string, name string, secret string) (int32, *types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.Insert(&_KeyShare.TransactOpts, id, name, secret) +} + +func (_KeyShare *KeyShareSession) AsyncInsert(handler func(*types.Receipt, error), id string, name string, secret string) (*types.Transaction, error) { + return _KeyShare.Contract.AsyncInsert(handler, &_KeyShare.TransactOpts, id, name, secret) +} + +// Insert is a paid mutator transaction binding the contract method 0x2fe99bdc. +// +// Solidity: function insert(string id, string name, string secret) returns(int32) +func (_KeyShare *KeyShareTransactorSession) Insert(id string, name string, secret string) (int32, *types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.Insert(&_KeyShare.TransactOpts, id, name, secret) +} + +func (_KeyShare *KeyShareTransactorSession) AsyncInsert(handler func(*types.Receipt, error), id string, name string, secret string) (*types.Transaction, error) { + return _KeyShare.Contract.AsyncInsert(handler, &_KeyShare.TransactOpts, id, name, secret) +} + +// Remove is a paid mutator transaction binding the contract method 0x80599e4b. +// +// Solidity: function remove(string id) returns(int32) +func (_KeyShare *KeyShareTransactor) Remove(opts *bind.TransactOpts, id string) (int32, *types.Transaction, *types.Receipt, error) { + var ( + ret0 = new(int32) + ) + out := ret0 + transaction, receipt, err := _KeyShare.contract.TransactWithResult(opts, out, "remove", id) + return *ret0, transaction, receipt, err +} + +func (_KeyShare *KeyShareTransactor) AsyncRemove(handler func(*types.Receipt, error), opts *bind.TransactOpts, id string) (*types.Transaction, error) { + return _KeyShare.contract.AsyncTransact(opts, handler, "remove", id) +} + +// Remove is a paid mutator transaction binding the contract method 0x80599e4b. +// +// Solidity: function remove(string id) returns(int32) +func (_KeyShare *KeyShareSession) Remove(id string) (int32, *types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.Remove(&_KeyShare.TransactOpts, id) +} + +func (_KeyShare *KeyShareSession) AsyncRemove(handler func(*types.Receipt, error), id string) (*types.Transaction, error) { + return _KeyShare.Contract.AsyncRemove(handler, &_KeyShare.TransactOpts, id) +} + +// Remove is a paid mutator transaction binding the contract method 0x80599e4b. +// +// Solidity: function remove(string id) returns(int32) +func (_KeyShare *KeyShareTransactorSession) Remove(id string) (int32, *types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.Remove(&_KeyShare.TransactOpts, id) +} + +func (_KeyShare *KeyShareTransactorSession) AsyncRemove(handler func(*types.Receipt, error), id string) (*types.Transaction, error) { + return _KeyShare.Contract.AsyncRemove(handler, &_KeyShare.TransactOpts, id) +} + +// Update is a paid mutator transaction binding the contract method 0x31c3e456. +// +// Solidity: function update(string id, string name, string secret) returns(int32) +func (_KeyShare *KeyShareTransactor) Update(opts *bind.TransactOpts, id string, name string, secret string) (int32, *types.Transaction, *types.Receipt, error) { + var ( + ret0 = new(int32) + ) + out := ret0 + transaction, receipt, err := _KeyShare.contract.TransactWithResult(opts, out, "update", id, name, secret) + return *ret0, transaction, receipt, err +} + +func (_KeyShare *KeyShareTransactor) AsyncUpdate(handler func(*types.Receipt, error), opts *bind.TransactOpts, id string, name string, secret string) (*types.Transaction, error) { + return _KeyShare.contract.AsyncTransact(opts, handler, "update", id, name, secret) +} + +// Update is a paid mutator transaction binding the contract method 0x31c3e456. +// +// Solidity: function update(string id, string name, string secret) returns(int32) +func (_KeyShare *KeyShareSession) Update(id string, name string, secret string) (int32, *types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.Update(&_KeyShare.TransactOpts, id, name, secret) +} + +func (_KeyShare *KeyShareSession) AsyncUpdate(handler func(*types.Receipt, error), id string, name string, secret string) (*types.Transaction, error) { + return _KeyShare.Contract.AsyncUpdate(handler, &_KeyShare.TransactOpts, id, name, secret) +} + +// Update is a paid mutator transaction binding the contract method 0x31c3e456. +// +// Solidity: function update(string id, string name, string secret) returns(int32) +func (_KeyShare *KeyShareTransactorSession) Update(id string, name string, secret string) (int32, *types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.Update(&_KeyShare.TransactOpts, id, name, secret) +} + +func (_KeyShare *KeyShareTransactorSession) AsyncUpdate(handler func(*types.Receipt, error), id string, name string, secret string) (*types.Transaction, error) { + return _KeyShare.Contract.AsyncUpdate(handler, &_KeyShare.TransactOpts, id, name, secret) +} + +// KeyShareCreateResult represents a CreateResult event raised by the KeyShare contract. +type KeyShareCreateResult struct { + Count *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// WatchCreateResult is a free log subscription operation binding the contract event 0xb5636cd912a73dcdb5b570dbe331dfa3e6435c93e029e642def2c8e40dacf210. +// +// Solidity: event CreateResult(int256 count) +func (_KeyShare *KeyShareFilterer) WatchCreateResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.contract.WatchLogs(fromBlock, handler, "CreateResult") +} + +func (_KeyShare *KeyShareFilterer) WatchAllCreateResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.contract.WatchLogs(fromBlock, handler, "CreateResult") +} + +// ParseCreateResult is a log parse operation binding the contract event 0xb5636cd912a73dcdb5b570dbe331dfa3e6435c93e029e642def2c8e40dacf210. +// +// Solidity: event CreateResult(int256 count) +func (_KeyShare *KeyShareFilterer) ParseCreateResult(log types.Log) (*KeyShareCreateResult, error) { + event := new(KeyShareCreateResult) + if err := _KeyShare.contract.UnpackLog(event, "CreateResult", log); err != nil { + return nil, err + } + return event, nil +} + +// WatchCreateResult is a free log subscription operation binding the contract event 0xb5636cd912a73dcdb5b570dbe331dfa3e6435c93e029e642def2c8e40dacf210. +// +// Solidity: event CreateResult(int256 count) +func (_KeyShare *KeyShareSession) WatchCreateResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.Contract.WatchCreateResult(fromBlock, handler) +} + +func (_KeyShare *KeyShareSession) WatchAllCreateResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.Contract.WatchAllCreateResult(fromBlock, handler) +} + +// ParseCreateResult is a log parse operation binding the contract event 0xb5636cd912a73dcdb5b570dbe331dfa3e6435c93e029e642def2c8e40dacf210. +// +// Solidity: event CreateResult(int256 count) +func (_KeyShare *KeyShareSession) ParseCreateResult(log types.Log) (*KeyShareCreateResult, error) { + return _KeyShare.Contract.ParseCreateResult(log) +} + +// KeyShareInsertResult represents a InsertResult event raised by the KeyShare contract. +type KeyShareInsertResult struct { + Count *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// WatchInsertResult is a free log subscription operation binding the contract event 0xc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce. +// +// Solidity: event InsertResult(int256 count) +func (_KeyShare *KeyShareFilterer) WatchInsertResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.contract.WatchLogs(fromBlock, handler, "InsertResult") +} + +func (_KeyShare *KeyShareFilterer) WatchAllInsertResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.contract.WatchLogs(fromBlock, handler, "InsertResult") +} + +// ParseInsertResult is a log parse operation binding the contract event 0xc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce. +// +// Solidity: event InsertResult(int256 count) +func (_KeyShare *KeyShareFilterer) ParseInsertResult(log types.Log) (*KeyShareInsertResult, error) { + event := new(KeyShareInsertResult) + if err := _KeyShare.contract.UnpackLog(event, "InsertResult", log); err != nil { + return nil, err + } + return event, nil +} + +// WatchInsertResult is a free log subscription operation binding the contract event 0xc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce. +// +// Solidity: event InsertResult(int256 count) +func (_KeyShare *KeyShareSession) WatchInsertResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.Contract.WatchInsertResult(fromBlock, handler) +} + +func (_KeyShare *KeyShareSession) WatchAllInsertResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.Contract.WatchAllInsertResult(fromBlock, handler) +} + +// ParseInsertResult is a log parse operation binding the contract event 0xc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce. +// +// Solidity: event InsertResult(int256 count) +func (_KeyShare *KeyShareSession) ParseInsertResult(log types.Log) (*KeyShareInsertResult, error) { + return _KeyShare.Contract.ParseInsertResult(log) +} + +// KeyShareRemoveResult represents a RemoveResult event raised by the KeyShare contract. +type KeyShareRemoveResult struct { + Count *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// WatchRemoveResult is a free log subscription operation binding the contract event 0x4b930e280fe29620bdff00c88155d46d6d82a39f45dd5c3ea114dc3157358112. +// +// Solidity: event RemoveResult(int256 count) +func (_KeyShare *KeyShareFilterer) WatchRemoveResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.contract.WatchLogs(fromBlock, handler, "RemoveResult") +} + +func (_KeyShare *KeyShareFilterer) WatchAllRemoveResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.contract.WatchLogs(fromBlock, handler, "RemoveResult") +} + +// ParseRemoveResult is a log parse operation binding the contract event 0x4b930e280fe29620bdff00c88155d46d6d82a39f45dd5c3ea114dc3157358112. +// +// Solidity: event RemoveResult(int256 count) +func (_KeyShare *KeyShareFilterer) ParseRemoveResult(log types.Log) (*KeyShareRemoveResult, error) { + event := new(KeyShareRemoveResult) + if err := _KeyShare.contract.UnpackLog(event, "RemoveResult", log); err != nil { + return nil, err + } + return event, nil +} + +// WatchRemoveResult is a free log subscription operation binding the contract event 0x4b930e280fe29620bdff00c88155d46d6d82a39f45dd5c3ea114dc3157358112. +// +// Solidity: event RemoveResult(int256 count) +func (_KeyShare *KeyShareSession) WatchRemoveResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.Contract.WatchRemoveResult(fromBlock, handler) +} + +func (_KeyShare *KeyShareSession) WatchAllRemoveResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.Contract.WatchAllRemoveResult(fromBlock, handler) +} + +// ParseRemoveResult is a log parse operation binding the contract event 0x4b930e280fe29620bdff00c88155d46d6d82a39f45dd5c3ea114dc3157358112. +// +// Solidity: event RemoveResult(int256 count) +func (_KeyShare *KeyShareSession) ParseRemoveResult(log types.Log) (*KeyShareRemoveResult, error) { + return _KeyShare.Contract.ParseRemoveResult(log) +} + +// KeyShareUpdateResult represents a UpdateResult event raised by the KeyShare contract. +type KeyShareUpdateResult struct { + Count *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// WatchUpdateResult is a free log subscription operation binding the contract event 0x8e5890af40fc24a059396aca2f83d6ce41fcef086876548fa4fb8ec27e9d292a. +// +// Solidity: event UpdateResult(int256 count) +func (_KeyShare *KeyShareFilterer) WatchUpdateResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.contract.WatchLogs(fromBlock, handler, "UpdateResult") +} + +func (_KeyShare *KeyShareFilterer) WatchAllUpdateResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.contract.WatchLogs(fromBlock, handler, "UpdateResult") +} + +// ParseUpdateResult is a log parse operation binding the contract event 0x8e5890af40fc24a059396aca2f83d6ce41fcef086876548fa4fb8ec27e9d292a. +// +// Solidity: event UpdateResult(int256 count) +func (_KeyShare *KeyShareFilterer) ParseUpdateResult(log types.Log) (*KeyShareUpdateResult, error) { + event := new(KeyShareUpdateResult) + if err := _KeyShare.contract.UnpackLog(event, "UpdateResult", log); err != nil { + return nil, err + } + return event, nil +} + +// WatchUpdateResult is a free log subscription operation binding the contract event 0x8e5890af40fc24a059396aca2f83d6ce41fcef086876548fa4fb8ec27e9d292a. +// +// Solidity: event UpdateResult(int256 count) +func (_KeyShare *KeyShareSession) WatchUpdateResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.Contract.WatchUpdateResult(fromBlock, handler) +} + +func (_KeyShare *KeyShareSession) WatchAllUpdateResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.Contract.WatchAllUpdateResult(fromBlock, handler) +} + +// ParseUpdateResult is a log parse operation binding the contract event 0x8e5890af40fc24a059396aca2f83d6ce41fcef086876548fa4fb8ec27e9d292a. +// +// Solidity: event UpdateResult(int256 count) +func (_KeyShare *KeyShareSession) ParseUpdateResult(log types.Log) (*KeyShareUpdateResult, error) { + return _KeyShare.Contract.ParseUpdateResult(log) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KeyShare.sol b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KeyShare.sol new file mode 100644 index 000000000..d30783026 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/KeyShare.sol @@ -0,0 +1,79 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity >=0.6.10 <0.8.20; +pragma experimental ABIEncoderV2; + +import "./Table.sol"; + +contract KeyShare { + event CreateResult(int256 count); + event InsertResult(int256 count); + event UpdateResult(int256 count); + event RemoveResult(int256 count); + + TableManager constant tm = TableManager(address(0x1002)); + Table table; + string constant TABLE_NAME = "t_key_share"; + constructor () public{ + // create table + string[] memory columnNames = new string[](2); + columnNames[0] = "name"; + columnNames[1] = "secret"; + TableInfo memory tf = TableInfo("id", columnNames); + + tm.createTable(TABLE_NAME, tf); + address t_address = tm.openTable(TABLE_NAME); + require(t_address!=address(0x0),""); + table = Table(t_address); + } + + function select(string memory id) public view returns (string memory,string memory) + { + Entry memory entry = table.select(id); + + string memory name; + string memory secret; + if(entry.fields.length==2){ + name = entry.fields[0]; + secret = entry.fields[1]; + } + return (name,secret); + } + + function insert(string memory id,string memory name,string memory secret) public returns (int32){ + string[] memory columns = new string[](2); + columns[0] = name; + columns[1] = secret; + Entry memory entry = Entry(id, columns); + int32 result = table.insert(entry); + emit InsertResult(result); + return result; + } + + function update(string memory id, string memory name, string memory secret) public returns (int32){ + UpdateField[] memory updateFields = new UpdateField[](2); + updateFields[0] = UpdateField("name", name); + updateFields[1] = UpdateField("secret", secret); + + int32 result = table.update(id, updateFields); + emit UpdateResult(result); + return result; + } + + function remove(string memory id) public returns(int32){ + int32 result = table.remove(id); + emit RemoveResult(result); + return result; + } + + function createTable(string memory tableName,string memory key,string[] memory fields) public returns(int256){ + TableInfo memory tf = TableInfo(key, fields); + int32 result = tm.createTable(tableName,tf); + emit CreateResult(result); + return result; + } + + function desc() public view returns(string memory, string[] memory){ + TableInfo memory ti = tm.desc(TABLE_NAME); + return (ti.keyColumn,ti.valueColumns); + } +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/Table.abi b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/Table.abi new file mode 100644 index 000000000..900206549 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/Table.abi @@ -0,0 +1 @@ +[{"inputs":[{"components":[{"internalType":"enum ConditionOP","name":"op","type":"uint8"},{"internalType":"string","name":"value","type":"string"}],"internalType":"struct Condition[]","name":"conditions","type":"tuple[]"}],"name":"count","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string[]","name":"fields","type":"string[]"}],"internalType":"struct Entry","name":"entry","type":"tuple"}],"name":"insert","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum ConditionOP","name":"op","type":"uint8"},{"internalType":"string","name":"value","type":"string"}],"internalType":"struct Condition[]","name":"conditions","type":"tuple[]"},{"components":[{"internalType":"uint32","name":"offset","type":"uint32"},{"internalType":"uint32","name":"count","type":"uint32"}],"internalType":"struct Limit","name":"limit","type":"tuple"}],"name":"remove","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"key","type":"string"}],"name":"remove","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum ConditionOP","name":"op","type":"uint8"},{"internalType":"string","name":"value","type":"string"}],"internalType":"struct Condition[]","name":"conditions","type":"tuple[]"},{"components":[{"internalType":"uint32","name":"offset","type":"uint32"},{"internalType":"uint32","name":"count","type":"uint32"}],"internalType":"struct Limit","name":"limit","type":"tuple"}],"name":"select","outputs":[{"components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string[]","name":"fields","type":"string[]"}],"internalType":"struct Entry[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"key","type":"string"}],"name":"select","outputs":[{"components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string[]","name":"fields","type":"string[]"}],"internalType":"struct Entry","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"key","type":"string"},{"components":[{"internalType":"string","name":"columnName","type":"string"},{"internalType":"string","name":"value","type":"string"}],"internalType":"struct UpdateField[]","name":"updateFields","type":"tuple[]"}],"name":"update","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum ConditionOP","name":"op","type":"uint8"},{"internalType":"string","name":"value","type":"string"}],"internalType":"struct Condition[]","name":"conditions","type":"tuple[]"},{"components":[{"internalType":"uint32","name":"offset","type":"uint32"},{"internalType":"uint32","name":"count","type":"uint32"}],"internalType":"struct Limit","name":"limit","type":"tuple"},{"components":[{"internalType":"string","name":"columnName","type":"string"},{"internalType":"string","name":"value","type":"string"}],"internalType":"struct UpdateField[]","name":"updateFields","type":"tuple[]"}],"name":"update","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/Table.bin b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/Table.bin new file mode 100644 index 000000000..e69de29bb diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/Table.sol b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/Table.sol new file mode 100644 index 000000000..65169a9e6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/Table.sol @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: Apache-2.0 +// 该接口文件定义了FISCO BCOS v3.1.0及以前版本的接口,使用时需要将该文件放在合约目录下 +// 若要使用FISCO BCOS v3.2.0及以后版本的接口,请使用TableV320.sol,旧合约仍然能在新节点中使用 +pragma solidity >=0.6.10 <0.8.20; +pragma experimental ABIEncoderV2; + +// KeyOrder指定Key的排序规则,字典序和数字序,如果指定为数字序,key只能为数字 +// enum KeyOrder {Lexicographic, Numerical} + struct TableInfo { + string keyColumn; + string[] valueColumns; + } + +// 记录,用于select和insert + struct Entry { + string key; + string[] fields; // 考虑2.0的Entry接口,临时Precompiled的问题,考虑加工具类接口 + } + +// 更新字段,用于update + struct UpdateField { + string columnName; + // 考虑工具类 + string value; + } + +// 筛选条件,大于、大于等于、小于、小于等于 + enum ConditionOP {GT, GE, LT, LE} + struct Condition { + ConditionOP op; + // string field; + string value; + } + +// 数量限制 + struct Limit { + uint32 offset; + // count limit max is 500 + uint32 count; + } + +// 表管理合约,是静态Precompiled,有固定的合约地址 +abstract contract TableManager { + // 创建表,传入TableInfo + function createTable(string memory path, TableInfo memory tableInfo) public virtual returns (int32); + + // 创建KV表,传入key和value字段名 + function createKVTable(string memory tableName, string memory keyField, string memory valueField) public virtual returns (int32); + + // 只提供给Solidity合约调用时使用 + function openTable(string memory path) public view virtual returns (address); + + // 变更表字段 + // 只能新增字段,不能删除字段,新增的字段默认值为空,不能与原有字段重复 + function appendColumns(string memory path, string[] memory newColumns) public virtual returns (int32); + + // 获取表信息 + function desc(string memory tableName) public view virtual returns (TableInfo memory); +} + +// 表合约,是动态Precompiled,TableManager创建时指定地址 +abstract contract Table { + // 按key查询entry + function select(string memory key) public virtual view returns (Entry memory); + + // 按条件批量查询entry,condition为空则查询所有记录 + function select(Condition[] memory conditions, Limit memory limit) public virtual view returns (Entry[] memory); + + // 按照条件查询count数据 + function count(Condition[] memory conditions) public virtual view returns (uint32); + + // 插入数据 + function insert(Entry memory entry) public virtual returns (int32); + + // 按key更新entry + function update(string memory key, UpdateField[] memory updateFields) public virtual returns (int32); + + // 按条件批量更新entry,condition为空则更新所有记录 + function update(Condition[] memory conditions, Limit memory limit, UpdateField[] memory updateFields) public virtual returns (int32); + + // 按key删除entry + function remove(string memory key) public virtual returns (int32); + // 按条件批量删除entry,condition为空则删除所有记录 + function remove(Condition[] memory conditions, Limit memory limit) public virtual returns (int32); +} + +abstract contract KVTable { + function get(string memory key) public view virtual returns (bool, string memory); + + function set(string memory key, string memory value) public virtual returns (int32); +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/TableManager.abi b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/TableManager.abi new file mode 100644 index 000000000..52e130933 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/TableManager.abi @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string[]","name":"newColumns","type":"string[]"}],"name":"appendColumns","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"tableName","type":"string"},{"internalType":"string","name":"keyField","type":"string"},{"internalType":"string","name":"valueField","type":"string"}],"name":"createKVTable","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"components":[{"internalType":"string","name":"keyColumn","type":"string"},{"internalType":"string[]","name":"valueColumns","type":"string[]"}],"internalType":"struct TableInfo","name":"tableInfo","type":"tuple"}],"name":"createTable","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"tableName","type":"string"}],"name":"desc","outputs":[{"components":[{"internalType":"string","name":"keyColumn","type":"string"},{"internalType":"string[]","name":"valueColumns","type":"string[]"}],"internalType":"struct TableInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"name":"openTable","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}] \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/TableManager.bin b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/KeyShare/TableManager.bin new file mode 100644 index 000000000..e69de29bb diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/README.md b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/README.md new file mode 100644 index 000000000..36e587321 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/README.md @@ -0,0 +1,26 @@ +# DecisionStorage + +合约名 `DecisionStorage`,用于在区块链上存储和管理决策记录 + +- **Decision**: 用于表示单个决策记录,包含以下字段: + - `evidence`: 证据的字符串表示。 + - `nodeID`: 节点的唯一标识符。 + - `timestamp`: 决策记录的时间戳。 + - `approved`: 表示决策是否被批准的布尔值。 + +# KeyShare + +`KeyShare`,用于在区块链上管理密钥共享信息。使用 `Table` 外部合约来实现数据存储和管理。以下是合约的主要功能和结构: + +### 事件 + +- **CreateResult**: 创建表的结果。 +- **InsertResult**: 插入记录的结果。 +- **UpdateResult**: 更新记录的结果。 +- **RemoveResult**: 移除记录的结果。 + +### 状态变量 + +- **tm**: `TableManager` 合约的地址,用于管理表。 +- **table**: 当前操作的表。 +- **TABLE_NAME**: 表的名称,固定为 `"t_key_share"`。 \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/source/DecisionStorage.sol b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/source/DecisionStorage.sol new file mode 100644 index 000000000..19c90c817 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/source/DecisionStorage.sol @@ -0,0 +1,74 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.10 <0.8.20; + +contract DecisionStorage { + // 决策记录结构 + struct Decision { + string evidence; // 证据 + string nodeID; // 节点ID + uint256 timestamp; // 时间戳 + bool approved; // 是否批准 + } + + // 存储所有决策记录 + Decision[] public decisions; + + // 记录决策的事件 + event DecisionRecorded( + string evidence, + string nodeID, + uint256 timestamp, + bool approved + ); + + function recordDecision(string memory evidence, string memory nodeID, bool approved) public returns (bool) { + Decision memory newDecision = Decision({ + evidence: evidence, + nodeID: nodeID, + timestamp: block.timestamp, + approved: approved + }); + + // 存储决策 + decisions.push(newDecision); + + // 触发事件 + emit DecisionRecorded( + newDecision.evidence, + newDecision.nodeID, + newDecision.timestamp, + newDecision.approved + ); + + return true; + } + + // 验证证据 可以添加具体的验证逻辑 + function verifyEvidence(string memory evidence) public view returns (bool) { + // 目前返回true用于测试 + return true; + } + + // 获取决策记录数量 + function getDecisionCount() public view returns (uint256) { + return decisions.length; + } + + // 获取指定索引的决策记录 + function getDecision(uint256 index) public view returns ( + string memory evidence, + string memory nodeID, + uint256 timestamp, + bool approved + ) { + require(index < decisions.length, "Index out of bounds"); + Decision memory decision = decisions[index]; + return ( + decision.evidence, + decision.nodeID, + decision.timestamp, + decision.approved + ); + } + +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/source/KeyShare.sol b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/source/KeyShare.sol new file mode 100644 index 000000000..d30783026 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/source/KeyShare.sol @@ -0,0 +1,79 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity >=0.6.10 <0.8.20; +pragma experimental ABIEncoderV2; + +import "./Table.sol"; + +contract KeyShare { + event CreateResult(int256 count); + event InsertResult(int256 count); + event UpdateResult(int256 count); + event RemoveResult(int256 count); + + TableManager constant tm = TableManager(address(0x1002)); + Table table; + string constant TABLE_NAME = "t_key_share"; + constructor () public{ + // create table + string[] memory columnNames = new string[](2); + columnNames[0] = "name"; + columnNames[1] = "secret"; + TableInfo memory tf = TableInfo("id", columnNames); + + tm.createTable(TABLE_NAME, tf); + address t_address = tm.openTable(TABLE_NAME); + require(t_address!=address(0x0),""); + table = Table(t_address); + } + + function select(string memory id) public view returns (string memory,string memory) + { + Entry memory entry = table.select(id); + + string memory name; + string memory secret; + if(entry.fields.length==2){ + name = entry.fields[0]; + secret = entry.fields[1]; + } + return (name,secret); + } + + function insert(string memory id,string memory name,string memory secret) public returns (int32){ + string[] memory columns = new string[](2); + columns[0] = name; + columns[1] = secret; + Entry memory entry = Entry(id, columns); + int32 result = table.insert(entry); + emit InsertResult(result); + return result; + } + + function update(string memory id, string memory name, string memory secret) public returns (int32){ + UpdateField[] memory updateFields = new UpdateField[](2); + updateFields[0] = UpdateField("name", name); + updateFields[1] = UpdateField("secret", secret); + + int32 result = table.update(id, updateFields); + emit UpdateResult(result); + return result; + } + + function remove(string memory id) public returns(int32){ + int32 result = table.remove(id); + emit RemoveResult(result); + return result; + } + + function createTable(string memory tableName,string memory key,string[] memory fields) public returns(int256){ + TableInfo memory tf = TableInfo(key, fields); + int32 result = tm.createTable(tableName,tf); + emit CreateResult(result); + return result; + } + + function desc() public view returns(string memory, string[] memory){ + TableInfo memory ti = tm.desc(TABLE_NAME); + return (ti.keyColumn,ti.valueColumns); + } +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/source/Table.sol b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/source/Table.sol new file mode 100644 index 000000000..65169a9e6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Contracts/source/Table.sol @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: Apache-2.0 +// 该接口文件定义了FISCO BCOS v3.1.0及以前版本的接口,使用时需要将该文件放在合约目录下 +// 若要使用FISCO BCOS v3.2.0及以后版本的接口,请使用TableV320.sol,旧合约仍然能在新节点中使用 +pragma solidity >=0.6.10 <0.8.20; +pragma experimental ABIEncoderV2; + +// KeyOrder指定Key的排序规则,字典序和数字序,如果指定为数字序,key只能为数字 +// enum KeyOrder {Lexicographic, Numerical} + struct TableInfo { + string keyColumn; + string[] valueColumns; + } + +// 记录,用于select和insert + struct Entry { + string key; + string[] fields; // 考虑2.0的Entry接口,临时Precompiled的问题,考虑加工具类接口 + } + +// 更新字段,用于update + struct UpdateField { + string columnName; + // 考虑工具类 + string value; + } + +// 筛选条件,大于、大于等于、小于、小于等于 + enum ConditionOP {GT, GE, LT, LE} + struct Condition { + ConditionOP op; + // string field; + string value; + } + +// 数量限制 + struct Limit { + uint32 offset; + // count limit max is 500 + uint32 count; + } + +// 表管理合约,是静态Precompiled,有固定的合约地址 +abstract contract TableManager { + // 创建表,传入TableInfo + function createTable(string memory path, TableInfo memory tableInfo) public virtual returns (int32); + + // 创建KV表,传入key和value字段名 + function createKVTable(string memory tableName, string memory keyField, string memory valueField) public virtual returns (int32); + + // 只提供给Solidity合约调用时使用 + function openTable(string memory path) public view virtual returns (address); + + // 变更表字段 + // 只能新增字段,不能删除字段,新增的字段默认值为空,不能与原有字段重复 + function appendColumns(string memory path, string[] memory newColumns) public virtual returns (int32); + + // 获取表信息 + function desc(string memory tableName) public view virtual returns (TableInfo memory); +} + +// 表合约,是动态Precompiled,TableManager创建时指定地址 +abstract contract Table { + // 按key查询entry + function select(string memory key) public virtual view returns (Entry memory); + + // 按条件批量查询entry,condition为空则查询所有记录 + function select(Condition[] memory conditions, Limit memory limit) public virtual view returns (Entry[] memory); + + // 按照条件查询count数据 + function count(Condition[] memory conditions) public virtual view returns (uint32); + + // 插入数据 + function insert(Entry memory entry) public virtual returns (int32); + + // 按key更新entry + function update(string memory key, UpdateField[] memory updateFields) public virtual returns (int32); + + // 按条件批量更新entry,condition为空则更新所有记录 + function update(Condition[] memory conditions, Limit memory limit, UpdateField[] memory updateFields) public virtual returns (int32); + + // 按key删除entry + function remove(string memory key) public virtual returns (int32); + // 按条件批量删除entry,condition为空则删除所有记录 + function remove(Condition[] memory conditions, Limit memory limit) public virtual returns (int32); +} + +abstract contract KVTable { + function get(string memory key) public view virtual returns (bool, string memory); + + function set(string memory key, string memory value) public virtual returns (int32); +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/.gitignore b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/.gitignore new file mode 100644 index 000000000..bccecb6e4 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/.gitignore @@ -0,0 +1,8 @@ + +.DS_Store + +.idea/ + +config/sdk/ + +config/keys/ diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/README.md b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/README.md new file mode 100644 index 000000000..2f8a73039 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/README.md @@ -0,0 +1 @@ +# hufu diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/.config_HW_DEBUG_x64 b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/.config_HW_DEBUG_x64 new file mode 100644 index 000000000..e69de29bb diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/.cproject b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/.cproject new file mode 100755 index 000000000..690134a3a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/.cproject @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/.project b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/.project new file mode 100755 index 000000000..102c10587 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/.project @@ -0,0 +1,28 @@ + + + SampleEnclave + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + org.eclipse.cdt.core.ccnature + com.intel.sgx.sgxnature + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/.settings/language.settings.xml b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/.settings/language.settings.xml new file mode 100755 index 000000000..bb1f9221e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/.settings/language.settings.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Arrays.cpp b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Arrays.cpp new file mode 100755 index 000000000..cca3fac68 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Arrays.cpp @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/* Test Array Attributes */ + +#include "sgx_trts.h" +#include "../Enclave.h" +#include "Enclave_t.h" +#include + +/* ecall_array_user_check: + * [user_check] parameter does not perfrom copy operations. + */ +void ecall_array_user_check(int arr[4]) +{ + if (sgx_is_outside_enclave(arr, 4 * sizeof(int)) != 1) + abort(); + + for (int i = 0; i < 4; i++) { + assert(arr[i] == i); + /* Below code performs as arr[i] = (3 - i) + * It writes 4 bytes to untrusted memory, not 8 bytes aligned. + * So we need to use memcpy_verw() for security consideration. + * */ + int tmp = 3 - i; + memcpy_verw(&arr[i], &tmp, sizeof(int)); + } +} + +/* ecall_array_in: + * arr[] is copied to trusted domain, but modified + * results will not be reflected to the untrusted side. + */ +void ecall_array_in(int arr[4]) +{ + for (int i = 0; i < 4; i++) { + assert(arr[i] == i); + arr[i] = (3 - i); + } +} + +/* ecall_array_out: + * arr[] is allocated inside the enclave, and it will be copied + * to the untrusted side + */ +void ecall_array_out(int arr[4]) +{ + for (int i = 0; i < 4; i++) { + /* arr is not copied from App */ + assert(arr[i] == 0); + arr[i] = (3 - i); + } +} + +/* ecall_array_in_out: + * arr[] will be allocated inside the enclave, content of arr[] will be copied either. + * After ECALL returns, the results will be copied to the outside. + */ +void ecall_array_in_out(int arr[4]) +{ + for (int i = 0; i < 4; i++) { + assert(arr[i] == i); + arr[i] = (3 - i); + } +} + +/* ecall_array_isary: + * [isary] tells Edger8r that user defined 'array_t' is an array type. + */ +void ecall_array_isary(array_t arr) +{ + if (sgx_is_outside_enclave(arr, sizeof(array_t)) != 1) + abort(); + + int n = sizeof(array_t)/sizeof(arr[0]); + for (int i = 0; i < n; i++) { + assert(arr[i] == i); + /* Below code performs as arr[i] = (n - 1 - i); + * It writes 4 bytes to untrusted memory, not 8 bytes aligned. + * So we need to use memcpy_verw() for security consideration. + * */ + int tmp = n -1 - i; + memcpy_verw(&arr[i], &tmp, sizeof(int)); + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Arrays.edl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Arrays.edl new file mode 100755 index 000000000..3d46c60f0 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Arrays.edl @@ -0,0 +1,98 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + +/* Arrays.edl - Samples for array attributes. */ + +enclave { + + /* + * Only for fixed-size array (size is explicitly specified). + */ + + trusted { + + /* + * []: can be used to declare an array. + * [user_check]: + * pointer of the array won't be verified, and the buffer pointed by 'arr' + * is not copied into the enclave either. But enclave can modify the memory outside. + */ + + public void ecall_array_user_check([user_check] int arr[4]); + + /* + * [in]: + * buffer for the array will be allocated inside the enclave, + * content of the array will be copied into the new allocated memory inside. + * Any changes performed inside the enclave will not affect the array outside. + */ + + public void ecall_array_in([in] int arr[4]); + + /* + * [out]: + * buffer for the array will be allocated inside the enclave, + * but the content of the array won't be copied. After ECALL returns, + * the buffer inside the enclave will copied into outside array. + */ + + public void ecall_array_out([out] int arr[4]); + + /* + * [in, out]: + * buffer for the array will be allocated inside the enclave, + * the content of the array will be copied either. After ECALL returns, + * the buffer inside the enclave will by copied into outside array again. + */ + + public void ecall_array_in_out([in, out] int arr[4]); + + /* + * [isary]: + * tells Edger8r the user defined 'array_t' is an array type, 'arr' will be + * treated as a pointer, no memory copied either due to [user_check]. + * For OCALLs, 'arr' shall point to the memory outside the enclave. + */ + + public void ecall_array_isary([user_check, isary] array_t arr); + + }; + + untrusted { + + /* + * [user_check|in|out|in,out|isary] can also be used in OCALLs, refer to the "User Guide" for details. + */ + + }; + +}; diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Arrays.o b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Arrays.o new file mode 100644 index 0000000000000000000000000000000000000000..4228599c688b385561d0f86bacca4568485cf234 GIT binary patch literal 8112 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 L +#include + +#include "../Enclave.h" +#include "Enclave_t.h" + +/* ecall_function_public: + * The public ECALL that invokes the OCALL 'ocall_function_allow'. + */ +void ecall_function_public(void) +{ + sgx_status_t ret = SGX_ERROR_UNEXPECTED; + + ret = ocall_function_allow(); + if (ret != SGX_SUCCESS) + abort(); + + return; +} + +/* ecall_function_private: + * The private ECALL that only can be invoked in the OCALL 'ocall_function_allow'. + */ +int ecall_function_private(void) +{ + return 1; +} + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Functions.edl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Functions.edl new file mode 100755 index 000000000..2c85d199d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Functions.edl @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + +/* Functions.edl - Samples for function attributes. */ + +enclave { + + /* + * Following keywords/attributes are supported for untrusted functions: + * cdecl, stdcall, fastcall, dllimport (only for Windows). + * [public] is only supported for the trusted functions. + * Trusted function will be treated as [private] w/o the [public]. + */ + + trusted { + + /* + * [public]: + * public ECALL can be called directly in App. + */ + + public void ecall_function_public(void); + + /* + * [private]: + * private ECALL cannot be called directly in App. + */ + + int ecall_function_private(void); + + }; + + untrusted { + + /* + * [allow]: + * OCALL 'ocall_function_allow' can invoke ECALL 'ecall_function_private' in App side. + * + * Note: No ECALL can be called in OCALL w/o [allow]. + */ + + void ocall_function_allow(void) allow(ecall_function_private); + + }; + +}; diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Functions.o b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Functions.o new file mode 100644 index 0000000000000000000000000000000000000000..d341d79d575b9e0bd961cf96691b679458f9608a GIT binary patch literal 6928 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 +#include + +#include "../Enclave.h" +#include "Enclave_t.h" +#include "sgx_lfence.h" +#include "sgx_trts.h" + +/* checksum_internal: + * get simple checksum of input buffer and length + */ +int32_t checksum_internal(char* buf, size_t count) +{ + register int32_t sum = 0; + int16_t* ptr = (int16_t*)buf; + + /* Main summing loop */ + while (count > 1) { + sum = sum + *ptr++; + count = count - 2; + } + + /* Add left-over byte, if any */ + if (count > 0) { + sum = sum + *((char*)ptr); + } + + return ~sum; +} + +/* ecall_pointer_user_check, ecall_pointer_in, ecall_pointer_out, ecall_pointer_in_out: + * The root ECALLs to test [in], [out], [user_check] attributes. + */ +size_t ecall_pointer_user_check(void* val, size_t sz) +{ + /* check if the buffer is allocated outside */ + if (sgx_is_outside_enclave(val, sz) != 1) + abort(); + + /*fence after sgx_is_outside_enclave check*/ + sgx_lfence(); + + char tmp[100] = { 0 }; + size_t len = sz > 100 ? 100 : sz; + + /* copy the memory into the enclave to make sure 'val' + * is not being changed in checksum_internal() */ + memcpy(tmp, val, len); + + int32_t sum = checksum_internal((char*)tmp, len); + printf("Checksum(0x%p, %zu) = 0x%x\n", + val, len, (unsigned int)sum); + + /* modify outside memory directly */ + memcpy_verw(val, "SGX_SUCCESS", len > 12 ? 12 : len); + + return len; +} + +/* ecall_pointer_in: + * the buffer of val is copied to the enclave. + */ + +void ecall_pointer_in(int* val) +{ + if (sgx_is_within_enclave(val, sizeof(int)) != 1) + abort(); + assert(*val == 1); + *val = 1234; +} + +/* ecall_pointer_out: + * the buffer of val is copied to the untrusted side. + */ +void ecall_pointer_out(int* val) +{ + if (sgx_is_within_enclave(val, sizeof(int)) != 1) + abort(); + assert(*val == 0); + *val = 1234; +} + +/* ecall_pointer_in_out: + * the buffer of val is double-copied. + */ +void ecall_pointer_in_out(int* val) +{ + if (sgx_is_within_enclave(val, sizeof(int)) != 1) + abort(); + assert(*val == 1); + *val = 1234; +} + +/* ocall_pointer_attr: + * The root ECALL that test OCALL [in], [out], [user_check]. + */ +void ocall_pointer_attr(void) +{ + sgx_status_t ret = SGX_ERROR_UNEXPECTED; + + int val = 0; + ret = ocall_pointer_user_check(&val); + if (ret != SGX_SUCCESS) + abort(); + + val = 0; + ret = ocall_pointer_in(&val); + if (ret != SGX_SUCCESS) + abort(); + assert(val == 0); + + val = 0; + ret = ocall_pointer_out(&val); + if (ret != SGX_SUCCESS) + abort(); + assert(val == 1234); + + val = 0; + ret = ocall_pointer_in_out(&val); + if (ret != SGX_SUCCESS) + abort(); + assert(val == 1234); + + return; +} + +/* ecall_pointer_string: + * [string] defines a string. + */ +void ecall_pointer_string(char* str) +{ + strncpy(str, "0987654321", strlen(str)); +} + +/* ecall_pointer_string_const: + * const [string] defines a string that cannot be modified. + */ +void ecall_pointer_string_const(const char* str) +{ + char* temp = new char[strlen(str)]; + strncpy(temp, str, strlen(str)); + delete[] temp; +} + +/* ecall_pointer_size: + * 'len' needs to be specified to tell Edger8r the length of 'str'. + */ +void ecall_pointer_size(void* ptr, size_t len) +{ + strncpy((char*)ptr, "0987654321", len); +} + +/* ecall_pointer_count: + * 'cnt' needs to be specified to tell Edger8r the number of elements in 'arr'. + */ +void ecall_pointer_count(int* arr, size_t count) +{ + int cnt = (int)count; + for (int i = (cnt - 1); i >= 0; i--) + arr[i] = (cnt - 1 - i); +} + +/* ecall_pointer_isptr_readonly: + * 'buf' is user defined type, shall be tagged with [isptr]. + * if it's not writable, [readonly] shall be specified. + */ +void ecall_pointer_isptr_readonly(buffer_t buf, size_t len) +{ + strncpy((char*)buf, "0987654321", len); +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Pointers.edl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Pointers.edl new file mode 100755 index 000000000..54da69637 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Pointers.edl @@ -0,0 +1,180 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + +/* Pointers.edl - Samples for pointer attributes. */ + +enclave { + + /* + * Following keywords/attributes are supported for pointers in Edger8r: + * in, out, user_check, + * string, wstring, + * const, size, count, isptr, readonly + */ + + trusted { + + /* + * [user_check]: + * the pointer won't be validated, and the buffer pointed by + * 'val' is not copied into the enclave either. But Enclave + * can modify the memory pointed by 'val'. + */ + + public size_t ecall_pointer_user_check([user_check] void *val, size_t sz); + + /* + * [in]: + * buffer with the same size will be allocated inside the enclave, + * content pointed by 'val' will be copied into the new allocated + * memory inside. Any changes performed inside the enclave will not + * affect the buffer outside. + */ + + public void ecall_pointer_in([in] int *val); + + /* + * [out]: + * buffer with the same size will be allocated inside the enclave, + * but the content pointed by 'val' won't be copied. But after return, + * the buffer inside the enclave will copied into outside 'val'. + */ + + public void ecall_pointer_out([out] int *val); + + /* + * [in, out]: + * buffer with the same size will be allocated inside the enclave, + * the content pointed by 'val' will be copied either. After return, + * the buffer inside the enclave will by copied into outside 'val' again. + */ + + public void ecall_pointer_in_out([in, out] int *val); + + /* + * [string]: + * the attribute tells Edger8r 'str' is NULL terminated string, so strlen + * will be used to count the length of buffer pointed by 'str'. + */ + + public void ecall_pointer_string([in, out, string] char *str); + + /* + * [const]: + * the attribute tells Edger8r the buffer pointed by 'str' cannot be modified, + * so users cannot decorate 'str' with [out] attribute anymore. + */ + + public void ecall_pointer_string_const([in, string] const char *str); + + /* + * [size]: + * the attribute tells Edger8r the length of buffer in byte pointed by 'ptr' + * (shall be copied or not). + * Note: Users shall not specify [size] on [string] parameters. + */ + + public void ecall_pointer_size([in, out, size=len] void *ptr, size_t len); + + /* + * [count]: + * the attribute tells Edger8r the number of integers to be copied from 'arr'. + */ + + public void ecall_pointer_count([in, out, count=cnt] int *arr, size_t cnt); + + /* + * [isptr]: + * tells Edger8r the user defined type is a pointer; + * [readonly]: + * forbids the buffer allocated inside the enclave to be copied back to App + * (cannot use with [out]). + */ + + public void ecall_pointer_isptr_readonly([in, isptr, readonly, size=len] buffer_t buf, size_t len); + + }; + + /* + * Users can define multiple trusted/untrusted blocks, + * edger8r will merged them into one trusted/untrusted block. + */ + trusted { + /* + * Test pointer attributes in OCALLs + */ + + public void ocall_pointer_attr(void); + + }; + + untrusted { + + /* + * [user_check]: + * the pointer won't be verified, and the buffer pointed by 'val' is not + * copied to outside buffer either. Besides 'App' cannot modify the memory + * pointer by 'val'. + */ + + void ocall_pointer_user_check([user_check] int *val); + + /* + * [in]: + * buffer with the same size will be allocated in 'App' side, the content + * pointed by 'val' will be copied into the new allocated memory outside. + * Any changes performed by 'App' will not affect the buffer pointed by 'val'. + */ + + void ocall_pointer_in([in] int *val); + + /* + * [out]: + * buffer with the same size will be allocated in 'App' side, the content + * pointed by 'val' won't be copied. But after return, the buffer outside + * will be copied into the enclave. + */ + + void ocall_pointer_out([out] int *val); + + /* + * [in, out]: + * buffer with the same size will be allocated in 'App' side, the content + * pointed by 'val' will be copied either. After return, the buffer outside + * will copied into the enclave. + */ + + void ocall_pointer_in_out([in, out] int *val); + + }; + +}; diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Pointers.o b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Pointers.o new file mode 100644 index 0000000000000000000000000000000000000000..790961212631268dbd530555a79aa6e0f12ab562 GIT binary patch literal 15776 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 literal 0 HcmV?d00001 diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Types.cpp b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Types.cpp new file mode 100755 index 000000000..3fd612397 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Types.cpp @@ -0,0 +1,155 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + +/* Test Basic Types */ + +#include "sgx_trts.h" +#include "../Enclave.h" +#include "Enclave_t.h" +#include +#include + +/* used to eliminate `unused variable' warning */ +#define UNUSED(val) (void)(val) + +#define ULP 2 + +/* used to compare double variables in order to avoid compile warnings */ +bool almost_equal(double x, double y) +{ + /* the machine epsilon has to be scaled to the magnitude of the larger value + and multiplied by the desired precision in ULPs (units in the last place) */ + return std::abs(x-y) <= std::numeric_limits::epsilon() * std::abs(x+y) * ULP; +} + +/* used to compare double variables in order to avoid compile warnings */ +bool almost_equal(float x, float y) +{ + /* the machine epsilon has to be scaled to the magnitude of the larger value + and multiplied by the desired precision in ULPs (units in the last place) */ + return std::abs(x-y) <= std::numeric_limits::epsilon() * std::abs(x+y) * ULP; +} + +/* ecall_type_char: + * [char] value passed by App. + */ +void ecall_type_char(char val) +{ + assert(val == 0x12); +#ifndef DEBUG + UNUSED(val); +#endif +} + +/* ecall_type_int: + * [int] value passed by App. + */ +void ecall_type_int(int val) +{ + assert(val == 1234); +#ifndef DEBUG + UNUSED(val); +#endif +} + +/* ecall_type_float: + * [float] value passed by App. + */ +void ecall_type_float(float val) +{ + assert(almost_equal(val, (float)1234.0)); +#ifndef DEBUG + UNUSED(val); +#endif +} + +/* ecall_type_double: + * [double] value passed by App. + */ +void ecall_type_double(double val) +{ + assert(almost_equal(val, (double)1234.5678)); +#ifndef DEBUG + UNUSED(val); +#endif +} + +/* ecall_type_size_t: + * [size_t] value passed by App. + */ +void ecall_type_size_t(size_t val) +{ + assert(val == (size_t)12345678); +#ifndef DEBUG + UNUSED(val); +#endif +} + +/* ecall_type_wchar_t: + * [wchar_t] value passed by App. + */ +void ecall_type_wchar_t(wchar_t val) +{ + assert(val == (wchar_t)0x1234); +#ifndef DEBUG + UNUSED(val); +#endif +} + +/* ecall_type_struct: + * struct_foo_t is defined in EDL and can be used in ECALL. + */ +void ecall_type_struct(struct struct_foo_t val) +{ + assert(val.struct_foo_0 == 1234); + assert(val.struct_foo_1 == 5678); +#ifndef DEBUG + UNUSED(val); +#endif +} + +/* + * ecall_type_enum_union: + * enum_foo_t/union_foo_t is defined in EDL + * and can be used in ECALL. + */ +void ecall_type_enum_union(enum enum_foo_t val1, union union_foo_t *val2) +{ + if (sgx_is_outside_enclave(val2, sizeof(union union_foo_t)) != 1) + abort(); + val2->union_foo_0 = 1; + val2->union_foo_1 = 2; /* overwrite union_foo_0 */ + assert(val1 == ENUM_FOO_0); +#ifndef DEBUG + UNUSED(val1); +#endif +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Types.edl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Types.edl new file mode 100755 index 000000000..d6c8bc898 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Types.edl @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/* Types.edl - Samples for basic types. */ + +enclave { + + /* + * Following types can be supported in Edger8r: + * char, short, int, float, double, void, + * int8_t, int16_t, int32_t, int64_t, + * size_t, wchar_t, + * uint8_t, uint16_t, uint32_t, uint64_t, + * unsigned, struct, enum, union. + */ + + /* + * We will demo few types in ECALL functions, data + * types in OCALL functions can be handled either. + */ + + /* structure definition */ + struct struct_foo_t { + /* Basic types can be used in structure. */ + uint32_t struct_foo_0; + uint64_t struct_foo_1; + }; + + /* enum definition */ + enum enum_foo_t { + ENUM_FOO_0 = 0, + ENUM_FOO_1 = 1 + }; + + /* union definition */ + union union_foo_t { + uint32_t union_foo_0; + uint32_t union_foo_1; + uint64_t union_foo_3; + }; + + trusted { + + public void ecall_type_char(char val); + public void ecall_type_int(int val); + + public void ecall_type_float(float val); + public void ecall_type_double(double val); + + public void ecall_type_size_t(size_t val); + public void ecall_type_wchar_t(wchar_t val); + + public void ecall_type_struct(struct struct_foo_t val); + public void ecall_type_enum_union(enum enum_foo_t val1, [user_check] union union_foo_t *val2); + + /* for using user defined types, please refer to Pointers.edl, Arrays.edl. */ + }; + +}; diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Types.o b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Edger8rSyntax/Types.o new file mode 100644 index 0000000000000000000000000000000000000000..6a70224ba3ca8c945872238402b382534a7abae7 GIT binary patch literal 27672 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 literal 0 HcmV?d00001 diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.config.xml b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.config.xml new file mode 100755 index 000000000..daee99867 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.config.xml @@ -0,0 +1,12 @@ + + 0 + 0 + 0x100000 + 0x200000 + 10 + 1 + + 0 + 0 + 0xFFFFFFFF + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.cpp b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.cpp new file mode 100755 index 000000000..42ef9bdc7 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.cpp @@ -0,0 +1,866 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "Enclave.h" +#include "Enclave_t.h" /* print_string */ +#include +#include /* vsnprintf */ +#include +#include +#include +#include +#include + +#include +#include +#include +#include "../common/shared_macros.h" + +/* + * printf: + * Invokes OCALL to display the enclave buffer to the terminal. + */ +int printf(const char* fmt, ...) +{ + char buf[BUFSIZ] = { '\0' }; + va_list ap; + va_start(ap, fmt); + vsnprintf(buf, BUFSIZ, fmt, ap); + va_end(ap); + ocall_print_string(buf); + return (int)strnlen(buf, BUFSIZ - 1) + 1; +} + +//-------------------------------------------------------------------------------------------------------------------------- +//-------------------------------------------------------------------------------------------------------------------------- +// 辅助函数 + + +// // 将二进制字节数组逆序(大小端转换) +// void reverseByByte(unsigned char* param, size_t size) { +// for(size_t i = 0; i < size / 2; ++i) { +// unsigned char temp = param[i]; +// param[i] = param[size-i-1]; +// param[size-i-1] = temp; +// } +// } + +// 打印二进制字节数组的十六进制字符串 +void print_hex(const uint8_t* buffer, size_t size) { + for (size_t i = 0; i < size; i++) { + printf("%02x", buffer[i]); + // if ((i + 1) % 16 == 0) printf("\n"); + } + printf("\n"); +} + +// 将字节数组转换为十六进制字符串 +void biToHexString(const unsigned char* biArray, size_t biArraySize, char* outputHex) { + const char hex_digits[] = "0123456789abcdef"; // 十六进制字符映射表 + + for (size_t i = 0; i < biArraySize; ++i) { + unsigned char byte = biArray[i]; + // 通过位运算获取高4位和低4位的十六进制字符 + outputHex[i * 2] = hex_digits[byte >> 4]; // 高4位 + outputHex[i * 2 + 1] = hex_digits[byte & 0x0F]; // 低4位 + } + outputHex[biArraySize * 2] = '\0'; // 结束符 +} + +// 将十六进制字符串转换回字节数组 +bool hexStringToBi(const std::string& hex_str, unsigned char* array, size_t size) { + if (hex_str.length() != size * 2) { + printf("Error: imcompatible length: %d vs %d.\n", hex_str.length(), size * 2); + return false; // 十六进制字符串的长度必须是数组大小的两倍 + } + + for (size_t i = 0; i < size; ++i) { + unsigned int byte = 0; + // 解析每个字符对 + for (int j = 0; j < 2; ++j) { + char ch = hex_str[i * 2 + j]; + byte <<= 4; + if (ch >= '0' && ch <= '9') { + byte |= (ch - '0'); + } else if (ch >= 'a' && ch <= 'f') { + byte |= (ch - 'a' + 10); + } else if (ch >= 'A' && ch <= 'F') { + byte |= (ch - 'A' + 10); + } else { + return false; // 如果遇到无效字符 + } + } + array[i] = static_cast(byte); + } + return true; +} + +// 将数据seal之后写入外部文件 +int seal_data_and_write_to_outer(const char* filename, unsigned char* buffer, size_t write_size, const int write_mode) { + // 1. Seal 当前数据(数据进行加密处理) + unsigned char sealed_data[MAX_SEAL_DATA_SIZE] = {0}; + uint32_t sealed_size = sgx_calc_sealed_data_size(0, write_size); // 获取密封后的数据大小 + // printf("Writing line: "); + // print_hex(buffer, write_size); + // printf("Sealed size: %d\n", sealed_size); + + sgx_status_t status = sgx_seal_data(0, nullptr, write_size, buffer, sealed_size, (sgx_sealed_data_t*)sealed_data); + if (status != SGX_SUCCESS) { + printf("Error: fail to seal data.\n"); + return -1; + } + + // 2. 将密封数据转换为十六进制字符串 + char hex_buffer[2 * MAX_SEAL_DATA_SIZE + 1] = {0}; // 存储十六进制字符串 + biToHexString(sealed_data, sealed_size, hex_buffer); // 转换密封后的数据为十六进制字符串 + + // 3. 添加换行符,确保写入的每次数据后都有换行符 + size_t len = strlen(hex_buffer); + hex_buffer[len] = '\n'; + hex_buffer[len + 1] = '\0'; // 添加换行符并确保字符串结尾 + + // 4. 调用外部函数(ocall)将密封后的十六进制字符串写入文件 + int ocall_write_ret = -1; + ocall_write_file(filename, hex_buffer, strlen(hex_buffer), write_mode, &ocall_write_ret); + if (ocall_write_ret != 0) { + printf("Error: fail to write sealed hex string to file.\n"); + return -1; + } + + return 0; +} + +// 读入外部文件数据并unseal +int read_from_outer_and_unseal(const char* filename, unsigned char* decrypted_buffer, size_t max_decrypted_buffer_size) { + // 1. 调用 ocall 读取文件(读取的是十六进制字符串) + char hex_buffer[MAX_FILE_SIZE] = {0}; // 临时存储从文件读取的十六进制字符串 + int ocall_read_ret = -1; + ocall_read_file(filename, hex_buffer, MAX_FILE_SIZE, &ocall_read_ret); + if (ocall_read_ret != 0) { + printf("Error: failed to read data from outer.\n"); + return -1; // 如果读取失败,返回 + } + + // 2. 将十六进制字符串逐行转换并解密 + std::istringstream hex_stream(hex_buffer); // 创建输入字符串流,按行读取 + std::string hex_line; // 存储每一行的十六进制数据 + unsigned char temp_decrypted_buffer[MAX_UNSEAL_DATA_SIZE] = {0}; // 临时解密后的数据 + size_t total_decrypted_size = 0; // 记录总的解密数据大小 + + while (std::getline(hex_stream, hex_line)) { + // printf("Sealed data(hex): %s\n", hex_line.c_str()); + // 每行的十六进制字符串转换为字节数组 + unsigned char sealed_data[MAX_SEAL_DATA_SIZE] = {0}; // 用于存放转换后的字节数组 + size_t sealed_data_size = hex_line.length() / 2; // 每个字节由两个字符表示 + + if (!hexStringToBi(hex_line, sealed_data, sealed_data_size)) { + printf("Error: failed to convert hex string to byte array for line: %s\n", hex_line.c_str()); + return -1; + } + + // 3. 解密(Unseal)操作 + size_t unsealed_data_size = MAX_UNSEAL_DATA_SIZE; + sgx_status_t status = sgx_unseal_data((sgx_sealed_data_t*)sealed_data, nullptr, nullptr, (unsigned char*)temp_decrypted_buffer, (uint32_t*)&unsealed_data_size); + if (status != SGX_SUCCESS) { + printf("Error: failed to unseal data\n"); + return -1; + } + + // printf("Unsealed size:%d, Unsealed line:", unsealed_data_size); + // print_hex(temp_decrypted_buffer, unsealed_data_size); + // 4. 检查解密后的数据大小是否超出最大缓冲区 + if (total_decrypted_size + unsealed_data_size > max_decrypted_buffer_size) { + printf("Error: not enough buffer space for unsealed data.\n"); + return -1; + } + + // 5. 将解密后的数据追加到输出缓冲区 + memcpy(decrypted_buffer + total_decrypted_size, temp_decrypted_buffer, unsealed_data_size); + total_decrypted_size += unsealed_data_size; + + memset(temp_decrypted_buffer, 0, sizeof(temp_decrypted_buffer)); + } + + // 7. 确保解密数据以null结尾 + if (total_decrypted_size < max_decrypted_buffer_size) { + decrypted_buffer[total_decrypted_size] = 0; + } else { + decrypted_buffer[max_decrypted_buffer_size - 1] = 0; + } + + return 0; +} + +// 验证两个读写函数的可行性 +// void ecall_test_enclave_function(int* ret) { +// char* msg = "Hello world\nHello SGX\nHello Dubley"; +// seal_data_and_write_to_outer("test.txt", (unsigned char*)("Hello world"), strlen("Hello world"), APPEND_MODE); +// seal_data_and_write_to_outer("test.txt", (unsigned char*)("Hello SGX"), strlen("Hello SGX"), APPEND_MODE); +// seal_data_and_write_to_outer("test.txt", (unsigned char*)("Hello Dubley"), strlen("Hello Dubley"), APPEND_MODE); +// char unseal_msg[MAX_UNSEAL_DATA_SIZE] = {0}; +// read_from_outer_and_unseal("test.txt", (unsigned char*)unseal_msg, sizeof(unseal_msg)); +// *ret = strcmp(msg, unseal_msg); +// } + +//-------------------------------------------------------------------------------------------------------------------------- +//-------------------------------------------------------------------------------------------------------------------------- +// 交易异常监测部分 + + +// 交易预警逻辑函数 +int transaction_warning(int from_id, int to_id, double amount) { + if(amount > MAX_SINGLE_AMOUNT) { + return EXCESSIVE_SINGLE_AMOUNT; + } + return TRANSACTION_NO_EXCEPTION; +} + + +//-------------------------------------------------------------------------------------------------------------------------- +//-------------------------------------------------------------------------------------------------------------------------- +// 密钥的生成、验证、存取和使用部分 + + +// 向外部写入密钥参数(十六进制字符串) +int write_rsa_key_params_to_file(const std::string filename, unsigned char* e, unsigned char* p_n, unsigned char* p_d, + unsigned char* p_p, unsigned char* p_q, unsigned char* p_dmp1, unsigned char* p_dmq1, unsigned char* p_iqmp) { + + int ret = seal_data_and_write_to_outer(filename.c_str(), e, 4, APPEND_MODE); + if (ret != 0) { + return -1; + } + + ret = seal_data_and_write_to_outer(filename.c_str(), p_n, RSA_KEY_SIZE, APPEND_MODE); + if (ret != 0) { + return -1; + } + + ret = seal_data_and_write_to_outer(filename.c_str(), p_d, RSA_KEY_SIZE, APPEND_MODE); + if (ret != 0) { + return -1; + } + + ret = seal_data_and_write_to_outer(filename.c_str(), p_p, RSA_KEY_SIZE, APPEND_MODE); + if (ret != 0) { + return -1; + } + + ret = seal_data_and_write_to_outer(filename.c_str(), p_q, RSA_KEY_SIZE, APPEND_MODE); + if (ret != 0) { + return -1; + } + + ret = seal_data_and_write_to_outer(filename.c_str(), p_dmp1, RSA_KEY_SIZE, APPEND_MODE); + if (ret != 0) { + return -1; + } + + ret = seal_data_and_write_to_outer(filename.c_str(), p_dmq1, RSA_KEY_SIZE, APPEND_MODE); + if (ret != 0) { + return -1; + } + + ret = seal_data_and_write_to_outer(filename.c_str(), p_iqmp, RSA_KEY_SIZE, APPEND_MODE); + if (ret != 0) { + return -1; + } + + return 0; +} + +// 从外部读入密钥参数并转换为二进制数组 +int read_rsa_key_params(const std::string filename, unsigned char* e, unsigned char* p_n, unsigned char* p_d, + unsigned char* p_p, unsigned char* p_q, unsigned char* p_dmp1, unsigned char* p_dmq1, unsigned char* p_iqmp) { + + unsigned char buffer[MAX_FILE_SIZE]; // 用于存储读取的文件内容 + + // 通过 OCALL 读取文件内容 + int read_rsa_params_ret = read_from_outer_and_unseal(filename.c_str(), buffer, MAX_FILE_SIZE); + if (read_rsa_params_ret != 0) { + printf("Failed to read wallet file: %s.\n", filename.c_str()); + return -1; + } + + // 每个参数的大小 + unsigned char* params[] = {e, p_n, p_d, p_p, p_q, p_dmp1, p_dmq1, p_iqmp}; + size_t param_sizes[] = {4, RSA_KEY_SIZE, RSA_KEY_SIZE, RSA_KEY_SIZE, RSA_KEY_SIZE, RSA_KEY_SIZE, RSA_KEY_SIZE, RSA_KEY_SIZE}; + + size_t offset = 0; + int param_index = 0; + + // 按照参数的字节数读取数据 + while (param_index < 8 && offset < MAX_FILE_SIZE) { + size_t line_length = param_sizes[param_index]; // 当前参数的字节大小 + + // 检查剩余的数据是否足够读取 + if (offset + line_length > MAX_FILE_SIZE) { + printf("Error: Not enough data in file to read parameter %d.\n", param_index); + return -1; + } + + // 将 buffer 中的当前参数数据复制到对应的参数 + memcpy(params[param_index], &buffer[offset], line_length); + + // 更新偏移量,跳过当前参数的字节数 + offset += line_length; + + // 处理下一个参数 + param_index++; + } + + // 检查是否读取了足够的参数 + if (param_index != 8) { + printf("Error: Incomplete data in file %s. Expected 8 parameters, but found %d.\n", filename.c_str(), param_index); + return -1; + } + + printf("RSA key params loaded successfully from file %s.\n", filename.c_str()); + return 0; +} + +// 从文件中重塑密钥对 +int restore_key_pair_from_file(const std::string filename, void** pub_key, void** priv_key) { + void *new_pub_key = NULL; + void *new_priv_key = NULL; + unsigned char e[4] = {0x01, 0x00, 0x01, 0x00}; + unsigned char p_n[RSA_KEY_SIZE] = {0}; + unsigned char p_d[RSA_KEY_SIZE] = {0}; + unsigned char p_p[RSA_KEY_SIZE] = {0}; + unsigned char p_q[RSA_KEY_SIZE] = {0}; + unsigned char p_dmp1[RSA_KEY_SIZE] = {0}; + unsigned char p_dmq1[RSA_KEY_SIZE] = {0}; + unsigned char p_iqmp[RSA_KEY_SIZE] = {0}; + + if(read_rsa_key_params(filename, e, p_n, p_d, p_p, p_q, p_dmp1, p_dmq1, p_iqmp) != 0){ + printf("Error: failed to read RSA key params from file.\n"); + return -1; + } + + sgx_status_t ret_create_private_key = sgx_create_rsa_priv1_key(RSA_KEY_SIZE, sizeof(e), RSA_KEY_SIZE, p_n, e, p_d, &new_priv_key); + if ( ret_create_private_key != SGX_SUCCESS) { + printf("Error: private key generation failed (%d)\n", ret_create_private_key); + return -1; + } + printf("Private key restored!\n"); + + sgx_status_t ret_create_public_key = sgx_create_rsa_pub1_key(RSA_KEY_SIZE, sizeof(e), p_n, e, &new_pub_key); + if ( ret_create_public_key != SGX_SUCCESS) { + printf("Error: public key generation failed (%d)\n", ret_create_public_key); + return -1; + } + printf("Public key restored!\n"); + + *pub_key = new_pub_key; + *priv_key = new_priv_key; + return 0; +} + +// 测试公私钥的配对性 +int test_key_pair_validation(void *public_key, void *private_key) { + // 原始明文 + const char* plaintext = "Hello, this is a secret message!"; + size_t plaintext_len = strlen(plaintext) + 1; // 包括结尾的 '\0' + + unsigned char encrypted_data[MAX_CIPHERTEXT_SIZE]; + size_t encrypted_size = MAX_CIPHERTEXT_SIZE; + + // 加密:使用公钥加密数据 + sgx_status_t status = sgx_rsa_pub_encrypt_sha256( + public_key, // 公钥 + encrypted_data, // 加密后的密文 + &encrypted_size, // 密文的大小 + (unsigned char*)plaintext, // 明文数据 + plaintext_len // 明文长度 + ); + + if (status != SGX_SUCCESS) { + printf("RSA encryption failed!\n"); + return -1; + } + + unsigned char decrypted_data[MAX_PLAINTEXT_SIZE]; + size_t decrypted_size = MAX_PLAINTEXT_SIZE; + + // 解密:使用私钥解密数据 + status = sgx_rsa_priv_decrypt_sha256( + private_key, // 私钥 + decrypted_data, // 解密后的明文数据 + &decrypted_size, // 解密后的数据长度 + encrypted_data, // 加密后的密文 + encrypted_size // 密文长度 + ); + + if (status != SGX_SUCCESS) { + printf("RSA decryption failed!\n"); + return -1; + } + + return strcmp((char*)decrypted_data, plaintext); +} + +// 测试指定文件的密钥参数是否可重塑 +int test_stored_rsa_params(const std::string filename, void *origin_pub_key, void* origin_priv_key) { + void *restored_pub_key = NULL; + void *restored_priv_key = NULL; + restore_key_pair_from_file(filename, &restored_pub_key, &restored_priv_key); + + int pass_cnt = 0; + pass_cnt += (test_key_pair_validation(origin_pub_key, origin_priv_key) == 0); + pass_cnt += (test_key_pair_validation(restored_pub_key, restored_priv_key) == 0); + pass_cnt += (test_key_pair_validation(restored_pub_key, origin_priv_key) == 0); + pass_cnt += (test_key_pair_validation(origin_pub_key, restored_priv_key) == 0); + + printf("Restored key pair from file passed %d/4 test.\n", pass_cnt); + if(pass_cnt != 4) { + return -1; + } + return 0; +} + +// 为指定用户生成密钥对 +int generate_new_rsa_key_pair(int wallet_id, unsigned char* ret_pub_key, unsigned char* ret_priv_key) { + void *g_public_key = NULL; + void *g_private_key = NULL; + unsigned char e[4] = {0x01, 0x00, 0x01, 0x00}; + unsigned char p_n[RSA_KEY_SIZE] = {0}; + unsigned char p_d[RSA_KEY_SIZE] = {0}; + unsigned char p_p[RSA_KEY_SIZE] = {0}; + unsigned char p_q[RSA_KEY_SIZE] = {0}; + unsigned char p_dmp1[RSA_KEY_SIZE] = {0}; + unsigned char p_dmq1[RSA_KEY_SIZE] = {0}; + unsigned char p_iqmp[RSA_KEY_SIZE] = {0}; + + sgx_status_t ret_create_key_params = sgx_create_rsa_key_pair(RSA_KEY_SIZE, sizeof(e), p_n, p_d, e, p_p, p_q, p_dmp1, p_dmq1, p_iqmp); + if (ret_create_key_params != SGX_SUCCESS) { + printf("Error: key params generation failed (%d)\n", ret_create_key_params); + return -1; + } + printf("Key params created!\n"); + + sgx_status_t ret_create_private_key = sgx_create_rsa_priv1_key(RSA_KEY_SIZE, sizeof(e), RSA_KEY_SIZE, p_n, e, p_d, &g_private_key); + if ( ret_create_private_key != SGX_SUCCESS) { + printf("Error: private key generation failed (%d)\n", ret_create_private_key); + return -1; + } + printf("Private key created!\n"); + + sgx_status_t ret_create_public_key = sgx_create_rsa_pub1_key(RSA_KEY_SIZE, sizeof(e), p_n, e, &g_public_key); + if ( ret_create_public_key != SGX_SUCCESS) { + printf("Error: public key generation failed (%d)\n", ret_create_public_key); + return -1; + } + printf("Public key created!\n"); + + // 将密钥参数写入外部文件 + const std::string filename = "Wallets/wallet" + std::to_string(wallet_id) + ".txt"; + if(write_rsa_key_params_to_file(filename, e, p_n, p_d, p_p, p_q, p_dmp1, p_dmq1, p_iqmp) != 0) { + printf("Error: failed to write RSA key params to file.\n"); + return -1; + } + printf("Successfully write rsa key params into file.\n"); + + if (test_stored_rsa_params(filename, g_public_key, g_private_key) != 0) { + printf("New rsa key pair failed the restoration test.\n"); + return -1; + } + + memcpy(ret_pub_key, p_n, RSA_KEY_SIZE); + memcpy(ret_priv_key, p_d, RSA_KEY_SIZE); + + return 0; +} + +// 使用用户公钥加密交易 +int encrypt_transaction_with_user_keys(int from_id, int to_id, double amount, char* encrypted_output, size_t encrypted_output_size) { + // 获取 from_id 和 to_id 的公私钥 + void* pub_key = NULL; + void* priv_key = NULL; + + const std::string filename = "Wallets/wallet" + std::to_string(from_id) + ".txt"; + if (restore_key_pair_from_file(filename, &pub_key, &priv_key) != 0) { + printf("Error: Failed to get RSA keys for wallet_id %d\n", from_id); + return -1; + } + + printf("Data to encrypt: \n", from_id, to_id, amount); + // 定义加密后的数据 + unsigned char encrypted_from_id[MAX_CIPHERTEXT_SIZE]; + unsigned char encrypted_to_id[MAX_CIPHERTEXT_SIZE]; + unsigned char encrypted_amount[MAX_CIPHERTEXT_SIZE]; + + size_t encrypted_from_id_size = MAX_CIPHERTEXT_SIZE; + size_t encrypted_to_id_size = MAX_CIPHERTEXT_SIZE; + size_t encrypted_amount_size = MAX_CIPHERTEXT_SIZE; + + // 加密 from_id + sgx_status_t status = sgx_rsa_pub_encrypt_sha256( + pub_key, // 公钥 + encrypted_from_id, // 加密后的 from_id + &encrypted_from_id_size,// 加密后的 from_id 的大小 + (unsigned char*)&from_id, // from_id 明文数据 + sizeof(from_id) // from_id 明文长度 + ); + if (status != SGX_SUCCESS) { + printf("Error: RSA encryption failed.\n"); + return -1; + } + + // 加密 to_id + status = sgx_rsa_pub_encrypt_sha256( + pub_key, // 公钥 + encrypted_to_id, // 加密后的 to_id + &encrypted_to_id_size, // 加密后的 to_id 的大小 + (unsigned char*)&to_id, // to_id 明文数据 + sizeof(to_id) // to_id 明文长度 + ); + if (status != SGX_SUCCESS) { + printf("Error: RSA encryption failed for to_id\n"); + return -1; + } + + // 加密 amount + status = sgx_rsa_pub_encrypt_sha256( + pub_key, // 公钥 + encrypted_amount, // 加密后的 amount + &encrypted_amount_size, // 加密后的 amount 的大小 + (unsigned char*)&amount, // amount 明文数据 + sizeof(amount) // amount 明文长度 + ); + if (status != SGX_SUCCESS) { + printf("Error: RSA encryption failed for amount\n"); + return -1; + } + + // 将加密后的数据转换为 16 进制字符串 + char encrypted_from_id_hex[MAX_CIPHERTEXT_SIZE * 2 + 1]; + char encrypted_to_id_hex[MAX_CIPHERTEXT_SIZE * 2 + 1]; + char encrypted_amount_hex[MAX_CIPHERTEXT_SIZE * 2 + 1]; + + biToHexString(encrypted_from_id, encrypted_from_id_size, encrypted_from_id_hex); + biToHexString(encrypted_to_id, encrypted_to_id_size, encrypted_to_id_hex); + biToHexString(encrypted_amount, encrypted_amount_size, encrypted_amount_hex); + + // 将格式化后的字符串存储到 encrypted_output + snprintf(encrypted_output, encrypted_output_size, + "from_id:%s,to_id:%s,amount:%s\n", + encrypted_from_id_hex, + encrypted_to_id_hex, + encrypted_amount_hex); + // printf("Length of encrypted string: %d\n", strlen(encrypted_output)); + return 0; +} + +// 使用Enclave私钥解密交易 +int decrypt_transaction_with_enclave_keys(const char* encrypted_from, const char* encrypted_to, const char* encrypted_amount, + size_t encrypted_size, int* from_id, int* to_id, double* amount) { + unsigned char from_bytes[RSA_KEY_SIZE] = {0}; + unsigned char to_bytes[RSA_KEY_SIZE] = {0}; + unsigned char amount_bytes[RSA_KEY_SIZE] = {0}; + + if (!hexStringToBi(encrypted_from, from_bytes, RSA_KEY_SIZE) || + !hexStringToBi(encrypted_to, to_bytes, RSA_KEY_SIZE) || + !hexStringToBi(encrypted_amount, amount_bytes, RSA_KEY_SIZE)) { + printf("Error: fail to convert the byte arrays into hex string.\n"); + return -1; + } + + // 恢复公钥和私钥 + void* pub_key = nullptr; + void* priv_key = nullptr; + std::string filename = "Enclave/enclave_keys.txt"; + if (restore_key_pair_from_file(filename, &pub_key, &priv_key) != 0) { + printf("Error: fail to restore key pairs of Enclave.\n"); + return -1; + } + + // 解密 "from" + unsigned char decrypted_from[MAX_PLAINTEXT_SIZE] = {0}; + size_t decrypted_from_size = MAX_PLAINTEXT_SIZE; + if (sgx_rsa_priv_decrypt_sha256(priv_key, decrypted_from, &decrypted_from_size, from_bytes, RSA_KEY_SIZE) != SGX_SUCCESS) { + printf("Error: fail to decrypt \"from\".\n"); + return -1; + } + + // 解密 "to" + unsigned char decrypted_to[MAX_PLAINTEXT_SIZE] = {0}; + size_t decrypted_to_size = MAX_PLAINTEXT_SIZE; + if (sgx_rsa_priv_decrypt_sha256(priv_key, decrypted_to, &decrypted_to_size, to_bytes, RSA_KEY_SIZE) != SGX_SUCCESS) { + printf("Error: fail to decrypt \"to\".\n"); + return -1; + } + + // 解密 "amount" + unsigned char decrypted_amount[MAX_PLAINTEXT_SIZE] = {0}; + size_t decrypted_amount_size = MAX_PLAINTEXT_SIZE; + if (sgx_rsa_priv_decrypt_sha256(priv_key, decrypted_amount, &decrypted_amount_size, amount_bytes, RSA_KEY_SIZE) != SGX_SUCCESS) { + printf("Error: fail to decrypt \"amount\".\n"); + return -1; + } + + *from_id = *(int*)decrypted_from; + *to_id = *(int*)decrypted_to; + *amount = *(double*)decrypted_amount; + + return 0;; // 解密成功 +} + + +//-------------------------------------------------------------------------------------------------------------------------- +//-------------------------------------------------------------------------------------------------------------------------- +// 交易混洗部分 + + +// 用于生成随机浮点数的函数 [0.0, 1.0) +double generate_random_number() { + uint64_t random_int; // 64位整数,用于生成随机浮点数 + + // 调用 sgx_read_rand 生成 8 字节的随机数 + sgx_status_t status = sgx_read_rand((unsigned char*)&random_int, sizeof(random_int)); + + if (status == SGX_SUCCESS) { + // 归一化处理,将随机整数转换为 [0.0, 1.0) 范围的 double 值 + double random_value = (double)random_int / (double)UINT64_MAX; + return random_value; + } else { + printf("Fail to generate random number. Error code: %d\n", status); + return 0.0; // 返回 0.0 表示生成失败 + } +} + +// 随机选择代理钱包 +void get_random_wallets(int num_wallets, std::vector& selected_wallets) { + selected_wallets.clear(); // 清空已选择的钱包列表 + bool selected[POOL_SIZE + 1] = { false }; // 标记钱包是否已被选择 + selected[0] = true; + + while (selected_wallets.size() < num_wallets) { + int idx = (int)(generate_random_number() * POOL_SIZE); // 生成随机钱包索引 + + // 如果该钱包未被选择,标记为已选择并加入到 selected_wallets + if (!selected[idx]) { + selected_wallets.push_back(idx); + selected[idx] = true; // 标记为已选择 + } + } +} + +// 随机拆分交易金额 +void split_transaction_amount(double total_amount, int num_splits, std::vector& splits) { + double remaining_amount = total_amount; + + // 随机生成每个子交易的金额,并保留两位小数 + for (int i = 0; i < num_splits - 1; ++i) { + // 随机金额在剩余金额的 0 到 remaining_amount / 2 之间 + double max_amount = remaining_amount / 2; + double split_amount = generate_random_number() * max_amount; + + // 保留两位小数 + split_amount = (int)(split_amount * 100.0) / 100.0; + splits.push_back(split_amount); + remaining_amount -= split_amount; + } + + // 最后一个金额是剩余金额,保留两位小数 + splits.push_back((int)(remaining_amount * 100.0) / 100.0); +} + +// 实现交易混洗逻辑的函数 +void shuffle_transaction(int from_id, int to_id, double amount, char* shuffled_output, size_t shuffled_output_size) { + // 随机选择 3 到 6 个代理钱包 + int num_wallets = (int)(generate_random_number() * 4.0) + 3; // 随机选择 3 到 6 个钱包 + std::vector selected_wallets; + get_random_wallets(num_wallets, selected_wallets); + + // 将交易金额按比例拆分 + std::vector split_amounts; + split_transaction_amount(amount, num_wallets, split_amounts); + + // 输出拆分后的交易信息 + printf("Shuffling transaction: <"); + printf("From: %d To: %d Amount: %.2f>\n", from_id, to_id, amount); + for (int i = 0; i < num_wallets; ++i) { + printf("Address: %d Amount: %.2f\n", selected_wallets[i], split_amounts[i]); + } + + size_t offset = 0; + size_t vec_size = selected_wallets.size(); + for (size_t i = 0; i < vec_size; ++i) { + // 获取当前钱包地址 + int proxy_id = selected_wallets[i]; + char proxy_id_str[10]; + int len = snprintf(proxy_id_str, sizeof(proxy_id_str), "%d", proxy_id); // 获取钱包地址字符串长度 + + // 如果还有空间,将钱包地址复制到临时缓冲区 + if (offset + len < shuffled_output_size) { + memcpy(shuffled_output + offset, proxy_id_str, len); + offset += len; + } + + // 添加冒号分隔符 + if (offset + 1 < shuffled_output_size) { + shuffled_output[offset] = ':'; + offset++; + } + + // 获取拆分的金额 + double temp_amount = split_amounts[i]; + char amount_str[20] = {0}; + len = snprintf(amount_str, sizeof(amount_str), "%.2f", temp_amount); + + // 将金额字符串拷贝到缓冲区 + if (offset + len < shuffled_output_size) { + memcpy(shuffled_output + offset, amount_str, len); + offset += len; + } + + // 如果不是最后一个钱包地址,添加逗号 + if (i != vec_size - 1) { + if (offset + 1 < shuffled_output_size) { + shuffled_output[offset] = ','; + offset++; + } + } + } + // 确保字符数组以 null 结尾 + shuffled_output[offset] = '\0'; +} + + +//-------------------------------------------------------------------------------------------------------------------------- +//-------------------------------------------------------------------------------------------------------------------------- +// ecall接口 + +// ecall测试函数 +void ecall_add(int a, int b, int *result) { + *result = a + b; +} + +// 创建一个新的钱包,并返回公钥和私钥 +void ecall_create_wallet(unsigned char* ret_pub_key, unsigned char* ret_priv_key, size_t pub_key_len, int wallet_id, int* ret){ + // 构造文件名 + std::string filename = "Wallets/wallet" + std::to_string(wallet_id) + ".txt"; + + // 判断文件是否存在 + int file_exists = 0; + ocall_file_exists(filename.c_str(), &file_exists); + + if (file_exists == 1) { + *ret = -1; // 钱包文件已经存在 + return; + } + + printf("Generating key pair for wallet_id %d\n", wallet_id); + if(generate_new_rsa_key_pair(wallet_id, ret_pub_key, ret_priv_key) != 0){ + *ret = -2; //生成密钥对失败 + return; + } + + *ret = 0; +} + +// 混洗交易(并将交易原文存至本地) +void ecall_deal_transaction(int from_id, int to_id, double amount, char* shuffled_output, size_t shuffled_output_size, + char* encrypted_output, size_t encrypted_output_size, int* warning_sign, int* ret) { + *warning_sign = transaction_warning(from_id, to_id, amount); + + shuffle_transaction(from_id, to_id, amount, shuffled_output, shuffled_output_size); + printf("Transaction shuffled successfully.\n"); + + // if(encrypt_transaction_with_user_keys(from_id, to_id, amount, encrypted_output, encrypted_output_size) != 0) { + // printf("Failed to encrypt transaction.\n"); + // *ret = -1; + // return; + // } + // printf("Transaction data encrypted successfully.\n"); + ret = 0; +} + +// 用Enclave公钥解密交易数据,并用用户公钥加密后存至本地 +void ecall_decrypt_transaction_data(const char* encrypted_from, const char* encrypted_to, const char* encrypted_amount, + size_t encrypted_size, int* from_id, int* to_id, double* amount, int* ret) { + if(decrypt_transaction_with_enclave_keys(encrypted_from, encrypted_to, encrypted_amount, encrypted_size, from_id, to_id, amount) != 0) { + printf("Fail to decrypt trasaction data.\n"); + *ret = -1; + return; + } + printf("from: %d\nto: %d\namount%lf\nSuccessfully decrypt transaction.\n", *from_id, *to_id, *amount); + + char encrypted_output[MAX_TRANSACTION_ENCRYPTED_SIZE]; + size_t encrypted_output_size = MAX_TRANSACTION_ENCRYPTED_SIZE; + encrypt_transaction_with_user_keys(*from_id, *to_id, *amount, encrypted_output, encrypted_output_size); + const std::string filename = "Transactions/wallet" + std::to_string(*from_id) + ".txt"; + int write_data_out_ret = -1; + ocall_write_file(filename.c_str(), encrypted_output, encrypted_output_size, APPEND_MODE, &write_data_out_ret); + if(write_data_out_ret != 0) { + printf("Error: fail to write encrypted transaction into file.\n"); + *ret = -1; + return; + } + printf("Successfully write encrypted transaction into file.\n"); + + *ret = 0; +} + +// 用用户公钥加密交易数据,并将交易密文存至本地 +void ecall_encrypt_transaction(int from_id, int to_id, double amount, int* ret) { + char encrypted_output[MAX_TRANSACTION_ENCRYPTED_SIZE]; + size_t encrypted_output_size = MAX_TRANSACTION_ENCRYPTED_SIZE; + + if(encrypt_transaction_with_user_keys(from_id, to_id, amount, encrypted_output, encrypted_output_size) != 0) { + printf("Error: fail to encrypt trasaction.\n"); + *ret = -1; + return; + } + + printf("Succesfully encrypt transaction.\n"); + + const std::string filename = "Transactions/wallet" + std::to_string(from_id) + ".txt"; + int write_data_out_ret = -1; + ocall_write_file(filename.c_str(), encrypted_output, encrypted_output_size, APPEND_MODE, &write_data_out_ret); + if(write_data_out_ret != 0) { + printf("Error: fail to write encrypted transaction into file.\n"); + *ret = -1; + return; + } + printf("Successfully write encrypted transaction into file.\n"); + + *ret = 0; +} + +// 交易预警 +void ecall_transaction_warning(int from_id, int to_id, double amount, int* warning_sign, int* ret) { + *warning_sign = transaction_warning(from_id, to_id, amount); + *ret = 0; +} + + +//-------------------------------------------------------------------------------------------------------------------------- +//-------------------------------------------------------------------------------------------------------------------------- diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.edl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.edl new file mode 100755 index 000000000..38bddced8 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.edl @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/* Enclave.edl - Top EDL file. */ + +enclave { + + include "user_types.h" /* buffer_t */ + + /* Import ECALL/OCALL from sub-directory EDLs. + * [from]: specifies the location of EDL file. + * [import]: specifies the functions to import, + * [*]: implies to import all functions. + */ + + from "Edger8rSyntax/Types.edl" import *; + from "Edger8rSyntax/Pointers.edl" import *; + from "Edger8rSyntax/Arrays.edl" import *; + from "Edger8rSyntax/Functions.edl" import *; + + from "TrustedLibrary/Libc.edl" import *; + from "TrustedLibrary/Libcxx.edl" import ecall_exception, ecall_map; + from "TrustedLibrary/Thread.edl" import *; + + /* + * ocall_print_string - invokes OCALL to display string buffer inside the enclave. + * [in]: copy the string buffer to App outside. + * [string]: specifies 'str' is a NULL terminated buffer. + */ + trusted { + public void ecall_add(int a, int b, [out] int *result); + public void ecall_create_wallet([out, size=key_len] unsigned char* ret_pub_key, [out, size=key_len] unsigned char* ret_priv_key, + size_t key_len, int wallet_id, [out] int* ret); + public void ecall_deal_transaction(int from_id, int to_id, double amount, [out, size=shuffled_output_size] char* shuffled_output, size_t shuffled_output_size, + [out, size=encrypted_output_size] char* encrypted_output, size_t encrypted_output_size, [out] int* warning_sign, [out] int* ret); + public void ecall_decrypt_transaction_data([in, size=encrypted_size] const char* encrypted_from, [in, size=encrypted_size] const char* encrypted_id, + [in, size=encrypted_size] const char* encrypted_amount, size_t encrypted_size, + [out] int* from_id, [out] int* to_id, [out] double* amount,[out] int* ret); + public void ecall_encrypt_transaction(int from_id, int to_id, double amount, [out] int* ret); + public void ecall_transaction_warning(int from_id, int to_id, double amount, [out] int* warning_sign, [out] int* ret); + }; + + untrusted { + void ocall_print_string([in, string] const char *str); + void ocall_file_exists([in, string] const char* filename, [out] int* exists); + void ocall_read_file([in, string] const char* filename, [out, size=buffer_size] char* buffer, size_t buffer_size, [out] int* ret); + void ocall_write_file([in, string] const char* filename, [in, size=data_size] const char* data, size_t data_size, int write_mode, [out] int *ret); + }; + +}; diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.h b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.h new file mode 100755 index 000000000..f6bb82b59 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.h @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef _ENCLAVE_H_ +#define _ENCLAVE_H_ + +#include +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +int printf(const char* fmt, ...); + +#if defined(__cplusplus) +} +#endif + +#endif /* !_ENCLAVE_H_ */ diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.lds b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.lds new file mode 100755 index 000000000..0d5614f55 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.lds @@ -0,0 +1,11 @@ +enclave.so +{ + global: + g_global_data_sim; + g_global_data; + enclave_entry; + g_peak_heap_used; + g_peak_rsrv_mem_committed; + local: + *; +}; diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.o b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave.o new file mode 100644 index 0000000000000000000000000000000000000000..5c21d107b73bdbe6196a6af7e120c3c2ea26d115 GIT binary patch literal 283416 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 U(O)SkHq0RERe|RJz4e2VGS~Hk5_-(` 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≨J>mECfPW`ERQOp* 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 S`V`csrprpVhy05kR{sxH3FS%v literal 0 HcmV?d00001 diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_private_test.pem b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_private_test.pem new file mode 100644 index 000000000..9beafca18 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_private_test.pem @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIG5AIBAAKCAYEA4mUdGPjcUMcUEXRSRtfFBLjO31MuywlhfuVGVZ6tBrozE95y +ltibcuiM0nxVNfCxPf303Tf0Dejbf+CE7esYXKpMle+otHWtVTWf6r4RJnTm76VG +Lir2YDxO8bsFqLaK92gOxa9wNhMgzrXHoTxVqTsHLFq1UbjlEkzQW3EgvxxP+poG +8jGvOQDC0n7kV0T6oRzPCUY0w8jy06KjMndfTw9J87vGsKdqsABgWt91GYtN3Z8D +MpI5TCYPFlNvLEXku0CBinrAJPm+OSNAH6xIyRegpqdaBIa7lAeYHrb8XcVvzR8t +7V+/5TAFr/bGq+NBVqo3OLalTHhzmaxgc6+YE2jdcuRBakU7/LhnZ0fcYmnCad8s +3S33aRcD+LWF2MJP8s/ED6cPDTMZaiHNC7bkiLcsx8FZ092hYwKjhrQqeUqls+s8 +EKgiSM1KmPQOJm62x8sqoLYu3IZtBR1dYMr6OKRjkJyt9LGTVUaHzRVhLTWf08Ce +oZwgClOR6m7sBYR1AgEDAoIBgQCW7hNl+z2LL2K2TYwvOoNYezSU4h8yBkD/Q4Q5 +FHNZ0XdilExkkGeh8F3hqDjOoHYpU/iTeqKz8JJVQFienLrocYhj9Rsi+R44zmqc +frYZo0Sfw4Qex07q0t9L0gPFzwdPmrSDykrOt2s0eS/A0uPGJ1odkc42e0NhiIrn +oMB/aDVRvAShdnTQqyyMVJg6LfxraIoGLs3X20yNFxd2+j+KCjFNJ9nLGkcgAEA8 +lPi7sjPpFKzMYXuIGV9kN59y2UHmbZYqLYKAQjM17Gx3/0OsFDhbCcInd8rAb0ca +F0VwWuiB570n8lrth/RZWwVLSOBI+iZL3+r6R+UBKiodC7No8oC0s7JjP2VfNY8n +ec1cV8rrJy1/6xAmbSKtdJn/A8GzV2QcU610xaSnWR1DZzUA4h7sXmY7qL5MdJJ5 +XvCFCU9eqoGXYUu2R/v+s9y9koJts2r6iH2qxBuQQE0xne6mMAZ3OAqsG8rV6TfB +v9ae/CP7ncVO56d8AtB9BpiwfXMCgcEA9kXz8V56xueaMH/abextLwddf4ix++1h +HqndLIS+8aNajI7UnaEgPWeIWck2fqVOzZZwN7NnYhTK4oJzeKtPxSvZ0DmcRj/Y +UzXx3hiwUZ6X1s0BVao8OXbDQIMgCgTBI2ebObY4wETjZHXo1scgDHUsmrJO6A4n +MJCbKIqifIGrg9u1T/Vp4l/UN46a1MQxW70GWz5P56ofR1bgMD5IXnGYU0VSu4o/ +4mn/rSAmY382a9ejPcqZrjRvj1eeC517AoHBAOtWLFnYAZ2u1zfAwv3A9hfx7p6Q +BM1lqlS20EsPVUOZuH20vZPTF0N8jtAlCDxQohucjY8zXXL30TVqrc9yuzDRQpOd +GY8mS5qyHs34eAZHejJXZ0ejIvX8jLQDftA37EJlEqtzUh3FvwqmOE/U9Pru0cqB +cZJSXL/DLKgbHzU7AyIPxF2gxtUBfGNXqDVOwceBA82rInS2JGVmCWYfy+DqwYqD +Szb9ozH+tH1VeNs8M258U212CyIa6Z+NaPEqzwKBwQCkLqKg6acvRRF1qpGenZ4f +Wj5VBcv9SOtpxpNzAyn2bOcIXzhpFhV+RQWRMM7/GN8zuaAlIkTsDdyXAaJQcjUu +HTvgJmgu1TriI/aUEHWLvw/kiKuOcX17pIIrAhVcAyts77zRJCXVg0JC+UXkhMAI +Th28dt9FXsTLCxIbBxb9q8etPSOKo5vsP+LPtGc4gsuSfgQ81DVFHBTaOerK1DA+ +9mWM2OHSXCqW8VUeFW7s/3mdOmzT3GZ0IvUKOmldE6cCgcEAnOQdkTqrvnSPeoCB +/oCkD/afFGADM5kcOHngMgo417vQU83Tt+IPglMJ4BiwKDXBZ72ztMzo90/gzkce +ikx8yzYsYmi7tMQyZyFp3qWlWYT8IY+aL8IXTqhdzVep4CVILENhx6I2voPUscQl +io34p0nhMauhDDbof9dzGry/eNICFrUtk8CEjgD9l4/FeN8r2lYCiRzBoyQYQ5lb +mWqH60crsazcz1PCIVR4U45QkigiSag3nk6yFrybv7ObS3HfAoHBAIGKsgAQuGDN +mVOAaYr9fhFK9RQ9aHKIB8AowVI3BR9bFGo8l0ON5/7QUkJ2zLB5QN4oaIY73ySY +IEw78sMdOsWxK5QNRL0J26xqJYs7RivmouevpsKC2HeJBJ9l8QRs2GEfhxTP5WbJ +kLBfwlSnm0CBd4PVUrdhx+IdFMWWj7l2tZPk7RKYEsWlqVEVE0GlcvsMuEPI/SfX +Vh6g5Jnu3fdHGwZ6d7yoou/jUPQ4iFEc+uvQcHXRTiXbyR0tGzqLxQ== +-----END RSA PRIVATE KEY----- diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_public.pem b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_public.pem new file mode 100644 index 000000000..3fc09f382 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_public.pem @@ -0,0 +1,11 @@ +-----BEGIN PUBLIC KEY----- +MIIBoDANBgkqhkiG9w0BAQEFAAOCAY0AMIIBiAKCAYEAtCf99rhgAEsaSBtV7wVr +Njk222bO7+WTCXyl+bHDhtzKlMdWZ/eSzNd8vUt0j0iksb7r/kWFTAez81+KufeX +9MlRaF59wMZ/Q3h4KOMNjPzkk+XMJr5ejsqEg/tCXJ+vjdG8iACIorqHoB5M/Rge +NQcION+BjpLe1H8iS5M22mQptoHz0QFinSetnll9B6S0EUVkjHxXRdnmLJ9lLvYf +8lV17TIyeOHea+x9TpSCjEp78u1rgPKDN6dkUGx/kt97hjf7LnT12WOSK8xfh0hv +8Fh8N5pb8yHZgeDtp5k+9Rd1PUyp1f+LXhSgnEBfto1IaMtDOarsH1Vqvz+CUDjT +0AdMah53wyw1XRRKCGYOoOGAMnISnhzUEH8kjtXH/PBAZ+5J02rkfeCJk68p5ApJ +1kyPyvbCVBNUPA0Ie+l0kkewRhBcBrbduB0GZBGZM+hGcfsauQ7EwBR43q7fncJ/ +nb2inQrYDWP51Mvn9tTJnTM/KNJqkHIWjMukrGvgWaqRAgED +-----END PUBLIC KEY----- diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_t.c b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_t.c new file mode 100644 index 000000000..aad5d12c4 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_t.c @@ -0,0 +1,2691 @@ +#include "Enclave_t.h" + +#include "sgx_trts.h" /* for sgx_ocalloc, sgx_is_outside_enclave */ +#include "sgx_lfence.h" /* for sgx_lfence */ + +#include +#include /* for memcpy_s etc */ +#include /* for malloc/free etc */ + +#define CHECK_REF_POINTER(ptr, siz) do { \ + if (!(ptr) || ! sgx_is_outside_enclave((ptr), (siz))) \ + return SGX_ERROR_INVALID_PARAMETER;\ +} while (0) + +#define CHECK_UNIQUE_POINTER(ptr, siz) do { \ + if ((ptr) && ! sgx_is_outside_enclave((ptr), (siz))) \ + return SGX_ERROR_INVALID_PARAMETER;\ +} while (0) + +#define CHECK_ENCLAVE_POINTER(ptr, siz) do { \ + if ((ptr) && ! sgx_is_within_enclave((ptr), (siz))) \ + return SGX_ERROR_INVALID_PARAMETER;\ +} while (0) + +#define ADD_ASSIGN_OVERFLOW(a, b) ( \ + ((a) += (b)) < (b) \ +) + + +typedef struct ms_ecall_add_t { + int ms_a; + int ms_b; + int* ms_result; +} ms_ecall_add_t; + +typedef struct ms_ecall_create_wallet_t { + unsigned char* ms_ret_pub_key; + unsigned char* ms_ret_priv_key; + size_t ms_key_len; + int ms_wallet_id; + int* ms_ret; +} ms_ecall_create_wallet_t; + +typedef struct ms_ecall_deal_transaction_t { + int ms_from_id; + int ms_to_id; + double ms_amount; + char* ms_shuffled_output; + size_t ms_shuffled_output_size; + char* ms_encrypted_output; + size_t ms_encrypted_output_size; + int* ms_warning_sign; + int* ms_ret; +} ms_ecall_deal_transaction_t; + +typedef struct ms_ecall_decrypt_transaction_data_t { + const char* ms_encrypted_from; + const char* ms_encrypted_id; + const char* ms_encrypted_amount; + size_t ms_encrypted_size; + int* ms_from_id; + int* ms_to_id; + double* ms_amount; + int* ms_ret; +} ms_ecall_decrypt_transaction_data_t; + +typedef struct ms_ecall_encrypt_transaction_t { + int ms_from_id; + int ms_to_id; + double ms_amount; + int* ms_ret; +} ms_ecall_encrypt_transaction_t; + +typedef struct ms_ecall_transaction_warning_t { + int ms_from_id; + int ms_to_id; + double ms_amount; + int* ms_warning_sign; + int* ms_ret; +} ms_ecall_transaction_warning_t; + +typedef struct ms_ecall_type_char_t { + char ms_val; +} ms_ecall_type_char_t; + +typedef struct ms_ecall_type_int_t { + int ms_val; +} ms_ecall_type_int_t; + +typedef struct ms_ecall_type_float_t { + float ms_val; +} ms_ecall_type_float_t; + +typedef struct ms_ecall_type_double_t { + double ms_val; +} ms_ecall_type_double_t; + +typedef struct ms_ecall_type_size_t_t { + size_t ms_val; +} ms_ecall_type_size_t_t; + +typedef struct ms_ecall_type_wchar_t_t { + wchar_t ms_val; +} ms_ecall_type_wchar_t_t; + +typedef struct ms_ecall_type_struct_t { + struct struct_foo_t ms_val; +} ms_ecall_type_struct_t; + +typedef struct ms_ecall_type_enum_union_t { + enum enum_foo_t ms_val1; + union union_foo_t* ms_val2; +} ms_ecall_type_enum_union_t; + +typedef struct ms_ecall_pointer_user_check_t { + size_t ms_retval; + void* ms_val; + size_t ms_sz; +} ms_ecall_pointer_user_check_t; + +typedef struct ms_ecall_pointer_in_t { + int* ms_val; +} ms_ecall_pointer_in_t; + +typedef struct ms_ecall_pointer_out_t { + int* ms_val; +} ms_ecall_pointer_out_t; + +typedef struct ms_ecall_pointer_in_out_t { + int* ms_val; +} ms_ecall_pointer_in_out_t; + +typedef struct ms_ecall_pointer_string_t { + char* ms_str; + size_t ms_str_len; +} ms_ecall_pointer_string_t; + +typedef struct ms_ecall_pointer_string_const_t { + const char* ms_str; + size_t ms_str_len; +} ms_ecall_pointer_string_const_t; + +typedef struct ms_ecall_pointer_size_t { + void* ms_ptr; + size_t ms_len; +} ms_ecall_pointer_size_t; + +typedef struct ms_ecall_pointer_count_t { + int* ms_arr; + size_t ms_cnt; +} ms_ecall_pointer_count_t; + +typedef struct ms_ecall_pointer_isptr_readonly_t { + buffer_t ms_buf; + size_t ms_len; +} ms_ecall_pointer_isptr_readonly_t; + +typedef struct ms_ecall_array_user_check_t { + int* ms_arr; +} ms_ecall_array_user_check_t; + +typedef struct ms_ecall_array_in_t { + int* ms_arr; +} ms_ecall_array_in_t; + +typedef struct ms_ecall_array_out_t { + int* ms_arr; +} ms_ecall_array_out_t; + +typedef struct ms_ecall_array_in_out_t { + int* ms_arr; +} ms_ecall_array_in_out_t; + +typedef struct ms_ecall_array_isary_t { + array_t* ms_arr; +} ms_ecall_array_isary_t; + +typedef struct ms_ecall_function_private_t { + int ms_retval; +} ms_ecall_function_private_t; + +typedef struct ms_ecall_sgx_cpuid_t { + int* ms_cpuinfo; + int ms_leaf; +} ms_ecall_sgx_cpuid_t; + +typedef struct ms_ecall_increase_counter_t { + size_t ms_retval; +} ms_ecall_increase_counter_t; + +typedef struct ms_ocall_print_string_t { + const char* ms_str; +} ms_ocall_print_string_t; + +typedef struct ms_ocall_file_exists_t { + const char* ms_filename; + int* ms_exists; +} ms_ocall_file_exists_t; + +typedef struct ms_ocall_read_file_t { + const char* ms_filename; + char* ms_buffer; + size_t ms_buffer_size; + int* ms_ret; +} ms_ocall_read_file_t; + +typedef struct ms_ocall_write_file_t { + const char* ms_filename; + const char* ms_data; + size_t ms_data_size; + int ms_write_mode; + int* ms_ret; +} ms_ocall_write_file_t; + +typedef struct ms_ocall_pointer_user_check_t { + int* ms_val; +} ms_ocall_pointer_user_check_t; + +typedef struct ms_ocall_pointer_in_t { + int* ms_val; +} ms_ocall_pointer_in_t; + +typedef struct ms_ocall_pointer_out_t { + int* ms_val; +} ms_ocall_pointer_out_t; + +typedef struct ms_ocall_pointer_in_out_t { + int* ms_val; +} ms_ocall_pointer_in_out_t; + +typedef struct ms_sgx_oc_cpuidex_t { + int* ms_cpuinfo; + int ms_leaf; + int ms_subleaf; +} ms_sgx_oc_cpuidex_t; + +typedef struct ms_sgx_thread_wait_untrusted_event_ocall_t { + int ms_retval; + const void* ms_self; +} ms_sgx_thread_wait_untrusted_event_ocall_t; + +typedef struct ms_sgx_thread_set_untrusted_event_ocall_t { + int ms_retval; + const void* ms_waiter; +} ms_sgx_thread_set_untrusted_event_ocall_t; + +typedef struct ms_sgx_thread_setwait_untrusted_events_ocall_t { + int ms_retval; + const void* ms_waiter; + const void* ms_self; +} ms_sgx_thread_setwait_untrusted_events_ocall_t; + +typedef struct ms_sgx_thread_set_multiple_untrusted_events_ocall_t { + int ms_retval; + const void** ms_waiters; + size_t ms_total; +} ms_sgx_thread_set_multiple_untrusted_events_ocall_t; + +static sgx_status_t SGX_CDECL sgx_ecall_add(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_add_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_add_t* ms = SGX_CAST(ms_ecall_add_t*, pms); + ms_ecall_add_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_add_t), ms, sizeof(ms_ecall_add_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + int* _tmp_result = __in_ms.ms_result; + size_t _len_result = sizeof(int); + int* _in_result = NULL; + + CHECK_UNIQUE_POINTER(_tmp_result, _len_result); + + // + // fence after pointer checks + // + sgx_lfence(); + + if (_tmp_result != NULL && _len_result != 0) { + if ( _len_result % sizeof(*_tmp_result) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + if ((_in_result = (int*)malloc(_len_result)) == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + memset((void*)_in_result, 0, _len_result); + } + ecall_add(__in_ms.ms_a, __in_ms.ms_b, _in_result); + if (_in_result) { + if (memcpy_verw_s(_tmp_result, _len_result, _in_result, _len_result)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + +err: + if (_in_result) free(_in_result); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_create_wallet(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_create_wallet_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_create_wallet_t* ms = SGX_CAST(ms_ecall_create_wallet_t*, pms); + ms_ecall_create_wallet_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_create_wallet_t), ms, sizeof(ms_ecall_create_wallet_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + unsigned char* _tmp_ret_pub_key = __in_ms.ms_ret_pub_key; + size_t _tmp_key_len = __in_ms.ms_key_len; + size_t _len_ret_pub_key = _tmp_key_len; + unsigned char* _in_ret_pub_key = NULL; + unsigned char* _tmp_ret_priv_key = __in_ms.ms_ret_priv_key; + size_t _len_ret_priv_key = _tmp_key_len; + unsigned char* _in_ret_priv_key = NULL; + int* _tmp_ret = __in_ms.ms_ret; + size_t _len_ret = sizeof(int); + int* _in_ret = NULL; + + CHECK_UNIQUE_POINTER(_tmp_ret_pub_key, _len_ret_pub_key); + CHECK_UNIQUE_POINTER(_tmp_ret_priv_key, _len_ret_priv_key); + CHECK_UNIQUE_POINTER(_tmp_ret, _len_ret); + + // + // fence after pointer checks + // + sgx_lfence(); + + if (_tmp_ret_pub_key != NULL && _len_ret_pub_key != 0) { + if ( _len_ret_pub_key % sizeof(*_tmp_ret_pub_key) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + if ((_in_ret_pub_key = (unsigned char*)malloc(_len_ret_pub_key)) == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + memset((void*)_in_ret_pub_key, 0, _len_ret_pub_key); + } + if (_tmp_ret_priv_key != NULL && _len_ret_priv_key != 0) { + if ( _len_ret_priv_key % sizeof(*_tmp_ret_priv_key) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + if ((_in_ret_priv_key = (unsigned char*)malloc(_len_ret_priv_key)) == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + memset((void*)_in_ret_priv_key, 0, _len_ret_priv_key); + } + if (_tmp_ret != NULL && _len_ret != 0) { + if ( _len_ret % sizeof(*_tmp_ret) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + if ((_in_ret = (int*)malloc(_len_ret)) == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + memset((void*)_in_ret, 0, _len_ret); + } + ecall_create_wallet(_in_ret_pub_key, _in_ret_priv_key, _tmp_key_len, __in_ms.ms_wallet_id, _in_ret); + if (_in_ret_pub_key) { + if (memcpy_verw_s(_tmp_ret_pub_key, _len_ret_pub_key, _in_ret_pub_key, _len_ret_pub_key)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + if (_in_ret_priv_key) { + if (memcpy_verw_s(_tmp_ret_priv_key, _len_ret_priv_key, _in_ret_priv_key, _len_ret_priv_key)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + if (_in_ret) { + if (memcpy_verw_s(_tmp_ret, _len_ret, _in_ret, _len_ret)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + +err: + if (_in_ret_pub_key) free(_in_ret_pub_key); + if (_in_ret_priv_key) free(_in_ret_priv_key); + if (_in_ret) free(_in_ret); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_deal_transaction(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_deal_transaction_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_deal_transaction_t* ms = SGX_CAST(ms_ecall_deal_transaction_t*, pms); + ms_ecall_deal_transaction_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_deal_transaction_t), ms, sizeof(ms_ecall_deal_transaction_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + char* _tmp_shuffled_output = __in_ms.ms_shuffled_output; + size_t _tmp_shuffled_output_size = __in_ms.ms_shuffled_output_size; + size_t _len_shuffled_output = _tmp_shuffled_output_size; + char* _in_shuffled_output = NULL; + char* _tmp_encrypted_output = __in_ms.ms_encrypted_output; + size_t _tmp_encrypted_output_size = __in_ms.ms_encrypted_output_size; + size_t _len_encrypted_output = _tmp_encrypted_output_size; + char* _in_encrypted_output = NULL; + int* _tmp_warning_sign = __in_ms.ms_warning_sign; + size_t _len_warning_sign = sizeof(int); + int* _in_warning_sign = NULL; + int* _tmp_ret = __in_ms.ms_ret; + size_t _len_ret = sizeof(int); + int* _in_ret = NULL; + + CHECK_UNIQUE_POINTER(_tmp_shuffled_output, _len_shuffled_output); + CHECK_UNIQUE_POINTER(_tmp_encrypted_output, _len_encrypted_output); + CHECK_UNIQUE_POINTER(_tmp_warning_sign, _len_warning_sign); + CHECK_UNIQUE_POINTER(_tmp_ret, _len_ret); + + // + // fence after pointer checks + // + sgx_lfence(); + + if (_tmp_shuffled_output != NULL && _len_shuffled_output != 0) { + if ( _len_shuffled_output % sizeof(*_tmp_shuffled_output) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + if ((_in_shuffled_output = (char*)malloc(_len_shuffled_output)) == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + memset((void*)_in_shuffled_output, 0, _len_shuffled_output); + } + if (_tmp_encrypted_output != NULL && _len_encrypted_output != 0) { + if ( _len_encrypted_output % sizeof(*_tmp_encrypted_output) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + if ((_in_encrypted_output = (char*)malloc(_len_encrypted_output)) == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + memset((void*)_in_encrypted_output, 0, _len_encrypted_output); + } + if (_tmp_warning_sign != NULL && _len_warning_sign != 0) { + if ( _len_warning_sign % sizeof(*_tmp_warning_sign) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + if ((_in_warning_sign = (int*)malloc(_len_warning_sign)) == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + memset((void*)_in_warning_sign, 0, _len_warning_sign); + } + if (_tmp_ret != NULL && _len_ret != 0) { + if ( _len_ret % sizeof(*_tmp_ret) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + if ((_in_ret = (int*)malloc(_len_ret)) == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + memset((void*)_in_ret, 0, _len_ret); + } + ecall_deal_transaction(__in_ms.ms_from_id, __in_ms.ms_to_id, __in_ms.ms_amount, _in_shuffled_output, _tmp_shuffled_output_size, _in_encrypted_output, _tmp_encrypted_output_size, _in_warning_sign, _in_ret); + if (_in_shuffled_output) { + if (memcpy_verw_s(_tmp_shuffled_output, _len_shuffled_output, _in_shuffled_output, _len_shuffled_output)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + if (_in_encrypted_output) { + if (memcpy_verw_s(_tmp_encrypted_output, _len_encrypted_output, _in_encrypted_output, _len_encrypted_output)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + if (_in_warning_sign) { + if (memcpy_verw_s(_tmp_warning_sign, _len_warning_sign, _in_warning_sign, _len_warning_sign)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + if (_in_ret) { + if (memcpy_verw_s(_tmp_ret, _len_ret, _in_ret, _len_ret)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + +err: + if (_in_shuffled_output) free(_in_shuffled_output); + if (_in_encrypted_output) free(_in_encrypted_output); + if (_in_warning_sign) free(_in_warning_sign); + if (_in_ret) free(_in_ret); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_decrypt_transaction_data(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_decrypt_transaction_data_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_decrypt_transaction_data_t* ms = SGX_CAST(ms_ecall_decrypt_transaction_data_t*, pms); + ms_ecall_decrypt_transaction_data_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_decrypt_transaction_data_t), ms, sizeof(ms_ecall_decrypt_transaction_data_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + const char* _tmp_encrypted_from = __in_ms.ms_encrypted_from; + size_t _tmp_encrypted_size = __in_ms.ms_encrypted_size; + size_t _len_encrypted_from = _tmp_encrypted_size; + char* _in_encrypted_from = NULL; + const char* _tmp_encrypted_id = __in_ms.ms_encrypted_id; + size_t _len_encrypted_id = _tmp_encrypted_size; + char* _in_encrypted_id = NULL; + const char* _tmp_encrypted_amount = __in_ms.ms_encrypted_amount; + size_t _len_encrypted_amount = _tmp_encrypted_size; + char* _in_encrypted_amount = NULL; + int* _tmp_from_id = __in_ms.ms_from_id; + size_t _len_from_id = sizeof(int); + int* _in_from_id = NULL; + int* _tmp_to_id = __in_ms.ms_to_id; + size_t _len_to_id = sizeof(int); + int* _in_to_id = NULL; + double* _tmp_amount = __in_ms.ms_amount; + size_t _len_amount = sizeof(double); + double* _in_amount = NULL; + int* _tmp_ret = __in_ms.ms_ret; + size_t _len_ret = sizeof(int); + int* _in_ret = NULL; + + CHECK_UNIQUE_POINTER(_tmp_encrypted_from, _len_encrypted_from); + CHECK_UNIQUE_POINTER(_tmp_encrypted_id, _len_encrypted_id); + CHECK_UNIQUE_POINTER(_tmp_encrypted_amount, _len_encrypted_amount); + CHECK_UNIQUE_POINTER(_tmp_from_id, _len_from_id); + CHECK_UNIQUE_POINTER(_tmp_to_id, _len_to_id); + CHECK_UNIQUE_POINTER(_tmp_amount, _len_amount); + CHECK_UNIQUE_POINTER(_tmp_ret, _len_ret); + + // + // fence after pointer checks + // + sgx_lfence(); + + if (_tmp_encrypted_from != NULL && _len_encrypted_from != 0) { + if ( _len_encrypted_from % sizeof(*_tmp_encrypted_from) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + _in_encrypted_from = (char*)malloc(_len_encrypted_from); + if (_in_encrypted_from == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + if (memcpy_s(_in_encrypted_from, _len_encrypted_from, _tmp_encrypted_from, _len_encrypted_from)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + + } + if (_tmp_encrypted_id != NULL && _len_encrypted_id != 0) { + if ( _len_encrypted_id % sizeof(*_tmp_encrypted_id) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + _in_encrypted_id = (char*)malloc(_len_encrypted_id); + if (_in_encrypted_id == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + if (memcpy_s(_in_encrypted_id, _len_encrypted_id, _tmp_encrypted_id, _len_encrypted_id)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + + } + if (_tmp_encrypted_amount != NULL && _len_encrypted_amount != 0) { + if ( _len_encrypted_amount % sizeof(*_tmp_encrypted_amount) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + _in_encrypted_amount = (char*)malloc(_len_encrypted_amount); + if (_in_encrypted_amount == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + if (memcpy_s(_in_encrypted_amount, _len_encrypted_amount, _tmp_encrypted_amount, _len_encrypted_amount)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + + } + if (_tmp_from_id != NULL && _len_from_id != 0) { + if ( _len_from_id % sizeof(*_tmp_from_id) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + if ((_in_from_id = (int*)malloc(_len_from_id)) == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + memset((void*)_in_from_id, 0, _len_from_id); + } + if (_tmp_to_id != NULL && _len_to_id != 0) { + if ( _len_to_id % sizeof(*_tmp_to_id) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + if ((_in_to_id = (int*)malloc(_len_to_id)) == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + memset((void*)_in_to_id, 0, _len_to_id); + } + if (_tmp_amount != NULL && _len_amount != 0) { + if ( _len_amount % sizeof(*_tmp_amount) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + if ((_in_amount = (double*)malloc(_len_amount)) == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + memset((void*)_in_amount, 0, _len_amount); + } + if (_tmp_ret != NULL && _len_ret != 0) { + if ( _len_ret % sizeof(*_tmp_ret) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + if ((_in_ret = (int*)malloc(_len_ret)) == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + memset((void*)_in_ret, 0, _len_ret); + } + ecall_decrypt_transaction_data((const char*)_in_encrypted_from, (const char*)_in_encrypted_id, (const char*)_in_encrypted_amount, _tmp_encrypted_size, _in_from_id, _in_to_id, _in_amount, _in_ret); + if (_in_from_id) { + if (memcpy_verw_s(_tmp_from_id, _len_from_id, _in_from_id, _len_from_id)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + if (_in_to_id) { + if (memcpy_verw_s(_tmp_to_id, _len_to_id, _in_to_id, _len_to_id)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + if (_in_amount) { + if (memcpy_verw_s(_tmp_amount, _len_amount, _in_amount, _len_amount)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + if (_in_ret) { + if (memcpy_verw_s(_tmp_ret, _len_ret, _in_ret, _len_ret)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + +err: + if (_in_encrypted_from) free(_in_encrypted_from); + if (_in_encrypted_id) free(_in_encrypted_id); + if (_in_encrypted_amount) free(_in_encrypted_amount); + if (_in_from_id) free(_in_from_id); + if (_in_to_id) free(_in_to_id); + if (_in_amount) free(_in_amount); + if (_in_ret) free(_in_ret); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_encrypt_transaction(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_encrypt_transaction_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_encrypt_transaction_t* ms = SGX_CAST(ms_ecall_encrypt_transaction_t*, pms); + ms_ecall_encrypt_transaction_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_encrypt_transaction_t), ms, sizeof(ms_ecall_encrypt_transaction_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + int* _tmp_ret = __in_ms.ms_ret; + size_t _len_ret = sizeof(int); + int* _in_ret = NULL; + + CHECK_UNIQUE_POINTER(_tmp_ret, _len_ret); + + // + // fence after pointer checks + // + sgx_lfence(); + + if (_tmp_ret != NULL && _len_ret != 0) { + if ( _len_ret % sizeof(*_tmp_ret) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + if ((_in_ret = (int*)malloc(_len_ret)) == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + memset((void*)_in_ret, 0, _len_ret); + } + ecall_encrypt_transaction(__in_ms.ms_from_id, __in_ms.ms_to_id, __in_ms.ms_amount, _in_ret); + if (_in_ret) { + if (memcpy_verw_s(_tmp_ret, _len_ret, _in_ret, _len_ret)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + +err: + if (_in_ret) free(_in_ret); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_transaction_warning(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_transaction_warning_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_transaction_warning_t* ms = SGX_CAST(ms_ecall_transaction_warning_t*, pms); + ms_ecall_transaction_warning_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_transaction_warning_t), ms, sizeof(ms_ecall_transaction_warning_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + int* _tmp_warning_sign = __in_ms.ms_warning_sign; + size_t _len_warning_sign = sizeof(int); + int* _in_warning_sign = NULL; + int* _tmp_ret = __in_ms.ms_ret; + size_t _len_ret = sizeof(int); + int* _in_ret = NULL; + + CHECK_UNIQUE_POINTER(_tmp_warning_sign, _len_warning_sign); + CHECK_UNIQUE_POINTER(_tmp_ret, _len_ret); + + // + // fence after pointer checks + // + sgx_lfence(); + + if (_tmp_warning_sign != NULL && _len_warning_sign != 0) { + if ( _len_warning_sign % sizeof(*_tmp_warning_sign) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + if ((_in_warning_sign = (int*)malloc(_len_warning_sign)) == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + memset((void*)_in_warning_sign, 0, _len_warning_sign); + } + if (_tmp_ret != NULL && _len_ret != 0) { + if ( _len_ret % sizeof(*_tmp_ret) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + if ((_in_ret = (int*)malloc(_len_ret)) == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + memset((void*)_in_ret, 0, _len_ret); + } + ecall_transaction_warning(__in_ms.ms_from_id, __in_ms.ms_to_id, __in_ms.ms_amount, _in_warning_sign, _in_ret); + if (_in_warning_sign) { + if (memcpy_verw_s(_tmp_warning_sign, _len_warning_sign, _in_warning_sign, _len_warning_sign)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + if (_in_ret) { + if (memcpy_verw_s(_tmp_ret, _len_ret, _in_ret, _len_ret)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + +err: + if (_in_warning_sign) free(_in_warning_sign); + if (_in_ret) free(_in_ret); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_type_char(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_type_char_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_type_char_t* ms = SGX_CAST(ms_ecall_type_char_t*, pms); + ms_ecall_type_char_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_type_char_t), ms, sizeof(ms_ecall_type_char_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + + + ecall_type_char(__in_ms.ms_val); + + + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_type_int(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_type_int_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_type_int_t* ms = SGX_CAST(ms_ecall_type_int_t*, pms); + ms_ecall_type_int_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_type_int_t), ms, sizeof(ms_ecall_type_int_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + + + ecall_type_int(__in_ms.ms_val); + + + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_type_float(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_type_float_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_type_float_t* ms = SGX_CAST(ms_ecall_type_float_t*, pms); + ms_ecall_type_float_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_type_float_t), ms, sizeof(ms_ecall_type_float_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + + + ecall_type_float(__in_ms.ms_val); + + + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_type_double(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_type_double_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_type_double_t* ms = SGX_CAST(ms_ecall_type_double_t*, pms); + ms_ecall_type_double_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_type_double_t), ms, sizeof(ms_ecall_type_double_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + + + ecall_type_double(__in_ms.ms_val); + + + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_type_size_t(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_type_size_t_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_type_size_t_t* ms = SGX_CAST(ms_ecall_type_size_t_t*, pms); + ms_ecall_type_size_t_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_type_size_t_t), ms, sizeof(ms_ecall_type_size_t_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + + + ecall_type_size_t(__in_ms.ms_val); + + + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_type_wchar_t(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_type_wchar_t_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_type_wchar_t_t* ms = SGX_CAST(ms_ecall_type_wchar_t_t*, pms); + ms_ecall_type_wchar_t_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_type_wchar_t_t), ms, sizeof(ms_ecall_type_wchar_t_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + + + ecall_type_wchar_t(__in_ms.ms_val); + + + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_type_struct(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_type_struct_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_type_struct_t* ms = SGX_CAST(ms_ecall_type_struct_t*, pms); + ms_ecall_type_struct_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_type_struct_t), ms, sizeof(ms_ecall_type_struct_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + + + ecall_type_struct(__in_ms.ms_val); + + + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_type_enum_union(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_type_enum_union_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_type_enum_union_t* ms = SGX_CAST(ms_ecall_type_enum_union_t*, pms); + ms_ecall_type_enum_union_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_type_enum_union_t), ms, sizeof(ms_ecall_type_enum_union_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + union union_foo_t* _tmp_val2 = __in_ms.ms_val2; + + + ecall_type_enum_union(__in_ms.ms_val1, _tmp_val2); + + + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_pointer_user_check(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_pointer_user_check_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_pointer_user_check_t* ms = SGX_CAST(ms_ecall_pointer_user_check_t*, pms); + ms_ecall_pointer_user_check_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_pointer_user_check_t), ms, sizeof(ms_ecall_pointer_user_check_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + void* _tmp_val = __in_ms.ms_val; + size_t _in_retval; + + + _in_retval = ecall_pointer_user_check(_tmp_val, __in_ms.ms_sz); + if (memcpy_verw_s(&ms->ms_retval, sizeof(ms->ms_retval), &_in_retval, sizeof(_in_retval))) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + +err: + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_pointer_in(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_pointer_in_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_pointer_in_t* ms = SGX_CAST(ms_ecall_pointer_in_t*, pms); + ms_ecall_pointer_in_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_pointer_in_t), ms, sizeof(ms_ecall_pointer_in_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + int* _tmp_val = __in_ms.ms_val; + size_t _len_val = sizeof(int); + int* _in_val = NULL; + + CHECK_UNIQUE_POINTER(_tmp_val, _len_val); + + // + // fence after pointer checks + // + sgx_lfence(); + + if (_tmp_val != NULL && _len_val != 0) { + if ( _len_val % sizeof(*_tmp_val) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + _in_val = (int*)malloc(_len_val); + if (_in_val == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + if (memcpy_s(_in_val, _len_val, _tmp_val, _len_val)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + + } + ecall_pointer_in(_in_val); + +err: + if (_in_val) free(_in_val); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_pointer_out(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_pointer_out_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_pointer_out_t* ms = SGX_CAST(ms_ecall_pointer_out_t*, pms); + ms_ecall_pointer_out_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_pointer_out_t), ms, sizeof(ms_ecall_pointer_out_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + int* _tmp_val = __in_ms.ms_val; + size_t _len_val = sizeof(int); + int* _in_val = NULL; + + CHECK_UNIQUE_POINTER(_tmp_val, _len_val); + + // + // fence after pointer checks + // + sgx_lfence(); + + if (_tmp_val != NULL && _len_val != 0) { + if ( _len_val % sizeof(*_tmp_val) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + if ((_in_val = (int*)malloc(_len_val)) == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + memset((void*)_in_val, 0, _len_val); + } + ecall_pointer_out(_in_val); + if (_in_val) { + if (memcpy_verw_s(_tmp_val, _len_val, _in_val, _len_val)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + +err: + if (_in_val) free(_in_val); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_pointer_in_out(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_pointer_in_out_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_pointer_in_out_t* ms = SGX_CAST(ms_ecall_pointer_in_out_t*, pms); + ms_ecall_pointer_in_out_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_pointer_in_out_t), ms, sizeof(ms_ecall_pointer_in_out_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + int* _tmp_val = __in_ms.ms_val; + size_t _len_val = sizeof(int); + int* _in_val = NULL; + + CHECK_UNIQUE_POINTER(_tmp_val, _len_val); + + // + // fence after pointer checks + // + sgx_lfence(); + + if (_tmp_val != NULL && _len_val != 0) { + if ( _len_val % sizeof(*_tmp_val) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + _in_val = (int*)malloc(_len_val); + if (_in_val == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + if (memcpy_s(_in_val, _len_val, _tmp_val, _len_val)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + + } + ecall_pointer_in_out(_in_val); + if (_in_val) { + if (memcpy_verw_s(_tmp_val, _len_val, _in_val, _len_val)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + +err: + if (_in_val) free(_in_val); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_pointer_string(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_pointer_string_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_pointer_string_t* ms = SGX_CAST(ms_ecall_pointer_string_t*, pms); + ms_ecall_pointer_string_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_pointer_string_t), ms, sizeof(ms_ecall_pointer_string_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + char* _tmp_str = __in_ms.ms_str; + size_t _len_str = __in_ms.ms_str_len ; + char* _in_str = NULL; + + CHECK_UNIQUE_POINTER(_tmp_str, _len_str); + + // + // fence after pointer checks + // + sgx_lfence(); + + if (_tmp_str != NULL && _len_str != 0) { + _in_str = (char*)malloc(_len_str); + if (_in_str == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + if (memcpy_s(_in_str, _len_str, _tmp_str, _len_str)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + + _in_str[_len_str - 1] = '\0'; + if (_len_str != strlen(_in_str) + 1) + { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + ecall_pointer_string(_in_str); + if (_in_str) + { + _in_str[_len_str - 1] = '\0'; + _len_str = strlen(_in_str) + 1; + if (memcpy_verw_s((void*)_tmp_str, _len_str, _in_str, _len_str)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + +err: + if (_in_str) free(_in_str); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_pointer_string_const(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_pointer_string_const_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_pointer_string_const_t* ms = SGX_CAST(ms_ecall_pointer_string_const_t*, pms); + ms_ecall_pointer_string_const_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_pointer_string_const_t), ms, sizeof(ms_ecall_pointer_string_const_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + const char* _tmp_str = __in_ms.ms_str; + size_t _len_str = __in_ms.ms_str_len ; + char* _in_str = NULL; + + CHECK_UNIQUE_POINTER(_tmp_str, _len_str); + + // + // fence after pointer checks + // + sgx_lfence(); + + if (_tmp_str != NULL && _len_str != 0) { + _in_str = (char*)malloc(_len_str); + if (_in_str == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + if (memcpy_s(_in_str, _len_str, _tmp_str, _len_str)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + + _in_str[_len_str - 1] = '\0'; + if (_len_str != strlen(_in_str) + 1) + { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + ecall_pointer_string_const((const char*)_in_str); + +err: + if (_in_str) free(_in_str); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_pointer_size(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_pointer_size_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_pointer_size_t* ms = SGX_CAST(ms_ecall_pointer_size_t*, pms); + ms_ecall_pointer_size_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_pointer_size_t), ms, sizeof(ms_ecall_pointer_size_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + void* _tmp_ptr = __in_ms.ms_ptr; + size_t _tmp_len = __in_ms.ms_len; + size_t _len_ptr = _tmp_len; + void* _in_ptr = NULL; + + CHECK_UNIQUE_POINTER(_tmp_ptr, _len_ptr); + + // + // fence after pointer checks + // + sgx_lfence(); + + if (_tmp_ptr != NULL && _len_ptr != 0) { + _in_ptr = (void*)malloc(_len_ptr); + if (_in_ptr == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + if (memcpy_s(_in_ptr, _len_ptr, _tmp_ptr, _len_ptr)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + + } + ecall_pointer_size(_in_ptr, _tmp_len); + if (_in_ptr) { + if (memcpy_verw_s(_tmp_ptr, _len_ptr, _in_ptr, _len_ptr)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + +err: + if (_in_ptr) free(_in_ptr); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_pointer_count(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_pointer_count_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_pointer_count_t* ms = SGX_CAST(ms_ecall_pointer_count_t*, pms); + ms_ecall_pointer_count_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_pointer_count_t), ms, sizeof(ms_ecall_pointer_count_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + int* _tmp_arr = __in_ms.ms_arr; + size_t _tmp_cnt = __in_ms.ms_cnt; + size_t _len_arr = _tmp_cnt * sizeof(int); + int* _in_arr = NULL; + + if (sizeof(*_tmp_arr) != 0 && + (size_t)_tmp_cnt > (SIZE_MAX / sizeof(*_tmp_arr))) { + return SGX_ERROR_INVALID_PARAMETER; + } + + CHECK_UNIQUE_POINTER(_tmp_arr, _len_arr); + + // + // fence after pointer checks + // + sgx_lfence(); + + if (_tmp_arr != NULL && _len_arr != 0) { + if ( _len_arr % sizeof(*_tmp_arr) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + _in_arr = (int*)malloc(_len_arr); + if (_in_arr == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + if (memcpy_s(_in_arr, _len_arr, _tmp_arr, _len_arr)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + + } + ecall_pointer_count(_in_arr, _tmp_cnt); + if (_in_arr) { + if (memcpy_verw_s(_tmp_arr, _len_arr, _in_arr, _len_arr)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + +err: + if (_in_arr) free(_in_arr); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_pointer_isptr_readonly(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_pointer_isptr_readonly_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_pointer_isptr_readonly_t* ms = SGX_CAST(ms_ecall_pointer_isptr_readonly_t*, pms); + ms_ecall_pointer_isptr_readonly_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_pointer_isptr_readonly_t), ms, sizeof(ms_ecall_pointer_isptr_readonly_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + buffer_t _tmp_buf = __in_ms.ms_buf; + size_t _tmp_len = __in_ms.ms_len; + size_t _len_buf = _tmp_len; + buffer_t _in_buf = NULL; + + CHECK_UNIQUE_POINTER(_tmp_buf, _len_buf); + + // + // fence after pointer checks + // + sgx_lfence(); + + if (_tmp_buf != NULL && _len_buf != 0) { + _in_buf = (buffer_t)malloc(_len_buf); + if (_in_buf == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + if (memcpy_s((void*)_in_buf, _len_buf, _tmp_buf, _len_buf)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + + } + ecall_pointer_isptr_readonly(_in_buf, _tmp_len); + +err: + if (_in_buf) free((void*)_in_buf); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ocall_pointer_attr(void* pms) +{ + sgx_status_t status = SGX_SUCCESS; + if (pms != NULL) return SGX_ERROR_INVALID_PARAMETER; + ocall_pointer_attr(); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_array_user_check(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_array_user_check_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_array_user_check_t* ms = SGX_CAST(ms_ecall_array_user_check_t*, pms); + ms_ecall_array_user_check_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_array_user_check_t), ms, sizeof(ms_ecall_array_user_check_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + int* _tmp_arr = __in_ms.ms_arr; + + + ecall_array_user_check(_tmp_arr); + + + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_array_in(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_array_in_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_array_in_t* ms = SGX_CAST(ms_ecall_array_in_t*, pms); + ms_ecall_array_in_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_array_in_t), ms, sizeof(ms_ecall_array_in_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + int* _tmp_arr = __in_ms.ms_arr; + size_t _len_arr = 4 * sizeof(int); + int* _in_arr = NULL; + + CHECK_UNIQUE_POINTER(_tmp_arr, _len_arr); + + // + // fence after pointer checks + // + sgx_lfence(); + + if (_tmp_arr != NULL && _len_arr != 0) { + if ( _len_arr % sizeof(*_tmp_arr) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + _in_arr = (int*)malloc(_len_arr); + if (_in_arr == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + if (memcpy_s(_in_arr, _len_arr, _tmp_arr, _len_arr)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + + } + ecall_array_in(_in_arr); + +err: + if (_in_arr) free(_in_arr); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_array_out(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_array_out_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_array_out_t* ms = SGX_CAST(ms_ecall_array_out_t*, pms); + ms_ecall_array_out_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_array_out_t), ms, sizeof(ms_ecall_array_out_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + int* _tmp_arr = __in_ms.ms_arr; + size_t _len_arr = 4 * sizeof(int); + int* _in_arr = NULL; + + CHECK_UNIQUE_POINTER(_tmp_arr, _len_arr); + + // + // fence after pointer checks + // + sgx_lfence(); + + if (_tmp_arr != NULL && _len_arr != 0) { + if ( _len_arr % sizeof(*_tmp_arr) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + if ((_in_arr = (int*)malloc(_len_arr)) == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + memset((void*)_in_arr, 0, _len_arr); + } + ecall_array_out(_in_arr); + if (_in_arr) { + if (memcpy_verw_s(_tmp_arr, _len_arr, _in_arr, _len_arr)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + +err: + if (_in_arr) free(_in_arr); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_array_in_out(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_array_in_out_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_array_in_out_t* ms = SGX_CAST(ms_ecall_array_in_out_t*, pms); + ms_ecall_array_in_out_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_array_in_out_t), ms, sizeof(ms_ecall_array_in_out_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + int* _tmp_arr = __in_ms.ms_arr; + size_t _len_arr = 4 * sizeof(int); + int* _in_arr = NULL; + + CHECK_UNIQUE_POINTER(_tmp_arr, _len_arr); + + // + // fence after pointer checks + // + sgx_lfence(); + + if (_tmp_arr != NULL && _len_arr != 0) { + if ( _len_arr % sizeof(*_tmp_arr) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + _in_arr = (int*)malloc(_len_arr); + if (_in_arr == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + if (memcpy_s(_in_arr, _len_arr, _tmp_arr, _len_arr)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + + } + ecall_array_in_out(_in_arr); + if (_in_arr) { + if (memcpy_verw_s(_tmp_arr, _len_arr, _in_arr, _len_arr)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + +err: + if (_in_arr) free(_in_arr); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_array_isary(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_array_isary_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_array_isary_t* ms = SGX_CAST(ms_ecall_array_isary_t*, pms); + ms_ecall_array_isary_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_array_isary_t), ms, sizeof(ms_ecall_array_isary_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + + + ecall_array_isary((__in_ms.ms_arr != NULL) ? (*__in_ms.ms_arr) : NULL); + + + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_function_public(void* pms) +{ + sgx_status_t status = SGX_SUCCESS; + if (pms != NULL) return SGX_ERROR_INVALID_PARAMETER; + ecall_function_public(); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_function_private(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_function_private_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_function_private_t* ms = SGX_CAST(ms_ecall_function_private_t*, pms); + ms_ecall_function_private_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_function_private_t), ms, sizeof(ms_ecall_function_private_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + int _in_retval; + + + _in_retval = ecall_function_private(); + if (memcpy_verw_s(&ms->ms_retval, sizeof(ms->ms_retval), &_in_retval, sizeof(_in_retval))) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + +err: + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_malloc_free(void* pms) +{ + sgx_status_t status = SGX_SUCCESS; + if (pms != NULL) return SGX_ERROR_INVALID_PARAMETER; + ecall_malloc_free(); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_sgx_cpuid(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_sgx_cpuid_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_sgx_cpuid_t* ms = SGX_CAST(ms_ecall_sgx_cpuid_t*, pms); + ms_ecall_sgx_cpuid_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_sgx_cpuid_t), ms, sizeof(ms_ecall_sgx_cpuid_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + int* _tmp_cpuinfo = __in_ms.ms_cpuinfo; + size_t _len_cpuinfo = 4 * sizeof(int); + int* _in_cpuinfo = NULL; + + CHECK_UNIQUE_POINTER(_tmp_cpuinfo, _len_cpuinfo); + + // + // fence after pointer checks + // + sgx_lfence(); + + if (_tmp_cpuinfo != NULL && _len_cpuinfo != 0) { + if ( _len_cpuinfo % sizeof(*_tmp_cpuinfo) != 0) + { + status = SGX_ERROR_INVALID_PARAMETER; + goto err; + } + if ((_in_cpuinfo = (int*)malloc(_len_cpuinfo)) == NULL) { + status = SGX_ERROR_OUT_OF_MEMORY; + goto err; + } + + memset((void*)_in_cpuinfo, 0, _len_cpuinfo); + } + ecall_sgx_cpuid(_in_cpuinfo, __in_ms.ms_leaf); + if (_in_cpuinfo) { + if (memcpy_verw_s(_tmp_cpuinfo, _len_cpuinfo, _in_cpuinfo, _len_cpuinfo)) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + } + +err: + if (_in_cpuinfo) free(_in_cpuinfo); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_exception(void* pms) +{ + sgx_status_t status = SGX_SUCCESS; + if (pms != NULL) return SGX_ERROR_INVALID_PARAMETER; + ecall_exception(); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_map(void* pms) +{ + sgx_status_t status = SGX_SUCCESS; + if (pms != NULL) return SGX_ERROR_INVALID_PARAMETER; + ecall_map(); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_increase_counter(void* pms) +{ + CHECK_REF_POINTER(pms, sizeof(ms_ecall_increase_counter_t)); + // + // fence after pointer checks + // + sgx_lfence(); + ms_ecall_increase_counter_t* ms = SGX_CAST(ms_ecall_increase_counter_t*, pms); + ms_ecall_increase_counter_t __in_ms; + if (memcpy_s(&__in_ms, sizeof(ms_ecall_increase_counter_t), ms, sizeof(ms_ecall_increase_counter_t))) { + return SGX_ERROR_UNEXPECTED; + } + sgx_status_t status = SGX_SUCCESS; + size_t _in_retval; + + + _in_retval = ecall_increase_counter(); + if (memcpy_verw_s(&ms->ms_retval, sizeof(ms->ms_retval), &_in_retval, sizeof(_in_retval))) { + status = SGX_ERROR_UNEXPECTED; + goto err; + } + +err: + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_producer(void* pms) +{ + sgx_status_t status = SGX_SUCCESS; + if (pms != NULL) return SGX_ERROR_INVALID_PARAMETER; + ecall_producer(); + return status; +} + +static sgx_status_t SGX_CDECL sgx_ecall_consumer(void* pms) +{ + sgx_status_t status = SGX_SUCCESS; + if (pms != NULL) return SGX_ERROR_INVALID_PARAMETER; + ecall_consumer(); + return status; +} + +SGX_EXTERNC const struct { + size_t nr_ecall; + struct {void* ecall_addr; uint8_t is_priv; uint8_t is_switchless;} ecall_table[38]; +} g_ecall_table = { + 38, + { + {(void*)(uintptr_t)sgx_ecall_add, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_create_wallet, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_deal_transaction, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_decrypt_transaction_data, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_encrypt_transaction, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_transaction_warning, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_type_char, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_type_int, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_type_float, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_type_double, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_type_size_t, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_type_wchar_t, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_type_struct, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_type_enum_union, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_pointer_user_check, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_pointer_in, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_pointer_out, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_pointer_in_out, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_pointer_string, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_pointer_string_const, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_pointer_size, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_pointer_count, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_pointer_isptr_readonly, 0, 0}, + {(void*)(uintptr_t)sgx_ocall_pointer_attr, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_array_user_check, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_array_in, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_array_out, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_array_in_out, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_array_isary, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_function_public, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_function_private, 1, 0}, + {(void*)(uintptr_t)sgx_ecall_malloc_free, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_sgx_cpuid, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_exception, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_map, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_increase_counter, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_producer, 0, 0}, + {(void*)(uintptr_t)sgx_ecall_consumer, 0, 0}, + } +}; + +SGX_EXTERNC const struct { + size_t nr_ocall; + uint8_t entry_table[14][38]; +} g_dyn_entry_table = { + 14, + { + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, }, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, + } +}; + + +sgx_status_t SGX_CDECL ocall_print_string(const char* str) +{ + sgx_status_t status = SGX_SUCCESS; + size_t _len_str = str ? strlen(str) + 1 : 0; + + ms_ocall_print_string_t* ms = NULL; + size_t ocalloc_size = sizeof(ms_ocall_print_string_t); + void *__tmp = NULL; + + + CHECK_ENCLAVE_POINTER(str, _len_str); + + if (ADD_ASSIGN_OVERFLOW(ocalloc_size, (str != NULL) ? _len_str : 0)) + return SGX_ERROR_INVALID_PARAMETER; + + __tmp = sgx_ocalloc(ocalloc_size); + if (__tmp == NULL) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + ms = (ms_ocall_print_string_t*)__tmp; + __tmp = (void *)((size_t)__tmp + sizeof(ms_ocall_print_string_t)); + ocalloc_size -= sizeof(ms_ocall_print_string_t); + + if (str != NULL) { + if (memcpy_verw_s(&ms->ms_str, sizeof(const char*), &__tmp, sizeof(const char*))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + if (_len_str % sizeof(*str) != 0) { + sgx_ocfree(); + return SGX_ERROR_INVALID_PARAMETER; + } + if (memcpy_verw_s(__tmp, ocalloc_size, str, _len_str)) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + __tmp = (void *)((size_t)__tmp + _len_str); + ocalloc_size -= _len_str; + } else { + ms->ms_str = NULL; + } + + status = sgx_ocall(0, ms); + + if (status == SGX_SUCCESS) { + } + sgx_ocfree(); + return status; +} + +sgx_status_t SGX_CDECL ocall_file_exists(const char* filename, int* exists) +{ + sgx_status_t status = SGX_SUCCESS; + size_t _len_filename = filename ? strlen(filename) + 1 : 0; + size_t _len_exists = sizeof(int); + + ms_ocall_file_exists_t* ms = NULL; + size_t ocalloc_size = sizeof(ms_ocall_file_exists_t); + void *__tmp = NULL; + + void *__tmp_exists = NULL; + + CHECK_ENCLAVE_POINTER(filename, _len_filename); + CHECK_ENCLAVE_POINTER(exists, _len_exists); + + if (ADD_ASSIGN_OVERFLOW(ocalloc_size, (filename != NULL) ? _len_filename : 0)) + return SGX_ERROR_INVALID_PARAMETER; + if (ADD_ASSIGN_OVERFLOW(ocalloc_size, (exists != NULL) ? _len_exists : 0)) + return SGX_ERROR_INVALID_PARAMETER; + + __tmp = sgx_ocalloc(ocalloc_size); + if (__tmp == NULL) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + ms = (ms_ocall_file_exists_t*)__tmp; + __tmp = (void *)((size_t)__tmp + sizeof(ms_ocall_file_exists_t)); + ocalloc_size -= sizeof(ms_ocall_file_exists_t); + + if (filename != NULL) { + if (memcpy_verw_s(&ms->ms_filename, sizeof(const char*), &__tmp, sizeof(const char*))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + if (_len_filename % sizeof(*filename) != 0) { + sgx_ocfree(); + return SGX_ERROR_INVALID_PARAMETER; + } + if (memcpy_verw_s(__tmp, ocalloc_size, filename, _len_filename)) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + __tmp = (void *)((size_t)__tmp + _len_filename); + ocalloc_size -= _len_filename; + } else { + ms->ms_filename = NULL; + } + + if (exists != NULL) { + if (memcpy_verw_s(&ms->ms_exists, sizeof(int*), &__tmp, sizeof(int*))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + __tmp_exists = __tmp; + if (_len_exists % sizeof(*exists) != 0) { + sgx_ocfree(); + return SGX_ERROR_INVALID_PARAMETER; + } + memset_verw(__tmp_exists, 0, _len_exists); + __tmp = (void *)((size_t)__tmp + _len_exists); + ocalloc_size -= _len_exists; + } else { + ms->ms_exists = NULL; + } + + status = sgx_ocall(1, ms); + + if (status == SGX_SUCCESS) { + if (exists) { + if (memcpy_s((void*)exists, _len_exists, __tmp_exists, _len_exists)) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + } + } + sgx_ocfree(); + return status; +} + +sgx_status_t SGX_CDECL ocall_read_file(const char* filename, char* buffer, size_t buffer_size, int* ret) +{ + sgx_status_t status = SGX_SUCCESS; + size_t _len_filename = filename ? strlen(filename) + 1 : 0; + size_t _len_buffer = buffer_size; + size_t _len_ret = sizeof(int); + + ms_ocall_read_file_t* ms = NULL; + size_t ocalloc_size = sizeof(ms_ocall_read_file_t); + void *__tmp = NULL; + + void *__tmp_buffer = NULL; + void *__tmp_ret = NULL; + + CHECK_ENCLAVE_POINTER(filename, _len_filename); + CHECK_ENCLAVE_POINTER(buffer, _len_buffer); + CHECK_ENCLAVE_POINTER(ret, _len_ret); + + if (ADD_ASSIGN_OVERFLOW(ocalloc_size, (filename != NULL) ? _len_filename : 0)) + return SGX_ERROR_INVALID_PARAMETER; + if (ADD_ASSIGN_OVERFLOW(ocalloc_size, (buffer != NULL) ? _len_buffer : 0)) + return SGX_ERROR_INVALID_PARAMETER; + if (ADD_ASSIGN_OVERFLOW(ocalloc_size, (ret != NULL) ? _len_ret : 0)) + return SGX_ERROR_INVALID_PARAMETER; + + __tmp = sgx_ocalloc(ocalloc_size); + if (__tmp == NULL) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + ms = (ms_ocall_read_file_t*)__tmp; + __tmp = (void *)((size_t)__tmp + sizeof(ms_ocall_read_file_t)); + ocalloc_size -= sizeof(ms_ocall_read_file_t); + + if (filename != NULL) { + if (memcpy_verw_s(&ms->ms_filename, sizeof(const char*), &__tmp, sizeof(const char*))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + if (_len_filename % sizeof(*filename) != 0) { + sgx_ocfree(); + return SGX_ERROR_INVALID_PARAMETER; + } + if (memcpy_verw_s(__tmp, ocalloc_size, filename, _len_filename)) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + __tmp = (void *)((size_t)__tmp + _len_filename); + ocalloc_size -= _len_filename; + } else { + ms->ms_filename = NULL; + } + + if (buffer != NULL) { + if (memcpy_verw_s(&ms->ms_buffer, sizeof(char*), &__tmp, sizeof(char*))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + __tmp_buffer = __tmp; + if (_len_buffer % sizeof(*buffer) != 0) { + sgx_ocfree(); + return SGX_ERROR_INVALID_PARAMETER; + } + memset_verw(__tmp_buffer, 0, _len_buffer); + __tmp = (void *)((size_t)__tmp + _len_buffer); + ocalloc_size -= _len_buffer; + } else { + ms->ms_buffer = NULL; + } + + if (memcpy_verw_s(&ms->ms_buffer_size, sizeof(ms->ms_buffer_size), &buffer_size, sizeof(buffer_size))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + + if (ret != NULL) { + if (memcpy_verw_s(&ms->ms_ret, sizeof(int*), &__tmp, sizeof(int*))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + __tmp_ret = __tmp; + if (_len_ret % sizeof(*ret) != 0) { + sgx_ocfree(); + return SGX_ERROR_INVALID_PARAMETER; + } + memset_verw(__tmp_ret, 0, _len_ret); + __tmp = (void *)((size_t)__tmp + _len_ret); + ocalloc_size -= _len_ret; + } else { + ms->ms_ret = NULL; + } + + status = sgx_ocall(2, ms); + + if (status == SGX_SUCCESS) { + if (buffer) { + if (memcpy_s((void*)buffer, _len_buffer, __tmp_buffer, _len_buffer)) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + } + if (ret) { + if (memcpy_s((void*)ret, _len_ret, __tmp_ret, _len_ret)) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + } + } + sgx_ocfree(); + return status; +} + +sgx_status_t SGX_CDECL ocall_write_file(const char* filename, const char* data, size_t data_size, int write_mode, int* ret) +{ + sgx_status_t status = SGX_SUCCESS; + size_t _len_filename = filename ? strlen(filename) + 1 : 0; + size_t _len_data = data_size; + size_t _len_ret = sizeof(int); + + ms_ocall_write_file_t* ms = NULL; + size_t ocalloc_size = sizeof(ms_ocall_write_file_t); + void *__tmp = NULL; + + void *__tmp_ret = NULL; + + CHECK_ENCLAVE_POINTER(filename, _len_filename); + CHECK_ENCLAVE_POINTER(data, _len_data); + CHECK_ENCLAVE_POINTER(ret, _len_ret); + + if (ADD_ASSIGN_OVERFLOW(ocalloc_size, (filename != NULL) ? _len_filename : 0)) + return SGX_ERROR_INVALID_PARAMETER; + if (ADD_ASSIGN_OVERFLOW(ocalloc_size, (data != NULL) ? _len_data : 0)) + return SGX_ERROR_INVALID_PARAMETER; + if (ADD_ASSIGN_OVERFLOW(ocalloc_size, (ret != NULL) ? _len_ret : 0)) + return SGX_ERROR_INVALID_PARAMETER; + + __tmp = sgx_ocalloc(ocalloc_size); + if (__tmp == NULL) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + ms = (ms_ocall_write_file_t*)__tmp; + __tmp = (void *)((size_t)__tmp + sizeof(ms_ocall_write_file_t)); + ocalloc_size -= sizeof(ms_ocall_write_file_t); + + if (filename != NULL) { + if (memcpy_verw_s(&ms->ms_filename, sizeof(const char*), &__tmp, sizeof(const char*))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + if (_len_filename % sizeof(*filename) != 0) { + sgx_ocfree(); + return SGX_ERROR_INVALID_PARAMETER; + } + if (memcpy_verw_s(__tmp, ocalloc_size, filename, _len_filename)) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + __tmp = (void *)((size_t)__tmp + _len_filename); + ocalloc_size -= _len_filename; + } else { + ms->ms_filename = NULL; + } + + if (data != NULL) { + if (memcpy_verw_s(&ms->ms_data, sizeof(const char*), &__tmp, sizeof(const char*))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + if (_len_data % sizeof(*data) != 0) { + sgx_ocfree(); + return SGX_ERROR_INVALID_PARAMETER; + } + if (memcpy_verw_s(__tmp, ocalloc_size, data, _len_data)) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + __tmp = (void *)((size_t)__tmp + _len_data); + ocalloc_size -= _len_data; + } else { + ms->ms_data = NULL; + } + + if (memcpy_verw_s(&ms->ms_data_size, sizeof(ms->ms_data_size), &data_size, sizeof(data_size))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + + if (memcpy_verw_s(&ms->ms_write_mode, sizeof(ms->ms_write_mode), &write_mode, sizeof(write_mode))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + + if (ret != NULL) { + if (memcpy_verw_s(&ms->ms_ret, sizeof(int*), &__tmp, sizeof(int*))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + __tmp_ret = __tmp; + if (_len_ret % sizeof(*ret) != 0) { + sgx_ocfree(); + return SGX_ERROR_INVALID_PARAMETER; + } + memset_verw(__tmp_ret, 0, _len_ret); + __tmp = (void *)((size_t)__tmp + _len_ret); + ocalloc_size -= _len_ret; + } else { + ms->ms_ret = NULL; + } + + status = sgx_ocall(3, ms); + + if (status == SGX_SUCCESS) { + if (ret) { + if (memcpy_s((void*)ret, _len_ret, __tmp_ret, _len_ret)) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + } + } + sgx_ocfree(); + return status; +} + +sgx_status_t SGX_CDECL ocall_pointer_user_check(int* val) +{ + sgx_status_t status = SGX_SUCCESS; + + ms_ocall_pointer_user_check_t* ms = NULL; + size_t ocalloc_size = sizeof(ms_ocall_pointer_user_check_t); + void *__tmp = NULL; + + + __tmp = sgx_ocalloc(ocalloc_size); + if (__tmp == NULL) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + ms = (ms_ocall_pointer_user_check_t*)__tmp; + __tmp = (void *)((size_t)__tmp + sizeof(ms_ocall_pointer_user_check_t)); + ocalloc_size -= sizeof(ms_ocall_pointer_user_check_t); + + if (memcpy_verw_s(&ms->ms_val, sizeof(ms->ms_val), &val, sizeof(val))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + + status = sgx_ocall(4, ms); + + if (status == SGX_SUCCESS) { + } + sgx_ocfree(); + return status; +} + +sgx_status_t SGX_CDECL ocall_pointer_in(int* val) +{ + sgx_status_t status = SGX_SUCCESS; + size_t _len_val = sizeof(int); + + ms_ocall_pointer_in_t* ms = NULL; + size_t ocalloc_size = sizeof(ms_ocall_pointer_in_t); + void *__tmp = NULL; + + + CHECK_ENCLAVE_POINTER(val, _len_val); + + if (ADD_ASSIGN_OVERFLOW(ocalloc_size, (val != NULL) ? _len_val : 0)) + return SGX_ERROR_INVALID_PARAMETER; + + __tmp = sgx_ocalloc(ocalloc_size); + if (__tmp == NULL) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + ms = (ms_ocall_pointer_in_t*)__tmp; + __tmp = (void *)((size_t)__tmp + sizeof(ms_ocall_pointer_in_t)); + ocalloc_size -= sizeof(ms_ocall_pointer_in_t); + + if (val != NULL) { + if (memcpy_verw_s(&ms->ms_val, sizeof(int*), &__tmp, sizeof(int*))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + if (_len_val % sizeof(*val) != 0) { + sgx_ocfree(); + return SGX_ERROR_INVALID_PARAMETER; + } + if (memcpy_verw_s(__tmp, ocalloc_size, val, _len_val)) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + __tmp = (void *)((size_t)__tmp + _len_val); + ocalloc_size -= _len_val; + } else { + ms->ms_val = NULL; + } + + status = sgx_ocall(5, ms); + + if (status == SGX_SUCCESS) { + } + sgx_ocfree(); + return status; +} + +sgx_status_t SGX_CDECL ocall_pointer_out(int* val) +{ + sgx_status_t status = SGX_SUCCESS; + size_t _len_val = sizeof(int); + + ms_ocall_pointer_out_t* ms = NULL; + size_t ocalloc_size = sizeof(ms_ocall_pointer_out_t); + void *__tmp = NULL; + + void *__tmp_val = NULL; + + CHECK_ENCLAVE_POINTER(val, _len_val); + + if (ADD_ASSIGN_OVERFLOW(ocalloc_size, (val != NULL) ? _len_val : 0)) + return SGX_ERROR_INVALID_PARAMETER; + + __tmp = sgx_ocalloc(ocalloc_size); + if (__tmp == NULL) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + ms = (ms_ocall_pointer_out_t*)__tmp; + __tmp = (void *)((size_t)__tmp + sizeof(ms_ocall_pointer_out_t)); + ocalloc_size -= sizeof(ms_ocall_pointer_out_t); + + if (val != NULL) { + if (memcpy_verw_s(&ms->ms_val, sizeof(int*), &__tmp, sizeof(int*))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + __tmp_val = __tmp; + if (_len_val % sizeof(*val) != 0) { + sgx_ocfree(); + return SGX_ERROR_INVALID_PARAMETER; + } + memset_verw(__tmp_val, 0, _len_val); + __tmp = (void *)((size_t)__tmp + _len_val); + ocalloc_size -= _len_val; + } else { + ms->ms_val = NULL; + } + + status = sgx_ocall(6, ms); + + if (status == SGX_SUCCESS) { + if (val) { + if (memcpy_s((void*)val, _len_val, __tmp_val, _len_val)) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + } + } + sgx_ocfree(); + return status; +} + +sgx_status_t SGX_CDECL ocall_pointer_in_out(int* val) +{ + sgx_status_t status = SGX_SUCCESS; + size_t _len_val = sizeof(int); + + ms_ocall_pointer_in_out_t* ms = NULL; + size_t ocalloc_size = sizeof(ms_ocall_pointer_in_out_t); + void *__tmp = NULL; + + void *__tmp_val = NULL; + + CHECK_ENCLAVE_POINTER(val, _len_val); + + if (ADD_ASSIGN_OVERFLOW(ocalloc_size, (val != NULL) ? _len_val : 0)) + return SGX_ERROR_INVALID_PARAMETER; + + __tmp = sgx_ocalloc(ocalloc_size); + if (__tmp == NULL) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + ms = (ms_ocall_pointer_in_out_t*)__tmp; + __tmp = (void *)((size_t)__tmp + sizeof(ms_ocall_pointer_in_out_t)); + ocalloc_size -= sizeof(ms_ocall_pointer_in_out_t); + + if (val != NULL) { + if (memcpy_verw_s(&ms->ms_val, sizeof(int*), &__tmp, sizeof(int*))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + __tmp_val = __tmp; + if (_len_val % sizeof(*val) != 0) { + sgx_ocfree(); + return SGX_ERROR_INVALID_PARAMETER; + } + if (memcpy_verw_s(__tmp, ocalloc_size, val, _len_val)) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + __tmp = (void *)((size_t)__tmp + _len_val); + ocalloc_size -= _len_val; + } else { + ms->ms_val = NULL; + } + + status = sgx_ocall(7, ms); + + if (status == SGX_SUCCESS) { + if (val) { + if (memcpy_s((void*)val, _len_val, __tmp_val, _len_val)) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + } + } + sgx_ocfree(); + return status; +} + +sgx_status_t SGX_CDECL ocall_function_allow(void) +{ + sgx_status_t status = SGX_SUCCESS; + status = sgx_ocall(8, NULL); + + return status; +} +sgx_status_t SGX_CDECL sgx_oc_cpuidex(int cpuinfo[4], int leaf, int subleaf) +{ + sgx_status_t status = SGX_SUCCESS; + size_t _len_cpuinfo = 4 * sizeof(int); + + ms_sgx_oc_cpuidex_t* ms = NULL; + size_t ocalloc_size = sizeof(ms_sgx_oc_cpuidex_t); + void *__tmp = NULL; + + void *__tmp_cpuinfo = NULL; + + CHECK_ENCLAVE_POINTER(cpuinfo, _len_cpuinfo); + + if (ADD_ASSIGN_OVERFLOW(ocalloc_size, (cpuinfo != NULL) ? _len_cpuinfo : 0)) + return SGX_ERROR_INVALID_PARAMETER; + + __tmp = sgx_ocalloc(ocalloc_size); + if (__tmp == NULL) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + ms = (ms_sgx_oc_cpuidex_t*)__tmp; + __tmp = (void *)((size_t)__tmp + sizeof(ms_sgx_oc_cpuidex_t)); + ocalloc_size -= sizeof(ms_sgx_oc_cpuidex_t); + + if (cpuinfo != NULL) { + if (memcpy_verw_s(&ms->ms_cpuinfo, sizeof(int*), &__tmp, sizeof(int*))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + __tmp_cpuinfo = __tmp; + if (_len_cpuinfo % sizeof(*cpuinfo) != 0) { + sgx_ocfree(); + return SGX_ERROR_INVALID_PARAMETER; + } + memset_verw(__tmp_cpuinfo, 0, _len_cpuinfo); + __tmp = (void *)((size_t)__tmp + _len_cpuinfo); + ocalloc_size -= _len_cpuinfo; + } else { + ms->ms_cpuinfo = NULL; + } + + if (memcpy_verw_s(&ms->ms_leaf, sizeof(ms->ms_leaf), &leaf, sizeof(leaf))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + + if (memcpy_verw_s(&ms->ms_subleaf, sizeof(ms->ms_subleaf), &subleaf, sizeof(subleaf))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + + status = sgx_ocall(9, ms); + + if (status == SGX_SUCCESS) { + if (cpuinfo) { + if (memcpy_s((void*)cpuinfo, _len_cpuinfo, __tmp_cpuinfo, _len_cpuinfo)) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + } + } + sgx_ocfree(); + return status; +} + +sgx_status_t SGX_CDECL sgx_thread_wait_untrusted_event_ocall(int* retval, const void* self) +{ + sgx_status_t status = SGX_SUCCESS; + + ms_sgx_thread_wait_untrusted_event_ocall_t* ms = NULL; + size_t ocalloc_size = sizeof(ms_sgx_thread_wait_untrusted_event_ocall_t); + void *__tmp = NULL; + + + __tmp = sgx_ocalloc(ocalloc_size); + if (__tmp == NULL) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + ms = (ms_sgx_thread_wait_untrusted_event_ocall_t*)__tmp; + __tmp = (void *)((size_t)__tmp + sizeof(ms_sgx_thread_wait_untrusted_event_ocall_t)); + ocalloc_size -= sizeof(ms_sgx_thread_wait_untrusted_event_ocall_t); + + if (memcpy_verw_s(&ms->ms_self, sizeof(ms->ms_self), &self, sizeof(self))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + + status = sgx_ocall(10, ms); + + if (status == SGX_SUCCESS) { + if (retval) { + if (memcpy_s((void*)retval, sizeof(*retval), &ms->ms_retval, sizeof(ms->ms_retval))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + } + } + sgx_ocfree(); + return status; +} + +sgx_status_t SGX_CDECL sgx_thread_set_untrusted_event_ocall(int* retval, const void* waiter) +{ + sgx_status_t status = SGX_SUCCESS; + + ms_sgx_thread_set_untrusted_event_ocall_t* ms = NULL; + size_t ocalloc_size = sizeof(ms_sgx_thread_set_untrusted_event_ocall_t); + void *__tmp = NULL; + + + __tmp = sgx_ocalloc(ocalloc_size); + if (__tmp == NULL) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + ms = (ms_sgx_thread_set_untrusted_event_ocall_t*)__tmp; + __tmp = (void *)((size_t)__tmp + sizeof(ms_sgx_thread_set_untrusted_event_ocall_t)); + ocalloc_size -= sizeof(ms_sgx_thread_set_untrusted_event_ocall_t); + + if (memcpy_verw_s(&ms->ms_waiter, sizeof(ms->ms_waiter), &waiter, sizeof(waiter))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + + status = sgx_ocall(11, ms); + + if (status == SGX_SUCCESS) { + if (retval) { + if (memcpy_s((void*)retval, sizeof(*retval), &ms->ms_retval, sizeof(ms->ms_retval))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + } + } + sgx_ocfree(); + return status; +} + +sgx_status_t SGX_CDECL sgx_thread_setwait_untrusted_events_ocall(int* retval, const void* waiter, const void* self) +{ + sgx_status_t status = SGX_SUCCESS; + + ms_sgx_thread_setwait_untrusted_events_ocall_t* ms = NULL; + size_t ocalloc_size = sizeof(ms_sgx_thread_setwait_untrusted_events_ocall_t); + void *__tmp = NULL; + + + __tmp = sgx_ocalloc(ocalloc_size); + if (__tmp == NULL) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + ms = (ms_sgx_thread_setwait_untrusted_events_ocall_t*)__tmp; + __tmp = (void *)((size_t)__tmp + sizeof(ms_sgx_thread_setwait_untrusted_events_ocall_t)); + ocalloc_size -= sizeof(ms_sgx_thread_setwait_untrusted_events_ocall_t); + + if (memcpy_verw_s(&ms->ms_waiter, sizeof(ms->ms_waiter), &waiter, sizeof(waiter))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + + if (memcpy_verw_s(&ms->ms_self, sizeof(ms->ms_self), &self, sizeof(self))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + + status = sgx_ocall(12, ms); + + if (status == SGX_SUCCESS) { + if (retval) { + if (memcpy_s((void*)retval, sizeof(*retval), &ms->ms_retval, sizeof(ms->ms_retval))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + } + } + sgx_ocfree(); + return status; +} + +sgx_status_t SGX_CDECL sgx_thread_set_multiple_untrusted_events_ocall(int* retval, const void** waiters, size_t total) +{ + sgx_status_t status = SGX_SUCCESS; + size_t _len_waiters = total * sizeof(void*); + + ms_sgx_thread_set_multiple_untrusted_events_ocall_t* ms = NULL; + size_t ocalloc_size = sizeof(ms_sgx_thread_set_multiple_untrusted_events_ocall_t); + void *__tmp = NULL; + + + CHECK_ENCLAVE_POINTER(waiters, _len_waiters); + + if (ADD_ASSIGN_OVERFLOW(ocalloc_size, (waiters != NULL) ? _len_waiters : 0)) + return SGX_ERROR_INVALID_PARAMETER; + + __tmp = sgx_ocalloc(ocalloc_size); + if (__tmp == NULL) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + ms = (ms_sgx_thread_set_multiple_untrusted_events_ocall_t*)__tmp; + __tmp = (void *)((size_t)__tmp + sizeof(ms_sgx_thread_set_multiple_untrusted_events_ocall_t)); + ocalloc_size -= sizeof(ms_sgx_thread_set_multiple_untrusted_events_ocall_t); + + if (waiters != NULL) { + if (memcpy_verw_s(&ms->ms_waiters, sizeof(const void**), &__tmp, sizeof(const void**))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + if (_len_waiters % sizeof(*waiters) != 0) { + sgx_ocfree(); + return SGX_ERROR_INVALID_PARAMETER; + } + if (memcpy_verw_s(__tmp, ocalloc_size, waiters, _len_waiters)) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + __tmp = (void *)((size_t)__tmp + _len_waiters); + ocalloc_size -= _len_waiters; + } else { + ms->ms_waiters = NULL; + } + + if (memcpy_verw_s(&ms->ms_total, sizeof(ms->ms_total), &total, sizeof(total))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + + status = sgx_ocall(13, ms); + + if (status == SGX_SUCCESS) { + if (retval) { + if (memcpy_s((void*)retval, sizeof(*retval), &ms->ms_retval, sizeof(ms->ms_retval))) { + sgx_ocfree(); + return SGX_ERROR_UNEXPECTED; + } + } + } + sgx_ocfree(); + return status; +} + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_t.h b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_t.h new file mode 100644 index 000000000..1b6e8ed47 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_t.h @@ -0,0 +1,99 @@ +#ifndef ENCLAVE_T_H__ +#define ENCLAVE_T_H__ + +#include +#include +#include +#include "sgx_edger8r.h" /* for sgx_ocall etc. */ + +#include "user_types.h" + +#include /* for size_t */ + +#define SGX_CAST(type, item) ((type)(item)) + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _struct_foo_t +#define _struct_foo_t +typedef struct struct_foo_t { + uint32_t struct_foo_0; + uint64_t struct_foo_1; +} struct_foo_t; +#endif + +typedef enum enum_foo_t { + ENUM_FOO_0 = 0, + ENUM_FOO_1 = 1, +} enum_foo_t; + +#ifndef _union_foo_t +#define _union_foo_t +typedef union union_foo_t { + uint32_t union_foo_0; + uint32_t union_foo_1; + uint64_t union_foo_3; +} union_foo_t; +#endif + +void ecall_add(int a, int b, int* result); +void ecall_create_wallet(unsigned char* ret_pub_key, unsigned char* ret_priv_key, size_t key_len, int wallet_id, int* ret); +void ecall_deal_transaction(int from_id, int to_id, double amount, char* shuffled_output, size_t shuffled_output_size, char* encrypted_output, size_t encrypted_output_size, int* warning_sign, int* ret); +void ecall_decrypt_transaction_data(const char* encrypted_from, const char* encrypted_id, const char* encrypted_amount, size_t encrypted_size, int* from_id, int* to_id, double* amount, int* ret); +void ecall_encrypt_transaction(int from_id, int to_id, double amount, int* ret); +void ecall_transaction_warning(int from_id, int to_id, double amount, int* warning_sign, int* ret); +void ecall_type_char(char val); +void ecall_type_int(int val); +void ecall_type_float(float val); +void ecall_type_double(double val); +void ecall_type_size_t(size_t val); +void ecall_type_wchar_t(wchar_t val); +void ecall_type_struct(struct struct_foo_t val); +void ecall_type_enum_union(enum enum_foo_t val1, union union_foo_t* val2); +size_t ecall_pointer_user_check(void* val, size_t sz); +void ecall_pointer_in(int* val); +void ecall_pointer_out(int* val); +void ecall_pointer_in_out(int* val); +void ecall_pointer_string(char* str); +void ecall_pointer_string_const(const char* str); +void ecall_pointer_size(void* ptr, size_t len); +void ecall_pointer_count(int* arr, size_t cnt); +void ecall_pointer_isptr_readonly(buffer_t buf, size_t len); +void ocall_pointer_attr(void); +void ecall_array_user_check(int arr[4]); +void ecall_array_in(int arr[4]); +void ecall_array_out(int arr[4]); +void ecall_array_in_out(int arr[4]); +void ecall_array_isary(array_t arr); +void ecall_function_public(void); +int ecall_function_private(void); +void ecall_malloc_free(void); +void ecall_sgx_cpuid(int cpuinfo[4], int leaf); +void ecall_exception(void); +void ecall_map(void); +size_t ecall_increase_counter(void); +void ecall_producer(void); +void ecall_consumer(void); + +sgx_status_t SGX_CDECL ocall_print_string(const char* str); +sgx_status_t SGX_CDECL ocall_file_exists(const char* filename, int* exists); +sgx_status_t SGX_CDECL ocall_read_file(const char* filename, char* buffer, size_t buffer_size, int* ret); +sgx_status_t SGX_CDECL ocall_write_file(const char* filename, const char* data, size_t data_size, int write_mode, int* ret); +sgx_status_t SGX_CDECL ocall_pointer_user_check(int* val); +sgx_status_t SGX_CDECL ocall_pointer_in(int* val); +sgx_status_t SGX_CDECL ocall_pointer_out(int* val); +sgx_status_t SGX_CDECL ocall_pointer_in_out(int* val); +sgx_status_t SGX_CDECL ocall_function_allow(void); +sgx_status_t SGX_CDECL sgx_oc_cpuidex(int cpuinfo[4], int leaf, int subleaf); +sgx_status_t SGX_CDECL sgx_thread_wait_untrusted_event_ocall(int* retval, const void* self); +sgx_status_t SGX_CDECL sgx_thread_set_untrusted_event_ocall(int* retval, const void* waiter); +sgx_status_t SGX_CDECL sgx_thread_setwait_untrusted_events_ocall(int* retval, const void* waiter, const void* self); +sgx_status_t SGX_CDECL sgx_thread_set_multiple_untrusted_events_ocall(int* retval, const void** waiters, size_t total); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_t.o b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/Enclave_t.o new file mode 100644 index 0000000000000000000000000000000000000000..1986c0e276f4dd5de19fadcc3c87daef3e34707a GIT binary patch literal 82072 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 literal 0 HcmV?d00001 diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libc.cpp b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libc.cpp new file mode 100755 index 000000000..19cae6fe7 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libc.cpp @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + +#include +#include "sgx_cpuid.h" + +#include "sgx_trts.h" +#include "../Enclave.h" +#include "Enclave_t.h" + +/* ecall_malloc_free: + * Uses malloc/free to allocate/free trusted memory. + */ +void ecall_malloc_free(void) +{ + void *ptr = malloc(100); + assert(ptr != NULL); + memset(ptr, 0x0, 100); + free(ptr); +} + +/* ecall_sgx_cpuid: + * Uses sgx_cpuid to get CPU features and types. + */ +void ecall_sgx_cpuid(int cpuinfo[4], int leaf) +{ + sgx_status_t ret = sgx_cpuid(cpuinfo, leaf); + if (ret != SGX_SUCCESS) + abort(); +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libc.edl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libc.edl new file mode 100755 index 000000000..d21ecaeb9 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libc.edl @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + +/* Libc.edl - EDL sample for trusted C library. */ + +enclave { + + from "sgx_tstdc.edl" import sgx_oc_cpuidex; + + /* + * A subset of the C99 standard is supported as well as SGX customized functions: + * sgx_cpuid, etc. + */ + + trusted { + /* + * Utilize malloc/free in enclave. + */ + public void ecall_malloc_free(void); + + /* + * Utilize SGX version __cpuid() in enclave. + */ + public void ecall_sgx_cpuid([out] int cpuinfo[4], int leaf); + }; +}; diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libc.o b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libc.o new file mode 100644 index 0000000000000000000000000000000000000000..f497bf5ca8e2001b361db1e9cdac769901227bdf GIT binary patch literal 7728 zcmbW53s{Ut@iJEGfE>g)|HzK4hD^_w{ zp+ZPDm#kVUm&LZCdi1&GD=O0Wy=UfsYW6gq?|HuSJnx)ye&>HX=ltJy&ik%&;yY_< zXi&IlP;;oB9;Or(YS`1}DwQ|VgF7KesXE&3xrd+`z*c^lstT=l0Fnvii`qEkC> zV_Z8GF^ZQuP(f0MpsIw8MpI{_wo)?Lsl6EKl_11Rywy!{JMDIviW3$uF|H{wq9NI< zftT#ml=u*fB|3F(jO(Q2S_%WS60%2iuZ08SpZ)0U;F|B<$~Xq4VOQ%9uPKm-{Y1}4 zpGg>I;3pCbg{_%m@)+f85IH*fSD?w(iP zVprBgxpPJ)ZHnmX3OkmPo|*XOhHd)ZoBi0Iqq`nWx!h`B-9KvQ-t$kRYOeO5y4zun z>!H*FUe$sW=7L18i5=o=4hfp3yK{=nD8^9Z=)Q}%{j9C-Ip~P@H4M_T(U@%0oO73_ zp{r-x$BgBmr5GBt?>FZ;O}oS)nd`N5Mz&@T&aW$VR2UIV)S)Gt^xM7n9RBr9)^K(e zuV{P2*~4M`9vl#Soqg({omJ9UdnRt-IuTYalW{!7K@(QQvmVk)=%xb~~t zy^0Lo+_rgci(?-h*`FSNrQmAEai7M*4+}r%n;)L_k-;~fn5(+3_m#`qz0T3u3%4)S z+rS;LSzu&Pu&i|crbH?K{)Os+BdqP~rFwN!YpY7!xBb*qCZNZo=%W?^`yz@y(NGXP>m1-Nn`B5AFXfp|G9% zsM*lEvc>01vCawCbM~CT^-Fbr7_j+hTGOTG0Y!V~R{5M;_S$jY?4%h}6AYI2!= zyyrwhq0o=g(9`x$`#qsQ-zc9!jW?s7D+Ter#Ob9c7P3%gbCgrZau<8aJ^j73w6wxN zf2@(wx|R=`^PQaybha&T*%i*bv-qQ9l1uV}#U8QK(vz6U=0>e8x-PAjEiQ}0Ta#-h zC3&1(pWTpMz1ve;J7<^wm4*$PX^}b0V^_Jm$M5`6n=$C#TyJM>SA&7t6;D!5zPPk> z>1j*O8P3@~`Lc6i%L5u4w)so`s=Pix&N%L8>Fn*K7w7G*=i^->_rA%?XHp$8rlRhB ztM2#D`9^1_dOel>Vq?(g(K)9vda?EQg)M11ORb8`S!arEZeKpy_ohXm-r)-su3hmy z?aWgD)q>pkaMR0SD17$$#Qrukut z?X+3}e~RG~?cbWaj8Z~)<)PMjqaW9Wm1N}JelC2S@oakB>XuVc<-2OH>)r6qUODEV zq2=;So1x6GW#-YP-dE~6k`gux`{m~BjxtNmSlV_w`R0k14AZB7RL3p;_$lJGN#u-1 z?MD`C_1*M7n{oR+`eZ+Cptt6b5ovDqj7?SEeY`!aKg>NceO1{N-I5(c!gz9)zyCyD z>fP}pesef``KGhu!RFh;OpfT8t{0jzqbzQ{C<;2DpZU^eYGkgCQw%R&qU&22kse&u zdC}!~n^sp%R_ohfZn3^bJ?~;n(q7X}+e=^l7csY(oM<=H=j0~#wfc}aUOZ&~u7Ghq zr@k;fSTj;KJeaK6@L+Yahl5F!N#e%Lky%y+s}=@b_nd3x>n1#SChXYJHpzq7NdCNb zX6|XL{vHF(WF3OAPlJ}udMUkZ**A5WAa7OR{hBn531h!xe8*V9dN(Y2@38dz@7hAg z-AdM;nXu#ejgr{Pp%FFGbB8Ya*1ft>Qd>AE#Z@XYMbM?6^g{`XK% zKfmA{tNvR1-tOvM-)6~l!wdP+qNu?0;U!=8Jn9IKFVAYb6j$PO`ufH5wq>W&!_zZv zT>hhYU26E#!}C9jPyX5ZzQf0By3G&X(Xz%_Rk0cO-#ZoGvVZ)rrKo+v)S{O0*M@c; zxU^j(sPbc%@y%pT+Pj$g)r^_d^pHfM@Ogra8= zKaIoYSh1%~RC2`wpb!0PKwnz)HP6+H(xj+T#Nh9fLTwg(^^9vM#%ZJ|8kDk+pNE4n zk6BDp*~7@*TPjUF_nIl53m=M2h8&tQwD<3MfA<+Oxy%ocIFSfd|29;6sXL~TKS z`%oYLqi&F)h`#p-Lopk5T&Fjr34?-%B{9mNbP1yDGAO-oaJ16B3xi_zg8ga2)I_VU zEQ&Rwn`jNyS()|?KJy#g;Ts$s8`asLPjjYb&-y6#h-Plzkf;BG)!L!DPm;Y)pMrUO zHwSyZz|Gm&!^uU$XDJ2ky!owvpITb7k4wuN`@ERTvEf9xB1o~4VzYuz` zdnHlc4xq2j|0v5?x{V5*---+KNebG-=~Psd83f0jOA62-% z3TLVC?^HNCFQbC&psc`lv=O8W$_v~^eKbc@5Jy>B3KKv!QNg?uZcxRkT!lY_8{J4D zt(5QCWr`Z7!tvT5G+Biszs=CMBzPU9@GOFlhDq2HoC)!uyg~)Xe-&*UUA&c5H{S~L z@+Ei$$omugEy%AXcoxJNL+~z$a}&WYq79pQ^hX{Th;1vX z!4Ri4!Np+Tmf%sa{*DC4_p=MZufx3D3H}o7EFt(3-~xhQf_beV_}_+P{I4_4)J6Vd=kv-XM!IB`?&;9g8e#4@M?(j9KrEl zbTPr#g8gd*cTk2+l@oj$%jts^B|so6Z{n9VF$rq z!8$AcL{-+`8n_P31Mka8Sbsf&{|)^i1b+v9@%@eMjDz^c5c0zyK68R6!a7(Gyc6bY zL+~<)-;UrGVBeYGr4Y|Tf(w9q61)KH_z>J4^39Lne!v3>J_ORt?Q%UeGVCN0NXFxnHD)wRN z6&gm+!TI9`c{m0*a)(s$`3Z&<&l51Mu!GOSNM6-GOEIea&ZIgoz>4oIs`9Ws-CP2K zs`gdw3?uC0^R`rltJ=>};i`66z|mY)<+&6)Q*3{c zTtu<`!ow-HEJWFnNrFUdG|KLMsArRdJx6xskiWz)B0vx*T@gatR^03Rr>#{5wt4G9h_g-5*Ig!8g7GbI+|{gxrYY1=toT<^(W9WDECzN z9;tEBkD5a2qjNrDD1TH77dp7cV>r)oAH9DfeRBQ@AV4lO>EDW$L;1-Cd0esJ)%z#_ zbibhc7W>Ed4|-ov=f4s3@O=ecg)DBP+MT}C`7a0m91uqS&?A-fA4W69obUk1vtXj0 z#DobkDu|X>=f55N3*kKh`A1ExkLMppGj;x>VMFoz1udp1SReP(=!QCdGe{`(-9fdG z`sjSEF8(EOaOHtAiWfbLu|AIfFwNBY7lQw>ppPr8kNXGchC2T_;9m%W$e$j4VSViX zJk8Yk-v<8CxN5=rn4P5?>iknfl@hA?gZ>M!KK5TmGvuFx2b5|Q7a65X9mJvR_2?^N zrr{s-rO?L$P_w`uy1!Km*2DE9dJwl&<@iKAc#M>NNe`g=f_#1~0{ul;5o*#b`ml#= zlKMFyxa5E6f2POPtv^T2`Xhw> +#include + +#include "../Enclave.h" +#include "Enclave_t.h" + +/* + * ecall_exception: + * throw/catch C++ exception inside the enclave. + */ + +void ecall_exception(void) +{ + std::string foo = "foo"; + try { + throw std::runtime_error(foo); + } + catch (std::runtime_error const& e) { + assert( foo == e.what() ); + std::runtime_error clone(""); + clone = e; + assert(foo == clone.what() ); + } + catch (...) { + assert( false ); + } +} + +#include +#include + +using namespace std; + +/* + * ecall_map: + * Utilize STL in the enclave. + */ +void ecall_map(void) +{ + typedef map > map_t; + typedef map_t::value_type map_value; + map_t m; + + m.insert(map_value('a', 1)); + m.insert(map_value('b', 2)); + m.insert(map_value('c', 3)); + m.insert(map_value('d', 4)); + + assert(m['a'] == 1); + assert(m['b'] == 2); + assert(m['c'] == 3); + assert(m['d'] == 4); + + assert(m.find('e') == m.end()); + + return; +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libcxx.edl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libcxx.edl new file mode 100755 index 000000000..206f6cbbc --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libcxx.edl @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + +/* Libcxx.edl - EDL sample for trusted C++ library. */ + +enclave { + + /* + * A subset of the C++03 standard is supported. + */ + + trusted { + /* + * Throw/catch exception inside the enclave. + */ + public void ecall_exception(void); + + /* + * Utilize inside the enclave. + */ + public void ecall_map(void); + }; +}; diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libcxx.o b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Libcxx.o new file mode 100644 index 0000000000000000000000000000000000000000..a636d0a7eda14da88d35e7ac57c623e0eabe2f91 GIT binary patch literal 148472 zcmeFYc{r6_{5QI{c_#CeF_|(CA@jJ&JS0=*sE7=O$kfJ;9fe3`CMku8NbSf_N!wIX z85+!@Qih7N?)%<6)$_c+>pkbauJg}1uIKKvhVPob>pQKr_7iJlZcK(oqc;E0C~ed~ zxy@1(N^KX}Rz??2>7v|G2VhzrkcZmvk#IW+cLEd#p9Co{2~diZmIkVwaKls6=y z5kO;7+JuA{650W@C#4+#?gQUfW`Q*a4DMqiNTb}^w(=NU%nAk)o2CN z`EUdLVQ{T*Lk#Zamzx+|7iO7=Nt{B12GHNZpdggHd#I4GmeA4gfPmnz5R{i^=pk?S z(6Eq0NBvN8LBU~ihmMB%2FQi_MTGhs0U7Ura35c}fJ0v15fO4EI(PRF|37*O3ib{0 z3=0a;(t^ei($W(0l|A9_873i#^7Zx%2ypj}@b(Q3I}~&jo`(_W)$_QooP9`mXqc~$ z`5~_m&yYwtfM5_=@8Do~s!%uH0YOK%x;p3?5bBExbP@LycY`VwNSz0I21BJ@NU0)} z_D0f5P}&DcE29Es4<0(|BO&f9E(tXcl=THU$t@1+Iq2EjVdCd7K zLka{8o)Vfk28XR)2TaBr5kRsLN~R)!&%O%faM=VHuw4LjQ^Kn=0Btp(CH_W>!w!L5 z3cegEgED|(49UTO!%l%*2Kd7ywm>7I!UZvSMtBN%4hZgJ$iZ~*kT9aApnt$b;Hlv{ zku0tilZyXmvOO45MaBb`ttPlOWF;LK+$gCN(lT2yct|I}f=Lzdijl4}fCLWtV3ZL4 zFrS_WGnsx5{(&Ud6xVKw8`x}Sj+-*ay_=Cp}npw?%+NmLR zFyOGdNDc-Z7K7v2bZ7&Q{QT z<36&9$i{)`XMySeOOzl>_=hM#BD=Z&Bymd3hW7{-<`-KV2xm714r>j~JFx|V|E-OJ z>HpcN{ZMmcqdcHwDi#JD)*s2ifWrnOIT&!*2qXu=e{9swtxk;MfYinTWljN@0uYj7 zpkC0nNc}^V3rcfAZ6UxyfE55M{@Mg+p8whec=D;)@RI%?Z35(e{lp_V%a1O@; zCI~u6B+vkY{RjaB@VdH4On_o2gb7~%FrgYDhTv}|G$K_H{EG>}NF5Bg>mV3BtJ6BBZgE@8lB7s9#Un1B@g7ZWOwh7kP01mIUlOz{4P z2`I!mK=3ycXpkxh{>20WG6oE|>@Fy`<-v(aZU`pHMgZ~dn=TwbhBQao{ZCAoLI`2N zAqG74Hzq71V{k+8rzET(4I%i02^3pQ@cD-cuuV#Zt@GbZK&%!Pf`2iA1z`{jxNL4H z2Xq7}gkjU&WlQ`~C=ciG2q2CW_dhW~4QUMnE?XDQ{l)~O;J+jRgEWMI#Doqb0x$!> zP5_(no2^JiC9a^u{tlpQ0IzOHpZ{!3_OHga|85M#?mruo|En<+_5U?8*slL< zO!2SA&~f4S#>iR`SNWeF6R{n^2(w`L(`y0?^@nc+PLbpt0Rp?53dOp>2BkuV?4N>) z4%lG%!sFvf`?F=9|EmSGEx;6mb>bX0eJt>|ETCuLZc!NZRuG6GGr6M z{vyr^^5I5PTj6M!+^hu2p>6rOKgcn-e>pSA>$m_%wt;4Sg`S{!&441(d-XA(zA-@2 z@TPwP?uh_R1lIx!9jJX@vqI+53A#d|U_pVVI+l`6B7xR3 z1xTj=E&~1l24P8kvUFl0BB&uSd+@fTA^|jC_wb#|4O(Q4*QUbJVYYKk`x~bU+BeG%HOGO~Dl?LplHN0E|aM}Bj z90XuY(&i%YhY*5+kQqT+gq-BUC`p^LwF`-Jy5QEK3rr5;8?+80z|9Q?g9C|3g{5K& z;1uZ6Xb~h90j>aCfmXu;5}@^#WypBkw$(q-D4=>kqx@kPSMLEs_I?=f)&R`GX$Zi- zwmuss#p5F&(o`g@``ycs;t>)+TbKeUJFq9fzbMcEiBnL}i4OZ3#803I8VAr-z&*Ag zfQ9A&3Jc*vJOW4@hQsEQU`MUJw|Qkz4Ur*N7NC9z$&DdxApq3bjc_RoIQ$Vo3dMXH3+?OHNK*(k z42U~gL`on4tAx+BfE;QJawu4ak;CpCT^exUwgQ!KDQtB9w@>b1W-IVOtUwinpk9%f z1-ey%x&sq^4JmjkX#$X(K$d26G!XDZxlZ_e4jnZ>1zf*%Mn|*~Ir*j{$9NE@gGR6_ zfthauO<)b(JbWDilY$5^I3niZ7#Ri)0Xev~+ae?#dl6sJ37>aqkg+}BcAM4+b}6tm zLQ1yG(57RAEE;T3QeeK46c-8Sfe$5x?j+L*OV}7Fg;WFx7ZC^)5ss^XUPDTr3S2;H zIAkuA5sSWQE`SZEbWH>7`Ax4q5WTK|`>KcZ=3gpIy5rg0dw8P|;edDgzpiN@QDK32 zkczrUDqC#L^biuNLd9i@>fMgipi%ks7 zjxBGvRcB2DlK-wmN=QKpvJTQDw>&IjZ#FwZqOw2My17)a5|ZVCLU5xlkVj-|OQfJl zZ*CxBcpz2-GLo!CK=r`e!er2?VROq;Hq9Lq;2_voL@8#ifncQkhoOVRAi!|2&7DSt zh;f6x9VBibhJ`&F+;>W&iH{e;o@TvmxDq zkS0a4D*tD(KrWaYGWq{M7J!6*1==fMrv5)23qV2vGz+$ZKyWia7K#NRgp2}EK=1+4 z2j&qE3qD8^LFxZ?EI?uD1&qdT_E8tn&mnk(dLj(jT@Y+}U}R^IP+%+mLqTQ+@z*qn z;ep|g5C9mF-`{FLP6#1|0P@$65>Nd;7D=uhxDaS4l7oTtu+exB`J;l~ zF(GQ^9Ox-k_5tMn;qUWFlN>Oz)@fwUW!JqG1Sw=m$f53C>7*3FQe6lRgk2$I8N;YM5G zu|Lui67y~z=@3-~x&i4294{jEEI@&fSPc&ciby>6zrJJ|W}u2m z>;OlCdK5wf1FjyiISAnDS&%viK#LYc>{|9i5`-h&2;u$V91^|(yM{;?41YdOrIJWU zk5eQdH77kzk)WP5LN44HX&~fihr?GO<5k0e9HutU7RX_0>uRG5nF|7d+0fnS=IM)w z)WK0BuH$z>hYbr*x3_@xDcD!AG{Is7$p|PPfy;;B^53sq3{$G!fI`ERveyvBm0^ft zOR}br@nG1p_ls~L3bFw!NIe9wp@n~PlEMNeJO+w7b)nZIa7_x?axAjd;OzI?RTJqT z)dtNPH9rZXAJ& z2nQ2}&JGrcE^OU##bG*iA+<$;kwF!7<7y370I33WV-6*u0|YW}ApPJ!5Us<%+7Kqy z!ShEhCO6L-)o@ry>Swc$|6Qw(+;f7x|Ls%MxfsbKvw|3dy-Vx z8j@>VHU_}&T!MZ)04y?G`NxeA;x9?s3Bw=Pn}Av1+5&0@B0Quu0YC@V5Bv)xigcX< zMZ|DX3Ur;YMH&IM=!EaqNd6Ko*?czt^SvB-OW(XoMsAczx6Oa}%M8%z|FOS>I{EuB zzUAg%fB9b&$kDbFzBDHJ%L=%oO|#et=e9Z`*$-rENcRiyX&gx4erUJx&@Id#5jN>z zV)MlVx%kABZpHs}jgXFSx;;3m1e|99G6RZPpiO|iD&iwaq6MT0Qby@RDU3ZBaT z!$(451SV*W2q*%iCy76N80=Yml-e<(q$NO>zqoud?vk=BY?}6hlhXxw7?^> zhWvT}M~X%_IK3iZp!`1)3g?o^5QxnctK{l0nmDVZNiw z{hxP_%%>-iV6J1R_5OfD&L4)!{<;H+amaT_6*-88B{&GSreJ-cT>l zk%ts8CbmGLjS7nfZJ^XYb2|J_FF>Aw?MBA`ZSftt+~|LZ5QX>`5s3}Ve{l#J3u-^z zgNPn!r4?W#@R8O94sKZlghP`53{(whzz41A4{ajd4*o-k2-&{~|D1Ls=nZ^-_Xddm zVIyLMrfvRUEiAUkRFUbDj89^V#}-GS)PHhx2#gB8{}}Z*juHV8`2HsPUvLx}3+8AU z?6?uuZ2D`c6G&2w#$YiC`;DDbU=;BEYm|Sna|IBB?{C6C*|`Xa!1o_Sf3tIza=H)v zkns071sBr@nu8CL&&@j{FmX_XgAN^}DsWndVy;a(B0>O1DIo1I1c)J{4H3XGTo+V8 zA{qk-zQ5Q3Uen<202K&Ma4fUjB=Ucl16RP4=mJDwLYqA<0#eWhzBdPHhZT7EjNk0X z*0MlsvAHVJa!9>^tpSS?LS_L`5lQ0@0R-v)x7M^dD>!ia&qV>*0)J2h0{u0SQk(gR z%X2N%5%z=McSrYJmYg&{Zz>^7p(rd=lo-YuwQag3rH)8Boe)=!lA@vEengMqDovqF zk)fgUGC&&{637zb;#|>a%7Ex2Rc<}nN^I|b{8~6Uy1benl<(Iw;&*G*x%t-HZ42a&rR;OQF7MudaGHllrOqR*sI$AjuCejqi<_>>$@^b+@gL51 zkDDNWA*5)s-@7ZCm}fA7Iihm0q-ytL{v-3^p_jw)-Jkc3@hA({R%WXA&X`Z^IKqF? z?uM&kXjMa(tH)ig;=4mqCKIgJ)i3U?I^`qVP@ZwO)fqEkHfx~h=p_EwHSo~$1gDB5 zhqK*z>;=W#fo`Ma)ZzwxZ}tY=n$7M<+ol{CAttJfm#MXUnEvelg4|zcg*oZLbp>k` zE92#3yzivI|EwUATJB`pB(*W6lk_v)Xjf_th8i)oyCnychW+0-qy^ z_ZWSc)tZKjDU74C&Y8u9RtimDIhU`uWbUq5PFd+z z^(vHIWE310(%-!cXKayil7qPWTnXcoN`rxp8VX-Ii)e|5K5`Z~*3JWYy?c*6%R~RP zr#a(x=modW2=@EC{FiR|?=ga==Y&*(+|PNclS;2%TR5H*TjadT zQS|bJ+qcmh^hFIUt(U(y&P*1v<;$=b@+Y+PVtPWG2hpw z`M@-rrE_KbWpW3$-(0hrEHDn^Dg&{gD*4b~|hcxXox$z3Q*U5c)$CnxMsvX41C!<@2>HQR$c zFO*;}q&<(S@M;Pj(9pdnY-3+{Og+IeO6Isk%!V!Pe0$LYboVTqwZ5n6Sj9Sj zHbqL4wh2EiuT;2DX9M*dfhK}-O(NNnYRH>)I4qyS=NN%i=x7+qUcrvBGG?tgZpE-L z_l&Po^IHdwXiIm9Of9(F!I-4#idcRg-~tnlJ= zmm^h_Gx{5vAm6{ugv!~&KD+P`D#9$G^40l#n;li;gnhKdho2Qk5*%W^=y{&i8>1`? zXFA7@=~o9Y`Q2PgADa3`HF%g}`T+gXMKRX0VWNV8^7GU)bs@Ufy=V`mt=G23$`Ob6 zo|0PLK=U%U=XjK$C7F<2S_A#H)F<#9iq;(JncNUsB68%xm)W7F*tu zAjg&1xXx9U^%Ggu%|8oMep#*^#U7yY=g^;8kp6OsyegdLmnc@7#=p&As(_oLw{-Y3 zH}N2rxGcG(qWhX#fAkh{85I~r^D9n&1MNR4c4e?YjzMRz;K4&0L-i$sm`e@6B8F|& z7k#XOyd9l96#+MM~*y0%6n1t*<-X;WXJMR!Na>R-{E}Y&QKK7d8nE2t4+dh zqQFCW26c+L?zT-&!fO8YQ}e#H6<3r$8MEm{G5BY{>*arz@Oc06=9!lbPL>LshBFr9 zy|TmGZXYHWKb+rhe2;w(#gz9IFWS%~PfX9Qh+Sb%JoA55NTfQVGQ{=H99=U)Zzm&s zo}%IXSV`6tAIF_+>{&QVCqaw)D2B1|*v;{FfB`k{Epqzt$2)p$sEldUD;e74PKm`> zbeLNjFC_<$bw)Gl+adGQT^&+|N~lJGOm|7Sxr0WJnP+6RS%j$%OBa8l()|_3IdXLH zy{!g$jTPZsHA6-Z`hC2b`q-|TZ*PysJEQ8_g_o#~HmBXEt7{XjM7Y zp?=ihLmUIgy%&KegalAiKH{#XQ;cRQT&S5KD6775th3nEcAd)qTye4QQC`W}Q(>9w9X9t5a1`QqyfIc}jEz6Cax`wr z-Trh@LLaJ`jaa%Pk1XzTv8771Tag@k_zBAz<8F&&8~Lws-)}CS?%xQuyTxI0drhG_ zpJsf+1-EKZc=5A{6jndv+0sy#VqB&8xj~V#bMEmc&{Kq9H4|gWE^}Qiv2!{4K2+=< zG;~|e1$m@OcRfdkPxQpg6cIM4{0sM=ikG=2B#n})0x64q8E$Bm3XrNQ6uOP77kYDo z7U0R`s24I}W`iv^*%h);hX4MBXon>N?kY z$hYn5{p60s<%FkRLRA@GcveNNOqGwFTC@m2p1Q^@d|P(Z#gqQB_Cd z_r$M~4>>9^+_f48>r@g!^3gZibyavOcA%uF2k&{c$Wk5d(zQSn)!j|E^Y}}k4(<{A zxIC72h3CDQ$J$DPLT%pj#vk&Z7UI6T%IkY}do1b1b6(-s9`GpCW3cB%Iqay&n14*3 zHp1ZV#vk@8U6EB8AD@KwIL{XLnCh8F;Z;<%d4kmGxPuDBeW@>%27Tv!9jy3_XXwz1rAsuSo!D_M>M=G==$ zLA2;@O5zNSE@xff0o$4<(h^Sl^MfFqX>?WIlF58e3_(7zh}K}h-FmqPQOT(nDf~)LH!hXk2Cw-RN0osbR+mugBJU8T~8*a&Z1rY z25zi*2$~ES8gI`nmW>fKv$=3zC-2s-n1wvS+NEC%x?jgOWX%LyQq01jK-7PlPe%4x z-du+JgC(5{u^il~a6aL&L|>8y5XHN|<6VtcS)%k%#gA^efg073~zYyq$-N z)cjb)_xj6e{sq0@NE)~DyJNL0Pd;w( zyz$L4Li;y{r;lEjMegh?SQ|Yl5p8G}%3atC-@Z?ub zC4wJ|*eI7Ue|bE2ckKRt;!-w^KbE%mS-(5=`L?E#)+|So+44t?^+z)v!LpfKiB_s{5$>kFV_w*Et@eE=6oEH*kfYy z_FH;r9i47->jSQzZZ0B|71x}wpWX?G-T#1#$}7$udMl_RcsSVCY{CguammJD@7(-V zY+B?A+9$ll0|Tr-7h!)qmC-~F=O#oFCD zCBy3m6&#ZCuBS=F3G&D%s5=;SardL z>*6K6vlv`n^~;7v{wdyQQ#I>t%WaJsy-z3SjJ$)WrF&X=N3+lmJc8yvvYfnTCHI3a zFox>D4K`maQBL~6F6o-&S9>RWMLYay-Bt7(*t$K(*k#63=B>|;nFLaIY^cz)pIkML zS-pTw_#DF}H5E}&xG>0l+1}mqnw(CBoS*$hPo^EhzK?R>R?l{0ghD94c$(_hMRG4h9uy zjC@xg`5vl0F&STN9nHykCXuP&e(=5RA@^dYBYr#?U)a|9+NSfh!j&he*dKZQ`y=kt z(vLTI%8p|1@-wHlFEa^RX^dE^k67**=}{Z$nX%^&YgWUwRG0PXyrh?;oW)Kqwy#ws zRB;8Pon|PbY`&3+Y>$fPw{Ov9+K^jH5P|rykr<^%`@*V-iOXR7`gY#Mjfw+=d$voh z%?`S9g&|#5avo~@QRAs*MN#pt{NP)E3h3MYJd0Ky=*vk6|5WY%*esv(-m_+9w2-R; zjJ|lRe#1XD-k5b?VPzGU**=FQvX+V{VQUpbxs1e0E;7}Pjq?YrDYi3nEX7*ONjzMW z92obiXnSBlzAiXO-+Vc091~8Yui*dEPtVPie4x=<#$GNX)j%%eX{?i+MA6EwUF;i< zQr`z8J*^ zH5!?#RVrt?7jF1=OcWqkN7!H!R*#)ip#A*Nesu{6RJ&bf@x5SnS8mb|g3@(W7s`So^Tm&Uwq z++8Eqv?+U^n=iTC`Tj7m|9Q53>78;Jk3C(Ekf z*tXB>9-e{iD*2(x-q)usCX`Xh2Wf(m7wJTDo3tXk62=1qcWl2#KHR9*)Ek}Az*m4D zxElZ3oV||?OVl{mu=^788qbN~TU5h)6MDWR?Zn@EzgpURQun7mSxU0C^0%31%7-)A z*fjeK>uFEVHjIrYS>L4+5gbo+H@iMvCvgdfr+yD6NdO?48( zzPvg4YWs4lt+vV({)_eXWJ2#^fe^Ra_cP5yJ8}5W);7A`p^NU=p{kTBy$@>X%vKrx zRK8@+*IxAAk9FD*dZ}O<*)B7q@U>65O1yor!oUsTO1+ObbME~&E7B81FVF* zX+qa*tPU-04D<6F~T(fLWZ-0kpr zNnd6#H@=_|*e~ewlbgAPia1lYXSGxD6hrd}rT?<&seQLyBJwCSWpe9+22$bIze<<^Xs+g8sT)~*%ID@d}9k}v-f(Og?lEu?=c`AdW4?YBeD_maLd zUJ|@z%Gpu-Ln7A0>}8=X<%PWHRqAx1-YF^BX};$}oO#9uC8eQ1-Qwy!+#=Y>04{8_ZraI|a_*eoeREZivXwz^pjqUdQ&OXmSTUEz>~-|#^K9++ zRx)v~80!+xTUPS6J?ayB+}6apmOi$WO5Xndn8th%gUU(uiwCc-?a;B)?JB#fO00Xb zc;cJM#`KDbZJK@%ZQb$nJuC0o*Q^Wi3`JZvQ%Z5)vr2ChE?Zm@d!D$1qu*3o#CVh{ z{T_=aj_wzW=2iyYOuXeR&F-3sO)*+%u=$D(0P@tJ47IzbH|{K{MGSek8z#} zyplp}Nju_=d#vlNr#RyF$($ZZ`nIitqMpjx#MH0s7I|v6HpQDxRn{^q$$Tv}4=R>W zQS@2}Axh}J6uM(7GGJ$E2d~kQI;-+rjaVEc3ejeLC|!VxkVdRL-SwXHjEb6w`Fk zcgdEOL)b?Y%0( z39_(QwacQTju|>+GY!$?%~pCHDuZ=d<*St6GZJnvS6Essa1RBsuh7J4vw{kJhSzAy$u~u{WwUTa6-I>ExwxGs8N`fM#b{H;|~Yh@%c?&+Hs`T@IX8qMC* ze@p6ZrM9lAPuM*s^Q~+jug;91i{qWL&iF4%NwJJc1$oxd737BOz9${m1lspR3-55w zs`<&wom+lZZ$rQ1%RKre$NEhZA9AsdFLny3k~mc-qA333B>EVZ!aQ3-{erl7=YE0l zwd6&$l<3fmv#KX|6{K2*?0V3}N$C6{ZXL%}Y+q5v5(mm3yg3-@j5F7W8?Lh#wHt$4 zMMRi$9>Au3oQ(g$3YlL;5As@-Srl3yZKLPj|eNRf>@cCaw#|*l}v|J{i9rnP~Kq8RuBZvHYn2$v95L@0oo> z-R-+46hEDeFY=StE^a++C@N(h-jQ0nWGtfphUdUKb+roh%G6+ zXZ+qUNU9G?`7m8oXXzxk$5OIQ_P)r|N=|(Dh~Kj2g>a}E-wtLokF?`zfiYpRF83;^ z7H-n^nv9}5nHNt4GWVM_ThA5feyty0!mLTqJgQU`auuAX>o=i!d6M9b`Vw;{tnSs? zRH1?3cG`XuZ)<``gr*#&W)M9pCQQm)&_+TVO?-K_i@hS9<>qWg)creeuCv6jQ!LX3 zV$IX??xeUayuWhPp17x;LrFcIN3x~)^OX~U8i((l{uY$_ar;v$JD2-d*{`>bU+!!e za^OlWRH>9H82KV|qJ2E|V8*`BRmZn2x>R6hAFlc`&=_Y+ZXeyrHJD?kyUv37k&*WJ zal72H!M8b*)wi0v47=qP9|#*M%!S@;3fx0K$HX;g@`ysX`b2$b)Q|X7TlU*E!WquA zwWpqR%-vQXkJGmG>M63FGRS2!7v$}aUnyNm?7cr($1!%_hB)+1fFbxi`3U7Z@g5d= zf+W+5K#Gof%LysE@=W=w0ape}V^S>5D3gKpZsF7u_go*YJm_`OWzZx39HpLD;Lec+ zOmOz8yDd{Eb~I`TH`yA89?#*R@mDhcabIh)M5J9aHA*qUG=fuQ4_b66ZZ6gI)A2&# zOQ)FH%r7x|8~N5`yW*JcoNt>MV<@wGTs7?>efRskL6&Qz(DB*0m;m!BhBq$KS(mH$ zH@1H>`N1N#+wn^wMfT^YfvZ{~rTgw(U+QHNsekA8?Rl8B?cS>c`d8cSt>#NxolS8< zeNS^{&2P~Y*y)9S4J+dE3TzMF4ZKx3RC9&xxVa5oxs|MzL$z#Uw4%b zs=>F+vdQu5Eo|?1C9zx6XPy?TtRM0{K27oQo`d7AdH+G%6Gd0fzjA(mIH`E(X_TW@ z$)$)_@1z`B_;RB5mXaURmAzZ@)NoMoG;z7{-MkjfJ~l2!p&PwdBAjZSZ>u#4Kid1y zW?3#r&ws+KZOmn=$2G6H4-}-bZlP>II zzkNU4W;ShZO(o(@!h<7<9a+wrv!}uT!&);INxRZqJvK`-*}kBh`s=Okb-Ag-pEcX2 zuEf1?`J!`>>-p_~&LMEMxjPiU$;%kdWHap5GLtmZ>K}gpWwrUsi;*>= zLz>U+(v>cbuL@<7sWaj?4iRHbc6%Ii$QIV!`Aom&PVGY};cP~IgDggkSKapp(vMxF zrz}u;IM^8E_xVfpb)F}Fa+z-UoF_T_j;}l%RV00+JS^C+S!?g&@DG0UE9Qys`p#ch z7R+4Us@M*S(>sJr8(lnlhpWEzUSUX}xaq>t4S7>*QHkw?=L(CFvHOtS5VGztSbmN44~)8irx$&O-A*au<5?YG_BU}V0&XEEGRyYAI?hk?@LCMw>M z{w6ADVia3MT{hY9Fj--V#sK6Rx(!fKH=21blI^LadAa+c_w_}o(vr1pjj_VMUIS`l z>P(G{kA?)!ybuXbxhYohQ{MRG-0X*=l$Xid8hh(c-$x6mS?UP`gJK8?$5Qe6yBHvmf@|4acbAx7P)<44NFd#6-_{zA<0Z z3XtB`^eACDQz;K$GB#cE;;=qOk*#k{+qcWyso;2lgqnGyTQGmx2Ay~JJ-K_`5+eFf z7}zfKoNlS2yB(QT=U1}p&6Daz$F6-zp@eAQo}Ie5?q@%wX271LZ3>lcYyBwf!o!kF zwb7CAaOBD2n=ctv3@JQh8`RsH>1slx$yM9~q{*E{gM10aoB14v{1j@kfKsw`9~Dmfxh^{`j49)?KV0=r_ zkn@Hb4T{~A%k3c8r{p8XyD=0#pnP;Yr^c|FLvG zBTYHbk~L=cYTe}gNQ5izy?eW2zW#cANbF(D<-+Ml=7&DKZ%&UjnJh;&a_J4znVz^i zH#mpZ8tC?%(#Qq+EATp}IyRxu0+SroObu;S5#XS=nhz#`AR|hKWLpHY-+a z40os`Z$r6*T0h;511KMvG3qN3jE_Y9%A|aMMEA<{Qx~he^JR-EulC=OQ>(4~{N2I9 zLO<48C3k00W%RNd?zV%a zw?Hmsm3^Ih+iQxNT{gBCALI~L_vz$Ibaj)(sa}xae%__=_@&jLX{LvK=9%fzGLeVZ zGUe^Q_2dRDo~Y0IrZ=^t8xzA%+$r30+hS6KR`kXsS)dJ#&P!8n(->*uNY+nVanIb# z8rQ@-7Iz4JyP(P%#+vl{TIQNaUx9Fj<&`Y5PuWTl5lecix&gOlF2v_(eQigXYdbR( z8XlE2%Qv6qwf~9PYtvhMel7Lwkr#Sxld;xmV>fvYsRUm>`mAS+e$R!@D@k%cpUqkt zFm@g#-iiLCoW|5@qs~%v z*!FEVRHF8_r+4kAra5QNROMqFOXk`{b}c8XtE=p-Snp+W+4u3v>ZgCm8uw7WtTgX--z|r*A*8`rp*M@M3KESfQN{qw#3U(zq@ko5&Y&QJJDl z?%Dm}PFXCaatWPZSeBj}^FG7MhiPQC@c71}x~#M7_=b{{{n?pbQM?CDQ29W$m7T;0Vvtm6O8uGF{HyD6(63U<;@v*9N2=ZBggQ;t zFKoKo&+d>djFUx=Ekw7=><-_vZct>zU)kZ_nfLgd3-@^+Rcd=`oW1UA4k9@!S94&z zCgG>9o-AtM3+7#ii|UjG>fR(vr=B|9lncr=Y|Rw2kN3>Q15%7@@)pvn=7q#^K?A-@ z!TgVoc;!5Q-=I*fYwNwW1i9tRWZ!eQv@}2QP0(=IwM^gmQ1s@QZoy6k@e08mKU80w zFy4Ndv4Q2`e(Iqca`Era(%fKB>!cE(B2t>Du`7pn?cy@nV3e3en|LX$NzXOi^eJ?R zCKOe3$MBWx2FGe@x4W3G;U3*YwERQb+69$bCZ%v?demM4Yw0q&sGRr%Xu=-LjCXHO zb~hWK)INdN8S%7J+5W4v>I7X{l!T6^rrHe}SJgf$&-netes7d4Z|8p*2;9BzeM73# z6$>X3vn`Mmlo;V zTMtfP%)2P)*>1m*)o3@-try%j@q>07g}@lyner*dMQR65I27TKuH?@tb1efjFHErBxBVG2r!cVzWMVIr|#9aOLq*(Xkwr(=mIB1&K*}HHIT>_o?uXyQ+~hdylE>uIEr}Jf#{9 zROWr{kTp0y_mn~62=&iVKFRZhi)A4)=XW~GFjTeNmSD zzEkXBWaA4>*!a-*2PG%hYhLKi?L?oVQ2UV(g2hJIR%pSC|` zYd`tQ&Uc!vxbEbo$XCQ$!aF>rSDL*X+gxyi#c2^IYp&DT5hI0A#_D?JW}G=+xLGD? z;^>&!BF;?O3!9Srd_y**##e z=3i)$AyOcEWx{QyOyBe?B>sj)FRKv4<pxT`pT<@E` zH{8D7Hb`?-?Bb^|p3kW@W3?ZhZs|!6mRqJKToB`=%t;`GFP^BmYO6bQiZ0~=2DNtG&dKjgGmZQB7d;GpI-5k@F~;cEgDLwg=Nzc$ zy`M5)DiH{p{Ci4m)NZz^Vu)zFCfeA$~_*J?m@P`V$HN7ZK zs^?eKwv^Xmg&#G~88bMXDbc2WbTK$<<_Jgo%LnMgTBWU#WG_9viw}RQA!c^&;A|4A zZ z(ED)(b;DsA?0u9#s=-u_Q@GiqzHd^*2xcc)u;TqJkaa2wOB(|0d?gEBTgqg*br^Q*8vXY=$x-Vd9?1=O&KVx7udR<1X($N8 zx&6IPP8DXTcVz;+rpA%}on!0{X9zmD=I`~Z! z7wuB+ySKt9{`3!T8QPoqXmVNg`fi^o-GRy~04XmcTP0Lo`i?_alA|Pj6>T=iJ?`1{ zDPGBDX2zqQiXOgT$B-7?fjd|6JZOhoq+yt>7ha?$WN~^g`)Dl1cRA}v?~i}p`>rl@ z?34pB%htY|S$e*dt4nlakt!?A`Sr6-3MH#(b1g^o z!7KU_+UzIkh0mS6(mN)fdyRo(MIUZ1^0@N zDe_G{H|w7COipF_N=N*S3j4^gKV@?#T2=B zHipqXPi)E3-XFSduy21{?^~wD5L?RjjWe|^!=+JTqCtmVR4gY4BxzU|@(Wv5l z4Ufw5vSPODYQ1(tSoFsbVc9?KO>u zymL9PToXTR_fesBhUabap&Gk(Q^F@6E#pJIPElUh(>|5N4SDk)%PBnE_MyMGwczTJ zx#*$;s|x43?W@meFno=B+<)Ui?Vxi)W?k)tu~Ze$!~13QPBdSrPLf}1%wJkn?&1H{ za!T-t*hl^tv-A-<{$Z&LS~@dgpR3VwU3*t=2L0lS`>D<$o~*#iHkWYETP%7;T_ zpHtj2a%yfd^-n)hM%85$@~HY(kdt!~h!E{Wg%7=Os`dV@?X1c*RsTl1Ru9&c)+31%*Mt~k z_l?!P4+!Bl(Ds!2Oh zUVY=E6g5}*X>~77n8(?~<^80vLY3ZLtlM8DSti>0NolTB`{sd9;W1Rombp8frC7~X zb-GU!cv8(2#P3d4u%0Z{XKj8i-@mk1xB2YSb=4~i+HEVd=*6Nb25|EblXUFGb#&Et zhKF*XP44C9=j*N9-wWbJnfW5quks|lzWbwlKVDQ27xqcph4z!&nZ>CWhh@T+UvcSb zsw6J^*I;bYFR-p&mhe?9J7R59a#ZG0Rfh`Wf$+VNpG@;5E00P(?~hn()3zh%mFaDm zTJu=>jdllTEVHGnyT;x7q18@Y&R8>dyBDdHEjvPBm!;*B;s~z|EU&aY{qCq^hwyZT zl%rA^j;PEN?~R!Zj{maH_*L{d>lr%XP~gN<}G(c`E$){QvtsS zhvRYgy;!JDo^SWNcBOSDMOJffSp5Fbxr|h8mCI!j*Bc(Su`&xiTT2y+IVjorFieB3 zql+u$r@z`o+kqKFAM-05<1Cysg7lBT|0l8V%$5~%)m}tly^rEy=r%u!N7^M7`ts?~ zx78_bySg`OQY1_|OViTGIKPiS>UYLN_W0#0pKID7nH|hW_qT_&n&)ok6;|2j%JSlT z`)v+vMQ0!rZTbo6upgAC9~lNQvXSelDY)QQ*BkT|>UM{pwcWck{+hDmiHEdw?l#{E z59$+Qv1-0!vI!?AB?fIaR^D4PeCHQr=Wa54Z_7<}{l`yrv$rqbFDH2&pc-wUW%zdX zEw#QvYT2oz1SVoqx0Elz3W9KmMj;$&A2C;_)2( zm8T6?(@=Y9H3qNsXG&oTt1T{tkF8?JG z8IpN$r&;(xgW7OZglSxzNy@;Lw+G{TS5TM&k-O;@pNy`Kn~oe3a?AKouOWLXd*(<# zBh3vJccK=LOgq*Z&&; zX5hCphAC68?1FOHTh_6WL>FBp`e&O+9h_1#t&0(X0*95%2dXsAbp2wP?C~p|f^q%i zQn7*V)G>OUEY8bAVPSC#^WV!L+CM70YmoJRj;1&$3UA;+fW#luYyeYFMh+m-G5d~{ zG>< z>8*&IOY*7QBP#STHY(A!ESsX9OO9Ntvxz)HGT^N61LL>~L)vC?pvU647tgKCf@2P$S z9m>H*rBr#ov=FJR21t`hkrT2y7F|axQCIj6%>55sQAn|(Xpt&X<*A?x`Y8Fz+f%Z% z$L6KGdVye&@vhn<%lR@O(W`vEb)_pt7(d;MmZND7{6bYInXjyc*J@^YUuyVGr*|6w0+lcmohO z3=5pCwDWleI-hzM><&RBR7A`0{zCI1kRH$jvYd^wV-8UMy~wO`T8J)Cgk!o>M&Z`+ z^*F5q8?WIKHd^PDbaPxanvN_)qtDWtF=unEO=g7MKihTodWC^6@Hr@Tg?b0x_ga*a zcVB~w9KP#s2xq?rcZG5XF7Q>vn3Ao9;@ginP=78O1#&TMmP?xVYq-QAB+d>gRv`~# zkbpii;uythl}|ih@G46Z9Hvr!tIezG)_x)BgdbM>8sM>{^UH#ilK6xlV8!W6 zFOr&E4hj8~1}6uV5-5%eCGco$?UTwMb>=TkY@+hzE&M1oDMxJaRw|6Pu1ZOszB|mY z^g3f8=VCa^>2+{wRwVm57agh}8d+2~s>wGIwHt7!GCQPzkKY%m|7;PxtD4`F^70vF zX?vHwJR9kbdAkolrFFT>esu)t<5~(nxOK)~QBR7=m#ue00{MDK)=+xfkETTJGcdp> z#q+}-NZf`&N#y$cOHRbckT^wV z2B_b^>h(hvNZ+IIMq3ve8E}riw)PgW-&s+^Qsfn#8BteJYuyQx(!^G~5X!(d9_UJ7>?|Ep zyeX0IK%AZ`bT^JD9Q^bBFqI`M*essu(G$WJjW>tc7y0sAY(ABIg*qvARa!F}Dv&)f*HC)$TJvq3}dH!kK%Vqr1@lx z@KJ!+y#2wuHrjR!lIa1HQxy(!B2&~gY(UIS{NV|@#Yoe=(nt&6k;y*8wy|Uq?n>e!|p0JYn3Y(JfdSPH5w>?_5;jY>br$Q-IA3Bmb!id~K^{+!5; z!~&sspPyW@d+nG+lfy0geV#v>=U@Yi|7v(DWz$9?3q7w^T{25mf14EWo^nMfY;r=0 z1)s3GjzCE5GOEX)P&@~|nNDeSoh1-_=3r``{o7x`p<{%~1XPpk{J=&=%XS8){EI>xGyRqSk)yxod-S69yd`g*;-4Z1ib)l3P+(d{i_C zrzd+wB&c27sDz)e6)NerTN8{p?2JZS={Fqo-psN{z}fFl-uyV5Z=WOF$`4*bKM^)? z2MGBNLyC6RUNMDxRl)g#QrGdCGx&6P|ZysKZK>+fwRlL~v@LMKyLg%{% zATda%F6%6J_!5yVoV<{2M@JGyq~_nuof=5j(Cq~n{n@A&Mc$D6dWKx3i=5qJ4QRTV zSnUXsg^|rW^{b2`^U(Spk4Ya8!$kU8`ZUP0Z835laoX3VY$K=))N{X0#CqO z%BGA;VOkz^sa=?bqTr5NGgvL^S`^90wPeAz;Sh`w?#bA&tJLoCz&1oXvg+a2M6i3Y zZkq#UJ~W@nFA;?-JbKdmwxo^yA32E;xe=oVQl_VJErL823=9Q1*4A8p_@<7~-A8}H z9pb$LyX?tcu;*IIiavA)d)Q6C*veJe=6VKTrMWEwl@k(d=X$aoeuB0xguOYCwk2R* z+$haC>4~FuHMW-0-Sq*q$+6?(8AV$DWX0Q>^^R6`F)Fe#*n^-wRu{jg_L0_e7UvjR>As=CV3qz zKiXHTY@6eIHPYOP<&ZW|h#GP1R*E~o8vcS1FUCwoQo?>ok1JMN2ij>|MHm-HB)$WB zQ-xu@F>oQI+d3`wM&h8rdI;ggJAv|Sh9!1@nA~M1>RN&B9X-p7p?&p6ozA`GKn8O_ zx}_RKg!P~cx;eUSGSCzK_r=i<63&P=R%KE)r_UiXLC{(!Rr@{@e2b#Z_IdLgQvk<} z23Wb0%wAuy<{_Wn%v{elxmq8jqkd@M2hq_VXk?xZ!F>*vddh7Kz8nk>s_c9CafF{*R29#KT&TVSo@z@uNfC;R5v*g)xZ>@I6LO#=h@N4#$_AkK zr^IZ`fSFc94(I#8)Rn`wjry(6lI_wl!WP4(vXjMowI%D%FBE%}7;u^UWOXeCSzj$_ z?Oej@EP~ygFx%WpPtw84i#xnVWVBOBA^S2G=VKZY%SF)zg6YUh!>qi=xGO_FzkREM zv3v|h3$h0xwuQqQjbGG#y~40P@7r}~YZ?|66wmdhPm_?#zvE|{m4+UqYFl|b$`f6o zqEHe<`QC;!Ot^F4sCXJc(n>U5+u*yBianPpF*FRi1#@Nxq&En{72Dk>%GehSj>x&Bbqx-1~34nUw3r=H59^q&&8UGO9l@A>NGl<-lvg?8;#1!4G z5@>#KugRfVVhoMxYR}>F7W@!-vG_+XFch+HM=_n#s_SJfK%|(UMf9l|*a-=Z+sXHj zvHk)--QU~4#Yn^m({nAc$l5O@)^)+_kCyNUiV4&n8`r;q0g)T1l2DOv2)jo1sSv8< zpQIIGF?xkNaAPe#Q8yjRR6K0HvB~bWB#Pl{+YqaO=Xg49(F-Mqs)?`O`+BmrUvKXc zORTz~$A6)I9=i20gcLbAJt=d~0JH{*;8nY3y_E9e z9w0j%Y(K?tj28o|N%UdSlb&}hj5cFxrGjCHwuOlh^;3zTtCvwW1Ld)0BJ8`{dZ}@# zE*z?z7A6tb?d&T;H#YeirSR#hTOuQ-vBu@qrkn6gG@Hoke0~9&O|p-i&WiZ(J5uET zB=BcrK{+Gv=Z%gvy?R`$T~~Fab<6ZYDwiIz^T@ePg`v4)DXWPwUlb_q#20q&<}UA^ z+pyz+HkYk21TQ3%E|)D`+L0e2otR))eD7y1577p>b9G=|&fLE@VGeSFGo|zWnj2z6WOGo)Oy&pVrk1;`RmV+T?PHD$OGdverb&aB6q>5uk z#odVni}P%oNv4u)ZtiJX+ex?nWAnRXi3dr zFJ#{QwhSJIqXn0q%6Q|TU9CZ_FW7FNz|(Aplw;L!H9;i~v5lW0c5bWyCCWkl?oZ7> z5F^j}Q`yYBYNnL9RsEI15wU~TT76UXD~&7joAgP3Z&SIGWCw6Hbs0%eV(5w6N+u&S z-4Dn3b7| zhEI#T!vjdrTN#HVb}g^ysCxXza;)XfJqFfsn5Uk@3hMZ(Ev%bOL=2GIkTg%t6)0tL zXX_S~fDW$SsWDqs!Gf^%Br}rpy2BJaMX(@g*JmomVs5q5WiAiG80GjdDguPT*Bbz} z3-hK&Htkqrtj4$#<7T3V-5!o-rZ~%lfFBx>;jS zrA4NqOf0t!ErDIgLCujgH1hSwG?+2-RAR*rth6W9uVLE9G)BAI+LpFpAA%_exj9m$vJHm3DO8cZpL~dP65S!&4s6~zarp5pOlG-nPVL_1GVIjHHCr)Kysv^ zy^IR@?cgi@jAy1KV z8kUz3P5cdiD}~z5AxHVjEz#W!^feu12QCp*gRkvXT*1!ayq^5C|P^iB-|2Xa~6U)qRN;!EcRV ztFqhJ8s|O30EmIe2C=r*@kX@MG68H$k1DOw?c8xSCH)uoTWXB*T^rJL3-Us5n1A-yBUU2+v(WUM8V-Z-#6pdGEuZd`!48;xlwZTpvq%&6>` zzB8lt(5`56TAcff{HCop(jL=t`XMyaxgs%_i?jq4zc!2Ia67!Boa_08{j^O~6IX(1 zrkw9l<1ZE$I8Ry@6S&Ou%pa`AH*Y7n4z{WSCKEk%A>;9FPOh9AET{W_XWu-@2}SIt zsSV(`tm5%R@@9{W$CER`V~Op}?wO8Kr+vl}$X>>oj+(23MiZJEVF*O%Ck~9qxBg>R zSz>H6g>99Jz7Kx>saLqlSTHxDkAG+ z7)uxv9!&^EUweHy#=7su63L@=fb%3fMKB&GyP0A-n#lnfOK2L#a{3);Jg&nY#(V4N zA$)L4bqxxX`N(5Cuxq(Nisv{ zAlmuMMs!07T4f0FIO0*-t(SD+fN&D|@608LM9Cr}4S=TMqGpred1#4OxPd3%)JG^S zS!>j<5pRllhkR;)_7J`CawaN+i}TgzSR|86qmjfMVGzNelI7Gajm5c>re1(QC6fid z2&;H0GZNFd2@5_C3SgR z?%0fqv%76p`uomlCdE0%+K1TnBWG+@I5*QDORp+4eFfv*@_`B#(rID4&o_p8K-6Y+ zQ&;dMG0R~Q8*w$Kb<5Ewxkj>9{&D|W7c8^eR!ItEJ@$dzNqwz-WXKw zw12UyoIu3p2`zJr+X=VNIy5Sr=Mzu~1Z{J&YdyIj11Vj>F&*1S7 z_ar6XAidoAG8dYmvksTev&fW_8O21?but_XFGKd8@7^3jhw^#Z4+s7s*4GIP&RJ0m z{+SBKqYH2k>Ommr;$NS=`QB(2_`GIdKW&7;tTc)(GV+8|L-?)@jKmZ}`Ur)(B!3sI zJ|Q@`%hpw-Iq*e;&?6*f$VoVlqtCm|RznKYP{z^)hm*KQ5qDQ8Idm5_BdjOw(zF^8 zKnV5g1$8u(F+Xh*q=*}?^KUlgzB5tx_xStv4BV0CCR<&qhGKk`tu!k(|R&mmN$M{9>fd~Bv$VkLJcoMr;^m9Gg6`kUOP)fz&lf^T%*>Z^TN&nUk}bMhfEz zK8h?v_0eL_#8)D`dM4X->3#U&zEz9%-zV@$CDV+##PPHWWSD+q_eYyRrz}k2Hr3US zPLFpEZs^%tgHu}x6X`J+!*vbf2=eT&P_wDQ8P#x`eQ6b#!R2I!U__8pv)QAA|Nb4g zfJd1PKjNvR4=>gf_1o-vVTwR3@da-$w$mXb&3D$4J>!!F6?<(VcWvlhGaYyu##ue71hZ5CO5OWSSI$G^Js6WT)xT-ON924QJQrtcukZR0I>OeVX%B+Huqw1E@bUcUO z?XP(P^%xf?ieg-Zd4lcp8MFuFSJ_1;sJk5>Vw+bSx?zGA($`?Xe+iU1UJl+HZ1lys z7UL=5!Ff{zqtRGWMkn&(D*sY!ne~j**+;siFh^n}+*x)d@=}*`%^+0D9edqdyw!7~ zYzpAWb8x$UMA!l%JOH*yLBYe6OoH923QDdjbQm+0bNg%NMCI3B44ToiXHT+F9bFrU zj1*!x&M6Ncl(rT9APe~*6@p0GUYA$)1-s7x^-8^&Pr)^dE3s~CMou!5dX{D6C-U;^ zlMx;bXD7t$(?_-AT-HtQ?_?8^Ua%P&KY1GEN2N@P?;DCKP@is=6CC8i7~Tl{&6)xz zg$Bhwe>PKm|Ht#xoNoKXcyJ%EL0m{*B%T?Ii`-bs2hDA+mK7*Hbxk1rJHds7}v0hIFzF*EED!27rkl5Tr?KhvHMKU2AwN+62ffG zj-=$-;YhwARvFnGSyWVtHIAoBa8+4y?TczoJ@^L~Av(9)*&~=f?&f#kyWRDX zaSw&4_>006+{3C7IcJ>a3NCnuwtt!cq_QreIwYW8H8*SxFu|z!$m!!iE4YR>BcvRg z9Wcf6*|HK?+M$`Q;g-qyy*~_c+0_DX@c=nyd8;4&e0EDe=?_G??CBP=FGPS`TtUgt zbMu6VfW?o&M#&-KhQHN@$qeGgkAST(boy@d1ij+#pMA?@Ad9=75lhr=iggRuF#RxI zws$4>AdKOuMELH#4EhBu2XWah4squEA_XQ)GhhL|G@EMv;;mrXS(3wO-sl(ux`18R z4S0jqd6q=}JyEJmiq@e_il?MUCV)vweBW;3h0QN{)Y7bcB6>yxC>NqXMq?k<%tulM z4P#>N(IPaIkLZk#9)V5sKh;hmO>lg@<8!1~qoxq|d!c_u;Rb?>t-0unv$MZWptss% z-MMiYV6n*aL*|cX0$CWlJ#lRzmkc(%o67!<$M)&}*?8j&$bP?9@E^W+PBU%Qzz?#jNT>robj_1kU^g58Z>hraORX$a*_>2#n-8d#pT{48cbg^HIrJ)RE zgum4|%As>A%jx6s2NsSKmdwq0PmEU|4uSao9R=jo9XWpr9H4@;M2xmscBdgT+#GD) z?{qr}rMUb2gct0lD{_9Vdhn~$W=EfRA%8M&e=$l>1leLQ%^pQudxSXgg<3LQklY&w ztC`G4h~b8Jgro4JdmApk;Zn?R1ubP5p>+470A&WKY?48rDOOxX=wI>F$vwm^N?~>7 zSp>~sO`dgHK8e-<$tdsN5!cMU>h97r<+=G?u8gmpl_83w6Qd-WrYf2zoVeK5bRBxK zjat}I7^^B!uWnp<=bCqB!Py!=S(`hn-HcEMw8`(qJl0X^RR@9^9Q-L!JFA~Sy1ES> zr}Oe1oOm%1BwjmKZV2t+@WbPA9rYf$8mE6(GHNjM0?;$Vy&jhu9gOe$C72T47wPf9 z-U$)*VF(6kC!U;-$Ko6>Jn1g@@{x1BIp9m#8IOLg=QJB=Xvf|u@YezHx&qd2(_i^d zo-7iJo5%AnK&{jBkz98X-yGpD-VsQ3o+u zIp`ypbl74C4Dh1Oag?K?4AZ-J`&|*p{Zr4e^Oz%vL9E61R!l7r3@-~;@Bb7|9Z$q; z;OOrYbP6ljKGV*GU3N=4DfS#DIEI}ueKAGeSB2C;b=iyWq0WS=}>=T&e>ZkV0{{J_VuvR={Ia7k=fh8 z4;ASi^smA*TKArCrM1bXqVI?nuTOY20|@%@;@^dAUg6C!AQ-HbefBa#mOze-82)PL z8G#a-mXAMpS_ns2vq{HIc!!paK6%E|o~g?u#_v_K8eBf;ICNfNd0F30kLd2UB{Z@6 z%^)n-yW^_y^PZ%OYHImW1v5pn8YhEm*a9=BDq-tIG>}{=dU#H&!wnq_2PrZ##edSV znAxv_F39hs^XH6*tZ++r4C&OC-H81)0c6wVvs&d1J|+k zp%#K(-{21Q({Em5;i6(rPuCzqMOpdMjb!$gs}?ID>bj=md%S8##TTtawY$mDbN|w- z_L&tT+MnSP&+almM6Qq%{7E+Wj@TD%#&~T_DbtnceWigRG+73lS)7z? z08RE1dyQ{(y95Qoa3cE|7vl)P#GB5bocn|&us{EeB!E_Q=nzpB1fhq#`{f~v_?bA# z|6K@v*G0sAjSj#sNWlmk^a3x5O7F}7Q5kTGe{PS{hbsJ76F>>t?Iqy{1qt%+i1vjQ z^$r@m?p>vkzO=DhO#k`fsmr@wLBDgG(ko_j-z;y^C@+{L>g^{~gcJRdt|Do~@i!8N z(0uK`5RFgd)PG7 zCt2#uDC7JXjiyPn!@vzu97_$4ra!Wk)a6^zYz=f3MPQWsq^9v}o9q|=jh)IlHI&tW zmzGx6Y;k|(dVSn1F>U1EI@;h-dDt`)u9C^`#lCG_g4R;I5Q|U8@vt`=O;l1rSVHZ) z#{sL-fxi{6vLfs_-CPhYB!KBfuk}TZD?X|EcY7i;Z~T-^daqfc*1Pi@1M#r(e{JU_=Y#j;`K5A6lnesh-RRJbCCo{L|XHYNxtK))znTpYNY;yJu$T8ST>xNaAwZ z@IjsZzD_-PE;YKMl^u3=raA0+(mL-q1tvF(`zCePvU2@*+}`9)uC8tJ+C10aPHdNV zOO|@p!B4IRehhc$KmJ{6;5oYL-5q>*HW~2r=KtxwLc?-9%s;h#z-6|-J5vJoj1F!e z_uQ;l`p*8LwAb$2lZ18?Aub3)~E7aUNWfGi;%h2 zi?L$TkIrrHU`jS2{?lB8m@i^`?VoqrP9gq{{m9>MbI5*cAVdg`*PK5ifH=~8&(_s4 zfZVZlfF9dla3s_~ijVV(W^>Ra=dh%lgIkPWr@DbGgJ#@pUi1 zl_XXdXfNsR|Cpe!XWG!lH(qzbd!gKJsXpop;J;>8u|F}WfAqL#UNqUc7g(od za9(t#YmE>}X7y+_?FvF_O3YJ;-RtoO2_TohwTV`cvTJxh^jvgK7s@Ua-1dN^Jf3WD z4Y70G>(V-*LM^e3GOsH%Z!U&axD$K4?4-!_ZY>dKtbR<*5uDi9yAofjmzzJ{HB7uI~Q>Bp!usupUICe*GCbHVKb+ zEipU^8g%U+h)iQ8ndbQ&JT?ibI%SXvMWyan@H>n-Bp;IQH`bhy7{LUyMYYS4aT^pe z4eB|x7At70s`3lAa(BNtkLKfW=1*^UbJ>8e%4-ac&05G6iSijmzs}wtJP3jz(D)N3 ze;;s5o2E9>4h(i(1RRcMFw+yyRbs7l&vREv*r-4`0x3S0Brh|T`XtMi>CRQ+E6P@= zU!}M6Uf2eu32yicF-BE_Fi6!N&jES`bc1PP8nP)NaDmc(;lkO@Ww+RQ>Cy|Q{?m#9P!C|y`W zFK&ZC0y>DGKn*jD>;Lre|Er6y3->>A`Tx)M$Z=ISH{KFO@^!{cB#lPnA>of+BM%%7 zaWlsS=Gt5vK$;HKlSSbkesp-;5pjemOb*%czByiPXzEIG(>O>jS+B6)nT`T+F)kR5 zX9Ye79zEP3s;?GnlH$ukQxTGQEVAPzE=wNCC~=w-?-@{+fLrv~Qm9I^$K(mJ1<|~Q z(d-yN2qcwI%R%==3eq2zesEd>Qbn6r$~PnuaHUp?J~==X?w zD2Q9<TXWIjvc{b0qOiJ7w!KNOrj?)C4eVxPw7m{X3Y&S`ZE4C#>SVe1hKwxrU zya5x#_Er(aoqM~kxQ-bejtvJtA}JHJ72RBA{2&}cZ*r9b?54YC;Jme9msDBpY+TWw1<({l z&Y}c#k`$CCSg119>$3Qbs;a@K#de7~q*M63YTY!)7*5}_w!~;Ubk2Z^@5P|GAv8gU z^DVk}=ZE~UNj3~Cbe3?=nA+g=aF8csv}DO!%xUygZ1(wG%$3CGWL|nE_5d@S$=7Ix zkCP!sNA3ii?V0p;e0k4!r1eJ)o`W!l^bU;UYO5dAOlA+9dlny_59?vF7dYpJw0W_) z_QI{@?5}!JtyhOZZgl~jb=TZWLwwA&7_OerVU7{gXj&3bM{A~8XYjW_>9 z{96qr)Pu*_R<%M&MtVF2I34TTYsFIFo@FfhZOjo&<7Zy!Wuv3|nsZ7P*`!EcHe3%_ zHm|}Kpthr0kBCQTY$7@h)ow?IIS^in_9ljHUbrd$J*ywZ^%0BO+`Ew>b5l=Q{#p4r z3Fukr?VKR#_zHl=uGg8!klayHG75|xs@o^bF1+9cj`=}-ii9rf75fQ4_^tP{@VltQ zVjB0y9jaUE_-@ww3qy^KN5C(8<75yBA?YiarI4Ag)6T>Ab^$oJ!$k@?O7~^BUBEJ#!H9&pH6*q8}GQVqK z%}4%ZRqVQu0R{^_L?7j+6+~Yt`BMAT8YeaQ8@`5JW35fT#;dH)*~l#UyQg{o6p^(w z>w$Das$YTC^6U6p_T)bO=rc6x-}HW_(df@SZS@(eY>xgdKjiSU{G({*llNu(Bc&YE z7r_B`+ZK$AcqTyh%|-l^dR33n?D9kiNfgBX-+biof5CrkkDMt(69WSyAYcRtlm6KN znBlos2n!z`byYtKTxx+dXlI`6ctB34Mv=zR3W5AfVD17|Q>h_iq0`zs3ew;H1$1GUe@mlH-5Z1CH~*@AJsH z()4vuT}I!1`IEQZMVzf5NtF6dv_ExLyMlf_XN}|1P|7Cg4Zj&U} zF9x8lVOC9PU{~6Vo20dB!8a5EPc&NkZ8Hznf&sCL4D1?%ZaHP)|I*t=JRu76OvtSQ zk>otv@#3@fz;l`xu72QtqzV6oBX)csmvi9mb1y1QobJ_K*(JG|S-x}xk3i_wy3 zq1z*XqNj`-&DHA_Oy&OS%kLkprJ=2N-461Zwc_>DGBc0S)LYBkUD8q3aRmlL3;TV3 zZu&HZqtL#{yu7e-pa0B>XQr*<+p?~M%C2n^0RJ?FAJNs>IbwsrL7Q4FZMvedxfCMf zhJrbCxDqpL+GHW}}HPmnYFOxDrFBf+IpbA6I2k|waTfu^fV zR{hmIjX>yU&dY75Y^kY7V?Rl5Uu&6`Vp`S7mgCse+CYq^XEhH$FIh67`Y{M^$fAP^ z-A4K@*)GCF zww?vWndvWy*e*Kx_dxphm26`^fgbUK5AqjNEhMWMj(xxj3U+q_J#+o8oCG(VuR3uP ze-jipV7|*XOvL@1KJmyXU2_7*Q^i2yNjVk}oxc7+5XZ#lUZz)e2j|(G;f+Xsn2&$n;QHjAXg2!(__z1vm{R4TA4A#@DTVt?mU|G#1)^99W%+Ig7!rZ=^0eAmu8ewN?SKmNXPLApZh7+ zRhS;<-ubs4_xx-}lh9hFKJjmYHryl$z?I4Hyrc1Gn^flej8m?p{SwrieYT9@0E6I~ zARWa$(3!r*?ph;fw%f8AFb{x#mz8t$`zHv;^PWz;`c#u6f>@-MtMF2+J6+b(*-aH} zN5)!0dF_UbZ?k%8;ls6Et}N(pjhnJ+um7c%V&X{>|GfW?QpYhr-VDvf6!_iobW z?_CM#_@ms?YHC=^n7Slf%Hjn+^fMW8hKLj(@a6ot{j4po%JUHhuZpZMFgMu()n`Vg z67qVPK2a6f_Mx2On3fw&OtM>y$v>?Hf|sJk8hzX2YV!CF=;~Y+^khm=JRlpM4b}`h z0$8tT5@9Z7O}X8O8-}4-=IMY5gy(#jlW+oUh376S5626-WN=s8W5yu0*F~z>97nb} z8ML|wu!tp1IJ5X@kM1z>!K;_AG_F;Y@KEd_pz2_WLX1aQcHQom=QBn=ztdhGbQk!i z&>U)d%vB`QC*-K=yfprBJRm+#0(!h2mHLthOxrbhOrl|nU3$0~zQ`sLjG+dYl2@tp z?@d~ns`<|?Y={A1X({;lM2Vyf)3rD}8X^T$`5B2D8RKJ#&)ZT2lH~T6r%>qNB438i z(wFZ%y-<*dJZjr3tModoY5Z7dY962D^fWN1n!G*Nqcz*J>KzA72I6f@Q!W>8-u3yM z{ha0|NDQa~rg9n>>>@!*eLBJ4e)xH5z!7qdE3OZOE-Ay6H1}MX=aldo>Q2hGS#V~r zwFy?YWSJ2H{se@e`d=~Qqeg%ti9fxsN#**bYCt+eUYihEOd;2Z@N)UKNd07?h!(IW zkIi|y1;C;frH5qz_QNyqGLt!1i(H{VH5%_ny36z4Tt}3_1oD-dt9eeLXb=+iVVR^b zI>2fbXGW<;D3OO7UazElMwcqDy8ObFV_M~CpT0*&MNX}_tuyG4&N4rnm+(QAX42Q1 zckIDeXr&3F;v;AW1f~>qL0&SEU#IM{dT3SD12xi*kjk&CTa_UuTM2HK z9Z~dQLY+9~R-(LmVgl7YzbV8*xYm8$lz$2)+gpKQEKGlt?*Q&w%#M{CeBQbVQZveCtS9^dZ5R{&?3 zLA10;T28C9T+z34bOcLKDc{Z3>u;oEzX#c=`@`kPWF%tN5nsN{%V|-f=!olU5mm^w zf{~Hj=#gTiiEM3)oF7^$IYt4knsLGIuvkR2nn;1}qyg~L21GJ;uy^*tAa+Kchk~6=P4pBl=VQim|Up{Ny10(&8nE>I=5p@+3dgx z=JVKtDsCCoa>HYGxt~CYIk_?bPv^h{z!l4PPMnMTlRPc2afX3{VlDoLL%r|HC7SB%V! zm4>J(8BvkY%my#MGaGkhJT*9j0!HtqIQ`FVr*q~k?S1O_`^+&`z^U!J~6-a>b8@-8c`GI3tqJ6qep(L5k|6Ct#wLa zY{siyl08bLUE+JIR(V>8Nk0V;y~b0WX1EoUG|?~`UNqJ4c7~lg>gL%TE7)Fc2QfLS z$-W}3U|tg`Kr@B+OAjl5^1Y+v0Bz&QY&28!v(STA^XugClc~-Wv;08Pj2~0sHz)z#OpIBHI1AvD0c6@VmA+#)9FD+J!PydJRDb^6;YXVcGuaex?aA&) z>)xa7-D&04w<5)G6+;@dndcCit5J2qY;ci3@V!0{d!$5X4s>LK{-~K1_?y6DJbf&0 zv_a|-r}gcqfdX3p0oB4?Ty8=6A*_Xdcl_-p@B<6};Cu(T3949jR-@xF!pTx!TqC~J z`Ufg~WrO~Bk%(1w!RvTd=<;rg<$~6qfBH<*`tR%7@BGqFL)U>+emFNwjo5Wqgo4Zy zoBbp`vt(y=CJIh-rt25f!Bi&(h*|H0up{}BFWuk;{4#>}WR-zDuxf%|Cd(ohhN&8X zoT82FUWT{5uWQLiOj8FXv6Jem>!}#Ki5;pK{+SK0fS3{UFs;irT5=W)NGLubtt|uX zPYy0LF5CZU)c@PJ6aMEHng5Re+8#OEzSho%tx4?uQ7=91PkgE1bViHXZ5<< zWfw*Sz6aKz{7W2>>YvPz>%|gE?*1rnG&};^w`{!Ty=Og=9WPVZx4>$?cf!+uNickW zQ|bUTb_w}x2S?mBBp$~Mr*}m+IVF<}23qy7nhelI)4$DfOC;_`NbG6oBlK?%F0
A+LWalG!U@v46(A>T(3~wC)*wRH}pq^c_)O1 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

4D8-<&4uS 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 + while (b->occupied >= BUFFER_SIZE) + sgx_thread_cond_wait(&b->less, &b->mutex); + b->buf[b->nextin] = b->nextin; + b->nextin++; + b->nextin %= BUFFER_SIZE; + b->occupied++; + sgx_thread_cond_signal(&b->more); + sgx_thread_mutex_unlock(&b->mutex); + } +} + +void ecall_consumer(void) +{ + for (int i = 0; i < LOOPS_PER_THREAD; i++) { + cond_buffer_t *b = &buffer; + sgx_thread_mutex_lock(&b->mutex); + while(b->occupied <= 0) + sgx_thread_cond_wait(&b->more, &b->mutex); + b->buf[b->nextout++] = 0; + b->nextout %= BUFFER_SIZE; + b->occupied--; + sgx_thread_cond_signal(&b->less); + sgx_thread_mutex_unlock(&b->mutex); + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Thread.edl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Thread.edl new file mode 100755 index 000000000..40d2b337c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Thread.edl @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/* Thread.edl - EDL sample for trusted thread library. */ + +enclave { + + from "sgx_tstdc.edl" import sgx_thread_wait_untrusted_event_ocall, sgx_thread_set_untrusted_event_ocall, sgx_thread_setwait_untrusted_events_ocall, sgx_thread_set_multiple_untrusted_events_ocall; + + trusted { + /* + * Use SGX mutex. + */ + public size_t ecall_increase_counter(); + + /* + * Use SGX condition variables. + */ + public void ecall_producer(); + public void ecall_consumer(); + + }; +}; diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Thread.o b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/TrustedLibrary/Thread.o new file mode 100644 index 0000000000000000000000000000000000000000..f125afb8b246ef53bf82d214c85e207f8af13ead GIT binary patch literal 8472 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 literal 0 HcmV?d00001 diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.01.xml b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.01.xml new file mode 100755 index 000000000..e57be8ae8 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.01.xml @@ -0,0 +1,28 @@ + + 0 + 0 + + + + + 10 + 10 + 10 + + 1 + + + 0x40000 + + + + 0x100000 + 0x100000 + 0x100000 + + + 0 + 1 + 0xFFFFFFFE + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.02.xml b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.02.xml new file mode 100755 index 000000000..cc980d5d0 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.02.xml @@ -0,0 +1,25 @@ + + 0 + 0 + 0x40000 + + + 0x100000 + 0x40000 + 0x1000 + + 10 + 10 + 10 + 1 + + 0 + 1 + 0xFFFFFFFE + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.03.xml b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.03.xml new file mode 100755 index 000000000..09ca6f231 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.03.xml @@ -0,0 +1,27 @@ + + 0 + 0 + + + 10 + 3 + 1 + + + + 0x40000 + 0x40000 + + + + 0x100000 + + + 0 + 1 + 0xFFFFFFFE + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.04.xml b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.04.xml new file mode 100755 index 000000000..cd5b3fe2d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.04.xml @@ -0,0 +1,23 @@ + + 0 + 0 + + 10 + 3 + 1 + + + + 0x40000 + 0x2000 + + 0x100000 + + + 0 + 1 + 0xFFFFFFFE + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.05.xml b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.05.xml new file mode 100755 index 000000000..8ffe35ea2 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/config.05.xml @@ -0,0 +1,20 @@ + + 0 + 0 + 1 + 5 + 1 + 13 + 0x4000 + 0x2000 + 0x5000 + + 0x50000 + + 0 + + 1 + 0xFFFFFFFF + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/enclave_keys.txt b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/enclave_keys.txt new file mode 100644 index 000000000..6169f716a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Enclave/enclave_keys.txt @@ -0,0 +1,8 @@ +0400020000000000050d0c0cffff000000000000000000000b000000000000ff0000000000000000c7c1a1bf9aa490a58c0d577ec0b8455571c3d336ecb8118b80a5d4fa9638a583000000f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000040000000000000000000000000000008e5f81a86bbf4af48c05f3a823098174e84074cb +0400020000000000050d0c0cffff000000000000000000000b000000000000ff00000000000000007a03452159de8c82b7e164b41f0d269bc47f3234839855c88f611e11d683c805000000f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080010000000000000000000000000000800100000000000000000000000000008cd27b61352b06d6adb325621901bbaf0ec29c5e63556e981de1a69f41cc2a5cd873d7ca9b5980bed3779e46e70cb54e89a0f1ba9d23c6c1169e66a41e096bd0f3d6eca5eedaedf798146f235c2c83ba8323705936e2d53a7604ed1b889ebb57444cb9021455c830a44df91ac673d8e4b9d8111858e26cb9a6c45e0254ecbc5ab18de85ee433eedb3a531abb692757cd3b81f50570bcd3fc0e2148b9a99b1555b29a58c94bb56238882ab88941af91423d6382be31f29bb77129ec7f3b49e7451d2fe8df67927bd69a5062704c26c220767d779d3b8fc75734db47d8408656bc15f9acf8a3b5ccdf5e55d23f85e33599b9734d5ea2e57ec8a216d6a1baad5dc6f2b29148f2cbc4e2d38b8684dce8db41c2f618c77e88d9e62b569d2b1447ab06824399efb818c662eab5bbfb9c734440182acd29156cd284eb0b50bc7971d56accaf1bdcb5c239a79d2f0403270f213558a370d636129ab6f0b6cfcbb3d5d940c6051b2e3b791efaa4874b09f368095b65f76a4165aedfcbe6b556d9d78801c842e4226c6963e1f7cf3b73a693d3983b +0400020000000000050d0c0cffff000000000000000000000b000000000000ff000000000000000079daaba6c33796c6d28e3d8b745387a8c741e76b4253da3381edf03a2f780220000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008001000000000000000000000000000080010000000000000000000000000000530d24671f32a905d519ddbb01f9a6230cbe43d3560abad5e6f8ecd27897e29dd96f5134aae50be6a9c0497eb667a1948911834bacb98f8a18a8f44f0aa8bc39e75a7f2161f90d47f4b131999b703d058235a5858548b30f2d09bddf966e92d641dd06184cade0d49e9c2f6f598fd5260f408c5a493dc3f48f93e62d0eb2074f8d8429e7f8ccb6f660c80cdca7d5cc60a87bf86fd34d478bc0d726a0b23ba87ae1a8ab682c79bc4eb7bfc8d8a1c171bf1f7ca57dd5a157fc6576e99c7388bbf406ac0a29877b5c40f800f9578edd17b426158b4b579ac0226e6eba9a7e543d92cf6e5864eeac8e0a0006d7cd6f5d0f729004061caa43cfa69ce8bcb56c1bb1ca2e1b2544d3bad10de047722520798514d4aeafdfcc2d18797c05b3a21c221ff44d356b6fd10d406ff7fc6789144e779a9a84ec89556766df713b963a39ebb6e2bee8cc29b669975f13009b512d45c2561c11b49d9d60203b280b8f7c33239539b7f43ef140c7546be8cc8998afa6391e07c3fe905f4336277aa233c4fd55497b02169f963d447ee28f0cc4dabb2c4f67 +0400020000000000050d0c0cffff000000000000000000000b000000000000ff000000000000000039a4239f403092fc743436f15900169f3535a416fdd861a93464d61de41c7469000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008001000000000000000000000000000080010000000000000000000000000000f500ad7a6e1e5ef2aebfc6fcdb64f0d84101be6d1d5c37526474b868df0edb62deec11ef9f4c6cf8f6e25a6ac94a12902610da08e804e4d045e21cc096e0b2a41602ef7f829ad6c1ebcce5a0bd7649014120bd0a10f8ae33c0182f8f80cb5df96187580526a6371075352176406def42b1893e45f0b2b4ce55101a17216b65821092c90aff274252bc9e32f223a73dfb3b76ca4350a003d291b9e0ed9a465e9a7055fe0f82c4485a7eaf4df1d38de451850bcc8e5fda54e15f2a2b5dc7c5051aba47abf5ed0d5eca8a2b592fad8ebe1756c0248f469729a4ed5a6690f102f6ff8b5c57f9696e178d9ae84f697a02dccb9c89bc8f74beda28e486cdc18a6d77950e6ad53ee7c7e19f4b30c095d6d188f1d9be312b08b2b5d81998e959dcb47ca9c6a3230635ed80925b301f3c65adaf4f46c803f4a6b90beca59329eb9b374808795b6d14890ea64c6afb7b6731c4eb82b87e1bba74a079f6cd63eedf11df876265610a0e78fe96d5a475165e9bbe3a386d05b2be583dccce63610bbff3c107586168d86f35e2432e0fdf89e19992af36 +0400020000000000050d0c0cffff000000000000000000000b000000000000ff00000000000000006270fb8ecc9b42f9b37f25e16168087448a72f8bc9b9a8d59a3eca45df2610dd000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008001000000000000000000000000000080010000000000000000000000000000e21d9b7cdf4028d259adb17cd3a436bd1873b2237414d8f76e8d70e3c2bcfdb06a198cf446330de746a01e38ee0893b60ac828b9cd40bbf104c537cb75b31d8aa868627c783ac2649d73bfe4612dd61df249c76cfab94cf98ff73f810e3b1f2d8f53fe2627b0447bc8b5719a1af343a9db333a77b5a21832510b2beef515286db75670989bb1dfa1c4164dd00e849c87e94041eafe27ed43d074c16972f3b63b6b9fd98716f051e04f6ba0e43541560a41fb9c606d76fccf03af3f010c1e20ff1db5c65e58bbef68e0cffcd26fb072d0f86fd247310ed5b2a42d1f24548facbefadee1599aa5846e558b41e0bc3ab6ad3040f71ee1c8096019b4b38ba41c41caef7480673cc1df966ecfb41c9e6382a744884483df1be17c2e0ed4a043557fb0643dc34fb195c71e55c00d2f944470ecd88c6a9d09e8909ebd8ae89bf5d55c4620fa8c06204c5d9749e25141d720276705e6b2bbb9b0d1d9c8ac51cbb82b51d9d9255ea9eec229246673b7d321aed5d2dd098333eaa950a35225ae15e5504f807bbb7723ec129b40364962348a95ac0d +0400020000000000050d0c0cffff000000000000000000000b000000000000ff0000000000000000496795a549034ac6e0db13a03e05fd4563bfba56f5c88393bcec1a533fcf4087000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008001000000000000000000000000000080010000000000000000000000000000101dd6d565c0b19ea6da74e7f0500c8fe46b35f5ba81c5b5952575541620862160d063e34d28e3c1d910f777eb287e338b79460a08ca114f7c91f767d4f013377b10bec8fbd996be4130efad92f8747587bf6bf5511b92388e3a0ab56d1ebd649ead8b3322a621ffff3aaa395899560a7814e9a20fa634d6332a5ec4e0617f366a4940a08a4e2d7aad380fc8399799bdac0f8bc24abe5b3f0d466e464e81c681630bf2b53434c6460302352bf306ba4ace84d5b8fb0c4c31fe81c7593b80b46ee8ef4d5e388039c4948311d7302286e0c5fcd00a7120d5cd5ad9cbfe2961f4a2251daea5b8252904bebba8a8d322e1965dde59d385c9992b90e47d0f9c2cd5907f557ea03e3a2800fe1c5f25e5287add011b332e36c0621aa8dfa9d15d312dd738ed2e2810ed0f9fb4afbbbcb52ca9e509e89e78e21c540fb2377a61ea992279daf0cfc670de9aa86db5a0ba14f105736a36b7bc233663f075922f36c998e34054a520b625782b069527298ca75307e54946a7ff0f3d1ad7cad565287e271913296dc86766c231b4073ba46ede6e4248 +0400020000000000050d0c0cffff000000000000000000000b000000000000ff00000000000000005e3be84c8c761a6ffa02cc623c3baca539f96ee11dfeced5d8a89e0ad4353cd8000000f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008001000000000000000000000000000080010000000000000000000000000000c658ab7146bdf4f0efd695378561fc0ac6cdea7b74fce579b509091b93b7263768e110d49b9c34506e0672688ece953f981cf0ca38e2ec32081ec09e8942ab3e3e28ad94ea5d0293e7a989c18116439f54523e700bfae24618ce4f361577dfaf75a160ecedbd4ede08d37e258cf8ac796c74ef66af7f31d11c738cf7bf50e0ca6af4724cc9b82b829c574295d5145b34f252c43122d712205f0ee334d10903d58aa4d2d1cdd8a455ba6207797511fa04f034496f1b7ec5554a3ef7f673d052509d4741dc1b3bca6df6731b7315082f5a9d5a7cb46aeb2edfa621e46a1885b7fd20776265da3034710d3460020af5e0c1c3eb5725ad8cd792c9b5b372d230b0a7fe26831effa65c28afd7f700c67305258192b166f41e82d3481a7adfd4e2bd2b342c2caf5360d43f17c7bef08490eeb9dd82d9e4708e8b586c77457325159368c7176af972fb7d62f29adeadc2532bb9796dcf7751359700861ac02f7c3ebf09e21429504bfe1ed6cbf7a7ed6be3893d869afb54c5d77c97d42675a6c877cf8a5739bc134bc3bd99f7a8f5e7231eff11 +0400020000000000050d0c0cffff000000000000000000000b000000000000ff0000000000000000eed4b3d1379cfd62c9fbd3db612eccceb00116d4663a3b0724925eb76226a01c000000f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800100000000000000000000000000008001000000000000000000000000000051dc7e06f716bfb36a15caed0e3c8bc02356f6dd55386c2360bd6aec9c5e4f1887748722bb99734f71180b4473b111dbcdc0c5d58757ac7c2d4809dcaa0977883d8a2c0138a8d51f23b92a9d247e7b3cffe27be93680bb2a1f39183f0e4f6b50a3a05b00571013d204894a91bbf3dbf92bd3860102e2f5038a92d16082f473d380270effdabeb9762d1ddee6ed38573988d4f152e8139cffb65201508f30d6dca6333de38a57308e10458f3866b08b4731bab86a8a18de3d85785f28e5e9dde4f15d032754afa7756540c2b2a4714c8355806241bb215ae81d1fd6838152481fd10cad6cd490974550c1f77fc4e00d8da9825a1f03e48bb6da9afde1f5fa2950cabfc607d0ef2b74eb9430e756863e494671e1eb80d4b37d2e35aefd4d0bc0537e93b75ec373affd2f7f5d027ac31348825db0318c3fc1f288c6018228ab0987f687dbb816bd94ac84762ad0e539296d262f1f30f8f7ca150e84969651a609e49d156c7b54ce8483364468d36d932135e7905f9749c50f8f7ec106b1bfdb2574fa63182c634f50597e41a530934019e7 diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Include/user_types.h b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Include/user_types.h new file mode 100755 index 000000000..162987dae --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Include/user_types.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2011-2021 Intel Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + +/* User defined types */ + + +#define LOOPS_PER_THREAD 500 + +typedef void *buffer_t; +typedef int array_t[10]; + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Makefile b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Makefile new file mode 100755 index 000000000..7a952d85e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/Makefile @@ -0,0 +1,271 @@ +# +# Copyright (C) 2011-2021 Intel Corporation. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# + +######## SGX SDK Settings ######## + +SGX_SDK ?= /opt/intel/sgxsdk +SGX_MODE ?= HW +SGX_ARCH ?= x64 +SGX_DEBUG ?= 1 + +include $(SGX_SDK)/buildenv.mk + +ifeq ($(shell getconf LONG_BIT), 32) + SGX_ARCH := x86 +else ifeq ($(findstring -m32, $(CXXFLAGS)), -m32) + SGX_ARCH := x86 +endif + +ifeq ($(SGX_ARCH), x86) + SGX_COMMON_FLAGS := -m32 + SGX_LIBRARY_PATH := $(SGX_SDK)/lib + SGX_ENCLAVE_SIGNER := $(SGX_SDK)/bin/x86/sgx_sign + SGX_EDGER8R := $(SGX_SDK)/bin/x86/sgx_edger8r +else + SGX_COMMON_FLAGS := -m64 + SGX_LIBRARY_PATH := $(SGX_SDK)/lib64 + SGX_ENCLAVE_SIGNER := $(SGX_SDK)/bin/x64/sgx_sign + SGX_EDGER8R := $(SGX_SDK)/bin/x64/sgx_edger8r +endif + +ifeq ($(SGX_DEBUG), 1) +ifeq ($(SGX_PRERELEASE), 1) +$(error Cannot set SGX_DEBUG and SGX_PRERELEASE at the same time!!) +endif +endif + +ifeq ($(SGX_DEBUG), 1) + SGX_COMMON_FLAGS += -O0 -g +else + SGX_COMMON_FLAGS += -O2 +endif + +SGX_COMMON_FLAGS += -Wall -Wextra -Winit-self -Wpointer-arith -Wreturn-type \ + -Waddress -Wsequence-point -Wformat-security \ + -Wmissing-include-dirs -Wfloat-equal -Wundef -Wshadow \ + -Wcast-align -Wcast-qual -Wconversion -Wredundant-decls +SGX_COMMON_CFLAGS := $(SGX_COMMON_FLAGS) -Wjump-misses-init -Wstrict-prototypes -Wunsuffixed-float-constants +SGX_COMMON_CXXFLAGS := $(SGX_COMMON_FLAGS) -Wnon-virtual-dtor -std=c++11 + +######## App Settings ######## + +ifneq ($(SGX_MODE), HW) + Urts_Library_Name := sgx_urts_sim +else + Urts_Library_Name := sgx_urts +endif + +App_Cpp_Files := App/App.cpp $(wildcard App/Edger8rSyntax/*.cpp) $(wildcard App/TrustedLibrary/*.cpp) +App_Include_Paths := -IInclude -IApp -I$(SGX_SDK)/include + +App_C_Flags := -fPIC -Wno-attributes $(App_Include_Paths) + +# Three configuration modes - Debug, prerelease, release +# Debug - Macro DEBUG enabled. +# Prerelease - Macro NDEBUG and EDEBUG enabled. +# Release - Macro NDEBUG enabled. +ifeq ($(SGX_DEBUG), 1) + App_C_Flags += -DDEBUG -UNDEBUG -UEDEBUG +else ifeq ($(SGX_PRERELEASE), 1) + App_C_Flags += -DNDEBUG -DEDEBUG -UDEBUG +else + App_C_Flags += -DNDEBUG -UEDEBUG -UDEBUG +endif + +App_Cpp_Flags := $(App_C_Flags) +App_Link_Flags := -L$(SGX_LIBRARY_PATH) -l$(Urts_Library_Name) -lpthread + +App_Cpp_Objects := $(App_Cpp_Files:.cpp=.o) + +App_Name := app + +######## Enclave Settings ######## + +ifneq ($(SGX_MODE), HW) + Trts_Library_Name := sgx_trts_sim + Service_Library_Name := sgx_tservice_sim +else + Trts_Library_Name := sgx_trts + Service_Library_Name := sgx_tservice +endif +Crypto_Library_Name := sgx_tcrypto + +Enclave_Cpp_Files := Enclave/Enclave.cpp $(wildcard Enclave/Edger8rSyntax/*.cpp) $(wildcard Enclave/TrustedLibrary/*.cpp) +Enclave_Include_Paths := -IInclude -IEnclave -I$(SGX_SDK)/include -I$(SGX_SDK)/include/tlibc -I$(SGX_SDK)/include/libcxx + +Enclave_C_Flags := $(Enclave_Include_Paths) -nostdinc -fvisibility=hidden -fpie -ffunction-sections -fdata-sections $(MITIGATION_CFLAGS) +CC_BELOW_4_9 := $(shell expr "`$(CC) -dumpversion`" \< "4.9") +ifeq ($(CC_BELOW_4_9), 1) + Enclave_C_Flags += -fstack-protector +else + Enclave_C_Flags += -fstack-protector-strong +endif + +Enclave_Cpp_Flags := $(Enclave_C_Flags) -nostdinc++ + +# Enable the security flags +Enclave_Security_Link_Flags := -Wl,-z,relro,-z,now,-z,noexecstack + +# To generate a proper enclave, it is recommended to follow below guideline to link the trusted libraries: +# 1. Link sgx_trts with the `--whole-archive' and `--no-whole-archive' options, +# so that the whole content of trts is included in the enclave. +# 2. For other libraries, you just need to pull the required symbols. +# Use `--start-group' and `--end-group' to link these libraries. +# Do NOT move the libraries linked with `--start-group' and `--end-group' within `--whole-archive' and `--no-whole-archive' options. +# Otherwise, you may get some undesirable errors. +Enclave_Link_Flags := $(MITIGATION_LDFLAGS) $(Enclave_Security_Link_Flags) \ + -Wl,--no-undefined -nostdlib -nodefaultlibs -nostartfiles -L$(SGX_TRUSTED_LIBRARY_PATH) \ + -Wl,--whole-archive -l$(Trts_Library_Name) -Wl,--no-whole-archive \ + -Wl,--start-group -lsgx_tstdc -lsgx_tcxx -l$(Crypto_Library_Name) -l$(Service_Library_Name) -Wl,--end-group \ + -Wl,-Bstatic -Wl,-Bsymbolic -Wl,--no-undefined \ + -Wl,-pie,-eenclave_entry -Wl,--export-dynamic \ + -Wl,--defsym,__ImageBase=0 -Wl,--gc-sections \ + -Wl,--version-script=Enclave/Enclave.lds + +Enclave_Cpp_Objects := $(sort $(Enclave_Cpp_Files:.cpp=.o)) + +Enclave_Name := enclave.so +Signed_Enclave_Name := enclave.signed.so +Enclave_Config_File := Enclave/Enclave.config.xml +Enclave_Test_Key := Enclave/Enclave_private_test.pem + +ifeq ($(SGX_MODE), HW) +ifeq ($(SGX_DEBUG), 1) + Build_Mode = HW_DEBUG +else ifeq ($(SGX_PRERELEASE), 1) + Build_Mode = HW_PRERELEASE +else + Build_Mode = HW_RELEASE +endif +else +ifeq ($(SGX_DEBUG), 1) + Build_Mode = SIM_DEBUG +else ifeq ($(SGX_PRERELEASE), 1) + Build_Mode = SIM_PRERELEASE +else + Build_Mode = SIM_RELEASE +endif +endif + + +.PHONY: all target run +all: .config_$(Build_Mode)_$(SGX_ARCH) + @$(MAKE) target + +ifeq ($(Build_Mode), HW_RELEASE) +target: $(App_Name) $(Enclave_Name) + @echo "The project has been built in release hardware mode." + @echo "Please sign the $(Enclave_Name) first with your signing key before you run the $(App_Name) to launch and access the enclave." + @echo "To sign the enclave use the command:" + @echo " $(SGX_ENCLAVE_SIGNER) sign -key -enclave $(Enclave_Name) -out <$(Signed_Enclave_Name)> -config $(Enclave_Config_File)" + @echo "You can also sign the enclave using an external signing tool." + @echo "To build the project in simulation mode set SGX_MODE=SIM. To build the project in prerelease mode set SGX_PRERELEASE=1 and SGX_MODE=HW." + + +else +target: $(App_Name) $(Signed_Enclave_Name) +ifeq ($(Build_Mode), HW_DEBUG) + @echo "The project has been built in debug hardware mode." +else ifeq ($(Build_Mode), SIM_DEBUG) + @echo "The project has been built in debug simulation mode." +else ifeq ($(Build_Mode), HW_PRERELEASE) + @echo "The project has been built in pre-release hardware mode." +else ifeq ($(Build_Mode), SIM_PRERELEASE) + @echo "The project has been built in pre-release simulation mode." +else + @echo "The project has been built in release simulation mode." +endif + +endif + +run: all +ifneq ($(Build_Mode), HW_RELEASE) + @$(CURDIR)/$(App_Name) + @echo "RUN => $(App_Name) [$(SGX_MODE)|$(SGX_ARCH), OK]" +endif + +.config_$(Build_Mode)_$(SGX_ARCH): + @rm -f .config_* $(App_Name) $(Enclave_Name) $(Signed_Enclave_Name) $(App_Cpp_Objects) App/Enclave_u.* $(Enclave_Cpp_Objects) Enclave/Enclave_t.* + @touch .config_$(Build_Mode)_$(SGX_ARCH) + +######## App Objects ######## + +App/Enclave_u.h: $(SGX_EDGER8R) Enclave/Enclave.edl + @cd App && $(SGX_EDGER8R) --untrusted ../Enclave/Enclave.edl --search-path ../Enclave --search-path $(SGX_SDK)/include + @echo "GEN => $@" + +App/Enclave_u.c: App/Enclave_u.h + +App/Enclave_u.o: App/Enclave_u.c + @$(CC) $(SGX_COMMON_CFLAGS) $(App_C_Flags) -c $< -o $@ + @echo "CC <= $<" + +App/%.o: App/%.cpp App/Enclave_u.h + @$(CXX) $(SGX_COMMON_CXXFLAGS) $(App_Cpp_Flags) -c $< -o $@ + @echo "CXX <= $<" + +$(App_Name): App/Enclave_u.o $(App_Cpp_Objects) + @$(CXX) $^ -o $@ $(App_Link_Flags) + @echo "LINK => $@" + +######## Enclave Objects ######## + +Enclave/Enclave_t.h: $(SGX_EDGER8R) Enclave/Enclave.edl + @cd Enclave && $(SGX_EDGER8R) --trusted ../Enclave/Enclave.edl --search-path ../Enclave --search-path $(SGX_SDK)/include + @echo "GEN => $@" + +Enclave/Enclave_t.c: Enclave/Enclave_t.h + +Enclave/Enclave_t.o: Enclave/Enclave_t.c + @$(CC) $(SGX_COMMON_CFLAGS) $(Enclave_C_Flags) -c $< -o $@ + @echo "CC <= $<" + +Enclave/%.o: Enclave/%.cpp Enclave/Enclave_t.h + @$(CXX) $(SGX_COMMON_CXXFLAGS) $(Enclave_Cpp_Flags) -c $< -o $@ + @echo "CXX <= $<" + +$(Enclave_Name): Enclave/Enclave_t.o $(Enclave_Cpp_Objects) + @$(CXX) $^ -o $@ $(Enclave_Link_Flags) + @echo "LINK => $@" + +$(Signed_Enclave_Name): $(Enclave_Name) +ifeq ($(wildcard $(Enclave_Test_Key)),) + @echo "There is no enclave test key ." + @echo "The project will generate a key for test." + @openssl genrsa -out $(Enclave_Test_Key) -3 3072 +endif + @$(SGX_ENCLAVE_SIGNER) sign -key $(Enclave_Test_Key) -enclave $(Enclave_Name) -out $@ -config $(Enclave_Config_File) + @echo "SIGN => $@" + +.PHONY: clean + +clean: + @rm -f .config_* $(App_Name) $(Enclave_Name) $(Signed_Enclave_Name) $(App_Cpp_Objects) App/Enclave_u.* $(Enclave_Cpp_Objects) Enclave/Enclave_t.* $(Enclave_Test_Key) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/README.txt b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/README.txt new file mode 100755 index 000000000..07c1b6df7 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/README.txt @@ -0,0 +1,103 @@ +------------------------ +Purpose of SampleEnclave +------------------------ +The project demonstrates several fundamental usages of Intel(R) Software Guard +Extensions (Intel(R) SGX) SDK: +- Initializing and destroying an enclave +- Creating ECALLs or OCALLs +- Calling trusted libraries inside the enclave + +------------------------------------ +How to Build/Execute the Sample Code +------------------------------------ +1. Install Intel(R) SGX SDK for Linux* OS +2. Enclave test key(two options): + a. Install openssl first, then the project will generate a test key automatically when you build the project. + b. Rename your test key(3072-bit RSA private key) to and put it under the folder. +3. Make sure your environment is set: + $ source ${sgx-sdk-install-path}/environment +4. Build the project with the prepared Makefile: + a. Hardware Mode, Debug build: + 1) Enclave with no mitigation: + $ make + 2) Enclave with mitigations for indirects and returns only: + $ make MITIGATION-CVE-2020-0551=CF + 3) Enclave with full mitigation: + $ make MITIGATION-CVE-2020-0551=LOAD + b. Hardware Mode, Pre-release build: + 1) Enclave with no mitigation: + $ make SGX_PRERELEASE=1 SGX_DEBUG=0 + 2) Enclave with mitigations for indirects and returns only: + $ make SGX_PRERELEASE=1 SGX_DEBUG=0 MITIGATION-CVE-2020-0551=CF + 3) Enclave with full mitigation: + $ make SGX_PRERELEASE=1 SGX_DEBUG=0 MITIGATION-CVE-2020-0551=LOAD + c. Hardware Mode, Release build: + 1) Enclave with no mitigation: + $ make SGX_DEBUG=0 + 2) Enclave with mitigations for indirects and returns only: + $ make SGX_DEBUG=0 MITIGATION-CVE-2020-0551=CF + 3) Enclave with full mitigation: + $ make SGX_DEBUG=0 MITIGATION-CVE-2020-0551=LOAD + d. Simulation Mode, Debug build: + $ make SGX_MODE=SIM + e. Simulation Mode, Pre-release build: + $ make SGX_MODE=SIM SGX_PRERELEASE=1 SGX_DEBUG=0 + f. Simulation Mode, Release build: + $ make SGX_MODE=SIM SGX_DEBUG=0 +5. Execute the binary directly: + $ ./app +6. Remember to "make clean" before switching build mode + +------------------------------------------ +Explanation about Configuration Parameters +------------------------------------------ +TCSMaxNum, TCSNum, TCSMinPool + + These three parameters will determine whether a thread will be created + dynamically when there is no available thread to do the work. + + +StackMaxSize, StackMinSize + + For a dynamically created thread, StackMinSize is the amount of stack available + once the thread is created and StackMaxSize is the total amount of stack that + thread can use. The gap between StackMinSize and StackMaxSize is the stack + dynamically expanded as necessary at runtime. + + For a static thread, only StackMaxSize is relevant which specifies the total + amount of stack available to the thread. + + +HeapMaxSize, HeapInitSize, HeapMinSize + + HeapMinSize is the amount of heap available once the enclave is initialized. + + HeapMaxSize is the total amount of heap an enclave can use. The gap between + HeapMinSize and HeapMaxSize is the heap dynamically expanded as necessary + at runtime. + + HeapInitSize is here for compatibility. + +------------------------------------------------- +Sample configuration files for the Sample Enclave +------------------------------------------------- +With below configurations, if the signed enclave is launched on a SGX2 platform +with SGX2 supported kernel, it will be loaded with EDMM enabled. Otherwise, it +will behave in way of SGX1. + + config.01.xml: There is no dynamic thread, no dynamic heap expansion. + config.02.xml: There is no dynamic thread. But dynamic heap expansion can happen. + config.03.xml: There are dynamic threads. For a dynamic thread, there's no stack expansion. + config.04.xml: There are dynamic threads. For a dynamic thread, stack will expanded as necessary. + +Below configuration is only workable on a SGX2 platform with SGX2 supported kernel: + + config.05.xml: There is a user region where users could operate on. + +------------------------------------------------- +Launch token initialization +------------------------------------------------- +If using libsgx-enclave-common or sgxpsw under version 2.4, an initialized variable launch_token needs to be passed as the 3rd parameter of API sgx_create_enclave. For example, + +sgx_launch_token_t launch_token = {0}; +sgx_create_enclave(ENCLAVE_FILENAME, SGX_DEBUG_FLAG, launch_token, NULL, &global_eid, NULL); diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/app b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/app new file mode 100755 index 0000000000000000000000000000000000000000..9407359a640b6f68fbb6f3b7c09fe01733c45dd0 GIT binary patch literal 7384336 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

jKUNVr<6H1^O;K+H- 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

as@ciJpbsX(8$=5%pOX!P#}|c`17Pg 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%0AZ@c@gc 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%0Aq5S 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

  • 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

    diO{rc8*x{89qk)#-~9a@_d* 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�l+iZGO*^?Gh;5{0 z*q4B927}-^;Pp%a%gB^ zCK%ei18n;O@OG!)xj+GrV{8}D+Zwgs;}K}ZLo~o}I5{)BeHuQZF7eC3yDJ)cV?(5v zZZJwjX7`J1_O{2UUyBSOm}*fPoTT|)S6^GDBtxs!*JfN?11jCn#iCV0S4R8fWP~9x z;sIV}j&rR!){4y+CJh46J(4#yl0XAzDzF2-1MTqYyb-wB$I_ah^R7@^^VpnO`R(C^Mjj)PF%r~l zy}8)D%`7pyK0`%0EMux>-#TQ!6^8@rVj@`d#2u)%LMqnP8s{tVjMotp#{NKEFs2uC z!V0Q`JyzrG(XJi_I&MRyB5NbZTgNQ+)4}`#75@Q745rf-93c9W;X(r~G^2sN9n!GZ zP5@zMWH3Fa)Uqbg;SEOyx9b}8 z!*i;C+CZI20Kf&j%zEz!y$|Fxv@j?SV^U-8=Iz(2Z@8Ej)m2K(G|}RCtC$L0za)1V zkM5Y}=Hv}JFJ6AA4P|0;freK$1vVN1m+mpg>->(Lw;gZWLr0RNPG@tI}IUar5hw#>8{X#Xd3C!L^Rxh zE5~9zm?7zdMibGwgJ62)Z^1LkUk$p$4rSwGG!wJ7g5|$Z@sZszsz}n$4pgVUOtqJ_ z0mqoo4Y^7mdjrYCb<@d#;G*w333a!$Sn_BMWVcZo;j(*B3-P=y@M~|@ zl_j3l&Fu7%@}0pqmr~UiB#%v|6VTTXSx%-|chmO!yPOZ^S`gmOKYs7%ae$+J7)7bEu}xwdc(5SI zuDWq)AGklo8SxKP7p_m5c$73DxRD7Un_et2X6$YfG%QXfY_Kn{=lU_z>fb~%#nN7j8WJl7~>DjXkApxZ|pv8hMve^2U=50lA zPWDZXL%HTAS#OUxU8$U}Pj0`}_XZGOOuWQ)#khvewksOKv0rW1x(%VjUP2y!XROn1 zv)oIKoxq+oF{`E)TJT{>f^s8IQ0~3IoO~Gc?<6z%6}qY$IrE4r#4@U~v?_CF?6qby z1WkxNu39Vy!6>duU4Cm+WSU`chKtl?l)GsCQq<+Q5@JMQZIVo-Mi8I=dE_HTarwxF z<&bKoxR~tK7*orDa9A=0z`RLge#isGEYSdOta-F2Z$j>O+v#@1a=-Ccu!w8%V_a#~ z0E#UBwSdTG_5|$`j*cAr)l?t3$`Rx4oxp*Z=RER)udk7gmCGw7q5ghczSCH7ifB<~ zVVVCo`x`|MD_d7&0@#Tbijp9Yoj^qy6%U~_0O~)Q(6CQsh-QHZDG2N>N$wr3B%kR2 z&=T5EODIYg?GeXQocn0?Kyu+GP^Fn}fU$~Il|5-2iuY8FrNj5N066hrFkUv5Yv|z^ zdKJLQh$BMtVQO*!o;Ep(EhOH^oJ4^W6UwLOMWua>!XG@qa3APoqlh;9lq~=#{2XrB znga+nQ`^B8TTeQ(&UpS)r1FsarRXpBAprSs)ERgCoth7he!-!I`jw%Ia&tYQgaGJ( zVj2YwtPec-vOB}lb0$~>k1mp*{-FH~zb`04>xvq*MRG7ciQrU}Z`-^XQG7ycXXGNA z6l6qS?sPQleQKd6mmDIJIT)pTm=g3D74ws(o_q-u(1aE<+uwh@W(4!J5#KjhF6PINxonV$XnxcpRD2a^g)`^pbEfTa=91WD? zki#P)6v4iR;nQ9;LE=&P@H%i-O%%lgTv56j}Ya{Xw>xHZC+LF)4yL90W}n%nkb zOuWGZ+hmIkhq?IoYKW)*b~HRaH1^GDmpL3ciliwHhutpbJA#y=jhU64DYR}1XUduc zeBpCjVNJ1+`L70mPK!Y$x&V*D`p3GFcSMOQg~h27RY9SWvkPN>i}if@t%`LR_8^8& z_;MqS-9KleS7ZAJW9Dl!W~4S0g5PxsF-%1vk4SMJhy;v2wOF%DXP%sK^6I%*oQRmR zguRf9%-0>+!yH~Gt1P1_U|_6|J2hSOXFKlt)@dLZD|t$7x0jvy2jnZPooNr~ioXMg zf?rC_#EY6p74*PY$xtK93<~|slDOvIiF&`E{+22v1b3E1qX|X&-LQJR8;c!LstM(K z(o-UrSf#5GI219zg5-)&<5S)QL%I|}XFCggB?AULl(Eu)@h)b!v+R{*@s2yg$1RC!q?-xHOtcJIX)>7g-+AeKd;vfU+u$vTJ~( z0eE{DmBM0T7updYSV|vux6TLCb2OTqb9PVfgVy$n2?yl#HVZ^0>EOxdTG~^_pB#jX zz>pF+eqH5l2o8f@R-lX+>EcFpp`s6{6p;4mSkHuiFa@$IF^dBv-+J^37GsMSehJ~rK_*7xlV``8gGgbmV4it+0 zQ4AshKq^e|iG=jO`202uWP@>Gl+nHHeZZmX4&DvHT64#%8frg!gCOERE(ezbf@H-S zzSKBEMIleV-$zRkW{dIn@KkLE_AH|xX^({V6U=MDTGq|=1ICsg?07s}vRnAXWKWWI zaeO%*f5Lq;jyQIe}J!v;9)W2G!Fo27zI}0#d)UE6i7KaAz+N_+jGKOT7VT`jDH2+uL#+f`P+1 z%UwofF*#J%^9|DP%AxHxoiQ$QDLo6%K)TL2>LRd^~0TatfB1Kc%)vUGv6*KZ_eGgvI5nW zZGpgoB^0kvdHKe>*=xd*%I22l{*P4stETD*@QTE5?CNX*_u-sOesf2*wNygJ!So5N zN9zj5fM*^pb<3)CR#4>$!|@jRG-#qo5w_E2`i<5z7{nGPB!EH;Tu=%vFFT*Q0}Q}` z{&_YnK8?@o@m?c$!vNx#IWuERK>m*BG?xVD)Q;1+0`76=4b!%nRKh8tx^Gq z!l!cpysIMGf8RuFC6tw)tVi@ssxLJ6wHfsVd8=~il^5YJt}Yd}D^|GF-+=pTlwRNe zJsMn^FImd1-RDH%f4QBEKAgd9YxI8Zt7~*XK}ROfsfZJ@FFc(Ko2F`Bg*aN_STUxF zV3;Q=Nmv*$79&$_#7r&53($2I=gCM2K*Ctgpu%8X^yX*=0)h+?mU8K9lDuW9hndLk~_@Wu#m z)XQt)(2|MLAEL)^j`R@*13v-JWWypPtjnRyWkLSIk%0Wi*u{As0cl(Gp;`|>k^xF_ z3mO?M{Fi@3j--EB1^aw0)%!Kiwy}W>nz2+MDS9j!W(A&cjpy2+Z?Zuz*R&$nFg>%u z#R$y(=f<%Nq=C92* zu2oAbMqI@Z+{FcsBt~qnhzK!R#GDEeqvFwR@dHgc<<;}uP?x|gHF!|Mj5c}@4omBE z1R-n^&q*v76c|FZShCd+B7x zDR;90f5T|I@^J^D*kpkhkz$%K&2?KCumw%4Nm=rd^I=h%+Od$xs@};QE|=n-eervJ#AQ!Oz%?I`2Ac z5cWgafx~eBNfNBgr7d{d*pSKIUpHd;<^^bL;{Qs>e(wjn?v8}We}^6)QEpTuePeRe z83S+5Q9D-H1Lo3z^AyU--DaGaV1zTlp~zSo?jgm+5FxQln$rn_8+{ESh~*L2V@nDw zI{gD7+#hI>6uC!694$Drb0@XX%T`}QBGv0W@8lB?!N^g=@6rXWI{1r%*G5U7qeH;J=dKL)}; zA70o256s5{fkzO-6Mf6Zk?ECj7n@mZCz8 zf5{b@P6xfg5Lz<#e`luqI3ik@IuogZem-&@D$+HBAn@UTtX?=#jHZMBs z%|_?h7W3l)8_%;bs1hK#RNkaN5$=es*42wIK5;#90dw}JYZY4U>Qpmyrm1r%^DjX^1e8KlU?8mVhJ=7t%Lq-_$@=)zP6X;w%mAR}lf!Iq{E|xEz7~KL)5>Q% zD40TZDy~Lt*7+L?1lYzxq{A_SSb(pok%J@r8XQh%815PtNo5pRbOIx;Jc;0ec${Hb z`YLu3H84(cB6KVlNuD1u!%p3eerEmDfBRnMtzEM10M;tk(+v46eie2)Me5+MjRKOc3rR#R%g<6rfO%&GX%5RlrqiQA z&;}SZ$I@$)x)4-#jxShCM7cmFCZ3-CM~0v&uYgydUd4vTDE&?`B7Uh8u_z9zX)vakdraOhE}Q^aVljgO`_g>0<9;WVF# ziy57Vys!#@_V-_^*bR8aMS_RJ>0F?--8P=KK3WrLHzEIs5{JMd0wpKWN;l~M{~>efh$HihHf~drLkjBi;M?=CCrwBFAOe50PYNT z;osrgRWWziPD6W1a1zBW%7Xqi_r$lH|ePu-sS@Urku|pf`5GB zSBRNVAf=6hOr+HqK$LA9UQVVnPzx{{&U0pSs~CHVx~%C4Fy*$Dm_S7(7>}+{v@;s} z;&B#O84N&u(g^egkPH7u>Mdq#Sjox2wL+X!$#q4DfLkg@h}X;qRP(#IZa`@7NF8fu zzl<@c3Q%0ga-HgTu%9HQ+3Ug*iqHADwH#Mj+PXpyGC?dK1apHMWVH#YtAP&AZU!V~ zc>al(mrT^^p_$0+`?%v4WXuG+F{kmR#6smuOQ2Fdj=ZgVRkX@|`4?N+TmK^StBT6s zUU(yjyHXTj@b+ed-sNnLN-1nSq&`uMpbm$gNP3byd722$dVaND+_F&n$onmN-Ma(x z?pEWxoijQSm$RD1+DF~`a-@6gtj0#NKf=}Qv z8~(GAdxyVfL=ts6g%31OetY}b@G4)hWMFynoY)mH!&8U|=Aq==Jr)8%B*`uopMQ`< zfHmKvi%ZtFDZmsa+xiu==e+YyC2O7(UB=H7AH!s)TLG4DdK(*hg1S#GfE*%W90B9N&VVvx0SpH>JCR z8XBW)c#$Ci2Y^3YaO1BJ>7JSbkZaQkwHx={NBzaLBedQ|v)4hJHopz?vRg042S+e% zvv`vLp8ukXn zKP!z~Tp?J}HOes}8>*JsnBA5IbZO>poQbl_Pq@A|((t~C@))nP)gl~#gapJ)69K8fO1uQhB z#8)45v0Lz^gh-Q z=eWdNZ}{Mi{Dg>i$i`ESmwF{k{3%0c1ft{ZHtRNAl<&!A;JH^`m6n z$&KzA@nv4SaSvNK8a|vOb8iqmtZ4l3V9b^+r_y7X2aX{hB&cKTo zUp)XF08Gzg{&NaOoZENB-r0(MR_%&!V{!Kzm5bXS;6%WRd1Yfq=Z*|pNVWr#S}wmh z7ylSow%hN^3O3PiU=O=rG7$bDhd?_ftS=AMk>M%UyHd?3`>*Dqt6w?GehmwTNNk4g z9cUjSaG~m&sqCm5%Z{Om2)?AoXiR@2~brUS!Ju{0;u}7XSAj|BWa> z{dVtdEKX&MVyarx*$NU-N(TW++;I<9nGA#Q$UnMVq)bQz6Y-SL&^ko~hwKC_Go(=n zzA*#<+#IARi_SZi&4k1WZi6Q7*VrePfdEb2Va$v?t{znU(AL^Hwq9KO5 zI7LGQq!cEA-@lW7vC?wKAnTGe)<5j(>AxP5Lio<(LYz;fg0cC$b5PosZpS3`Lg2<#14jQ+Y~dL=6KsYgW{N=c0} z1j~2wv{$p$Bu=AKteVX$WIadPknXu$Zvg&6g|A#z73ZlnY=x>|8~)Rb2Ar!!`YEsgly|cj~E#~ zoHmX-MBgHBs@>i9(mn@UF0Zv-H#rAks{KAf_*lrtp!V z>kNp+gFcGLZ_E;#GmMl8u%khZ8~Rf=KQ{)wMt=ilmEz?92rju%h&N;q@#{IQft7j! z{BkCvIgJ#aW*d6qg`*mx*Ug_EJ^okyfD=0*zJlT4Ln^`Jx=N582uHXRk$Pee!BTA} z_%(?sj_{Wa=`eoPhZg=veiasO?bazWPP1W%V4Q#>@%}v33avYA25anfydG(C*o;F~ zEzODW?n3TR4%u@=f9r)XB=&xKsA`-BotY@PQIho?Np}dVQL92eLyi&yR>lBv{8*Y7Mz8Aoo(D5_Fj=icP^8r7S9R_55o)*=I z*~Jc=qR2I*tkY`rU#vM+TZsOrQz*VdTGn;R_I1i&sRF=uzI{Q%q6;eeD(@Zds(6BF z4m)`W8V9-YR5BM%)MQJ~o5LYqyY_Jgx1=FI_Bcxk?OV!D$n-~_*8=7SFYb1E?ZU$# zWy@$9dx#QC{use#=Yd~Xer)wJ$rD9Q5Q8H|@AFy=-ba4okKN0#z5g&FVO@%(PGZ!` zXW|tDbnJ1fIO|Z{$|1iq-l5&Ng|ei`>cth@*7LZD7ukH_pK?V$W6Zrdq=gprLO+6vwg$pRA>f9a9YSoppTI7x|jAv}q~Iy3`}E+-%$ zH<5B?!!GBS0D}kmjVLYc<^h^Ou?!vP=!d<+L*#^M5VS?#h10)U3wd>pTvFfQM>K&u@oN~Cm%CmnMHwa zD)N4NQ@t-L@mEpB_K8mP4SUpQLtzQ^s`l0SIhwI7BwqE4Yq8a?ex@^Q97ieyTm^g;*f})rxk?Ky?64bhtd+ikAf+fZ z7O7cG%yeWbY{lYo%lgFY)vCGoP8UPw%M_J!_oNRn>hV+MT+9bNbR($n6xb^7q;qRt zJD1YAK<@xwRuBHeE+?drnEa^gVQ^3o=^$SIOQoPO@4X!F(`Z2OZP;0-boi2Aw$qDu0sH z+=nN+cFI85pakx3G0gRceSjF=Ho^$ip_{4)vn@H;qA?hswo-u_CxH5II+J1NQb6!I zzTo#@%$=ldT#`mU+6KkdR#}(NjVm=dD5#%h+C$SB@ah z`rX!q6lbBF6rrs8O9>a0djyY<@5OD)SZz$y=0z;v7fJ{jCK6$24pIgbjKK59MWBIB zght`(Bk3c2Iz@Qm`K_8ow^2@u1d~2ygOgs4Yyv|KNckn_v{J!{|7tUgeakUQbavF7 z11$FUtWEOHhqvh2d9Bl0*&?lf)z|R$1%TGYmLg{s>ak{O9OUqhKXt!&kxLzp>dX%( zzkwh+?3M<}A~L9=wuADm7nmL_jDnTyKm2|@bEAAS2!kns8~gdp#`~H>LA44fD3SrA zY9qM{S}5>Y_n_%}8@huK9YnPB5>LFWErw))_J69+8rw(`MS(4Jc)3~@H{2R)N&6xUkyL~@s461K&^89IC~2r=Fi+yE z8L6tURn@H0Jum)b6-X+$4mFA1&$rA{DWgPsaGVb+%&#EEzkXm-RF^r)9$&2^JMWhHax;Gu5ved{Jj8^4^7$rNKmfIxfXx(h&m5m^Hm z&&X=uE&Pdy9tREQ4A+vLV5YGRew7t0jny@W-4KT+UouvUr zfpV__#-++$Uky7lR##hu#v$v3-|#85GC*pW7u%vpttP%5=y#E#x*dyBR1XHuMFnm6 zTc74KY}!WLRGP?xI|PJFQ3|{pi7>1x1DD?Ldh{7zorADQv^yG{9%uNk23hFdeW_T2 z@;b2}(HV(s@4ac@bsN~eFTwdlax=tuig9T3(mTe0lIV^T4NX4Nn%S!L?Ah~vYtTMx z6&t)tcl?NLUGDPpl?23_ikdMdp?e9H28J;TaAa^vUo-?M#0%;o-H!xC!H9c;Df(p= z%UZO9y^)I;{7%q}vNm^YGzkN_CoVIs>p97idemdaJuq`jx>sYAc*f(cc$^_ditSA` z5+P^=^CR$*`(GO@U(7HW4pXS;GoPXT>sHoZ=~EPB2A91)qQb~5mM^n`As}HYprWsu zd{ckvfviZ@f&JaE$b0tY{U#Am-xAtX*=2M_RDhu;EuQQ0Y0uWa`uZFN^f6{Fg= z{3F981pu_u1{MU6imk~vQoRY&-U7N9{7V9vqsp?R2J^7F()cm)8A@iqaWw%}N9ej> z_q&2=E||dOOjGPMW^~M0o}Hp}_^5?ronLGxhe*YPosXQ1T4^6{U1H8^Z%Uy$YeC3j zCG~rGzjz9XE`NW&(PS7EkHh(d9LY_$g#$Ll=_9x6~Uo?`g(uzKEYFL*WW%8aBw!Tc;ShHP;9Yc7hBMT>A&%xOrsb20qg=X zFrFBc-_eE2UG7-D5hy(0JCM6Z)0x9@mb0TDhEx#+|KW5}JD7YOP7y??1YIWMj@+&+ zi~cVEv>SJ^H8GzkVZCK*n%Y?~+tJL3U}Oy)-gfA)gN13ErlZcNFVf?OVgY@~&#bJ~ zVF=k_$C!ow&mF8QBT`%_TVbXUrO zA!iQ_mhTwWdM4|3uAS!_!`>K8Y4U5t*^HRX^;1je%OrSd={gM`6j2Q_pm)z98bv{H z8I~EE7I-S2Z0>BSVlB*AVKd&pqP^r{1&r>PnF#JO1b%N%k7Q1&@23F2y0Ew6NF!#& za7j!DK%ktG^O096HI!tnO0MyP>Z`e1?Ss0#?$z?rOo4SIEA^m%SKMFmzREWrx*+Gr z@90_JG*%riQ}|kBk7B)wi>upu@l98G85(c?viV~CX#$z5{}C6XK*Iue=Pv8P);wF} zIWD_ew}0%*eq(%Q)v<^?!jJ3=bb~+of4^*oPC;yRyCv>?%-#O@^|EWPYRvM>Cb*#> zYs5d9(Ukei=F8CtjMJfeKV?II+5B)dXafgDMGWO5_Y=waz)!WG{x&4;&^?QP9QSJ4 z`(F1)t*LvHDvsjX34~B@!@Vwd0LE3;O9`2I3jW->72z%^!N9bJjG=r5|1g6zqwr3( z3=nbc_-4#mE#wV}v;m{U6LRVf7+A2(_h)W$LVA`avJxHmJ9Yx9(J7H8B%Z#lC*}u& zkbz&rb8Apa@bn+3E6RWi&k(SRPmX?!hJ>r(=k8g8TA*>-s|T%AK!`{rD58^1AG=P~ zs9I2jPD|*@TB(^a$Vx36LZS}G%%SU6xjDcTAjqD{yz^SA_DXFj0M+bc>H4}v5mKSN z7R(6W8;hu_xy#pge8FguVKmsuc_xhDVGhrkZ7FYMC@U*OTu(H(g^QA@A1vJfUMjYC zQjHpijr}elewp-HaqYgZ?7k^^+h#Bd>j8K;-PV9DTwU}JwJ>9GPet+?9kJkk52xIe zVQ#BHZC0vHa9iuGDd|us5qK^uZKSQ}>TY(EBs7EKw(Pm^j&1^OYq*DD=vbZy}r@TN72E+YJLn z*QGJ+6AE-(Q}iCIeghS>VHW>0nqHtBB2!r^A9Tbo&8gOa7{>yjFNi1NLvJ;s4h1Yv z(ps}`!F}ARUJGzymnvYB&MT)zt;+7J&c3P9c>)l75Nj{QOzT1(Bz2|9aloERkdId}<99Ju_(iH6!`lnA zHP9R6%Pu-t_=6`E>vZdYKtupjfM%WqJmyJ+z&wfJl_zCf#a@cR6no7BC;03bFL_dc zM=;j^qqwU7zKYzIBaiaH79+E(5V8f|-?9pikr-7f0!ivHY^*YmoGd3ag(FoklkUI@P@`O(& zp0cO{LSv(lS0hUsU5z{46V1iMC(wKcg=11ruj4MRQeq$GeK^!`9*;Bp0x&EtP%%%i zA%9BSf4M6v4-C@t#I%xX(Vxcd?$jUb?z-$QQB*fZCCBV)e8Gfh@=@-}xZs?9Kztqr z@B*2FN46^p8bv(`@Rk(1m}Vwa9qDeKw84q!y76^V=~$|U>Q8m4HHSE}F|=*6ybQ?` zj`h!TC(wAVQ8dvLG#86kjL9LF>|cFuwIrFj6DHm4#RI-G0A+jsz zOw7?gO>|gm1b@baYwN-Buix?igLtowbwjJH*I>ZLzn9%LG8q`wA0?Q>%OeUe{D#In z-(7=q>DmXP-0-gaR02@TBq`l->G?PK_lM>_k8Qg zCP@fzNn%Zl?#PD&*8KgRv)qqIpz<_0&%+wClOV6JJ$M)*wbkyhPLc<5K`{VchvxbG z@o+=}by;8@YcX0zmI&e6g^8gx>M1G!Y||ouiJTdks27wCL3gBW;@8kZsz`dwIF5Ob zuRhHG-poe&z>{41%NNYafH%!k@eU}6k13}Kw`JN3Rtv&@2PvDy6fhg=wfuKVm&kpO*DuuK#bZE?M zZW2XQ247B^5H92d{RioYGcLfhPB><@eqJ^VG)hW~8+jU@DtZ5F|G%GXa^kOaJEYApx;4-L42x=J9>-WLQ8|4)ri!FsrF!KR+uV`hqV=HJ}{4m94v(jWK*Q0 z>>Oe_3q55zD8*dAm`)hu2vrPyviap)0Sa9(k^pjHmG=3gz_&}00RsbRGt;)D94{kW zbOe~>DxSL?@JYPlgN`rCosymG1BcyN8+G$ElVh}e-wqmf!WkkT1I@=r0B>}$qwOF{ zrY2a497kAB(2GNg*F4H5Ei`pwLLh!^!S&7UiI|$WK$rU5NNu;&v`vjw4b`Zyik%NI z1!l+Gg3jiZdsk`ez?yKwkK+^(F?RHuZ7lw4!WVX0Dr9g>4wh&~`qbP<_wts}cs>Hj z2k3}Vs9zfIa3`mTR`F9O*Gq{)ZWbxzTb^z4mf6aA_W1Ut57bBBdv_LO6NNN`?XYz0 zUfXSR^%Mbu1_-lOpbici(H!u>#`HRybcK%<&hs1rg}dR! zkrNCHf@heRY=$4=-d^F}GR|$(vvi-wOX5zPqqifRGm^BR?`2Y(I4O^W! z!XyC>$$*wPno*JW&l%@}&qE>7$(?o(ya{t!Qy&idL36fz`i@ZzpJp#%aU?PEUJ|Ph zJu$p&ZnJ?e2J;X+Fh88}-gdGlx}!}o0^QMh#RxfTR##=pEENeYILKeC2@>wT3pb1X z`2B&^YXLO9f-JK809~#Nx?Fn0vAiG&c@$_GD|ZW^yX&Ju?)Xh*Wg+Hwb~U)zzMW<&k7rP|nZ~D*Es*yvFpDS}WN*Z&1;ALxip>e<6qN_|FT#hbL zs_uODwzy>TJtNOeUZNrqfiz42b5!?j2#G;HOLFwIEf48Y;9!2^;zv##2W1bAOu0Tm zwZqp2c>{!AOwDJd(N=KE$T|u+VJ;_K2%rQtoO0QoUO+WbV3hdp36^^1^TxSXrDoNI z+UWPsdWCe#Y(y1{p#tYSoZyRVQS9D4oNz1P&qf3(;!V)!vrErfS*@9;$1e!S@qS(S zpotXr{y}yEb?OacH~5;6)sph9lca4Ubt5wLX?n3j2W3qC_TOc-zw&ocwd=ZvUaiWn z@*gs*h!t!;#Rno6Apd+EI5dxcje7R^T!I9h>xIhYOh28j%6mx}LIco`1)AsZTZ$s9Wh~->M)U8Su2>mEbBI3^BcE zTZgQEOlK6#90QL7Ytpp5zbF4fk^mjPtI zha_Dlg%ebwIu~LUa4YD3f`l(x`6S~!?ldq+rJsMb(?6SHpbFI9QDa3YQtJCfO6+2h zT=2F6Y#u=Xsc6NF>Qc45bmN)S@^%67ccDdHtarFr%@oJy)-f)m6P$s<25aiW7N?bu zFb{Gx{IoF!VTI$%eXnF`e$Myois`fPkD$z1n2JE8a-MK)Tc(zu_r{ZHHac&R8N`ld z1YiXb{D3GQ0b1Z&d}+hbo|=;gACE`lSM^43fKSuUimG!9ma#*b7VYco%|O9Qkt8;% zpnY9vp1_aY&-BIe-i`yQsJc6MOQ5R<^E2uTMqW5pI9O<%b_h0xdNs2YGdJga)clDz z$>prllk)6Y{M{>x6t3AjsC{+YV-BwlJ18UutB^>D)-|L+i1aP%4lbu(Gw(meqoc;_ zduErpnq?cMNNJI)nLGKD8Q+Y_7v*iNTYyanKGcbJMTjw~o$?(_yB9#$p)Xaw`mVlK zx7g1Wq1K;n8F<#JtE(jwyxy64h?!*^s(Qze%i>#MnE1C<#a)5^!K*E3hVs?)TK0F{xNaypaANk*1 zFhf{Av6mwwdpU zC!Xgwh^*CN&w|LEj7pJ|V37763l%`N`g?0~F%@=|K#WZsA7O~f4@3lJC2Q=O4_ypv zG0Oe5^gH!3hUIwVB&1?2(`4B9vK2$bB*hWC*eu(xFSOGdcrpLoAWE7*G$p>QB4>ZX6Cb-lMW| zboA1hs+@`WaRQhy4>)d@!ND4i#siEgvmS^hwe{Uta;uk8shaMEdesfB;wMgL?x*EBdEblMoh$@g$LmVKmva1efy-{$gHb{-w|@NA^I$Xqs{HR z1p_vJVd=g=*4Uwy>rWm{T=wzmk~~mA2{QS2QL)ffF3z6DF@ODQ#VA8$9|cBBYzcLSA?sVkm@8y=OIE0{ zMV6^h^ZZiW%fr=j{t)J7Xx4)C@+Zu9RYwg?$U@B>yoi1_MAaP(S?5jJLh4>V?hJqm zN$VDvhbYTx%UP?#^ImSA$Pob_a{g)12B~lD9N+b@eo;b~VXBqh?`e4w)`}%6w zVJn9tt&Y(u4Og8Wys^sB02Jjdqz~NL;+KIvH5zw!cx<60_%uDV<1K!lbr<{xA>TnZ zqt3Apd*2;jcgOYp+>XddL-o{9V#R!?==)<)_^%i&-jBfI6J#`}pfgGLF2B9D6#DN?*nFGP#&{Ib@Kt@ z4~D-S9=3r7Eq07~;L%vsk>m}<`le^ko-N-{7Gm2F5yFB)ldG|7DxLDQ_d4iq7>*9k zu0%#=*aRw(PkXoIKiJu4|G?&E@Gdcx+r}E#T>DdBOQ`CB{SWglM0MT!nM@F%L>Ps_ zXzxQt*KLoYe!9}?M8@RVGg^};n|=f{z9L^Pi%i(J@s0>PnX?iaVY!Lzf2Lg=UCZK* zSE`SAPK(euQrPP{!knb!XXB~VIjBCxxZur+j(^EbB=@EMdo`K59QV@W;9Q8BL2WzN zZ{4J%J`RMu*nD$%d72u+5g)cSfmu7apq#4_Fsq((UiHX%;dnAaBa6_u%G`*5<3?mFN@e!sZ^njuu4CZ*Ia60@eQp)lO*JL7p1okhX?DTJjDVJhaw{F6hIY-E z*KqqnuY>dUOG3eo2CW{H36SIr#pbV%9{-Bo9HHvs4!fXy zb-F4&r>pVPqsRY3`?v8i3Q>&h0GIL9b_+t7zC#ol-up~hj+po`8n-@mwbGp6H`uGt-<>1_zrF^SctrFTGIfBbljWT?@(nN7^ibrv!&xUp2e&ko|bhOH790DEW z3;!0H0>(&6CR3GmkLLipr(sw0-Rh(OZC%Uog5}~>*36K@1gPbKLlMp`(>%R!E}~yN zN^7Vo#NuXKkzd$~M%TGyc#dJ9%Ys)7@nlzUDku($Qw}FAD?Bh^op73#{0kg07IG&@ z*+8%Nv2G6?{Sn7r{A*BzEQ3{1F1J!D=YGitYt*Q82GmDvvzlAIzKUjFxi;b7e}}7_ zKJ_vM&3{hDIPT~s#%;HI)02Y0bc=wid>x_|AY&ZRJAz zSe{ezlZv>aG9YgdcXEgp61gIxwVOt?@U>|~Ys({AqQNNKN@_47s2ULDlK;=JJxbNYe34}Z3hEF~ zzqe;Tz`M~n3P5PX`*HSvg!2r zpxX`gxkCB(&VaH4u&})pn+s=ne0l=Ah2ij;7Vg2XV&PB+uJ7(4IHkgnf#6YHA*`0e zMRxz*8lLsLV=xAu zWqhWR&;QsXE)O153)iI;<|eIG)nh^taM5y1_zf292kkM+EcV7HVfq%;hRPuUPt6Boz|K2&(-2Sn|4zl<{FSeT}}9vutN;M?`hIUpn2( zxZsZmpD)W4B9~l-fc=_o@>!@WuTT#qQ+C}ccr_m-lc=siyHHtpHewqEsnK){>8Dr(zGcW`Zo zxnPokrDr#^`7g&maK`tM{Sx!GdhdslHn@43kK!ErnXkk>@-?K5oJ|%(fD;0Qe|9-@6#{-1#g7 zjx#nT<8LhxZN%vu0kCscpiIT7ZByI|XvXkUyjB%O+lZVy7X@RV?qV#hsH0c3ws$BPpyMJ62A#(guM1zBM!{-kR~w3g;kg`Kf!>CaH_;%J9ed~qZi4xP z|9-&Aqt5{;bAbbgLW{R1vL~z&rpaH!V{6pV0SRmkgeTv}3|!jxy~8y5S!%*8UeG?T z`(*n1fDnt5_S~yLgnBjSSCvX)E|$}M_3Rl)L-6&d-G47ejlCTAt{EGA?tVr2ONcko z(JF*kW&u`N4FT(71`H}A!ftQm2r&3)hirYCR`IGpu4*&@oMvHwm(9-&oGj(R2}1>= zc0ri>$WkjgMruO9ivOwtq!4rKb_OjcIqb&jG3G<~uY(%qg|>_J9Ivu!X5DcfO4=+9 z1Px6RFku^IN*;LqZkohKM}nWM!x^m9)-^+x3ui1=vI6J+G2VIH8n*@$SA?PYOop>s zwn}xYi+BJ$a5J)bRZNv#kLkf;?S?o^{*{v?z{4KkZ2SIojZ{Y{31=Nd#H_WbsSeT2 ze)bL}O6`%jkVZ8D=Om|$a3l0V_;s+FLWOZ!YSc(v6gF z>ZhX`&9GdQ&-DxZi91LX=?Y8OK~+LpNCMct_D(_XpOXD^Jj8JiA*xU~-?<(_7N(+( zKIy7MVk|ua>c|@q$VU`W?)&4f79DFndj%uxB7}U$MWKr9a&l}jxZVy-sx~HL`Ib#{ zVJ;B3P0+ChckerNBR9UF%&8v;9s`L{SsG{O{7$fNBA1oP^Nf-OMrRqkC5BTDz?|dcV{MICf${nsmCF4H9u;t z!y4;eTPMXxSJ+XFm?%2Buf;Pf#pe<4QG!619gacTnmZtwRU`?~kMI{YlTm9S+6p{9 zxwd<$J?4Nqrrj@W09{1Z4R;h0npNyBo5w+KMJ));bFqXQj4|5EXNl()6D3aev`i^R znqt0{HA1`M8huk#HxExNgzhPR&9_uP!a9^D%pdcmtl@mcfdEc9jT$=At|le5cjw<9aknOuE+-2mzjs&nrOj#Dr- zUMw#PHQEr-7 z5)r%8E~ZINGM+87dX~`K21n=}Y1PdA-n=x;f?EuA8e|%piX@Z23YRvr>vB&QFjq^BPsZ)%Olt*>CC8yUUmnPt3oG2KwlsB8o_ z9a{xC%{Yr!d2w+h1Sl@9XMnPoVTQ%}6X=;_P}}}d2|g_eDyB42>w%LfX4-6+pjwY( z{3Fp#?P4BZ{K!1VoZ|4^xDNWm-E*|Dv!SnJr5|4Kc8*%q#E6@ytPOgIJuU@d1vY?` z>uCk`$uGTOv^9s(s@pNBwz;a=fW3m{m<{eqR0>_I?07mZRK;TZwBpQ<Fj-=HtiUJC?+Es#|ucu*>>K_p`=e+p@P>k=Ar}!?y#p2*jp59v*5>HBN5OTd(v#x8bh;Y(4F== z(v2^R5o3CV)wqe+(BfabT`Ja9o4xDCQy9iUMn*Iy%L}1N?S#Cdg3$iPR#|7wV&M22 zDA_hJL2S_Jzhk~ly64~C9ld<$2eRe$d@BuNsJH*s2cL70vSn<1C zaoy<-BATlgg@k+1BZm-z-?hpx+ znX8p^jaaCL{VchymlJ8?C$8H)m~bIOMv41aNPX zUg3`o#_n!CfU(~ZjD=7gr=wAFm_#fq+#grfsTld9-SaDzA;;s^A&R;o$L zOb%p@N0LAJ3O?FErrl4Y@mFV5taO~O^Xm^6H==;rlNLoLcI#jPEM0hZcN1{CH1w&g z9ZGb8W45aN%XG8IX7^j;@Y2%UEdE#kwzi&;$`H1P%eNTV*fNjU~EU&mk_VLR91 zv>izi>rWGNwW1|^E2s1=PpRhr32}^SAPB9j!|shmoFl7)`W7iY8D(-Z#W=`T81Udj z(dhiVe>M5BTZ_baq&g`n>r8WvOcO#OgNiL*6=kRbUa$ozX5%{Sc%l=qR>PnGWIpKh z6YGqUI1il10lwj-?89Dk+L$K;sNw~v3%>JhC*PX|z8OawX+I`sJFxZC%WQDadD!~1 zZ{&NkMNvp%3MdHEJSB8Fy-wc4DO~*^fq~5+i!Qf>)PkMm?Mbx64q=5&O@c264{ zjaOuex3{;ch8Kn^i~-Q%eTpy(tm@HCXe5K>-p2q*jMjnTgrN-0w!qCBV}S>{99GNY z5#35EB(tlmRBgVzBt^~%vcT8TYN#14)LCo_A0k8%_$Hlgg-FE3n4K?QYPDz2)C((% z#zq~vxely7;KF)rpwHO>=f8MHrIby~d@HzfJToDy-jS7Ryx6z#PHa=g&=-5~d2buw z{e{ug1#MkK@tUu)vRAD*BhxO6V6r~Z(4VURj-LIZL{9Ch{XBr#^ zcoDr>_-3#Tr4GAjMvOi>>u$|j&Eo;c9|QS4q2aLq3D9obmJKDyQIkAxPQsAI*23PKT=vTeu6m zQ*CzIh^g|K31~mqPYrS#bN;MwLh+p7;ly#wR{GUBz7OEs=3oBumw250JlFfn=8N&C z$>v`-|EG`+*B>+|!5|o8Wde@UI_qZ>3^s#!5`OgG&z{+oi#e<8P&TgcqD)D|LA4$0 zydxHEjd%Vy)HM8&LI_F7Ugi8R4yh07Dc2KTiNz*h=>l%I3LfKpt z;oOSEF8$X1?)h{unvfwb4%ckGMaDU^633&nnu+3mOExR#g&vx3zzD&TU(b!sUFRkH z65vNLIc$VUO?sU+dg{0hb6ErsUu123zDZ-~pm@CP{*5uJ1DQpR1E!({8z{On`|<5q z@>ARl+t_5r*6~Lf4hN3_@hiTBrBqdO?PJ4z=0nPmSsQX$*P3EcL1j+0A7T}h9IK}* zlHl;_WWslVn-Ny(Q~F_#MhJFQNue1lDZH1UCd6c3Ai|4mtUBvRj$~c}0nc;K=bDiw zsBIAtu#qTlovD@zg;q`wbsbYoiO=AzHz@{e);;k#J0EuXc&OhrLG)zkKzs(#IpR6n zpitdGSdpkRO-5l7c9N_TOQ2ycjFeBB@Cz@7Ul&xa$SF$B4~Vt05n&1mtyceBa&fcy zqPr%uQ6Z0+40T{Rv;~_1vUwQU!mSXl$Sx9_>vkac4y+Fr-!NsFn@eTCxOqID$43wx zI%nIjbWr_?(m1e#Y4m8{EFJAl&M9?;G*ES~T8e+@rm)p4Uv8zJpr5;o%wVTp9>nN0aBH<#ybAvMp=(_yr#=2P3NRl#j9&bp z8)k&(nalm+Qy86QY%8c$4uC3}mUdIZ!4*e>zp6`6<*ihdj4Kb$G>Z|mPAOxIT>HnJ z?l2et?&A$OZDochG6$y$XaF|ukp|Fq)IcS*RTB$m!`vX7j#@H6D(m%n?KYH%fuV@1Dk=tVVSFXDE;-_O z@XI&$!3`>fP&ZjteclN$XEA?58J@nLm=(y_qR;`~Kn-9z11bS~2<$(i2_=|dF`h}s zql}2LC0276;CY{FeUQ#%(m1|B%0()Ip9$u4L?xM3;y;E_yGhYHFb`O!%VlMLG$&fu zbYe9A6l#H9ThU={cSq-zi&X`F^J*};cI#b@1J};TtW|%jcG_8 z(J7HTc5Rs_pOYPSEE8PBvcUkwa%6T7q5)@h67ta@Yr3oINs<+gq?O$mVlj$49kZ`I zqVlbyb^^2v7DMR+SFn}UXQ^>E0JY#IA} z1bZgP(1V_lOQcoT1g83nqZM%wIhx|J+#5m`a>$fX)H9I~u|U8IJynIdWpOL5;<;L$ zrSXp%(4KPqkTtZu;uir;rb&VG$W^Cb*$pJ&zSTl z6IFq$6!M}M^w`b-RD5VFxW7LJFv4VENfeRl3{sRpk{DK3=E9* zY~w$cEAgxS5x*-VlOU34-YxtMWW1icv7G~j8tu0Frzo}aW7zV-&$?;rJ0QP?eLlNQA<;o59^O#Lzgm^T{{B! zxG0w3H-I@y3^IVQNbk(2ATYc=1k!G!8a%twJt3;%eMCh}d<=zjdQ<;(Xi@BM5LGGb z!$yR-pF{n+)KRd?r7d_8aQW6#HNUoB9>`0;6bm4hfY!g?MK6aBwsJto3U=lW?txnk z!B8IZl{-+x7eM4W=NfTySb*n5fw66{D~){dqvEi;oqo6F9uebB-~9T0GJ5cl-e&}1 zK3)cvrAzV&RED9rI0ONaRB<+73uieLqJUmidoa}n<2E=!wEz!0*q#9C&GsdCNT6H5 z)=};o7oA_Cx5uwjy8KmX#VTe6t0j<%gIktJL}FonS@)xCqlm(5Oz2;AA)=Ae0|Bf$ zgjzOgOf;NB`NHL$Do8cKWSbq7Tt{ZtmJMy3j-KR3aa;xg<;iq}!8yIo8=@fayT`9T zX2)+qa5+APCqBI7^bNQw7%gyN5O96K13ztHPB=1v;Ydc>!B8!_W$#84i(=P^Uycz< z`iTt(B+4N`!>D5Z7^N&UZ$qa3t zr3{s+Cy69jdfuf7@c3HQ+C@8&dbwz1j$20Jm}gS?;wEx3E_j2JPEQC&v3zf>WYh6g z7p(^cN$WN92Yl+auEY+lLb;1h_6te7(EZ(2`>7IyZYoyuU0q2gPGAq1#$lAg!RC~J z^n}ELoHLOkVgQ5nn4|F+2RVZ6=JN>Bv!iiY{6}1dil=2EV{qWKkk(jf$|Nr%sXZ6V zOKrY_ZwyHYci}}nJ?wa53ah0a1i%QlM153;oLeU9nEXf|Su8HWNGOD{BqFHyIv|pk zOnn4AZs;~rPG|t3=#FnKE{k)n-=Dwu<{1*>-t;RghMKTIKev2Lk+(SXmE%kOy+`UVPX{ITX&@#|lUld}ETPiawsGND-?6iN+41h->(>FpX}En%ZODh~53Lng5p!zgbR`6@l)S*BmKMgxNTvnZIXi16-r&~y5VPY3fUYMK zgnkS`&${O=Oe%Hopo*D_s}WF?qO6-g{ru?hPnwuqOsALqUi;az6Gmv0DT4p#r3pOE zr2FXcuN&|%ECI9o)G90aFA{~*&42y3v~@8U_74sr+lhuSMbK+;2a0t@0EWO4fdA7h z9e0tmYjKypvm)%Oj=HKP{AWybwwMcxpKj}8KvvtO>xMH&(WTWvv8r*dp?6%LfOA6J ztc?=(pkrTN+h_cxW6m&&wu^4nM!(Ob6D@XEooOL@idkT~vCEzCXoT;`1VKIK2*=!!C|f3#~6{u9pXc#Z&>s5 zs1XM8p1dfbMsDMlL9T>B^igu!gyO7fZ30EI(~s!+mbN80q6#NdSz;y9aMqf(xZD3X zW=MbJMKT*L6`VW{6^V4D*7goDa2V`p=*(gE2FsAI+Q_t_XkZ*o{C$Sx@DQ=qiLvUh zIaVDRsU(m#s&(4>q{j31X(ij51q>?e#``qWHUW^)xe9L6``yb)4->)sTk=`>?+6Ee zhgaRtqJ&zGn*c;a`1J6xm%t9*8Um>jg&9?$IzJZxoc4;5RMGEeL(HTYbcn-a8^DLL z%HXcUO5h%2i`F#-Jic9V>_pI)*=8@RgMzR=F{#)tf-?Asutc<=yr_su?AMoewg+WL zint}~cZZ**7o-f|JD*E>#vU<(0`ej7?7<;y`e|?Y85^9P9zv9bOP!0u{zINWK68NR zya%n!mB3Z+y^^vMGwKx5u~sZcC(NS*e&=udCEl&Hr+=!}*-tfp*0+Mq_mZ`jjm z_uqUFIOtZFG)7zKFK{JOr1^>Crt>`A)#Gq zFF2@|g|h378&%oZn5*~@dRz@L%@L>kJn~;XMJ5=mLeu*}r*+xt5C9kJ5bcPBf9Nz2 z%@a~?^>12VCz$}|{6+M9w*YE(x`p(e6y`MF9J>5r|wSbNZ3{Lby& z8V?rL^7~NB?`eQ@IvrqgDa_nKj>{$h7yP3H4&ihmfq>R9ij7T5`BLM9c$n*iOhpi> z(j`FVHuyM*O=&B*~%<0omYOOGrE_5*q_YBo2SFqOV^lH!wt_H2( zxG43XOn0O`AK7{Iyi(^V%oa}W38Rw`bLBRZF;bTS?gB@B(CakYjRSZ)EcT}^0!?rN z2T=SUe}ystprs1`&6Z$EXy}wrvzv=v=c4_U-KCOh<}#b;BrFu4Q}-c38_zUaAKlC|Sv;iuo|X+P@9AswNive>dP3jfN>HB4m75Rp9N+L! z6c6>&GceACbG7$r+?!n0n`fYB9e2PC-$9ez26n_b|LF0LK0=}P=jj9=#9e{fG{D}A zZXewZU~FwQj#r6u7o~Yck2W>r)#Gowg1>E-tE@OhjNL^rOpdxO(SirztJGssuRcacH(Al2y*_pPWfA~I zT>WysI@3$X&1lOFBS~w7IHNwN#*sCR+#woO8EE}Dh-shyx(q&P8#Ut3cU#~R`5REU<~V;mzH{0-d0e=#{vGI(%l^XU|Cy> z+fn)ZR6giPP>IQt&6jANIvT$k4TtbFrn{DV5rheUQL0w>?3rCu+{$0Pws0Nc*W>Sg ztiCDIAd{bFXwbGUe%zr5Ll=}JX4N99b*GRH!GjaDMyBLk^|G*ULK@=7#d)1HM6E0h zF&Fjyrz~Kqn12gm9;v@%*FtDX2KgX)<70}lm!h_!4@^^aMax@Oi7zc5NDgiwo5AV^ zg;?)CRm18BmEo))140yM7zM}F7woRaoIwWGd&cs8i6wH(|!CxkleY&a* z%meW2z)fE*4}X~r8XwU4%1Kqmg#{*YMk3NJS>hO?r$Zs(HzeGu*&tlphQ$!)a7PAWWl}vgVtWfS?5r zDVEAy`mJ!F$Z_H!n&-?#7>h9dOifRWZUqCYlIAN^5KoS5#_>@K-R%IABerx6(gw6O z!0T`(&X*f9(1hqe=HkS57RajbH(x@9FGmyU6*RqHze+Phhr4SlMUlNMb$bHDasj1V z5hH;>GI-&5SGp#DY;ll|WM^3i!aKgY4e+D8$wE5EI zJKUqH4MkNwTJnZbuYGR#5mea!y6Rqa4Xi8>vCD7toNU`+et$xsBs!Bz$_gUpU$nr$ zbH!L$MbhvWs-vNy3C)-nkfHmWq3h5RK4Xde_NK=kPb>h`m zvHDr&Yu5HLQE$dBp}?rE3fx~3v>e#YHZhLqmTjA~ecbMBCGzXyH=K(a=I^(tg=3{- zlhZproVdvfi6(Z2Z28OKelFJw;6)Jzn2`3tq}x4%y!*e=69yJxa&=L#prx^Vz~x3e z0}!`N2%yTbEl7Fdd7z}q^Rhg$0MF6=3nZ43WR*VM7tw6IY zdz&zvH-lXtAR*gAi!(YAptoh#uH9khJcRnPml$UXRKvux0bjE4_)lB~9ngoj+Wvr? z0I1Y^$3*Ufh};zgqI(!&r__{PrBzKDqSTZ^1CJq3XxVGbHU*)xMw2ou{&jD31)LGt znXZ}j8m+gY3RXk6kCvzz$*r%+-c{Mt;;BE*7a9KVqXHk31L=^2+rp_PBEi*QJP?cZ zP_oUfEz}x}uTX9ccr{0kVHW311$6o*8l*)UMak>d_ikDcxIp06!&DY6ejxax2H)2P z*!C_>2q0p(%{p8{YitG~GN0uUD&DlfmvnsX<9j%>+Lj3VfYf)@#l;*UbEL8l0|q)` z9`2A_k+g~wp_^#&DnK2!vTkf;%rb)M9&!?chMFF}e)R@=>bo0n-PA5*RxuXH&>WQ1NO2UwX@gIvN23K%ZOHC)D^6UUCi?K{#<1 z2pTlpUr_>p_9*}72t?2u&kH!B=t@OS9k!q;7knF3T`0mSG*6O;zCqwQABKiIrhY@A zd5$rjL@jzsp*ja{mA$kA5)x+{5Rk9usyA_yYl<}=g-nf2*PQ=v_AQ3bgYxdfxz+j*Izb& zi!aRFg$Ob{L=yVjc z;#LaXIrO8~K9Px?ahHVjIr{oAoY`-EnO^__I@>ml;Hq7b#Kl!Hd$SN~r8b1)cFOa% zUhK>1SW*!mQLSN&urbaJ$~PcFowLr}$;T z9k(M25I@DoLh{q7&=;Tl89l&|8IW#j1b#ah=@)z<9&Z~3d>pw9Hz>9U-xh2UzE4}( zV7ayt&bQIp6%3jHP$Q^H%O2RN&f60@>>dnP5+WHMMnx4; zAFx*FDHN-eAz93nU2(2?{QK`xZLdKWywxO1yP*!Cr0u@wR zv`yV}=mTA>aQu<%@_X`@0RdriqYNwBrS~+9qK;19TG>!F_eMd|*k*(-q@3nkuh z7|?Up17}q!RFX|a7CvdAZ*tLoE-0yN@N6`sfwzPH`m9Zr{nmKg`l?g65Ts&FQ^fW{ z>{Y9~L}J>x0HX)LR3t5EuP{#uMU25Y@?l35viO83Qk`UI%|7F3ax*=wi>OzN<_+{g z%sxBruv$LeXr=kIOo|+C6!^fOuT7>+Mg_(EfQ}GP_y{q?5pSxT7w{b@5Dr?OyG{Z8 z97%)bkfGg^S|dB4QYR_G=V!GuC-1mA@5vPD6PK@g;v zmx9>+vjxI-L9Xo`=#D@f_C}l(zkPv`OYKoE**~QeiX;Cn|vOtn)b-Dx6VeFP}M?l zG@BY472R#hAlkE;^$;!QnA86iuN;j3tHo=srk*-Olad}`_Xn4-> z5fU<=TxZ-3S}a@%EG2-YX)Ib}q*r7Mv}Q+!iT!K@D9p2>QuTiJOc)3m^?|vLrKslR)%kgM ztcVb74lYfLW5FdvdoWs;9MF`By8!=DQ>=_yg(zKNAs=BkHOfly(cQ z&ZX-Dc7}?0v?>cfd~{^lY!6-Pmu_!cfEZhI#7~sjSQt>myKz<+i6j_f{3v&f?q$h6 zAx09XXpAWp=C=LoamqRd5>L7HW!|UN0IA=!(i6&I(us-Buy(JnFC5?d)iIai z$fDf#f~q|Dqw}su5~UM9snIE`g*CjRC;(;U)hD;LBFl?P2s$3p&6v4;@&Ei-$ zMv(yqWA6M&`>0nL!J6$to7r_{DJl{w|G`@lLm}ZT5IlScs^FavMz2$ z@pZ|yb|&$c%@^ZO6I87K=l}h(8P?xQ*tk!=0~s~JaC=n)>R&eDSWv2oe=-C1_+|4Y zs0ZEF(7m5TgkLs4Tn*Z2JEE8Cj@?hBEDpzKKLsu?wWavSamHxxd(BZi?oDT-t9HMO zYwsiChFpbxcHT|>viar|gLM7SbKGE9tkxO0jQ&Sa5nevy53>WnBCxuD5h}Saz~zE7 z2$|~#Dc3mUTil5w=+#`TO@7B&IQM6T!x5cPb)h)wQt7 zydu!bbC^piDIJ91ae%eLxGBOy;=&-B7)GI(HnufXopxTqL{MPk}ckzsBo;3F{Y zQ;vBgsa3)vY43JeEq;QF`xLX3lo4kx%6zCK?qL|@>8G6*h)`a|k*Id$BIe_xeg!_~L*F8g z8cH6adK6ozTThPi#SB;?PKbhuL`6^K*L_7I?|1pO>5lqc{GIPbE86Hxm2g1(pIjg= z8O?D)=Em z$rL$T-@$SRaeW^sfN^Lr$U8#jMS+2K?<7UG6RN>Hx7ckOiB>f{mZZUF_9uokEULv= z;^iKQrlD(pI;JydY3P&91W#M@OZVO06vw%CK7IVvdKYJLrher6D=tO4n)V~#p)%Dp zS4N6u0rCY5*#)57v6s3a>mZ_QlkjO|MF+nJ(>FKoSb4UP&&o<_9kuT}LKoS@($jNa zJ1o7n=g*ppi8!kzJdD|}?H$rE<2eA-P`N$INL+G(CH!OfV66x|_yv;7Dj!$-3YvW*aOvLeGQ@qT1G$)E#@nE1SC_gfuhK zeQl2G5Av;XAU}@JJG)O0_Q8qhjLwjTIuB4_A^r%^x+~0vL?!BkmO#$*TW zC}zdtan@eA>5c{x=seSv5T-{J*3eF-^J5Tr9ib!TWA+Z|XT4C@bsZA5?RIb2LaV)W z-+&@K8X|h* zLG>Ttf}sy{$o5Ci8T2}AE{OulhOS%7tOUf3%Fzy(x+?{QrvZNe!j!`w@FSs-iv$t) zoTTiE0)qTCT||h~rIW&p!25w{T+a*VtgxWUjA6zXj8Wl4>8_ke(N#{A%efXt2;KXM zkFEQoeWBW_V|VriJ^@(&H!!#J?T_cFs5B@Ue_J2)1xBVNPaGZx zDeb%gYu9$gUwu*TD6AJX%w@qN1S1ZA=%z4=`?UM-JcS_+s3<6f|M19w^KeSSyX)S< zIg%cF>>pH?Ier8@qY)ai36sodfGUO=^%@$nFEIyN{S7{;b&0}nb45IgUk~E{>;@uH zb_9MIRMGJOgj^G5d+ucS7nx7y z-kR{+?kDBqp8dd)%<)*Ey$Wi<=q8Nh#p*y?G5njYF1772u^0ao3mNUf0t@-Z?O&q@ zr**WhWA2~^YxU}`^?Nr?hK)LAX9>CULssu=f@O zq~V4Qjk=Ff1-x=XlFp(EBgd-oFG6t&CW)Ccql|@kcNYqxeFNzv~XATn&GiKuno@eel8S-sZ>5{kpJJF zzQ_Gzy(l;B?j^6YHE-$syE!&n^;SP#U1FRR|2;2b{*^;Ml|qrMzyHDg%hrQ``Hud@ z%ZBn`@XCwAsn6N&rP*xDHgap5cWwJstZgbu7tGWfnkf!Oa+xz)Z#JxP?|=QZ zaLz)P_e{zQo!BBtgg9!Z1ImG|LStYlmd$Y*u&|*y$Y_EI5a%Eb;@D&@wgA4*?HlA|GQ&)KW0q9-6harf%R<%tdzr4UY_zhXgS> z#SXojeu^F5V&`FwH;=nA%nst{D9=tCi}7{$w6d5Q+G*&t2ILqhgx>Jp`C4bcKiSL~ z+0o?$)yXDX7Gx4@Hz1s9-<~~Fy=|cfXBVQZTAcsu8;eg`!%yAGqex`X2&bYa8|$(9 z1~qPYuMrUK9P9$^5Sg`aP(n)W8`qQ(4K?Ke=Cj@>$h+4tNmOS`02mC4E=ILo#VyQc zRoQOF;WH#PEixms{y>Y;z}C)yZR~IE;EA8Ym2=P)PSg>I#(H59b??}F!>4}65{919 z@ElQDBv0VVEo}j<1xo8Ah9;loYuU}6<6)(2YI(EfG$MmYrndO|=-tIE2HE3vRRj+I z|1pxk{6Q3%qYlhDoenERKFept3rt^3BzyEwc=BQZ$6Zhl&Rnqgt_O8<4sp?cn^#q} z5^q1S#qweBH@VgMg^|Ray7&Y~OUGmWgMn&^473Bj!x@WRbqL3fK*Jb~A*xasFJP8B zxA_73JSdWbA{A6vqXVLDX(^p>_>8DNfYhN-=RkPwb1qe*t?d?O_2D^ss}7t7#+6pC zfzrvO>k+uSj8Si=RTS`}JUJ=cw{Aog2b^8X(im-*p>VNbGGa|xp|6lI#=gU-Q$PD` z&kx5lxqm5-xgd03G#h&zE_eLRNjztvri5}yD*ahXk5?B8ZztvUq~_Wp%NHgE*@lXo zYa~=Nk6g2YfDgAVNzz`M1)CTJZoEcSJesQV%r5@I#(%;|^sB%Vc+Uo);MpV~NU)#W z02I-Q!~hhLP{KjLSWnmQ+x%{Wwi}pLXK`bJIT&J7N7$%uyTY}rSaWp5bkrI3*`+c2 z(84R*C}&{MuWgVJ%@;h^OZ*?i4Tmi#RX~;dZP6MYxI{wr|Fb>@IdOE4)C|3X3MEr) zm=0MGJ4i;!|GVVCQ?N=%e+eT8+&;RmsDx z8{0_Fy3^*nL49|x(dZuWX)}$FwQ;thz}(`VU|6h+Y@PyM_zf@aVTSZR^u?n27|Le$3(F>`4wt64oab^rC4OQ7@Z4 zlHQQq7*NMSVKQ#alg*!E?BN}y9xq4zUgzuM`mY83Lk}s~2g)QVJ?{a}3g;z`JRATN zY3GF!4>lL5<#19(0o&q76(nzQieCje)nI|5S!Ly+C;M(#gU&kfHcl*_*YL^@LZSVO zEkau)siJ8m63ooC@vF!ahmcGf^o%CAQW4b-ks;n#@EqF0{$}fS26D@of^5CInR^{1 zAy_lm(r7+_qOiyoa^y@P5^~rRrJkB^iI^9@1Eo^?4xI(X+Nqz3?wLFVcu=GOzDd?N zKSAD0q>U~?CP+&#jwaGbb@P3)cgcEO9>_`9mG3QP!4```3#=|;s|EnB3&LJ8y<4>mVe{gEY_5-!!J5oEmW34?|jqT(o$6Jj)!wm0k zXV7vm#L_NwTf5br{5L0=)uG7bUhMRHuy7^~zM5}^W9aqR(Gy_|*S$ugFaN<$B{m3z z?cT`&J0g0+^U+D05ke2|kq_agG%{FQ_11`9lq8_^h7o|7*lQnwr{@->jLrCsszK;t zI$I_XLd3W{6#Ba*#V#k7aus|j+%jQhRH-Hy7|h7Xt-?J{GPV;vJ644QN5}fH==nz;b3tc`wnP179!BEu%+Oo0RWT~|p z2JI159%1A?j+Q2?c5pm&0DcgVKILQx_Ok+`&B=9EX1s?zJct@Cp0#6P4lMF@{Mpz= z59n|zi3@_Tn+||w+3(2a*TqUyQTNz<(Gu2jZVO{wJw6JYCgQ6_zt`@SkZ|pzCgO=+ z(mU#DPj#sRrQKF6yn9U(52lsGL zlX&nlkB1(!VIWwAdhX#(-050ty*$>03exDsMQ*oojOMSceDoH*YOA1h}fv)_K@NV}zUfm6xDvtSv zunTNz-Gx7MBjei?3$ZZ~s?N*~*fLxNu|vr50KE(hzQgku z8~%vl&&~PShP*^^cj=41Kn%9S=56uzCwUB0)<;Parc){X> zus8ah7!4?6k)~LABkt--cF69mOXRP`E)lQ{dL7qoucRO19w=WUQ+H-2w;xuz4Al6J z@VNE!Y;(Hl=IAR2;Cjtg7U2I-(>JS>51YMlwX$D{awn+3e(bp zFYzc5z!qTe**A2DBEg7RUS?jy>oCi!-Ls{S1f*yVxWq4qa?ldQ}xTnWjb0s3i z%=jl*lk$tl)MNPw^&wRJj+6nu_hk9r%#K!E7$D=VqDclFX z-{0G8rfz_BvYXB30Kj7odeiRJn_OAaBy>G0K8ypcm#-uS_ zQMpObP+>%G+nCpw9FqE~)xIeX1;3y1K69N4Vm?B?mrp9px&&d?8? z$hnC2IRDppUVI% z1akuL*A(V0De}3?BABAKE96_ppKA}!pD-TZeu&3=>x##NoVc8yf50b>+>~s;Lv4&} zxg87khTwz1PCz+?S&eNe({$s8XLMqBC32Q8iRkDcPi-~g(0Snq^3C$#(|p3{PQBc_ z;%d1f&xXs-Ria6sdISFG;UxkEa_PX>?tFIL11V4?Plsz-=#MjKS`@xC!pJq1_SxQvF|3PK5MW>PB?QottZUQ5LAOrV{P9UQ zIIvg|VOgM5AlKtWcO42115TEOun1jxBLEegNEyq*JN4G#O++BJ5PID3RK^6Q8*&+L z(4nk605qA(*yqSE6&zt_h9|i%gGg``D%z5*cxJ@2qAy&q-);Z6HN7})ja!3>E7&ph zLud>X$E=@2nrhoaFpI8j@QV<@VB#$`bbO^)ooOv-0oVrEI3OIv0KvVUJuZk4f+F84 z4W)gy^DfPseEei{(CQ6;0`ta6g#BC+S@LYG6Ya1@m=L|BEbvD`8OEMg})@cpjmhnh<%HzE&BsPYyATak zvz;uVs-;40xcDZjYqZg95p;f^2AL-j5iEvMMIMs+9$;jAqcvxEo7ljJ7?X!m=5q~xOr)nvF{RKl< zKTR+S;eQJCQ50DpMwx!^ArX-iNN5N6s^}_4es*5o0KcLEn(k>f5#>`hxKoLkIo>M+ z7>r7?8b(02c*w~#-7lp6q>Qsh8aOQY`XcGl-^e2MMOf7VK0}zp3Y5fJeT8iQqOtGB zJ~d7*h%CUeafane_gm$3unI20!kwAtO%*muz(`E|CP>lY{hji_SL1TH_8db!)_#X4IXMS9Tau zG*3!}nEDPf3-n2`b=j5Vx}7dy2kqGMoLR7j5Ypu2FjQEvjqcVh-|h?mad48axQK@V z5``tC1ERla!&T$V!G(U)T0%ppu+RIgLHn$g5Qf$Q8~+4GCSD=((y3Gp3+-7-@sJ*~`?Nt^8j*O# z6bB`q&iT-|I2t`ZSSR+s`RDDCP;}_qC&M7cc~P_v7JjS?RdhtV0I~f)x|!!*!>P9v?=ychhJMws>)OM_$=T$LV3>jI610!$WYmjygPkofwqkc}4=ndE z3LQ7NhO+W`{w#r-Vy%thLag!exfjs~E{sikJRLtIN&mX(O)oY-BKL7%!tzPd13~M% zB4tlDuSdNzF~Z^8&jH5nrWKsJT8Q#E96%C`m+Q%qq7c6-e~^sC-+g3pZ`C{?@?oQq zv%3soJ@jS`n{ZhA|49c0LkEUcbFi%Xml)xwnAPYY9ut~$~>Xh z=vTmODRk1O_%qmc%!9!10=XUy_=6TY`p9XA&W~f|a9)pw2>t;@bFow4r3CsfF0#eLm@f_Qb?!e46-xENQL5uh1`gtxGhp#^QiAla0oN*LysbbO%`Wc z3nxjygt%L32Ui#Xg1yR`7{$1WAi~k%ztq@Ma16X8P?0k%IK=l%cj0AvI3NHcvO+P$ zj`#>E`U~p(K`Q+x@T(1|_7UBr?*jhR{nG7Rfz>BTQ83~)_3E#mWFHTgLGfqLeVi5Is((iezKj9=m=rv9?d&%|d=?|i=y~VR&7R0!%9vUm%)0TS3AKcizSpO*#jNjvYdB|Fk#!jJMG_NQVXQD(ER*H?Vxw%El@% zUCpe)(THsK%8yQ5N?Z_0eo_?VMaUBobWC@FjaU{Q3}_W3B(af1qu9`@=(Y;gndmYW zHp#jES?U$Oa1+Dh2HMjb<~lc-l0vPdG45hOK^OIi@+i4jm`vKp(=KKgyvfdm1S!G5 zE()ZItxwjy1LtClQ7IEwbrE|YDN=|g%U2#HJuVDhE=_X3bPJV7HDR89_$rK&CXqs?Q+)&kAdK+)_XiFx~hq}py z(_t6|T#-d{g}b~5q+$$h!jZIt`Q}(?(py+(ob(;x|{U=)4;|mD-VHs!=7Ywud=hozFP?hI}>W zodX63s~GGLSTL6D3wZ~uCX~qmAGv^Y-}orfbk<^vlAW|W&b6wOO9rAezo>teiB=X32ET){9*OtfX%;gVx7MNq;u zG_Gl=Xx8O`3)|JT5m6Wp_c|k7r)a7ChJ-&>rOR0Ewz`~c8hjFh6C({PqWqsyo{DxH z0MP}D?VrxKMVeh*^F^O?XTF|vFGu4ku#fuIfm|O}Z8}5L&|kDq3*8h#LIuzYb*VGK zh*fL}9~!zHXOA!RqviOf7JNOPW|c5)4l!rQ@+CY)%Ujdp4JcccA$tlkoWCu)$9A)Tl>5G z$l8JYQLFE4Z`XIxdrM*?96@2!u$YZxF@!jBsq(=Wt;~To8<@QB?<{OvdV z&qotK$dLJ8Hh%-N!e6zyvk(DAL$@T{Onm= z^ZiNpr+?3^rcq~6)Kz2C3IOH)^;j?A*)yZo7NsA2)|P&Rj1@=qMFbO=c3Plr4lfENzKs{o z*TO3%9F|B5t4xd*D87&aIR6gt*`>S5;$5^T3&&U3kse+0$WEf>caX06ned%BdYGKo ztTosm?`5LtnLA{*FI1I9+8f!38vigtP9!>g9UjtXbguh&BXgaygABgFq2?jb@@usS z5(nK1Ttzuf2kzF`fc5faGiFcDC`pQ}L6Af}UMr{c17b(`cvSXSFTd#aF>gmkAuhPLCKRyPq9f56@?-vgB;RKIAryFuOp-sh~!tPMcinkaA1pht>OwCYzQ=CRhn0_K# z;!f_M0SXDBmhRo*oG{g;WhuD~@!5n<9|glqYTaxFqJFic8-r zf+cTgNKfHmJtU(H5^hl4>^|p?ur+r=stCi*#?Y`hqJ$j|`Ni;wVtS~fwdM~bRgGHW zSC@7du1xmqSzMQrt6KJAML3K^`--odHJQLCVR~Fb20dwzgw;!HK?x(Vj2Ak%hrohKFpsI@7!JWoBRwOwY ze4$0$?=iq_dOQL>zcHMSzm~4bhu;;y;7n~1J*(BpsvDgve^a--#dym;KlH`mtU%#M z6Wcaa>a(-a6%GoV>=|G_Tzm}&3Gu!FeRis&4hy~bTBW|`!R6=@+T#YUFt{iQ82ejH zp_=xcD{Rk(nVyu>Z8XlDoH0XlXLnZl5@se*y?1>TsjwestqZ>1Zu3_BaMWX8$ZTo) zRAeb9oRSrCibPq?p}0lnQ|L@_wotcDvEF+R>foZDx0fWsI{7@&F*olS6${$vwtLMX zy2f})N})C6UF3N%a&b1}BQ3br1u&h&8vzT=a?BHFGv+Zk;@=Ugkxj1LKtNP7Jc0l} z(FL&l690z+->~%wQE%Y2IF-|NjO`^A3q_nH_YR?&Yq`aefJcbD|GiyJUU&$W=^cwM zNKf=)Gp!K=nR7cT4=>vp=0FUbXd%Szn~7!}Mh5C(XJ2o87!6-sfu20>p%R0x;wFaP zjzKWRN292*&5x&{$`$dK_l|cmV=AR6>U!!r*KKBSc=!WN&kCVQJ|e*u(K7FB-&=OM z)p3V&t)gWpDS|6>a|)#k|Al6lFR}y2uqY7oCh_Em!@yc#)J6AvIv7n{%L+kzW!djB zZR?R=UuYINaRaaCb%@ye)Wyb;3plEi>8RE0_d0K=$qVf7`1Qx^_$_dh<71RNAeW5m z!`2_nP`Pw~6*j4nQBGd$$aG&cE3%0r)v=D^jrL$*!{>gpM!mrWfAPaScHwGeJz)#> zQFF-sW0kak@*&Zw+FlG&UFExxCcSv zTF8=!{Twdss|W!=Lv54QcguyFh#FUe$xvUg5sp+dK{*R;4RAS9$@=IESy3sbkf+aS zv|UFkhPW^>W<;Vg>>r;Anj6HF^Rdd$QTgTDsz%@%m<2;A=;U{Z1w{>lt>>;?#<4Rx=L;gsDeiU=Tr07Lez1v}?`XtTPr ze_vDJ6o_mJ^1(>I<(vX%;{z^`C|Rz*iSP(^OuxFmRTQP9hMCSw;!IW*tdygQ)|HYy z3G8<5_fhDSgBSq;Q3%ZMa)ivwqG=v(su-noj2fS06p(aBW(#h?8HpLQOmqvgH zGB^ZC@o^<{5J1pP2YIU&2VNUBVcaF_dTu2Yg;ST6Pd>x&qiWvay!!zC8;JM76I+}o z#+bvk-DE9L@W_6T5gD*9*`O3z>Yc=B%)#y>|nzo7$zjiA@!&j z1L#8oiYq*!QJM074bh)J&2BDwoeTJK=jRI9h!lQHK+QtDB3GLPRmmD%{=Wx6VTLdG zvqLNo=z;^2&0o=DH7AWBux*J!?U?%t%-l(ThoL1iDQj{YB~?(mIk9uLk}Axc)3TVb z0VIDPhLF>Th6pYyw5o5Zt-W`UmJtE#_N%y0m$yRe30{SFlDPcN#YTvj)qWvnb|I0v zR`(B|s_OfdFuD>s;mM}TGX{%L;=4ZC)S`7UHhZ!egn#m*OcjfIxw%TE@2S=FT4bIj;wJD;F$-pbG*-qm zZ`AzQ+Z>m;kA)Jv+Si=Z?quLoSWj=g-;PE|2QB?x* z>KkAN5;jJ(p^s#)_Q$W6pcK9sk6T~$ucy+cqjoWI)|>OVeQ4ce%oDjX2M^xJSE zLObzmuQ3>SsxL^Lodpg3=bKZsy?dDJ*JsbPwe%;-xIcQd`Io=^l7IPZrn#F23R+_HiTrZW|yxQoaLO zT*ZcwAngau9^4Wvve%bgt=k`sWxw$c_@@KBfcf3`8Fawx~zH+vqr#* zL~sVzHN~tGQDTHQJn;ICIS4W~i!){=plsya0G|X+WdS5xv0X}M0DJag z_;vCAC0DH1UNO?5t_nf(aI>Emy#v#nf`Ij|{S|E#< zGKtc`@$aG9;Mz=y>>xm7KgKD#9wt3$jKR5&tjCgFx64UwHB9RUIY=5vJTUSr%XKAE zDOuB^|4hWLM>M+hwENKdUiyKXnjB3eD3*S9 zSvAahm*!hmox!U%{@w{CZ10uFj`K8Pi_BI^z{V=z3k%L6&y$`3lzKw$bd-^$5p|(N zxE(^wkWy~`^yu-ww)g+LkXc^f5MBtc{1mkJF9JsLsLIe7xnO&Wqw|Qo&B*9-Lij z4eoBLK@A{zc7bYnnN*FPtGVL~@R`KMKYiMZ{+o~Z`ymv!Lo{r^9E z@4DQ^k!%a|QMAtwhvo2@Ai%3+jUyznHHL2Fkeb;O-^7j%5CkPyxNrcFl+KAW&;G5I zSy@%xT@8RBC_-a;&$cB31iGuM^0IQ}%GG@!CWu(oXhG2~AL}o(5k)Kn8>U97`~@DP zwM`k^vV!0^?(q+j94<*}zPLPxVlv7hn9R_WSpz(wAXC5t!Vyvxj?)`%zF&_;dJsD{ zNL21_2aU>^eA87};{+$U*%r>{ejc?_MFI+ugr9B;Ui=x+eTI789^ss@)O*tXR~!K* zlrJSWq=nc)@kd67R1iiN;p*sZcB)-Wq3cultJ|P!7fFD%$tiZsZz;|I!VQvMizMiU z70#d6Ni^Fftzsi2+36>okN#5FL{zcOF8VsqFLFsqNu%2+UQjBCj=D(#GNx8sv_Des z0#7}brId8vpAO^9ZxtpIAXK|671y_5O@q*yt85L-e^pThKP=}MzUXV$+l>2Hvuw7? z$qqa4n5CfVd)7tZGWx3aPn-zDKn(_eRW5thYyxYZUZf-~?YjvRrV z!Go;}Qm~a>*p!s05)Pub>j+X`U}z6!R5}!Dws~h%=?Frwb{}$s>Fx?x(Qk9#h@DX1 zVa@piGdipb8abV;*{4(Fz)cMriwMIKj(@@Zh5c^ZB{fIeZx@+8x0T#3*!4LP(nIkz zLN}%Z)kb{H{gZXA?}roO`1HxUs1|3^ZzFIXYG>tTu>g~qIKuw(bT%$=%6D4W5k~4C z^0pu9q&KRQuIjL9jS2xC8wqrn7!v=f8_p<-71j0vnZ+fAsq%YortGO3UBMr(PV4`w z`kgM1c0YX_X?;4bASJvp)+Hfj@^G1)RSi`u2DHB4RI-fCY1^ zJ^q+a@gue|PP!;hQjTd;7QjF`OPLxn+R&z?Ls4ze%Wy@QX=(MJkj?l^VG-fY8zOry zXttPpDLi_yryGTUDGH&;E8#hCbO?Cr7|H=X-PF=G8_DJ@&ZJv-JZWJfU12!s?Prr> zR*#!UhY~?N{)qGFw$tc-LeX>{DI#DkM_D_`Yke&VdR8FpyIw(#flwScxa&&SG zKFP6}ra9SW^vE3GyQ=!8y9G%^9cEKxn&OeAD+jbMpI`LaXjyQIy#vx+SXxJ0;5U$~ zNZ08OK6Ls7yTZkE`e)Pgi(JbqqQ_mTy+D$CW1%AEKX-Smb{Wv3n+s?`C(O4SX%h$r zAY$dH?uU&*FJmpXBBD#Q3yTb=U50_yN$xhKezpXV>|sBVBlE~n4Eyy6`;}k<$!v{K zuVa?0!MOv3SfD{NElWz;*9=APl5^k2?AZ%}=zU4GS@z{Z3B$jaGdV>-w&M}F-4rvLos2=5Q+jhs!FmCK*~mEDzCj?3jd z&TnN{M_IqCuXWtkU;Tpoum6=hp4QU6gmob}z+q<`qwqV0z*edYp5_WRhtOQnx(6wz zDI&#J8Ym*u@YDe>vKPbXH{{8|Q{QMNWhm%zQt%OqlE*SD16a9R&d{4xQXH^8AJlUu zUGCKGzrv5o?sGxvQ=zXHVKv3Os9gXRM)ZxDt0qg7esgKy2yd?hPzGY5idGzWETADNK5D;rf*CEgpg>BMy^)qwT zj?Kj)y>ztADf9UhxV}l;HaZ6YvOLByfPVHl;syI=OLe32lBtLwdb+#oK*=cXa&6SG z_W#J`iU-$yBiFq`2zw#6bc6@SrX4x+3WvX> zy=E&27o;D;cQ5SO7KBRYcykYZYCSbU19pnj&g*&9$Bg4j#=t_9;zkY~Mw`@RxJ)Lo zXqXYEj921=(vMR+J``p9YryKB25yzjXns*h-O8zQw2^Ocg_LS0!3!W|o7du8XHtp; zfrT}oEF?3JBlPOj>C7XAZy0*Dq?kKItP!(;rA47GjQ<^dh6pBnU?4^uBIypIeDTE& z!rb>5mIBk{5b+Fenn2__?(;OwM0f*dLYY-S-g+J-$tVZ^7N-$XiP97+w4Jf)QrFVz z@(I>y>^r24Q^_-YaVJ^Bm+Sg&%kRu?+ztDn_hB)I(A`OJHJ3||x zD6hL>R;)y{ChjQ3C3WryMut;)3SoGHnF;&tiCl{lbTi_NRXQf+M{_qN+`M?P`_gF* z!iyA#5qAa~lTLfc;W{XxJ9iLIag48Xq4~GW1hD`GDRS2c_4A|6UpFT7c?yo8Nl(ZH z;^m_BW`RrzewNJ0?K2b|*hyeE?{oL772fnq?xsE3VXAj4oD|Rs2+x)yi8SqLT{16} zMtU7-mijU2AJ*kM%Ti7`Y@8~6t@UMtBLM}UsVOpr)x>CIbG>BHIrS*}sU};$JUa1O zQua!HKmaCQBsYckb9sJwR8gJ6D~5yGtFZu;z3iu;L2lLF=S8XTCe={GwUc&W>Qwl7 zG0^$tQBkf6ZwSw;D6;lT^h(&3&%%=3ugX?+1KQ1&Ux^O9B?_}CkO*SPqYMkPhPUrF za^d;e-MQDIdEOeqh8wbX&Rz#Q5H6zALtx?E3Ik!a8+HhO*5eTG_oc!ou-e$$^De)T z_9Ub&C4&4~RYnu6XIB|5Nw_EV4mxP%8;+hnJ-fs_Ml=^`M>Q;kds_0-XFwervbSBd zG6(mK7zK_5g3iX_8OEQT_wcVV+odqwiPVTjf&bBn_#dZW4-Al1;w@1^iNRqzlAP9y zS5bRo2CV>Lq7_~nn=ku4uu@t;*SC*G?vj>hV`FNYtX z?~xDTr(`*x8)f8Rw4TbC%b3hA#M258NhuFWbsrgARt7|DU;5n=aSBou9Kn@}H^?)! zRX9^y(V5a$Q<|@#&hbXdAaA(yFebELje<3i2s5Rv)3Hm>$JF%8qe$R#QD)~ymdbi zzKcG^ms-D>RWM9~jHAx&+i#EfBOLCqbNsX%Yad>YvM5a4!{Cj|h0}R8(l^V^3(R^# znPP+PHp%oA)rgb-ev?<2pl|@}$3=z#0AVE4QwnC>o z&8}DOFgvgmpPa0GC*y$)FN|;=(?F)If9Um!8vcslYiGwp;z3Tj{cdO4m`tV57Qaj^ z%mX*n8cOZ!E*Rwke(W}r=3svdB2Tz0%%!poL^i{uT_W& z?2m=#0c(IZgD>yPOmj)ne5a^J%!&1vvp7_#cbs|D49lGP-85^ukWJvSpu9&45Yvnh z3tq7ZhWW#J2e~C`U~vfyXARpKPdm+A#>~A9FxWbuEgZ6p8NZ^65cYzr2c_a9cf>?j z!rp$1&k0BM7O|TvE6AoIEgPrFcH&Y83ve>aq7bX*cIQSsI`lUDH_de z0+srlf4ppu&yddS3@#zlD0?0R0w(Fw?x7|osKH|(+hUxjy`%Q@(-9?iCN9{%fe=BV z;E?h&KCr3h8xOMH286x)?M@f$c5Is%zR+6qY6M0M+Qw2rOMxl4Fa7XIV97Dqn9>u6 z_ygCTNp0nwVo+V|zjzJhSUww%TO{W2(9S4>1nHRb-dM?GbIjgC3+bHm>I^=vnrT-- zQ2|b-Y}WB3%&oqJ&^j6vMwd`=u}M{y(8WN*j?; zprzs5cbU%9TxnqCdgc%`+3;*U?fEoGH+2fm7RkRbHL(sU<_Y(Y4cacX6qIq*H3W(k zi&^hO~p7goKr&9c*zvtYw62x%_B8 zs_1V;=#jdDcR8hX#UPC@JJa52Kc+BA#2B7Sl{yz;ls;@dZzE|$l+f=^yEA_S38MQY z&UB}Qj@F?`X8;V^NcTIR$p_NdR zitIw)-tu3r-)DyT`|i2$Gwv-?;{h>H**qd~+k9}KfceIS`gM_i5S6c8zFSAV{M9v| z37os<8BM0Ff2ZZM0W&|OSw6)5h8h-qs&jNA-Ma$%LK z1)z@Sgf*0$dv%QJKdK+jhOaSiX{Tz$Np~SYCG{*n=&zVqZDvPEc3lT7*fqq|HB=1+ z%{N$sjZn<@c6XkFLj?*(ULjLs(1IBhKO7#<2|Psty#s4+H#x{Z=9Ii^8F=)L8_*wx zgMmV-*oUEzFKi$Dcj)lk0y=bZ8fn#J+3OnRy}aFQu@*k>OebpK(xd|!2b6L_1AsAP7=DhL z+H|tr;f{!VFS~ zDNtW#Bw`lOLtO<$`^aKy2Q2*CI*lzB^xb$v^P)~il8s1vDS zg<)W5F$!E0((@vgocI0?3QWQn`Z)b09{oD^V{s;oUzjlzM+y`P;MjaM z#$}eQgCO^o0tM<5NJN~Jff@do*wNTVP@vMhP*?_y>1qR`vU=xe6YeKy^jD+a*`ptS z`r+}-id`FLmxBwC{6=jPVZtK>fpW?iWT`mKQYi+6++Vz5P+H>Uh$%2x#p}fr>h@K0 zayr8AXZbb;ntj5bp68r3F*;LubKs+sPiTFX7tq#y(A9e3xIO#`RW1KJcD!CH0RHJ|uk)QU#z~nemQ1>$O zq-Ez+Q%!j9LP}zLz?^?U$qR2T6G^alO3gf1V5KiO? zf&0i-sMN?jUr}&Z_QW3wE%zZg=rWjy4p*%oJB=S?BCHiF(_by8Hai-$bG$b zA2$CCsi;2iVcu>L&cPexgQLpiyc~dR@f#|?4ZxAsp+zKoVwZEAP})c^WAH_Ubu*D$ zm`a7tB%D%KZ(nmj4aA6*9=dORnff9bvc(in>Hl&>0$}E(g3B9P()q%Sw>OPl8aVQ} zkxPxn?T_8x$$hd1xNu#FgWui~Osb`kmdeqvK#q1b`7HaNI&BibDp|4i8fFpS@%u+_ z4ko0VI!Gg&`Z*fIcQXf*4-_c^c*jDB6)r5~eQ;dcUr)O@MQw~JhhltrxGjANAU2uI z;Mw?L#BKB=KiszT=7NoJ1s6TW z>2_i?rawndGTVs{*iKv++<|2*PcQHQyQ!D%tCpebpU?X}^rpZ)zyn9~2k_nSW&{2| zyI6ql9oVE+^=--mA9tszX?@MNm)T1JXuQ;uF_6jbntioq&$QG*HRddzxi7 zwb4itgI!o2Yg3;E$ln=yNZ|EtM-~Emy^5vIcpaGssI*nCaO&(Dlk-eq9@R|XbTY=X z6OP|gwjLs;7rAG|v~rBiEP(h&Czu_PE1gb8Kt%NRq(&bSo;v zy!pxM$A{4#tihdnx+>< zd5IKC+(Gn1-4A_Ccz|5z1jP}ko;Vj*I1PT0pL}RfKL7Qyd)ZA&5pXnXq68L|Y+aq# zYd2%zlV#~;R=!xj-pvOao=?m*`_bR6wj;WGy>)Zwf-N^Yoqo41l~)er{0u;YNQXK@ zb7}XNZ&1!c%UC(fA#=-bZBQ#~St5>#QQcF=rJk3UOhdNnr8xY5U@$|J6u-$x5aKG(!+f!9(Gp1ptF%D=2!{RX)?SN^!*QX1$^xO7vbb2E= z2T_V5sl>pPL}0(j=#g}NKb6&m0pGg=HjrM&Fkx@|uopoN9}0q3bV*DWqWj+@bwShs zFBC1l^DMh)a>F-gz#;LF8as-xNZ8jNPA83>Xs@t;T(Gg|Y;O&_*UAT?NL+|aNFQo! zo^@UE93d%VPql70Z#zfAN4@T|9*_#m1Ce?6(w>XW7VWKtQ#tf*2SygT0i1m7LM--j zh7b$UAaQT}Ba_D<7L71!0mhyk9P|4-ECXDypBE`FV0lemLM7tU+rjoG23(bhMJr7# z8|+OA56kk)2nh})psF!AeuGB}tT?3McDl`$WB;rf77kW8IZg^J2e4VkMEK}CHY(8x zNth??KMzl>^LEhO+}_VJFMCDkGV&}hF?$f|W@z7uj(Vl5CSxH4+42QW|Ad+!Opq!Q$8oy;f$Z@gK(V=5C5znTFg^*BvH7~4L0gYs6!iKy&XUQU z--M+;KJF?eDCaB6Bk|>haeT}uRAm>7lHlptb<-U9HJTS2L~9j24u10rX9Hj-!%>0g z(4L^ZZQug0@3mnPPg&U4XxTqS>8smy$&TR0!by_q#qo(lTgpe5QUox1bmVxV=|{=J zNF}z>WFvy|6n<5_6%mMXJPptcR4Vzs^1BFqLKHoM{d`B93^)c3P&`Nq6KFitnxWUi zki4k6;xlM1Z=%NMq*ie6Romy!Nn`WFCk~)FLjJIOJsN+O+M6D;Fz=FvaDtmhRSUpZ zD*yn_8#K2@ms9AlK>MbBfwP`tV7ujN4$!A{OQywAT4)o>uh{>P9+T=phYxzMN7V0G5`t_Fpgl+udXtb zUpLqZHJ=scGMR4p zcf-F_<5>UgKlcPx`0n)Zg89+p=SMGqXdjMWj)p_nV3Q~>{16O8|I4L|Du}Hvd~J(d z7K1IyyD$3R(n9zP7LC>)9tXg~v8?dXCfN#zgjWP$FY5l4UNtA};)RU`K~mH=mr3ALLF}2~R%shqPhN!)ZDLv_ zpv%Xa1|7_$kZ}Nq+(zg#c}2ykd~370k-umIIdL~=j4eCt`Ac|`cLbigV|#5bn=9gR zVb4Ww9VHZh?-kL!1d-HO5sqT$;`@lOCzc~Vodl2W6Z&6*xVKmKC~+*^rju;ewg62fmkpr7$$tVaEA`|swaT6;f&D;G7$PsDE_#Wshd73gVFQqBt__$iic*A6a z3C$MxSfytdosJl-j6%7(coWc62rL&z``3G5vKL^R3Q|~ zF;a(OAi&x{87ZALhh>-_H%S0*^~!#v(wxS1WXQDZ2DM>Dstx9RhqI@NSJTg23I-9( z9W3=JzVlR|RRAJn+EifRyMtP!|osLeov95T_e1F(nqo~xJz zE4u`iOh<|E_dQ~6)w+`PvCG7VecRd_Vh$dpzoEVYV9Qv7q<%F*2y?dh z(^TqV{0&x~cg`_6O!ZIkfh;_>jw|J_J=v4_bdgGzR~-)>n@xO;1!R}Q%L#CWt<7C7 zU}VzgOnP;JtZcJDT3PC716R;0ea7f)p_#DtTVa_iU_dx4uEX;R`)UaWT^OJe9=zk) zTM(uWZCZj(Y>|zP*u9es?yJo6n16ZU*;pAsNP2%f%GO6iAFlWId5Nn znX6)Rt@Trv^5aaO_NMG#0+(rL7tKH8?m58PVW-Oo7gl|+p%Bc$J9ScQNg;DX@s}g` z5^r9_p32WjCDBBcO-{^t_ z>bK&D%L~f(aB33AyS&DBEc26nEEHJGh&m+$k*KRCrCP=p6P(}@Q+N;A9Z#pn^N#RS zVZcUVN`*d)UoxDJ-JT&fkw`h{@rf2+sr^IKo2c=_N~cWlqaW-0Dn%`LIUD$zqf2F~ z;rHURU^nd_SQgiGA_Z&tx-c?U-{q_i;iy|`mPpySMAHbSsoOBraNLR zT5tQn;QI}=7izH0A>rbRa98kq3u7{O;jUA7wR6{=DDClSJ;jYpfyTsl3b)&a<6)`A zThK(-dNkt*6z1FkB0gfTd{F>jQQv>={7<0|-$F4v!*LE>SGNdFD@B?}Jpq?I6S_r~ zFJ#w%Sp)XU5S`XjRDzlycH=b;A(b(2@bPfWvDqp4$vJ_e;S zrQUPXDiIhTxE)+=Ra)k2?_xIsW~kG|huvdrQWSqJj|jFsQ9f+t9Xywy!v3zRU9Z01MW_9^kGPL5MRqWERJD3F=d0D@?vau9QK4M(tzWXZ7$<3KMA$ zhhF`UZeCIDwU4M1n9E(|o=jV>k#gIgq{54#_Mz_zL-s)k7ouu;`D7%WMO1JSB% zc@W@oF=+#I>KlT78Ty9*{;mHBKkxJbi`LQK9KYw3LS1qjXr_@VG@kqN4S6n>UEy+_ zg?>UrUegqk&v70y+B+A9l-J@uP8=7X)f{Yts?^YG!D)%oOAs{M?n*rx?7M@ZV!!H_ z-r#aD3+2R$K}B`kg)lkG2api!0J^|Ep`$|UZd)w99YfxWYhE^C&9iO?ty=8A8jalq zKnXIIZ{rA`Vox^!;i;{7H{wy;YA~f(oWb2D|qIXvyfxaR;)izS@W#pB{sjKe0{ zt}|~5`{xj&zPL1V9@xqvhMQ)BSk7n*{3cuAH`xMj!He@nbf*fb$cF!^t23Tl00RU6 zLc6vQoyz>(X94TCv>UIWcMF2yz)7uz%he*oXD;?@07`z0*%EI#)>tJiA2*SnTgeie z-4`GP=fZ)mO$s8IODa=A(@&*JAEcPsRH4=N+Af-hCYp6nVlD-*X119f*2dYjY3R;a z2&YV|18V#SE$2N{^VVT|0}FY@z8UuXlfzF!82)4J8m(%ex}|6lkbQI|P4Na4+FbK~ zbFc7PevN57>@2?OQ6U(e`+TQs%RpomwZzD4!D}q1slmQcp>}22Das%SEaTc!YADuV zAaXj5d`Eh@oW#ZenVw)oEHODzIEJYhV{SE!QY2CWhb#yIl4wC;gvdl-W_>bA(0O6R zh_Rf{T%*xjj6bf9n2$=0vD#I>HZhD8kzTClgz0gs2uMX&y71Ay3skm#BA2nLjMDCD6~$C?K{|q& zL8@`hMjp&e;*ExW?Dp{8%w`?J{^oE$_1R4H%8B?)1(+qTDdWT-mMt6`43xKAgXh9DlQwg0{|`NJpeP2ZMjtR z!%+>G<5rfsFSG?zD4ePSAPsIn0-exFbxzk_Wz;8jeFbH~lS3SWWt6$}gv!}_myb?= zMZ%cLu+|`#>z%C)F_$$4uujTzZ zKn!OmL;${4SUIIIhR{_b4<9|F9N(55xw_hoGp}Z&m|b-~T@F8Y&(<;nV@17Dpad+M zk{!Q6N(PH08DU7vt}^U;_y5+K8yU#=d-ZQMZ>81Y`%Zsgpy$sxON*@h8#HZ1c`UI z(*-wofn>|0+C7pWVE3@z@<(fQm*<3bDhSo0JOWa+J}7%mHB6LiELMSta!oMo8hr#8ml#6Vu}GE;pN8EA8EJjPbm9K z%4C0y`?%QlQ4AV~T^WezZDTx#Gz4l9N}iqacqf^1A84#_hK#*h;aYZL}Jinn_GSrCk8{ z=!Iy&QHXaX_2wu6B)@m0*_TeM8(W2}Uz#5>(6O@~>JP5-^v!+nteb6+NyXI_XUGY| zdZR_29u+P>U~q|ZXj?&y@)k22we&%yjJPbqzr({3g@K1dvXG$M;zdrD-6Ng^4RRgc z>h%b`xUKRuoPMoCu8ZJM*uM)0D|b=N+}f`Vyo^X3cW{)b8UY!sqXEPnH$HnxEbQ+P z_5`EHlGVamtwDrcDeiGVGx#_fkOVnSsRX75G)wKz_mE+4-5Q{{Vb^SURC>(?{Z(HZ zL@n@s2fT-=Y9!tGkQwPK4Z+Q@gqO{%gJa5V_p0Cih@MfnvNP!sIMIH39CFf6@sw z8xxErbw+z_xg5LoWR6{|M>Ig!P=hG$Xq4vw;Y>#z4e%tSJTOa6f2g_AyW zju#cmK^m)r_AkUYIb=}PBk~?6V`iOBX9IW2iLep#UQ-hJAyOZy_WpD0e}0Y2tpZ?} z!dor06HCISata@p#uu$j@%UFO2e6ny&Hm+3#jK2)fqun;PP(v<;*4#EK#5TuQbC>{ zA%Z4As%2xEqjh6J;EG|5_ZRXiPA^d+u*S-RW|c^W0O;^UxQ|iP?R`jcjLwYViiMH0 z*nSo;VU!5MKdY04Y1DA8#W7X599%8N=9uo@fBjjHO+aAiFRJ8#P(_5#Eq7c9f5R(^ z+w4L+>P{mICkJ26wzD!G5o&!^nFi;nc$(a1n?_o0jGRQUgG%zbO-QG-v0Zd~k3j8BV@jAJ*xOUzjSa%9c# z5}^taL}Y8_TQPLYZ6@WIxWD*^92=iF#iy0Fek=ajwq%HzV8-K zD8P$l;tv){MCPD({!GKQV0Fx!Fvde0_jyh5Cxo}ctwOi}k(n%%3Kyh*b6vz4gLVBe z+Rw@DwjTt5+>4wP?7?i=>Y@(wLFvESNz>mVANw@@6f} z*=X=~N?JOW14L%>Zp#eJ(8xXu$|GBxmTRg?hxmg!?2zJo69jp_lT0XFIv+`eOZ*WL z_q$xlJ(M93CPLXfMHmPjn_>i#!Z5A#Ps1|B=1xT)_{bV1xsvq0UT3Rw9l=zGYl)F8M{{4-!!M1*v3p2%y zKjG+x+RY5Jy}|ZR!4DwG{n(F!ENO}YbQGQJ-TqncN3L z*y<}1XTuuoSi6=Se9|Fy9?S(BCub7PWW})omU&u z<`1;^EOW@=hj>_6HDtH&5!v@8m7>Px%YKjT-cY%1HVBxXb}?NV>GkMycL>pEr?*?D zJXWiSkf8u+eDi=o83^Rk=Q`lY-sa704M#8{$h~ah5uu*qx>b^)q=jkj+rKN&!E!7g zkEN55@A?+`xK)oF1Cw{T$^-7%v=>pP#E)kNqf4 zb?j$8t-)u<+04(S|^kYn;@u?~;oaoWNG4DVbFn)sg2wCscBlECl$ zw*TKRkHS_rGyrk$14bb5K{Ph|!Psk#`5l)-e$t}eOl9Q?>#*5Ka#dPO&Kr;UT;RWf zQA66+f(m_{XV_>weHt2!nd}>WL@QpxIQ}z4Sp)}p&BW%f9tXk54|Zf!7~fU5bv7Nf zMR*q8w2eXEXAo7o?v8&-<86kJxEf}oDfA9kTPCNmQUhl{yfyg?>QSWhyMjVeLX#Lt zsfOySz3u{QTa`>V#^$hq(lv>}Hsc+ULaW%=d-F6o)~`2BkmzF?ictvdhlUZ_VKD`W8pOmoB=rrb!yi<6 zaChfnkl4bNnH8HFL;%LU5#FUiJD-4rp>qf)D`IOMd$STqP_w!jN+hkdM89YB3Bt>w z&cG2_Z?)tgV06X&Z8~;hem-=1^mo*XkrE_2e!kt5Le#;B&Y;uZbJubX+Hv3awy?qP z{DNJ6ovSPS`}hNNq9EUlH)}(V8qk}Q=!DR(rcS7sR@SUE*F4|a<5ez7=!07hrGY0| zwvFj?XK*YSf8CCaemOSToS;>^3;)oY?g5MKl0Pc7hN$8btaMa=D@?J$uVM_zRoAy9 zmVsf^Q*Z7uMEe9bAHI6Wqk(yQ{4t;6M_cF?Wuv{kvZ>EwX$5cs$i~%lEhwI=iI)g0 zTNMWHBlIurPc;s7zG`NK>(_bMCDb!t@iGa7xA2E>Z5-^j$eh?iSKh>L9=L&sn1$Gq z$AAlVLlT1q7al^PkGZ_J=4!35@wdW6MQt#UP~YQkk>$kgWmk}|dLvhgJ->B}2BgZg z;YM*(FGc^597vtV3v~vB-ykjU?$O!RrDhN1WKq%RbbII_{qX}xp)Bb{)XZ>kY+O2)2EX^0a69(3h8B5>E%_fmR=6Aq;@x9_jf-4z`Wr%&4Dfc5 zuS>k^@vjlGqgl_4r31@jy)HN;{b6%l;wkNJbDP+oFuB*^0X5Pk2NPIS3(Oa=CAC7**r`h|`;ux`G^sAyi4ag2e&^~p2bR}Hq z_UY|ln=CI2-V!B!<*x^Nj*A-^4F%1ew)kvp=qI8wEyl_7;ANk`=uQ0(GE~YD@1mv* zN{)Lnb5w>Za&$Yr^JecN>n%rWbsBM?6WmlBPc?^T3^JHypJI6)Za#PTmu4V9UA+a} zk7;lERk#S{h>}sH0BU`LhxsW6r9ezEVR!Jxnvu|e-w>40G)SnyA!5}KMV|NfUX!fH z2IDfL_hN!}J}~`9{bHY36%StqAGnLa|U|)DYBBm}nOoAmBKW{}O=sI~wRE9<_b$nod2p)(ExVB0kub@k;9E$6e%O z-7x?LkQIB=$+JYJs`P&zVZ;%QNL&HU#yf+{Y4=Npfb$rfP8foV_E&a)@ow)$YNpX- zDUooLwDp5pk8WaKdG}wa@5EUm?xZ_xqtcc4&RhSOj5)a`msGGlZlS{q$498l*=e?$ zi?E=iNzt*2JqT3*xI8p>uAC^s0EEh9BnkvKbPMc2F`@IB5undS(5lT0;sn=NFjA#+ zOXO|pMjjGPbad2gn-ZQhjMmy*Y*#~H$Nl%KKY?1I!<);U=xAJ5(|(Aax@xI>ri=IB zkMlO-CLPzT@LI*S7G4#{Xtad#>TPDPm+Do#x$l_Yg^`+E?%FWIOc*XB&tK#`D$H&( zM1e?>N>v-Tnxg^X(&}t(?pk)hL=2NRdN!&K<(o`0=1>ovWQ;+!GRYYKeJ`Vor5OAd znzbM(qnVG#1yvB~=~GqS8f&XQTJeV6AGswR=_SHvt(*U`zV!6zvwnMUde$z!J^Ec? z1HJ1_&U%1-G4;}YK)&5tH}%kiF*7z(b1;iaw||!e5!(BsL9e4@A5OC;=iO=N z6Ym_V^dNvh#bh-8nvcdPK{`uTJENgU$;WRe=_p!kx6!IdTVKr@vKAXmln-8Fbr;kL z+SH~1WX7B`z@DUB&|q{YW59I?Zgf-xI*~90r0{Jzt3}&eVD!5TL}95R?tbb|?VnNI4SB!#>gO)2Fv>Y)q5g|KCnRt|o176->Tbes? zG%(C>i9@AC{SdJR3)orQV=yE6{K+p{V7}=-k`i?w_pUpSea1c3&ZvDD;<+-+=vPo< zv|JQNH;MhZRKym}0b(i!Dy$x7gC6E-l;Ww>HwJ~H)JUi3vvsHx@r(?Uavd82=Mws9 zVt#XQ=!mqpa0!t;kC+j24kt2EQ6Fs=|Gxbee{!xX3fg2_yWC{2sOE$%f5Mz zXZxDkkqPNYz9#GmX3asdz3%3&HdJYk&VM+8rV1IB*X{9;B7DxVAwcy_j_s1TQy^i_ zOr)ZKa}gLc0HNL>-t`yxFz6fIpz_p@pnot2dv)u@6SzrFat58SxGr0j+^p5ulQ?O~`_%zD}ya1n+*;gTsSlB5uKX z_}wHfVHhSuPB>Au@AO3^P{B;qaTg;d&z^ZK4`8-?p3OkCk)7_T2)E1AeSVq>@jQPM z0Y-r`<3po415)pBb__N_acnIjJy}*CgrHz?#2?A*T0n@TSifUH=+ML%DT!5t-z1K~ zb{%68v12sQ9v20S5KS0?Ti8N%50mL-u;H%K3(1Tg90O;F&H?87;qqSOtyg|@(QkC6l-AhL8ImGt+@?rL2hq|PGw`@M>f>>1h1YPgRK6J#-(Bd8(Roe&qf2sVt=tC ztC)z}iiHU|fP0PobIjv)$44#hpVI62~T*HIVP1^=zS0}?F(n02b( z?$~AVBUCorj2iIP!s9~u&MBKyI=nbW+~^z;SdlR;7Yo*@1iMwQ78^>i zE^5M}da(U^3^OnfxU2IUt3%k*McExdR|f)JNl=&p1>_9(7D0XnHZ+OemMw#yk*{D5 zt*-m2(GUWY4jPaGl>2H_xK7}-I@87kgAdISQkD$EjbQqeQ|z%n+p?R|L@piB$Ygr3 z4E(%^7`2#5!8aCp9UX35HVbouSF#y5x=&)k#f;F0%L}qlz*#A!&Q*Nn4_!yudgw^L z$BtwzyVQg?@u^xgyN5}rdYMFQw4V-*NO!{ja14W(YM@kM;>mjsk1Qwu2ax6<9{{X= zS`N+#h{zp9xGSb#DZCjE7jZy?A|t0AH#%6&Wj*ue8_Zl!4@!Uq#QnPB4y?IpcixOj z!ST)L9)a0)wzM25TZ3jCEw^Q~hEAmsj~I($m^qK-2gBUaH2I-y>6y+=Nrm$685n?l+!`q8aj5ez}FLMGqt__X`6H#B6-(fI(4Ic8oTZ-i&^ z^G3Xe$1S@*%=o-BkJ!d$SU}8#Jtb8=t$P^_}Cz+%W$kF{yRiE5^*kW`t zXB$eFPf;M2A=W%SRSWx#fZRbpzD(n0U}P`O-e0%k1g3@>$Lec~(aO?)nNVn)RUN+0BN;q@2mig0@DZJ=g zP8BG7QP@E|nZ(>oyue-T?UN@VUW|K#-V{yi9*EDUfK5TH$ic@0vw-PQDf|tUqZOB~ z#dX*F=*T5;OTukhvk4B}Opam|D%igsR{00I)Y3U{(%C)4V&l zmDOUfLhii8b2Ycn|A^laZ%I3YoD z^v0o6i7EB=_6zi?ZqPs%%2PgyE=-hpi+MQfLo%Nw^^XTX?T{|{V+ z5>ergy)~5OR4{-^Zln1`<_tlMzA{X2K1|Gvy_j3kU)9%m5M7196!lyh1k`w4u!v&a zvrVU*g5tkYvteT^g}*>pkv8rl8j9WQFtT`IC`@R`Du$`pbS&B4oeWTyMK>ISJ zzO4sl`^uQ@H$7US679Px+%X%DhTX{}y0(U+{B+z#^NWu+wN+`#hF3;m26mNLE;HC@ z5&i^AB{@4A<)VNtMw4jcwVE>>nNrE8_T-cN`8}vP4H&i2nHwt2SHNe+r#;V+a~^ch z+bEpti)R=$j`mjf(h>4VQbYJNC?xlLov-o|ND9BY^yKzYq=?8=pW*yV}6)E%rzvj=*-+SOVU?f_|)6n>_$J zYq|5b_p6}T5lu#J`5KIdL5(YmD{o3a;ORy!eCws@B~n@!4_XWxDK~OTL}ON^AQ|}v z8}m(Us6R_q(T=G@-n_#8Ww{ZFzOi9NEl664(`X?411;pdRxLb<$REX3H&ofN=*O7R z`Q=@E@;S}~FyRlG0H1nj(85&!mI#V(dAq~@&q|iEz{qd)8@N5%C}bH{?ukvL+77e= zCunf9C_+1d6NBUfro6;}#j*(lb|=u_lmSa4CB#?$fg~{g#qnN+pb4lAERKxCjlg@= z_bGi$e#Ho6Qq_7Xio?={nXIcI;FjF!pWFM$nM#BPKHajlGqq!!5U}esvgXI5qIRck zVuQCm?#3$^W+AOWbrC#AOYp9{?a$=o-o15J#F#@fm{~T`6-@JJX=f9VMvk!bM7~*h z_htvm{SA5`Rwoj&P6%XuSq1lC&}%jHh|Nfx(tYD8v?-Ae=Kwh)gmY5i zW-uBAVw)Hzq+wbCm@a9dt57IhGnF#A7H!amzRdvI)qG%6F5EVAX3VWHN z+GE$L;>SkDz3+$*qeAY9w6q)wi*iyCvCuE0ysNdMAVpzXZmsR?MY#iBbwsNURqs@g zjKkq*)h>sL(;C(wZP{D$Xkyn@D$kWNA7&pa1X1v23vNRv!La9aMwI;Kz%9w`Tt8OQ zM9Uk#+tRmOeZXY@-P^2&Dwv}4#4C?6p^LSAo?)VtviNvcv!0TSwElnk?@i7 z_k#gYxb{0Wabf^$rd#N@34@FmKuX9iJVXwy;lcvVjWV;jN$vvscZ@}1v#~@?b7PE2 zPormzP5I~NM~!*N`FB+(K-?kc=KH$nIn0ze=7{7`9kl5gmX(&DDv;o$vtA(FR7xiT zYiyPILr{cH4@h=+)<@Xr_hVhXznmS`P&FA9LJ(#4q&PGwC~G6|aZ)S_%dHkUR_xe- z1U|Y5{NeKa1T>*MAAY@o#u(9N@QO9fQp!-ol1Ko_Pzdqsb62Tyk_`;pgoGHbx@hqY zS}Ji<#YTxR;D&T2TA@@5vm)FuGShOMOl8R#yG6|AtOh76F;#((l;e1UCZK1%%L~fq zG=C)$9Xfr{B!-{+OO&u(Wbcl_HQ|=V%XO3TkT%KGBYcyhOChtec>qNomm4inD?a7` zNX#p_>H&iEB^{1b`5XSR~lQAH}-WAMjk7*hTx1BH7Adsc3kJmh($V*|`|g*YLx z$q9+bqPt^Mq&@%9W&Q=lSd27jcK-#hjhO;AD8c%3(YI-!`E0B4EmZ`t+@40y`Uo(7 zoI@r2lRb)~Rjx?teb>|4-;UYOP6nR`-7i0z3s8bytom$qdgLTdJ(uy`r89q*Pdl%fQ^kwJSsux!5v7W08Qn z3x)lC5ei1$4wO})q9&BxPO;6yb;&QKD;I&}vsMoe${IFOiU3|`Y)4xC`BaOCPl@N- zlk4^c)`^Y2`Sg0kvk|RPYSUgvd%Z*ms69I7qi|+W3Iw`gB(3iNX zzC`Lfst$LwWy{Cf$IR|r*W?rl!glnbh#J~`h%i8s1j@#zm*>TfFEsRN?GH60?;whK zRfF!RTxh9eT16>j%@E=~an0#Vma0IbbR=h-(XzSfpX70PeM2|3tPm6Z6}$Ek?bCz& zg@PHXGgZ2a=Jw=sk38_u``{WMNZ0ViO;_L2MoL6!1!FX;8thx_%!#eDY(O)?ig2w$ zEDGU|ud$A(458JKb6`;)a#4*vb-%SzMMFN61|G^bqiAf{V=!bi(h?1uKIhhnoJ?N` z4p#LbOoRr%%L|xqH!X^-k?xykuzTFmTX66^!flS->UR+X>uHKkV#*`M!A=BpL`MKE z2DoK5WR}s7YF)6jFB`=(nK;G7BFH=_T{I$wX#Q4VpDtME5y1inHAL};f3%BChLh_h-88&7}#-W~IC@`$rsNxWT#Nvp!|@~7mBpH05Tjy0iBJs4&JoU;Ci^KZ*$%>d|$L{Z|E-&pfB3mk3%VD zMtZLJ1SX$=8+^_&+xoocxHRrr2r)wzvo(9w8;*&?k<8KR<9=3>Anmp%6NCfe(j3kX z`$F8wqg=%Zf$SMebp?6Vy%oY?Q4w1zUwC~73B&Ul4oJ2fybs6w1ThlP2YZcnFW@J1 zEzT)~8Q{&$?S0Jg==g?sX(py{J-R%hLg{|N1FFH0lixYI=m0r{HyE_P6k6outjl7i zbOQKDW)WfLPK3TGQP6E=7x74}bLdh}tXNo$#%6N|{`U-8{ytzVET=a4-2wUGzC`5| z=J{aJLJj&dYdq$Dr+v}xV3;LV499w$bM-WAv8cz{#~mG^J1>(3#%EhKa(k%)Sl%kq z4i|Lb0UDW^$p>w}wDba4dxENa0#K4BhT!ap#~oXJ1c(gRAYK84(`$#vERp&qjvKcZ z{2^7Uw{{*<`BkOzH{NlU`G*pD5K)1w4q}J-EY$$IZ;`HQ^={K;mx{1IBzMqsd()d1 zZh&)m9_TMevW@0hH_QZ(J zjD0jC2PW$9R3KwVp_Q zgiSOA727>NT@F8Y&qy!!(t^sD_K3nU0_lQ!0h!vYWTHf|q&mVIDQuilQyBkKzya<* z*|Ji(tL7{=cqHV2+x<3r$X+l~I$6B<@cF!nzfrI4DfyC_LjJxkH(m; zbf#O@xU#b*bdNxz-FSrmrbR5k86^&L$ zsF9#$di=k|CaKhjeY?*oVi>_}m!8HVw&oO{%Hi)^^h&12sbTR!XfihP9hDKvi!d0w z$x1}hpB7>uw`*BdVN}Tee4RnbfvG*zN>Nv0y^ji~p8KZx){6F)D0)D@BYeDnG`4Mv z1h)rj9jL2MpN8DIH2N=~lrRW`UAI(ZPU zjX&{sfFg*!shF0#`l9s>t!4_*!4!!So$kN2ExVwAbX$o~95GjBs3b2>&cJ*XRoq6i z(+0oq47kiS0*AMQy(h)m3=tmTuZE5zbygCs8Ef^QjZI2pN$YZv4{2HQd|7e{`Qs!{6OUzZiV2XvP zXfAej12>Oz)H*skKKyW)pS=8Vgv+h~L0e7kQ%UGyu$;inM5-R18H0E{09#9sWB5*E-POak+hTJ}n^56QO_;V#;D>BOq<=l753FvlP*Tgv43aHx_r8fp)Y1rxU}f;E#aEE@~DL z0JLpGz%lQ+H=S?>xE=aswitn$j4e-C(Gxh;>-N`4F2ZaM&z zeL6JY=0}d>X{yIn?*At!(Fup%#?Mi=Q{Ed1GM3m(L|q>J^M5q`PQ@hAibQGdA`!}x zWG1YVqpMmx;^CWxsC#JKfaRZl8jr3~uHecmh%+N*NrYneaobmO3$P;d@#}`$@+`zxh2B+iP(0u-!TSh3o49Qs|fm8No#HfRaY?4vAxyilLm;hy2Gi`G6CI zxX?|Vj233$xNJekev<~1=iANt#0A$lcbKG%Ep)>qPyXr_+T}5TojY#_O=SNAw4WpP z|Dwl=U_xqo;xcQ3oAqbY*vhefnklBuA20N|`xPb=_EN&V&;z)5YdNy3bk;>ZTQ!(E zboS}f*tH3O=-xnR!e|UqL3ck7IHs$s*L;)3xYC*6F3#rtTx^IpYtqlu~pHyH!A|oS^JGeL`{a5A&kP`jq z$De+9>}8oSTb@1Xk}$&6!oL0hVI{XX=(e;X+fuY<$xTdRq8vu9lRDUpk{gGFqxzO; zr4SX_nnYmbXOOAK2h3$1esIrbOD6UBL=jo8q8KZgs7}sEY&K>@#Kb6H{9q zEZ}W!s!K&GSutS1gt;WhMG-Diyn07(K~fLR=GF4Qzn-b=B&u2CbQPzW|g$ zFA0ZCcgKSkqY#2) zDnymsHZJKSY@hd_a&q+MdT>nfN!jW?!$jc(8(D zi27A20QWVx_$svO9+&TA;>T{o>Kd!Kk44)N?CRx7GPMcC^fQzvF22eZtP2jn_GgD9 zHUkK)pnNbmb6j0!Ari)xm>ZRqxOw`p;(SD4SQc;rgk69yteZ)?QVXXkzVaCnOeldB zIjAdC0FCPk^X+>@o!;X% zmYZTAY8U53z!bKMDv1Mj+VuYpFN(IMs ztupd;I;e4A7DBvxa5MY$RZ*<6dxAd9Wv4iijn*3}G8J7a=tmZ>YoUUCq$paKP`s`Y ztcPVS_!%hoz%k(8**=;8bJx1A@x1rGI2{3!lU=>cQ}s7RI||oF?;8aRxGS%x-{R|d z|0gK=%Afh(^t6)tVI>$N5nZ;!@+}k)U;^?(cw&Mp@s6VsK&tRpXZBX7slJ#{Tu(-J z2DXJq@n`sAFju&cf{@JVksBNF!7odIQe&_Yc;d}6{mC`nb+?Xn1|M-0Taq`0tkN)(h zKgAkrbG#ws&iH!}a{a%7JR||fLo3<+&PGzZhWI|$IXCJNPqXG0`EtPd^6nQrGRi2B z@`mX{$ET;TP)*3ejKCrrjiJT|M#=oDRsGh#Y4G*OJSokshpx+e?Yfi@y*uP=u)KGk zyAb{EDK&`KaNw$)U1&ohTwuv*2!#uCp(^aEW+O=tUdt)V(&-lu?ckW?g~u+-aB=1n zJ0c3IR1r2gDpv#n_kan8{1*Y*@d<}jh2%MSW8+o#h8LJht$=FYK5Jh9x`fUbMO82oSjm?mLpvDaiC{Uozpw+DIur4&8R6_HKgys`0vlB+af!xOUAm>)+ zq%_glbggYqR5DuCLB^UJAYVp@?o1k}l>BeiR_PPaRF%Ur zB*7#DeMd->q~oyeg4I;=!5VCmKA-6tT!-zgVvYz&+&*+agCuUql$sz*4KD|XA1gO8z|LZ$7mE@9@nK<_VwyfFR%_zODQ8DOX|Mdu+<*udGA^ z{6JFb!h3kDXBY`FzGFkoj}phmt7>SHbADOmxjgNyq8o@;ti z+AYQD+(TSld1|J=U=SQ(Q7wkQWgo(-_>OAMnMi$Y8D^GQ@LD#S|6*q#clzBgQfmCR#!+^L5h9BkYqdMA)|_Pv z1{BeHrlz&|5TBCQ&$kj1sy0`z*@CVI$_3!T!wf^>BVrYUZi|Wts8iB2ZNYwtYb+6c z@txY?NIr$@{A(RSMCJ;$xJG^q*T5p}O12?NoUyQ|#Em6ZjA*!r#uIU$ASDQr?4R5T z#klo~mZ)2;!BpkBl`x!`f9KDM=jNX{Eo0*f|J?``uh1}V@k})6h7@$zw8$CFAltM0 zA=TF=mGdvgql-30a5M(E_?o+{$oc8?m`|L1sig3uVkI~1pV#<*{194h%}C3Q_5N*! zhOOfx&ZCYCIfnz(g408}foB6oDL2WoFGTsbhaO7#zU`$BVvb8CB|#Nw&N`vwG-OoR z3ppJl)DyPBoeRH^;(#Wdw+w2V`CF7^QSO%c^x!$i@*Ie$#IqtnIba^Fz%(AAFL~X3 zyo34^)4{$SayK(pDLXT(6~bl-O(WZL?2gv!V=M=@uw=Z<$F0KXC!omiAri%~AfWp> z`0*KK0CZ@mtDmlJ)2d}H23s{fi@RRcR38>hg)2ZWB34_ffG_W(nd!&05im9@BB0O}N{q8qe3evE=3c72wO`yXdN^{9$l#san+1$Js_s}2AJky_) zsg1&mqQpv&u_$*RkwA*e!4Vf*OLO+wGWwg2UoU!J4%(Ac=K=j>!^byDPgyag3k%^RBv?5l&nT1Ka!D09tjt)A$7Jh(<={V4IfcZX)Jri0@o66F7Gaw280_00nXWFGJUnNg(F1Jos(aj za-3!bf-;4?GT^Lc2b)^`b!A`Xy3lj$J>2p%?56Iui;lY*!IWt^Si{B)l^DyJ1!2;LOCUYvNfJAL(ySDe zB8v4DPP|za51=DT-Hf6_PIa1svW=qB6a-7HCq*$$GA>ze4&cRGa6(ZdIzuQmf-8IG zPNE!Y;YdgUY4v^1zIOSJ6;TQ*y@Gt?0Zj6*Oi!IrsZJpML2*DnIJ4|gIvT+48-^dt z&Qo*aQgwtHtj|4`{30c2O%rEgZI#|B+t|wl_S7heVKSkAfs}O3NM0TL77Fumc(`!a zD;~4VK0_WS_C>(-Mm#7Qk%;enE`|?{MN1jW+_cq_QkKxyKDIEc`-Mz9qg^CC#JsgI z`tyiCLNNez{y3&NbUXt&36`@z6D`}skMxw*A1c)M-JvReR0IPhfTG90KK|96w^Cpf z4%)&GGD_l7-pCZ)@hoj+=U0`s>#IuA5$_{Z>EV~P(8X!C%w-d4Hv2Q%^8zYmM zxABIj#Of8kTLHhH<)&rvyslBkukywcR1^ZQ!D?H>sR5 zRCh{L^@4bRA8V@F5r6yE`xsC^TqhPY-nwBhB9j**1)ppuwe-!qYwzI}YzLYc9B>EO**$FHTj>HGY))o$gLf@AY43wQrAi6D&%UAbj z8LZp*js(+bAEulvrAh1fIUe_$4rd<#>Xb?g0L%NhChyLKty@upd;f-rI?SPn-D#mO z3d-z3q)p+AH-17i)}Ht zW2B|jYKVnG2lcz0o8; zA572t?T>Jm?JpZuWdtRg7P_#bE)FIgT7mxcCre8dYlvUqk&5E6S#+OeOtg=?Qf>*Z z1Nj;t#FXr2f!PyxHKEWKr2`dxkiu1#=D|qczH2Q8w9b|v7cUm@=ru{Z5ZYIC(H)u3 ziT+ClVCK+}8pf~Rbo?vPbMtufV#r%VY z;~+>dmKs8(qKkPuT@f;Ilb0p)i_UBksGNE5LfD80XW?6h0W-Y~M<*6>hG%D^OJrG! zP2fS)c-w32xI#n9HABMdf@bCVZ&DN3yqkqpL*v8XZ<*=Dx)ETIkES{JXVb5_ho~G1 zy!z78y1|4Zu3m0}6rK{b)dd^0^3L2{5TAyUmq9*x4E=>K@7j~k$n^cz2Zsa(ahu4b z6a*OS{_ChJEi>grISS= z&*C{CRU2&=0DBQC*%Dzi*(^*|{k+Tpm=kM$Trtt2bY5|WJ*Nl8&mC3im!~6-={*$M zdwp^YMkkaise=UfQJg-fNw4!DZZuxpdbgB5v-O|2X~--7bXTEqVEV|U{8y$f&E9sf zEB;+jRY67Fi(r^26zd%EEP;~nQ_{c@vYf?OOk-9KGK^1w8@#zYXT=NZw^ z`w$HYNpdZd+?4*m&XS6=TqJkwbb<(|IV0y}8wJ@VAgWJ%?^){~lQDb|f*W8{EpWf_ zM`8-d6anPsJv0+sUO+yg-}~Ivv0Kw-13wj%TB1ej^0IhORU&2=`}V5#i?YW}UP3p& zWK*CI*o+j&bheDVITPb-o^?ZV!Y?WF0f2kKj_YixC`n0qRLh(Tz;Ybp&XD4@R69|D z_9?Vfd#ewuTJCKj>y)``)fV3Byfr@%gG!O8PWkZin0kK2k*+fG10o%K=VPcn+AI*u zj--vv9q4Ekwn@;ha#iRhNzgW?oHX1Cw?!VmZzPd-F%|c`@^bKI-~(Bph>lnvvzd^EV1}}ji^=>!Np>7df7#uf5Rth^pAgDjR8I(WoyZJ$*Zz9i zMRvAAR%UW)FiE9=Sv)G63_!aCF{I+LEmhFvSQM0f`3#C<%a(ntS z&947|CFKWY*!xt5H8QGYH)e;U&IsM^;OZH}2R?R_BJ26b%l7yTUco7^Yp#TeEM1*w z;F^7V-HBSB!0A_=v7OWIM+^^P6bCEZA@p`bTe{mGkVw=haEBUk>qOuV)oZFB%qG?d9$oS~ zZfY?$m&>5*Ty_t4TPQgOope-RIAWB7#b51XYQM&9GyG0*BEUBY2~)U{j|nA1NwThe zr7GrCDgit0L`ZH-|NN6~-Qrx5`MBp9A#?0twLWEbVKxl2_DGbrSI#I;0Z_DCy*C3i zpIjjgVA#m0MnQB(@~n2#I*de>0>I->CQmDW{uO2Z3CNx_!G)VF=^R*1oMyLlLK61K zZ!e2+3VobzW(HKKHgi;cIFZd&Nv9oL3iev2R(fL^6!K&xZ;Pl&U| zr79z=EX=82tjSes6(oJF4=Zk+cdM$H>1x}*Eq)UoL7&q~q_<1Qkyt@r6t^^tgI1fS zE_c>#taId31sXG~5w5UsuM;>4S$5_+HyIJct;`~Hb$kk)(r#A^^#OTU=F75E*M+!m z2-LQA?3ge{6$w#Bl?FOx`?(eo2KeR)hM^BJusaUD{J`oYro5j>g&_p%7E=0zZqJ0B zP>^NOzR-G<;i#`Ao6j%Xa5ZN~qwDT?a?k}!ybCSO2%TP_^zti=`X4YM-`;=s*XF2Y0 z0$;)q&w>h9lm{!_~+2XL{cSQNCT;%}!EN+sg&-X|?y`YQ!Ft(VUCSX$D- zeWL?w+vNZ{?%@tJs0)u|7TvL+;khm3Kp{Mq5!IrvMl1qfW65|4{y^j5H`vVc)A8+Q zowF45S3PA;49sIair-c;4xbO)L98z1qjcDP=U>bC(_&BGu#K8sr#*xmJT|IeGwrjh z_OQdKt%Cv9m=)aqBC~=c21Mh#_pvU4OhyXT3@-gPE@vP&{J&owg*Gw_Q5P`bHTmyJ>Ma>J-Xl`fvR8`Fs@a! z+sb@}V%K>Bn^H7W5kFJpGLUIb9b2*>6!t!Mzaozu*i`e9ms%@HxvHaLs*H#Ojn>Eb zBjd4mIfxa=?;vRTc21S{I$~Q6j^2o$UJj)5onYnu#vUdc2%Tn)m$k~#Ky0S#8o+qT zm)T|mJv48}T&e4fTGs4z_s;R=GS>Lc-k ziRBGK5dc~%$TLW8p}6Fnb8t;WD)JWSh{JDRLlJ{k1k*J+JYEoZZ_Qj;ZWE7kd^yA< z^pABx@j98CM4c)+7St=mBXA`uqB~Imcg>q8D!mh$y2W`c(^$#o8V#}>&oBlFG%Y^1 zcgzLaHdf9b`B~}+*dNjlBQi>2LjWo&LuR={1cse!cb5Ms;f+&WyE4^=>i^h*f-4lt zM=jC>@#81?i=ND?LQ%yq2mBa?W&GHFkfAvQ`76!^ye!R-pPbV*tG;bB$oiBMp0xVe zF15ubWXXr^Ai7%$6-P(4L>XGfm=v;7y1(ac&lc0txdl{v7|2(n(qOV&TG-~xT=RlC zZ=^snU&t%v!CXhVX(9V_8aAwJXZ$d34<~(!rIS@aH)a78ArbUD+DI?}65KwrlKjjIlKso0tP@3ac3s`) z*Sr0@*!5|qH_*a7+r_=W28x$GnGQ?4y09kS_L{eLsxiDfsWSAYU|zs8B7S%v);6l= z&n&bsk|B+Aw-Yh0EE0M00lmwAfF|+VQmhR|=dABdbAB!E?c!`iVx{jhJ7+dAS{+&g0 z##}35=Vf!bZTJ-8xtxR`|C7vyQA>2xOU?i*=!hO@hgZ7V`M3)rw*?2K-mWM;ilcCB zS6OWTZmzX#fUW!x3&AU?j~XZf=C|(RS=XAk2r&4hARLwfktx%7n&2T+hTDA*NGS`( zIb5@Kf&xAzsL{8gz5w944=#&*Ex#HdlYwdX$w!eZDdT^o3eH`X3EVQcZ~tSjg2IjF z|C|@vYBHxwPN~WJ-QmaSC!9NEY(ZmhxisyCsky>dJ}BriL1glvNrWiqQVmI^cPZZC z$ibEmxaM2Y5yP-zypf6b)Q2qgK6C5{Ct?hu5_%M9i>cT{JYXE@Q*IvKDQpA&E$$BS zBy!{_RgFy0#FOCXx>P>vX+lMLSEmCFPwhgeLRe6UM(U$!iD_Oo>CpDvx`g0tsSmVx z4xc=mv1}P8-e`?`w;ExKA~({DOY%{{QiD=RMGhV*h3N5JJ{G8-H98rgm?qC8-2NJ?K>wwe&BNcP;rL1rdbKiQW z$8!A{ztWTF9(XlpR1h0sT&rf247%sB9pJH7p^D)H5n% z^`;mO7^fJE+7f^Ckx4i~E3g|CV?B|H^$l#Eu)Q=}1oVNM%X=T8cGLAj-31x>I)(0f zfo{H%*5{rf&rKAK4p9D01V{wKXd8u*@5T0UbIiv8CSeT1tDGH3sOzcbynFiUTaLLcG%G z0Nx3-Y#?h9TfX`36|&4(Z*noRgT|-caBw+!M)0$)%g+4==f@?0lKDO4eL{dSLWZV0 z4|$(Ufu+!b9kpMD46v~(N=oLK&;**X1Pa6v!*pSH6nZJkO*M5otjSHG5Y{J2@!oW& zVCOOYC~uQ1Wo?1p%@jCljL;{bthvS>=i>z9^1pBc1j*c*uJmXOU0VP%x0+zYK(=ho zW0z&KPWJQQyy&>SH#Foho<#i;^8p1;ga`2ViFD;XnG9CyYk{%qYde`6Og+n_+IOo;)H7aH>=!34($FsK8^>i#8qmYwKyf`Lwjj*jo2N?OlIjM$+i!O90k{*~z` z7#HycQvwbO+=vu1pJ98+;hlFTV?83AN*6KvT85lEN9K2`L@>jpwslm%i(|;)S`Jae zyKxfjvYhJh@&73DmrOVD)8|zWppcSdf%ia9?tUDbly7@DZJkQ41tU_CItB4}tC>&D z4A-AazRT^4i2o&FC||O&gQo|ER~Vwo<7~H1O=d7+E;wc$+Eo<&paxf`kNm(0HE80k%ebu+Rztm?qH?_tOy^wOCwd>U_o=^W~bbD&aLQj5R+bbO*-+&E~8BycA29tI)Dg*7ei5CQZ~x!cElf3M&%(QBrkP* zgFfyR?l|@o6JF6Gx};$)zcS3h++!b_9g%yDQs%gNoT6{M=`d1QIGto#%gT(1qwo(D z8nsp&O>U#0u2imuOAXBP;;{7S;upS_+3|qjBY;6Nvh5`)^rmBu9G+7bKYRN0J{hJr z^;q00WkY@UwA^K`Qhh|p*Ne4&Sns>j*-P(@hZVoO71w?4@o~}jJGlU^b_opsOxwotR!^a&Kd+-pt=p#`U@z~2!_{}8~mMuz6T zV(^c6Dmc(ohoWC$tz8OB#s_@HK~z6dq2%$e8^Ve}nt9g!Qu;)r8KiPVel9!6;yFzv z`G$32FmEM#)O8+;45@@)Q||Jbvsj!~8aow90Yqb?0|RghhLg~d9jG451OfuLgGlIQ ztX$}Ct#rDxj8(Pa@@{pGB?D-^MU1;DO?q<8k)ThMbqA%RpM$*7&yk?f&#_w3&sCWs z`%$b-WIyvdMELAje(2|t+7Kq8sG!=9&&MApKm73MPk;K;<46Cz?oB^E`e0f`_3>$a zb$<6@yup2D0YRedR!|x{GoR$GGo;GoCzCwoOIZ9ftRwkUNVjvHV{|0NLw{sNA_jXN zgn|Ntss_4kq7KHs)r{w&dsyS!G%rYwA(AR zMuoER!f9l5le4C2;cQqfb-r%JcG7+0bmcl|6D#Yhx-Fl_Hh11#_NP76si&_XKEY;< zqw(mf2L`5`&Qk1hQ+#dlrs*vtfQux*<%pKUL#{6g%)5d8r9s~ zETIR?e#WM@PW?1KKLdgw;}h1;PoKwU`RPbWj)JdhXW7=?M4B^b z!N!e-ygsErh2k03(HFoMXX%=;j>HfoG>}S#KCrq4(CB^H$A<lX8T zLa-&Xj@dHTW#!K07JWk^O%%H<^8s8nDDM7+*ejejRuvb1!oZ57f3bc53Ng{7 zQqvI^=;WB$Gv#u|CR9^gJhYC9LZj;KooW`M^?n!0_99Fv^VM8W*KP@su#i}oM%7%Q z2qc_L7@96mNUQ@|18C|C?&=mtZdB=a{P1 z*aZj4!i@j=bLrzM_yVeDNkYwkHng|((0Q{mXfNh)T8YDs=KWUa{U}hR#~{|Q-QExU z6lYY^rtK<8aGLY@mUxR#V?pG3iTM2nL~hZ{sTYhS187$3OM;9V)p%lah5@AQ6HCKi zp@5VRyI&kr5tp4$aNSy)Yf+QK-_k;Ec((slHm-Ubw*ZpegHRTRnT zC^~|03<4jrC8F-h3ip)hUx{VBd2u=Ul%J0Qvt);&9$p41pPWrcZQ-Xjwy5ITo;m^Y z?5NYjKa2;Wz@)-bQG|rgXic1{jU0+DIu)Bv+ooqClR`&z8T z+G?fN1FgY!h3Isrf%^E4?j2#E6B;PC;+Vm{_2a*(=$1-yrSxoY%poqHHMS`3=2@7Y z3BPWW`Z!7pNG60`EH#3J4Q-WAjpS8C_Z;iMJIg?PW^X?}Ww_}}PQZ88=cw%i9qV%D84~l49R8@m2_w20J1og6)ttMzD zSoG4bzd&+C?!14ad^NhjYIF%I@<9eUS`k8}@T>9!m0xtgq}fZ$uBrk>2b+3G)yl-d zMc5uj_-UpEf9G(0cGW}SYyKU%U$GG`>n#Q~9?EcEyFCDve$ICwU^2a0MnvDD1|9K4 zRiXHaBHr5R_XPU6+}Y8)6hC14%G>68r#zNxM|V^scF$I1nu%;EQiAl`4Mw2xfi&LA zruwK^0~aP#n9OVh$OSh@{*;g0=lOoTTaF(tH35g?qp&crp`Gp+6BN{oxTV@X1u)#5 zLPn#xvx~dm$^SN#1}+4`Q)<;Y`N|qcN!4jwtSlUBdd@+0_1Ewyw)o-87(DMk9JI#A z8+DJ}zp+KkOPNo(W3bUs8lSdaA45bxyNUzMRIEnnGd6KMNt$=Jn*^i2PeVR@$`n}VqPb>A~A08Vixb%C-bNtM2AwBtyS->Yc%!&pU z^TUVjkKM7b?;id5)8ilIWoKIo@o{bFS?`u_UO<~)df%;w)J)Pw#z*0tz%(+V`qb@T zfELL~T~yt!383rmV$o@jbHa;K9WZelt_~>uePxS8#^q~}0uL@Q+(fNlI3GvB-K1)- zcN2}UvD}Z(5}RyB?iBU{iTF-;a54SrJ!FW|5u^L`-G?Zt3%6)%nWtvaRHA0=1Wn|c zL;SK#b2@TZH2!xoI3tX@;;FHqp|Sb0-vbk?g)YkNqY)KBml6Sm4@v7|5GUWolg%wW zNeOPfNDFQO1mIpnY6ypKh67VUL`F3C`61pwC|>6A;4DE(6r=~>s@)d4C!Md&giWOO z0wZ)dUuY-iO(Pzp{3uk;`hCE)9cWD*VFmJL?@a%&qd#<}X3ydd-^CH~2{Jd}Q)^l_ z-3KHo9CHrFD)v`0T8~*2^a5Z}92kqDe6nSNAo*T5HcZ+A<5?^#5j~a1Hu(fGfzSDL zl%MycXe=;|)_{VkaT_l}W11bAXAZ792AXGY2YXLo1)^CH^X3^@4!F!>kaQF*BK9qV z7R(}$VZ>Hu!C^`cqQe(1ZwTCEA$$|Lbypk1?zII;qj5+#D!$veUsAui4?9T0i42~? zzdCPw1ZfZ1p)5~ZvaHtYr99@%{eCJRFFMQw5aj$NOoPrkUIg`HM?)%JW1rkIC$Q(+ zF>tOSI4hhm#XzO2;=U{pVGPl?)UY+OszoKc%!Z`_sr^lD{eFI+A_A?#kdml@BV*gH z5%J9H$7d*dFOMN%1FU*kY@5>gNbsEjzcpZP01^x${wGNb&VPJatTYRcud$rS^7A@S z{dqm8E-$4)b$nbcsBS{b8GsS-qsTo}q*Ew>jAZfax@Phd8aqNIbm~X8rbXy8nC`m@ zwvx_}J3v&3_VT}XI~dm{(7g=nlB0_bPBbqeQlRw20#)3I39v%)w^-qMNq7kF_A2H) z_CC=BK1^AYf&|P%3bMGd)4#cGT_C5bAMW*XyM;rF*}NHayAMh1dv4Rcd2TJ-wIHdN7gz`@8YYZ@+70R#w%1>4h-hrl-e^k+iiR zRry%Ca^(l?%Pa^E#wTv77Arrw{d(`%s+-kb*P6n$Pi^MYjh$=E^gur#te8N*pD^Mr z-b9-c!m-TaOIRVm^DD2Evt@V{rIWJ-NszLt3X+I_9Jc%?%C43T&U4>+QAFI_ z)aSnnD5C@_qx)wrjo31qA6CRI(}p^3x3o2|zc*e>T#BLLo;2wKtQ}k?AOpU7Rg}UC zLWWk=s}B7{C<8F|ulCkkI=o1?2pf?^P5=nPGXlh58Ii+5MNC%N2>ubeC4b+B5^&Hv z3P_kTBMN>lTqoogJt)_G?P!~LvD;1%yqo;wqUO)NzxsJDdcZ236j=uM|Kuqvv6eK6 zwFM+x03WY?TYf^XB@G`54l-gDOo%>nT`9@t3yz_2ejg$r{w6^7ci)84I27t=L$6$*PLp-wPvKUQyW- zb@XQGg7+=Ui(NE6f2kWy2pH(%wB$d>^FH{su&@>0r*dWPwp$miHoD@a8a3xKT_#|d zQg!lh<}UjHHwt}#&{5Ihxe+a|w5VYyIYO#Tf!422UHP?{-2jU+*cg&U?V*$gLt*1L zD{Qb*^`k*N;Pz8Uus;~DBlrfb?R>{w$q3{~>kXU3fXihT+U0Wndn z=3&pFEa;<^(gtxjXV)ARoF88ij}CTgI!zoW2|05F)Q31vcS4(UkDJu3{U_Ht2H6RQ zhUx-XhePCcaa9jSsCtNoL{S1WmqI*__=iK}64>>|hx?F;qcHb2@qT14$)k!8LzG5x z*#!;m0#IR^hlfW8CkM$}lzI+-TRR6Pi_lWUvPa394i>xYpW=5NkY4?YJibWM)1fEN zAp65EDO!Yb9W%^_gfT=Fhy)xwAFUP5D*r}1KT^09o!F36vAW}Sd!)6Ie_;0j0DdX$ z{u^ZtfZ$8RSTTI%)6npBYG5-ht=>FCn+wg}rVZ^5a7EAi7P9#0o_+mGs&aU_2PtaE z!tkE5OlQd|cz!bdA=Ixep1v5R2z;Rdj|L48ToBH-(=G%!pPf8?@dRl%{`4{UJAKcQ zd&~cVQWdJ+UnqZV3e3O93ReDuNAT*{-G6=ZJ9Mr5Z|xLVSFrDY=3mvK1HPUoG6tN- z2sd{^;oJSkW}f4;6a3e!SFd}m{%NP>sCrY52CiQG_L!k(XG=6;dz0sFKRt)&m;Z+1 zN1n6&^x=MsGXqjb>wt$ z@)2ci9n)lWe9r`Nk(Ki@dClVKUSrM-FA9ri7fDfwFDSRTUhZ0rJX7s282O9X2vexMmeT7uVc|j}0sqO%t(9OgU=wGd`$FV3ZKjBM^vKw2FA+#AE!83>8pp0H{qxwW8 zuYfHvnEZ`lB(`)mfmCOeCnJXA6-5WEB9B{T_=Ou?62zf!GypZjAt2qiKtDZA+HY>f zfL^^i$Ec)U3Z5MPa7a*|wC#KucBcRIQHm+b;FIHbqIeo?ymmk3 zP>2z7AUs{!ovv><5YnNKEbvc;?O_j3OhU-<O*FszgBzoDy}R#Nhf&&t6)xM!o+~&_rX@WIvGlOrB?Ij_U4a@-FG~< zC!c2*1p`#oJ4!MPi<`BlmTyHMh{txL?l*1D%{!_4MmO0SDDZ5(se0B^JWk<)R$P#( zt#`EB7mDWaoNp9Sy>U+MJ!L6bbxO7^0)v^BXdkGciuD^rePF9QsW#Nl-r&?e_d+8K|!F2cNpfg zr_cYnvHdTJ2#{jtf=RzF%8&=k@|U?kR?n{lAf&OO*cKnH;WD?0zDt81`q;GWD2KYW zG?1E=kb@0+w768*Gvtt|EfCxxXEZz`ex((NsUMqW`QT1yc zXMx4J$b9)A?CH0S(Gk}#M%_LFxU1AJwq&wRQlP?p5sD(w7&0Q4Q&h%tRkDl5Fk<~_ z<}s#H`sONXRGx;?nSSy9ywnywoM7^&c_Lwm`TzOrlW_lS%nh!S?|=~O$@h!Yeyh`B z{~FEZu~(|gT^Nh=7E`Cv*1#Q!i0ogB6MS$an;vAZ#>0HP5E&*O2>6Flk~V{de4xv((kDOMOP_ zuuK*cvJGqou0#=kK}0HbwR{x#QgmKKmyLogx0OWHy3ljN20$Ll1b4zZ$+Gfd zT&+#2un`*Nh5rPC0Ncth25T(hkDB(NjQMCzw=$6ZD4K+F9-mt)ANB@E`%F@gK;@va z1R-_VQue(V*50JNC*{s`0#bfe)oQ~DIxw`oNC0+yUs#*b%D&wMh*w3J?4>9T3wr>W z*}E{a24eDr9u~DXzToiwa?qZ1Q4T_|ltL9GrVwx`2M}iw(J9qgR*eT8uZ4+6iHK|^ z-Z#qDKBW+iI~!<{v?jwodbD^l(B%TqaH_8v1mS(@Jb7%a=Yvgp{}THJ@v7mFx zw34bH93QzGXgPT<#jY$b%FxOP<1CJ2S!hjedlv3+SV3Ps$PBe1*+imxQN2QQTgZS_&s`b z8je(tkRg+Sl1OOTS`@M8DH8c8s6v6;QBC;#%qbh>&OkUOAXwgOq6xRr<;MVt-F@?S zY`TFX{Udgq$U3a>o0Y|hC8n2Bg`V>^B9+%aDY>t{`)J2kWyhyY`MJx@NFozjw7@c^ z%&OFXx zy>tK}MRH7iGOyIik+2q@F)MoR)=z@g59&}rxMrd0c8(zj-9xl$$zO!p502><%h_#o zRWaAXexEI<6zf4|8z`>^I8h^?jB10?a}uO_H~BE z7fEjIg9BoLZ*U@iAY}Xl0b`~}!I=35)5zIsBp5Yj@U+jny$+ean8XA1DDMQ5Rzy6> zLi<{%jD(4-7U04E;ya#XHKSH}z_9e>sPl*s&2_>o9jxIhznzUdm)$_8#oK=oWPtvw zyIW?iaD>yOUc2a`h4;FPPAJa}ruv%+Ru&{t@++X24YgL*#Zj)0y;m=E{)O_D{CF}*Mr$sxK;(LRNWPwlo#yH!R$53Ti) zkFC{5>6i4I4fo3lb2?_2%4*;S1q^#Dd5Z~I@Bp7!?nCFqv}59=+=+2;0`F~P-AYCX z&xK7l*t$;MVl+k=ge&0|ihnvH9DhbpVO;52`(bkh}YO9>ukfP(ER ze;aL3;Oj)8_q2nH8N^m{L6pALM^vk74=|a5P_iye!+GI2Iqtjt#m3QomU1)aeR;@N z$VdA0k$IJl7GPdYTkUf$8QgWmAfd&#j=3uk*ti^x$;s?rPGFx|$5WcFgW4=|byN{o zT!j}?I>;>9l^-yopj=-Tvx*Ti5Nt#ykJ`T*H4-_5Je<0CKNG6FK4Ky70n%%(K6K?v ze+zh_G6KJNAJ)VfpI)@SFf+1o_E&2<^ULb9v5sSq2k2uKZ+8ynrn68?S}d(`d5oAE zZ@B_*Pkvt=@GgEp-;Zu7Z${mMu}#$GUiuzWz{s21D3Fgl$STi$#W#anRfIyWhTTqS zt75>gel(9p3o`FYJM!FZxEw$Q6PlGB_aGt^<9LEKe4PF}N9l^gLtA3Ly>}D6Jn0BD zgB}^=WArraq!;5ZyscyORB!9^Mn-rc6B6buz+KrYO+>Z8X1g^T=f=t86p2(H&z4z| zd^JDL2DBAOwVsd(z^-&5kwl%o+*68AWGNa;9QWwKgzXzR*e?R{`b9*wei8GiUla+{ z_N$mRZNKvjX&gHyM!(4MprMAO+3B-4qc7v9PoMndFMo;knPzP9I7)>Pje3h}>yH(b zRaHS@g@iwOdt&K_^g!63bP1-_OPZ0giRuf$&<$MV|i(P}%!f z6PX#I;~nzaLF#O}q)hm{jA42DJjl!Vm)>QS*(~B@Vt<$Rjq(cOFAAe&>N_G?s56it zuK<9uHTZ(T104wCG=Xg-PD#Svh#*4r>8>F<$H?re3*Ey8)tR?dDNX?EAl1xQ0(*Qp zLH$FU?kLYMxa){x&!r@f?v_%@xmSos z`^u*9B4x9okbp2s)m>nCIyx(;dxm$U-`XjPAgzktrUCysNHc(x+`oU3b4A%Y&)m zWHw)tTWTH-99r-_Q9@S++y|^CV)KibZ-ZrwO29<9Dhn5dHmoKs#b^Ws`{a^n1a;d5 zYxw-`(Jre|-ND)L=#7NY3$;S0(uv=+`r{>Q{SfL7(WQw$%3xT3s@Wu3BWv+ z4{eO2AizgmYlr4dc>MHsYy4=u&Tkjt% z4ivk@+A2u{x~OOk>-Dv4d;mhwNy45keUG<1!LH|8Vk)VK&Qd2rHvctA!pj1xTvIGnKbbG#-0~-kc5ynYd)5j#TbiM=*Tp#j zjt%k_*DnZJA-t&7HN4P?6ohcrlln$suJR#ckkOXBm-Dr#q7%1b5NJVfDt^0_G~c83 z5!Sm5T$fm4Nm%EA;fF#xn+WCBQ0s$4X19OoC|9A6PB0vg-^>;_^_$--79*pJ6Xeb`1x(5C;VLmx1kWwX5MXcc zr1;AMA4v&KFhhs}#|hxD4j4otBPAzYc1JzFF*;3Cf6FHc$5mO1mXLj9>3mb>2m)lVMd zwyh_%4UbxLh7Fd9xUCOZFyTafBP$kjE=k%v9FCWzDQ8R$^+%#1e?{cD4`keaN#1YVg4w6f;Q5T#Od`!w9&$rX1g{Fq zajGYB_|#&)%YDe#aTuL1Ci1VrqQBV8G8RF94F=}|Ja1wdN&wPr&iMiL<^U_&dI~qX z15SB!0?RIFtF5E&=xg%jlF=Thzd}YLxO(JxM*i$gO-_puCW%dQIkgs$KhvSZ?*CY6 z5v5FNfdXD`Q5;~$B*PJCh&m2B9}wBu;+*cLujw1+8_wz8>eifoPD%-{-77^VnZ2Nd z6dIZcn#&O=&MQktwd_;Jm8#npDrRmXX!mcT3fMc0>h{utsA;pg8V2}YtxB%L4q$>q}Y^b`~ zQv~e{>j5m+kp$${!<12nTOQtZrD0gv@`^9tDWz~pn6@$r(^ix)EtwsBcG&J`+^^a? z?F73L08cVy5aC-UCX$Ka+d?LWvq8!Xhy?+}RBSTY?LM=%rFivdgCjs@a{I;|Pipb|SJ=jMJN%3$(amX5p^EOq&s9ajhl zxMrdm>v7p!1f6Hmw1Oj$Qe|R6a`;HGS_#Ff{z$QcD_n$7zB=+NC{{75Ox-4Qa$S6v zink*v)L^pf+hEmnhJ82v(T6vfv;GCRk^2nI`{7A)$nrC69^)b85W*5H2RogV_dhqb zL_J8-Vg$ixTf1ye;y5D$0^%U1%VtKGm}7k9fB#gWauF4JcG z>4$wvXINg3TBfNmw1*$a5A_hI5RLP=74CZJQj%|e*j+=9nzJ!HxFkiHTuR43!4@iI zqNvhxJ`jo7&DjE+prq0PT)Ofe4*z+M-3V_`dXbh~&a*~wzw$SCQNXD3G&GeBJ%x{* zXbS}nbF6^H1NYJe^JtGJoma04Y0k~J#^dubd(4XZQ_N>@nW&YZ5llpWE`G~^nY^t)hY70 zl<@pxe^aEIh^_-nbQ3RE$c~eZzTX zdS#47*&y3D{kPue$UK!{L0K7_IK7<4J_#e&GIWMexS0NIf21@bOr&?3q(oCO0osT4 zCOFTm6YP^zN$J&3t?#EPylHFnJprf${vv;}QcI|fpR~qb|NAn%Og#;8es;KHq;2)O zW7Jz1c%`EO%{9(!9zmr^Kk0W}%vGVyb1%$1YJB@ZIx~0PoB8Gueq;>vDZz!KR)#J= z)4uhEubar9!Jn{d#*PaeL|w*jY`5i2RNsmf;8Ds1e)tA{#zZmVVS+*oj+*#P8%Q_qs4T0qQh8{_&(AzaT7l!?CnLU z)Q7PilME>{7aVuaJA~{J=iJ0T0Ku0{->z1Ui~_*&hOxX~!$z~)$SdN7(bHEylzEWr z#RD0%l*o4z!M3ym0Z|s)Z8x@|T=`{kPNwAAmr-|oSx?YDJm@%C)R@%f5-QgS9X~<= z<Vfa<>eV*<`fxDZ?Ocvp+#a;cTk>P`V-NW&{_m!PO!J)C@GFjY zm#T?YNfJDqx@9%prCPUXv;L^tbcduO5kHa^9JiV+3S3GF-wEQY6ux!Pl!hhnJS&V! z0;Fh$WJAS<7#b5`MCvm)*)+p7%}`Bm&NR)+3&DP68sUUtnjx6>`_hx?xuu__n;zs+ zrwRbOx0_W!At`K*!0gsRPjvfiX6YHk6wu*^e1uV*D2Adt75_!NhR_YY|N8>rMo?jn z`@T$^7BNDV4azK7dmnZuK-Sn3K@WpwiL2J2or>x9ZDXR30({I`eKYFYOHsA#A#(%ecnr*YJbNVoc}1gM?7XHSt^_a$Ec>y$QZ>Mn z)o6}4FmZECWK$9Idbt*gR9|J$g|*+!S`f_Mb3!ae*Fb(1%Xk@ zNmf61M7H%9klkTGW>J&b{}~YD?MTV7g?oM}IgGWSH;0rQazB)KCy6sfW0qS5oR#KFhV@*C8n2GtO{HCj1=)}%q%V8fpQp% zgmqCQJcH9Se_5}A)mzcdfc071aP1?V^s3uVHIAv+viAi8EZMDx?AgFg#Q7gUmd!o* zMM-nj`?V4^Y|L50-0>W?mt}bp0_sRo9To>lvnWSRhP_Uvn?onh$vTaiIjUipMLDS; zX3ivT>Ur7p!3d+1m~|$7GZWdOXBm;`x~1wnPB)pNzw4Pyd_7LZ^%EMAvilO%KRo_* zX~3k`i{iESk=j>g$PQVfPQ3k{)4?sXR*gnkvI4!@$S&z}MFt{q2Ke=<&QvBtCBwgqH8Omh!me@JE`Vp(kNOsrN{Z+WmTfXl7ZP5NwZwDbIk)% z%+wHqpuRg@*%74EncODIa#-HwtJ2ey(k)Xa1_m*qbVLPUH;QGcq8_$hFyvCTffXc~DIG)3PkR?EZO8JsSub-<_84WXjGbC3OM?$Oc+|?q z$*3D!nxfHl5>p!gr=D!c6)L*S669I!c{Hfk7F4+)PnE z1V*6@i_U}x%5QL1j@_6USUC23K=ikgx6t$Wnoe8;OcsNU3#e={)Tw%+ z9xxL=#<-DA3Ku>6ZaJzsa;)G5XC1>|-^`qP__EA7cuR!ck}bhdg%N&Bp;P6c_|QJT|Hz8s8YUfB~$))mX*D+-m+<606b)ia?| zJqne`MVl@_zlq3^It)o`%nJaWW&ijCmt7l^-Fr#;?E<4y22Q|%8XB32pG$Ega$^0q z4ck~Z*dLqY>(&JTcWrUNq7AiGO3O;E)WQ^F`PH&4zxMg%;A`4pQFX(Lsx!x{@|}U+ zR~>yWN$>mU#dbG~V!Mdo_N5{$RA|JyQH&Rf?QUf1Pj!{r{oVFc#_BF%E`RJ+qG1M) z2+R2+FP^j_0W54am~&y!8AS5$!_0>5k;s~;tC*1_^?fMUbRkot-(-?}cjf1@XC3I>Rhw8Ys{778H(6Ofnm);uQ_QPFU*_ zouk(^hf3voL*-z~(IWOn52ekZb1toA9DteivXsokZ={;PSrEU8tNHZ%h~?3Arfq&p z8MZkuGjc{{QN0h>MYE?~B7;OO6C44uLBzv?uUV6G^B<^I#>Gq6azugJ*LZ{oUwyBk zf}5(GkhigP;8ZDOCFR;KJgT&TeoHANDF^?Q$$;26+)y)e=6)id zGq($2V90e%#ATOMJdr2R*jDoD<{>9d#tmXe9@eq+m!cz+m+3%gN02-D$9ROZ!)?8q;Ju>H)5UNvJRqOmgpG<^yaZ6{bFRaTyh}QvffM6;eei`!;5#PnG z=r%n%#fZ7o-E4ogh8Q}Ttd(#?s9ryt8V^5&MaT>)csZ4K#KLhxNOFzhlOt8uWtO}X zVr73)i_6dP4dl+)v#1*NS}k3KmA%Il+uzNM&z_(8B&xxTsIe~;0F ze#O+osflp$Fn+AoyrN=Z5LYBAmX*uH5R`h4>jfI$^~BFN*0AG&=i=I=R?c#@r|ort zD&EHAFbrXcqOoZQ7n6aSqQkcIt)70hDl_`x$!&}Pai=-szC7eB4 z7XC1{&|lqV&Q)q%ANs}$V49EEz>c|xL)0b2);4>H!vXggphe;;MaJ@50whIX6wzQ& zB3P8rF@fnxg%%Ub`lpwWaa^KC)}ZcctJ9Iu2?-=b*xe5?(l+WRYshp&IrR}Jw*r#_ z<&V7^ciOvQa;&b`4uLv*-Z=eQdfnz2hN3-iNMoc0j*V`L%jW0+9K=}56MH zdIq=BIkpdK{o*W&KwwRF*BBhKbkgV^UiG^T)a)SDZVV=5K693`KuTm@g6uQ2C4%GN zgLAzgZ~dgfPtj?lOiP&x!*Qsa!BmR55{#o(8CtDnd>eAfE~2q)yhxP}1GBlUbqKVNus^^H$9d*VGt zPms<4jbPl+Eva8CzY|X{3MWoch(TJ3LvB*_NdTQPrV#=JEP^Fj7#Ml%7Y`O|%`po| zQv{ynX2Xk^hSEg(MBRiWX(&rtMeDO0*JeeU`kg1@qg@t6$Ji=J3i@Bc znvl@%WzDJuDLFtbF8~L#>4d|_U&So2)}E=S-H7(=EpFNF@fDCNo}Nh2aqdAr%uZYe z>^1OSC&`z=C4UXF2W;zzd@;jXvwDIOA6G*(E_;oJy~@XnDGJ{qphyT^3zmKGtT7p4M4%S~OGs%x#MfqxlcS=cj((hg7t#I- z?LgE?Ac`pTPw=C`gYpcY)$Q9qr_}StWBzle`487VLQV6`Zt;6%^#8=<6x}Cq(8+b$ z`pUtM1;*)S9~kkBh+_*nv`AU5*2Wh-Y^)B#Uw7ntE9Fr_GjtvcccU;dG6;;uGdH3% zKQq`?od=AKr;2Hw(I#kMnbn_g`oEO7Cq*|m>A0Q4xd^`!l=OR2gm*mkt7Sf5=sMKkt;JKb6=%Eo*m zdjp!NZ$l4D{pn#vi{TO>^PEc&&(2oX99dtr8kRsxSWli0RZ+Np@kEFcF*D6q-b~iy zepY5sw4(`li~a9IEkaZvQWC4%LU~5{ED~;k&hj@rSL~=7p6wSXsmYybVa{T0OQrnJ zdaWsG;=SrFXyvF*sS*WOA|eyK!}Z?laD}AsW0Pm=qY>!8y8J= z(li(4sAUKuZjFbq3rJJAk?5jyhNL06_t(P_8uZ3qOsuwx``5ulOw7ExYK=rP%s}$n zI0H$)BlJC&U0>t5)*?8kdCffd8r9*pZ?eszzs3gk0-(4rL3E?OL8FJU1L#M@VWEze zpx8DXd}$n=p5nXeDCrGlaxBykX(asJX!Tw@POe~3Qkv5u@wDQ&y!Vj`5);stRKmIq zvJ1h#hYux8TYp95vy^rqQ0ODi3HpnJSFd!jGV;;={Xn-b7xyF2X|V)r+E#ir<=<*G z+Z}M4oVr8LylBnkc6f_o%Gq8#Q*WJQGL{GTR1YI*U4D~JF+^bC+%p>ZE|l{{D=JJ^ zFow$tfNW`CQJB!5c8)~>S}w||Rvx*P?4r=WOfhogmgoj_k_noyM)6**Dw4UB81{tj zLZ&ELGCj=FwwScOc{m*3Pu4o}?5JCeIXBa8rv*ha2C@$YDYgk<^wN5_WAQS006IXv zhnSU`h9wdiPWL~r19YFpxs)WMxCv}7^(DxDYxGt5Fcc&ZdK^dHuO+{qw7R{uV)nd@8jRTcY|IOsPZTB5a*vtqWsHz@?Z$`5Ru|uqI9AV+JdWL@+hyb*pHH{Z z=*d6ODW_1{R%0|8j)X1JJ=!H{4~5C$(W$BTW4Hv2O0-)_syRZR&Bie=0 zNF(HCXa%FXjN5XjXu%Vqh5FVum=7$K^w9=)1)KYqcd|U17;VotV;h%DxNRF-B0FhO zIS2pT_}7ak)YQ+SW48r3me6xN-YB{g`NE3cgPTb)!R$|a2m~A(q5SXhOS9qits*@Op5U<}G?o=T^-TgSKm#A~%4^$n6!OcfxjQezr!p;hxgy5E#vjbq#5vKty3)Kb7} zxhC31SDqT#6I*9Meq^x3EbEOczXQy0*JFlnN{j=S8r4dtTlX49i)RJK*lr88zNnqG zaq$sP!C6-*G-3`22f5PpJ$d%a)924*9lAmvGzO#$&3-#y&-;Z@cjm9?ZVL)uESZ+# z4nLc2v%ew2SFb-3Httf`#U#vWHuJTu`Y!REWQ@-C&aj^#aPN_TnTY!URpZB2yc%ed z?A;Abu+CC|@SgK^P*F>a_P7YnRl-xq8sq zT!4S+F&i>LBxow&sba!(QMMsBP{}>5=weTqwX%I3w_6wJsW`I?frFMCVE!wSAof`*g>+zpRc2 zbvw|YJ5BE1Ro^W?DI~{nf9xA|H{IWtH~`Eh+fsW%9S-z_)9;gXoV3ow*tW)#gm&}7 zBxCQfr7RA3gu_*gjLm5ifM7_Yj0OZ8@crcgQZ|S{uwhe%L`W2JJI!pi|0N#L)~S~nmIE7pW0Mb;di-lz^t*Ji;` zdnAq(SKo|HM{?broU=Ux4d+yS^-9%{7mhAaWO>jTgzia;a-15HSEcb9{1!xK*>)kI z@^6Hl=lO{(Nydn^DWgeRd?7d67+y};o9CMH2whJ=R_uxBeGCiLlaHt@K#a53ZGUgn z9o7h~d;OlQ#`ry9jh0kXblSE+e6oL>pCGol^5!Gh4F|MEJEx41I2)X2VD#8 z0%`XcVN8Z!Q>i9!iyJW#F6=0!nv;6FWo$XNDm^1MEOyz;q}f5Kik)ou7L$OwyDn{O zYQSDB2b(!mg7nF67*K`4KIfWa7%t{e(d4edNtL*!=JbgTcueGw*viC z>vebfsbX{Vx@HRg!m4WjuM}8-XB@z7tJN|XJeb9@;OBPO_^i3%cEJhCY>gt?RJYnI z8t{QC->ml9?Peay70RwsJIU2p;a9uL|J56GlXWCLjgI6YZWHYWMQ9%@&Uug-fjSIB zY%|`$sV$_xE4vK&fiz7@e1TmC$RvP&2eczqyA-Q?4HOe}Ty{}%|KISZ1f?8ljfj}< zp_cUB=jpf5cr8iXFUB_f0pH}-!d>>a*VQ1xaolGwU0VmM9Qu>wJ(~ruZTr0331T&) zO6F3b>2!1DV~&|L`0U`%qvQ92ijIct*xIPSqL zFifW>bQz3C+AgKuM}xf1hftzEBorz^>Fkx9sQbB1g+Mfjv^YLirj_IedpFe1@Uli z3`daZg+Rdu&jNoob};&-*J`JYI6EpWn&T+c9N}{-BgEifSd36|0);8-T4c1-Ab}h& z7JVCn@j!jBoY9?CL#GZDbG_G$63OyRS&|$l>vykhCnh@x|DoZYOz_Kbv-110x`$-w zMHSlR1fbp^+^g9%(9*)kyK?c}eF89sYEVIx-Q-Qlc+w%>RuHi$~(%|0MD6o496hbI6C z{W!oDAF_`NxzT{J9jE`!KKmSN7Kd?kO2}18D&Z4>@O+}au9+Ks`ANW*vSA6^IatCL z;k|xdFc8r~Q5yCr;MI6kqcnpy5qa{pY5pZ3)|r$*&?gwHof$e_a8Q);f>C2dZk_NZ za+m@wv&#nlUy9?X7kjT`(_^Z($ktrU!vDSFHVJDRcpZgCT=`=S) zKGCnV78L*PofeXg(sl~XQ*?0ncY8Xgdkfp{GjGU!bjD0LHxBL+jK=Lv4u-Rz+#Fs! zG6Wjd`=7LuS`!Jm8~*{9$54~eG6D?*9AK~jS4X^|1`@c@{Za+UP0l^U0$ew*t$ZVp z>vXKHPE+%KgLOJKIOmlE_Kz7fi~6x`yQQ)-V7)Pq7dL%+0kWiwaDfn$eY0?XEJEU; z>EeM`i-<-zRSv3(7i|;It zwG9TsXha9CDgis}aDQ(sDS6~8%6cAR`-{y=K%L5|H!Om|ow->ZY;F+ku`z}TVulOq z=|sTj{P$$v;BvQwR@XfL*xw`^95}xTlg*0rO-?=#SKoMYRo5*@j{lG z>ixrxW@zL{AsZVNQ<=1%OD}&~2d=@(K3l8MK4C8??j9#bMYMAZzl8V;M_m5lhfH)6 zF@rzlWgD{~8xfLtWM(hoR7zYQa7mLuMck=%#o9VO16T!!S`pnO8_D16wfcC1Q20Ay z4KNN^)19;W*x+O~EOT|g9$z$eMyU$1)B`2T<<|Bo%-l0EDfP{H>(Dx)uuB3uT|XLz zd5Q{?rf{ciNy||cd#j@}t$Kwxo6M(wFw(+5qLnUb^#L`xgl(OzEk#4bR!Bw7maT5g zZN>i3g@UYN0*cNtuz7SiO_Yd&Dx6@bC4`ikBcy28yYW(*%V7tCpEHJugN_1|#noXA zdCaET_rwX;OUQK231bO^6fHPbV1e0QG{LTVoIFlBzqB1wp{A>76}nHFo3a| zD%PU{V;S`7>wsjuU}U6o(SZF3${p@st>IhS9O;I_&tQOIr?NKUKy_w}3gR1y_Fx`# z+Y+?fdJ61AmSm5QKOUy(=-u$L*Lj=1>kY@)-)lNxW$Z4zA_uCBVKL_--mRs$SX=U3 znWc;187tO$Uh`Sq4EDe6j*>hNcQ*Jf#LK*i-lde4tPH@t3FuhDM#b$odLtn?|8!b? z2bdv@^FhiL7#hobFRqIW2xCl%>LDB!>HGRKtT*8d5F1gPK}F+4#>scl=>6DdI5~mN zor$tSxQLog=qihUs}c5Jp8$%1giHL2r)?BGEks=30uM=B1NVNSBY%DJ`LcfsiZ|Pp z(~*0{<}=!>zYo~2pLXJxV^ubF$E@?8Lw4iDiVtP1_;z#fM2e@Qgj2@{^kROUh35YZAAAj_X5`XiJ65%>5$HbH{ zegnH_5C|RPM!8|)ID(qO{c2n2AJ;UYk;V=sc@Q2jP0&Ne6v~LIQHa6oHL+m6sL?*Z z9DGeX=)jV7ASBoNPWC<0LV=cqt1c>IxfO#5Jt~Iemduh0Mc`4%s4}Un#2Uw}iAcvv zu60Adb`PThj-eonm=PQul+D1^;n{6DF(WChlsD(X?BiegzOp7;JVwu9kI7&lvf*R+ zz6Qq-9UTX{$*gjdf6U&$WN!Jrd>nJ%{eB;JKYQn;Cl93yorfTjb6LXy=T=F~Uuzy7 z9vz$)=uYs{?{NWH*3i@EPyWfx zAX5N*1=;G>*>BEln#%9@2bo^S){|8*#-F46>+=xlJxA2~JAy)gR6~G+?)hKCi@9sJ z7&;p&%vS>RUub&}v%aGUH1yK3cS=g+&wmZ4UHUR&OrQmilXU*_mw3_5h~=wCPi(C} zj-FUd8MQh$bgUOHTbr)TpNqvB`7JP5%a{;RvsX9{;ysw*96@zNf8Lk@pq7;Z+lWNK z+m}0F9ufzR6nj&Z^0LmYKufKW~WB>kg*@E=yl@(rJTi)wlmne^TMCe75s+25Q zJNRNBwmkFB0nT~~tOaainOWHUpajz^G9VqiW@i|vJcs~UN+`MW`2CuZpXBBYE_+nL zPbS3b7m3)wE}1W23pA80zRIeOZ=GK=h5^*;~mt|uR%>S9_25z5S7J*Fd!P!WE~yLd{#mK`_RNw&rb`ur4L z9-7!BDiVD>YU@PyB|Ovy$by-)0B@69x z169_`5rFhdl;0_|iYxZ_uO1_S)!L(I?#0|c3L(+9j~j<=M7F|}{HZWm;HbIf7~dXS zjsbhrS4BYHyx=_IGr>Q2h*Q6Iel;0SiXo;bu5_;s;EWI@zpO4(eDE^LW>F`T$p<)MC6!5tTCb~ zl8oT(mJBi^8v#SsPH~E9=%W_r4%iudUI#fkzfjI3i5O-EJ(LnjVxcx4@f2N5iP%^$ z_N(~SRS=s#Whj;ov(l5*m2qO zMXt&Tq)7Ra&)$r_jGsPz@|P81A{*O}n8=-CA`z5{m0j7dj3kU{8LBY8eB|--+WLv_ zgWlFQXyyT^l9%;;f#IiZUmPf@rWTT)xxQb9_c|X1(Y||4Vt$kxoYLO&7Ui9Kq9af7_ zvtr3sl5XlP%z$xugDp(x7y|bLbD;ny*ETYijg{t&xp8E^)AcjLBW*-XUHe1L1Bp1!eF}sGQkPf>h|kbUitYORZXlX$`>kX?Td7PwB(K-k>CF zRumAky?g|m6wnian83_-{g=nPiLjpZp2E3U_?&Pk9Hf8CTDa}?ix$ME(Wlx z40j_)?JhMtV>8GS;fb%LmK)40ZeC&j8E*Lz{x9TYVAhm+kiuUnfCzMzh0-Vg+*0}U zeb0BP)uk<2dQN{lp}tWgTLx|%$bTFBR|<@a0xa$!Hl{CGFYV5>ERLgj#3MBLU`={D zsW$jbHmSWVKYzyVA&4;q$3P(x$fe7eAbjq zH1olY&$aYFjFGS!m^&eTw?hqf!}GT|KT0bvU%CUe{$_uBeYVaVkSWBp zA;p+ahGv(2wEnc+BSiPEbRl`1#7Y(RjX7<*Yu;dPMq2{cG&$F>-hB3KJJPf^?}r9y zlT@6$YtacdnKW%|ETvqZGIWLTC}HDKA1Cj-Nn9{{d@R1fTb!8;J4|xka>+4n6BNLK zyrP3M>NvDm_@&q`o27O~Bh+MtK=tK6O~mYO;Z;2QO6*{hY+O9?{}{SK8^B{lF0$kf zV+BV`JGam(zl@1{qkF4Iml!H;uP8hDJ6p_Lu^UNk!vU;E3hvYQ2cRA!Q?bM`KDE)X zQK74FNfDeOfgQdBkz4GaVicp{ArD*eaa)9UUif??5!Z#EFtM}TZM~^>Tk=x5+rr^0 z-4=VjP<4PLj8w4Y%i$WOr%e1xum!lv&>L2T|4WD>A4DOvz<7_V1IG1_<-SU)0Uj2f zM(dA=`$E^C+8BR zEUz*$Cc;xLoLzl3Q#OArB#Jfo;pmOiZoJ|g8V?WY#WD!P_Rv@!3PAH}DlKznbBRsn zr0%fz{28;7CWw}-O2h*P)c7g!8};?{8=T6(1|1VL9%5h=xvV?NC73jzbQCGB3R6?Zr(lw=4;PwCm9ca+|*;wQYnO=ykR*BbfkQne7+Mwk~sG1ls+T$koFGUt)Yz@x5FKhXl`ueIjG_YmidyXp>58k${JwxJdk zj<|BOLZeh%asPS^U3Qq9a@NJYSK(6Os%CQg#R1ISuPHdIu_8W{Lqm5iTucf1Cv)@W zgb*6ifQwsacOqAi`2+6l4;I-h;)uz}f5&+g@_58Km~aoVQ}<+w6#3e=j)VmyixzDZ zdM6wR+eiKThLgjip<{&gu^hc0^)l0<%LrO92-c#@s6RrNaU<#T|5T#IjVw{2jo1hr zfCM5w5<4}24g{VK^jE-@*m-`^YSCFd-DEM;XuNLD__tgXg;cMv2^Pvd`ZJS6=0Eh$eUo(IiP<9NL- z_sWy1OkS-xX*W9+j2M{cZ-(VzjReb~GJfkiY;#5keE*)ViSsLUX-0-NLjckej%DnC z#Y^SQ^_!TW0Sy4$T`Bv`neyGE(-nJyeY13@9^#VeQfKgJFx)~B!}nw*ybA^U`sNfN zV#JLu#h{u29!N&rLA!n^L=07CE8JHJ5x+4(R6H>_ap{(aOga)#7UQW!{5KUMhHJxo z8oUb?!$ZVu!PA%Fce$!XEo;MZ`T3#Hs9z$uRuG(XIq(>=b2+5_hOW3k#>*_`T(AfC z5|vw!f1qaKRJL(-2!60)Iq_7jO{f)TjyY!x6rzO1$|zxmrqp^-4iHTfMHt^ku3>pp{HSMdA=WE`UjHsLs@Xs27-?vfj(Vw$2V`w*?T50C7Xs<^7wi zan3yjJlUCB;{a>TeOICQ5P#eJO=`YgA;#!**g-}Oy-3V0*CG|`_+79AnPule=zB1e zXoka#)1&#~#tTK^aIv>=gRcVa&&rR$Dl$TMV;7YH0Zyq!tBO|^m(F|M&Ni2*W zhec+?bLX%F5|YH^Z_J(=gm)7sLopM1%x!3WlJ5o1NT+MUfJO@g-oA{@5laElc>%>= zX7!a6MLB`ODM=peH(6_ZyMTVU2=lzhtZsC)Zq{}*mp#xu-! zBuH!0V=uzWdJ*c6`V6Q<+@Ye~Q;@Y~QJ1zMn4MaP;=U*t<*TviF)Cvl%lKSw@uKR0 z?^36sqwZ->n$Pt>NC)no*bySTMEocaEmD45@fwk-x#R(R~z)NKG@bdv(&2jkO z!cvfJQHbYQAZa-YS$$bA1P z8E-o18`iL)f73r*O|gXL$*wwWbchnK9NmXw-=liJuzTkjgH>A(E$b3e1FesVZ0mk$ zN~_+hS8*Jw-PnK54z5S88>isjq1ALTbH+d{fhb&8;G|$yO3vqGs~C^rFY({Z>hTfjRWrMp0p%=_*9w zgQ!3JLW*)?^O`+5pahccYQIlc!9QyxIpT=+ijYXnCeMVu?Y%ElJJ!|v|ATNhK7 z1sAwukZB%w0FslA*L)9-BIQ%T^wW+-PS1N5a}uo82nxlWqS|!sOkVl&IB>)U>wm96gW`sXz2ch zXpz<;wuZ5>Uo8bxl?19ghAlH;<`WR-j63 z=jWCQ0HgI$JZMEhrZrT|CXz(nyg;3`jY`5a{Ub9oatnzLGF?@wlT0kWvn&>8^nqh$ zbF-481iOz@N2z7A!#2XJ0vF43$c%ILiIaN{IismDn2f%Ip;f5+o1us0c4NgHq~Xl& z`0`ZcZeGWdCwT&GWPhpGIuUJ#D#PvG5D|+tA$7kG?QeXC6XYqpmi>-CJ4IKQE52|cjRUAwmZ?odqUv_3kz{P;RFk#WvP&H^owe5v*^ltI%iZORi28| zx7u&6l6hZ>K&7Ft47+xZ2f^&7PRPil>Grh0e|Vt=x&J_3$sFR3$muYt960Y5bSGP1 z%%F!J)}{CnwuOCbJ5K2*=zxM%pzikHXcyk|59Ll_ePk_F<$9@3ITpvp=P1goSAw?} zu9y*b@8#;NScks6iY%X9+AtEGn-FF)qm+2>v;o>0qGV@>9M)}gLtMidM3(7RavNuI zR+lVM_f&M`y~e8Xk049sZ|p<9EIdlO>V%UONT+Ng6kM~z*+7XdLh0#dlKu2lc6hxN;Qs(492rQ#YT3VN<~M2sN$3^N5vN5 zZ3H)^-*ERmpF+IF%`d4p5_GYvH!=a7?hSe42z}-m1e~kV-czt@tMbOFgb(MTfM09% z+F8`PDC<`L`==gdNWH^l$LVSQ5ND6wLSm>Ll^k@-sXjk4Ev#*5Gbd~ldewm`NFPzH zHffD0*+bPs$5qTHvoC42yiDG0opot0+XG5LokM5Hd~>T1GUBk+AyAwEz@&)1E+x{U zLd}#u7by<+x%56c@O8eqQPF5vfvIBT1v4>kIy%Y* zeXeS2n3#4Xm!vdL8+;x`mvqxeOSc=MXZ6QrCF>V!BM4T`sO zKhUJr)}>QNL@5y90cdr&v)8GZrHE~1YhA5q<;4K75p)8OBa4ArBA18``@#frrAk!2cZf zfh{#Y^O&Mb*FOIWXNEawUmG2m*YfGTNDth31I){$<4b{fbM6J4t<}qCLsDQ~mBjbP zC%jtwebhY}4nGbDU(h18>8@s`7oM}O5jj|vfvWs##%`Uu(gp+twX{)DJ`z>{N*iyj zSr?Cv!|}ia9DdLG$QjQMFQe--DC;)wgCLJ2XC<6U-AGu@G5{Q>p0NS{fat~tGIfzeIGa&aFLg2$SR5Zy`A2+&?=6?n zs#ekBE9D|uGc>fQ86kXAO2|v6Bl%NQ#>5l8PwI;syTv`q8_WVJqU+j*&`J`34SggH zO+Mtn7Tvp$t|2!i;0PS@^6r{xgaM$XIViXkM-(sq@LO?KbtnFcp;2GPm>=^0MWFb! zgUdaBpv05;R>(uXLLtOGQehXO!alC{R}XYQbG7@)?L>B63oYUaKnn{Du5!bxG_co} zT)Hfs76HVH!=IanKR^JdoQ8q(a==y8HiXb8ud17AZjE6qqqS0DftVI`7F6l=3>vz_ zk?DIud!ak&wxnY*k#u|+UIEJu&?DYTB*AB$``+A1D6yjj+EGZgBRhuvsuW6-Ca|?C zI!ASRo@$A#Kxo4dSyr14QCA^z-Wr=hE)lI8Opepgwr}i9g}=A}?X+|F2wLw-;3ZWR zl_4|;70E^kBZSuNML`(ddjO6ubBWz9CjebRcoA|$-J@NOAngv$hDWE2{JLll#J}Bc z_w*D52*i9chhAWvkBIRKol^u7o{@%*?kVxZwxv<>eurPXJv|fN^Mlxh-t55!Zy}KC z_J^J3A0Pj~)A5wDpq>Ekg^i(Y!^#(ig#UqgqfeG5B-W{ogzQX6|ILxeB5XZ8J+%YvL)zhmRt( z217C;PzjjYE=JglM$~RZw{H2n=20v_rx}Ecf5!^){BOHKCTHowmAj~NY>#aCMxm81 z;5)|la{}GE91&gFc66=tn{8Fi!;Fq`IvAwM1anSUkWL4f?~xWYd0#x)sK0o!UEjnH zFL&@q?ZuP&*7nZk?#6a)>&25A{=Qj%x%qN?r~VRu$6M;#8{04IyW5*kgyCB@*X#A2 zjrE-^9H_R-|JUl98yoeljbAZ=Nk`O8M!85Kb{gXO-KLzoh3`)}Ec}r~ch^cYhgiwJ zWN4c*5}%sWw?v;nP)s$2$Gt+B_UY4=iP=4N%-^*vlVpmgt@hXJ)~GX`!$7m2V=eGk z2)tfAnb{>?{z1gGCMxml`Rm|G)$@>8@EQl_wJZ4`x!6G*t#3(FEQ$kQQyIHe9UX8|3M2YAk z0lVwl6hUp71v#}zZ$1U;4v{=$Hp5F{U@_i1h4hw`MiHeUbzM*1Q*md&aT5R|5vX5+ zh&LQLP8l0hgsr&7&G?#*=E<{Po<4Wv7X_etI&y69Ssbx!z*7Lq= z>nD;s9s=dsz8;Rg;yGDItDw#Z$~%ZiTLa`Ipb((c4EMoMIQ{kBmW&cc`Xm zlvY(Fv-}FOW_Q{?cas}*@8rHVO1LSGvjEsadj|Z7tJg^Ad~9p9S~yolm|dblB}v&EjqJE;lfu#cg#}attobEoJgrBJVlhrhq7A^5 zKSLW=Z6otnwQhR@Y!F-zw5y zVVPTyfV%d3ax#sp7^*5mk8upbQjJLFGJIJM1}&n*5e`;*aDZJj62y-=LzNcvhOIdf zd^M*h3M9mGPs9zG9D}pep47-qMj67}QiqwbG9kSHqQfo|lQ0n@jEN9n+^>5*gp8iM zk1Q@0ZF640*~7UwTq2;iDeWIeBK`@Rc=6py-Mu!YA)iygcrt{tIfg44jE%tk6J|w_ zA=v&ZPs5?lVdbu9OfG9$Sh90#X5+qcU%HaYanc!LYjURVB!$cZswogy_<$KF7@%84 z)dd+)H%j@)N6c)?Br~?HLZd~jkrF%ag$NTm+Ed~JT+`7>V)%Z>cP&vazYXf}X1z#D zl)30ZV;B-#**S{t9^c2yfnlj)LT_O_VLE9*ch{YNZc1ObQLiyXX^m3)Y;gX+q{(&K z`r0@`5g+v7e%gmaMs|b}jjL#3!3Im}N-gyo@~w-@iK}VC6Sppqa5k44Hw^E>0ukgi zQ9evtee8+x@N(pZHM7)UlA1rvxlESv(w3K$)!4j(u&|m-*sj(dK&N|-iV*0!+Bg|` z!kk*dwO&1(AEN3dB7q(EK*8lX-1k%ZvaM|v7tHeZOU{dKbj7T_Q#bf`cuJ(#GB9#8 z?zc1Z>!V83W!lPVCd$zm7)W82jnItslAe}!FqXz;y*luyh&G2P+^HvEH+WZz)pHom zKmqDny_1Fy!KBynecKYJ%*A5X;VtF?-?*K)asUh-!rjjqZ4`xQB?^(GUfkGfqlL{= zi|i@+HB-4Nr;wf;s~+5^21)DM<;ChEjMs4x!WPkof!1I1&t$WY+OVyJ>0;R|Fe8Md zUX5TqI*(BB9LWjjVSA~s2r>zAIyO9kRvVUPTw>%loRM?ZEx8yCC&TuzM+NSwC#3aZ zFom{Z20+ud>h}s`TT9GJ70L1;D~F<5`tL$k5(U^7gn6^%>4Bb?8&`%ms1KOx3*%z=}_`c$sO8S6`Z~6@%od}0#fFM zB|yBeKz+k*1htF0OKeNF0mgw&G)Nl+noce+NPME2(CnE!?!HH+Y`QWsGS<>k+0QLb zRDV=gziVQJBna&A46#c|(6ZXhY`P;9z>oc=svk6B5H@*9><38W*-*T_4^yjXZ}iiQ z_2pnk9?H4YklN!$FMGfFEfL(@YTPuEJEUU5*!UsiNi0lwX!Xv zox#+2-kY%v?^@WkzHvPQHlB#EE7~cMwlm{IIT26cO>(|m^hR{3e~F2cspON_{XDDJ zGt&$Fv?5oa&QYS8*xs|y*H^biK4IMY1}Lr%DTiK9Fhh~H8I@BaBszPr%~I}hOaZ4Y zJzNGmk)lG!gny#M5$Uhc;>AlN*NWhfvcdpyi1~T*0;=KzQ8ic-Tg^o-2lC~J#W1nJ zQn6aZrX^cosjIbyaOPBTv$)H#h@(R%dCV3Yvu5R}ZH&XtHJ!Q9cryuA-Nl?n_=ut8jhA8i}4*+pZRky|l%b^|ou;tJ3)a{~F9!O5>=Y`E;IIK{_J zRKSf~H03S0k@`jjy|~%`*x#t5kqCTZ{0Txa|3v>tKTwMCml}T)NX7UI-xp}be9IQ! z;)%ul&93}m)Z#`1o9>%m@2egm4N&$|f}JDmFBC6CELd1QRh8{FdS&`u6q^6@_L9Vv zV*z`eL8=wo4zGQqm9f+wM;}?AzOSDNCvWRfIdqlEq1Nw%h}1VH(h|-TajWlYNCs;K zh0sZI-JP5RLri+;Ets660~0~#L)CQSIAiJDMBH3C`1tSec&Ep|Cw@wjCiMZk zC9}ye>5so$pk}Wb%$=P{9V&Bue=Z>ZnW$QAqdQ>L(-j07r>D%0d|=|p4H97J0HqZp zxqnXRY2(qmt;)MCjCE3@Z;qfD#Z}-^)2D*?)y*6`gx{3}YKf^^~9DwOp= z*9n*uT1QDABVN_(Q;8diDdJ~gNYUEiD2s+1wG9(;kTJ5N@(_ZI6{|eNSX{N-1G;G6 zIk|`TUhbg*wX~#-!FFj@(hhm+=Q+qu9@U%bnr^SBx>k2>!on$Qe%Ko@caBJr3qLq$ zDYQ8M4P5_=;TVc5B+s@+t^OF^Zy7WK4EbH(QjMYu|FxnoN-$Cmb+k87zVRFUgYpbS zBQemM?F4v0lzvGhx`5OO4j5QtGRu3)BFFOe42%0DNhg!qvz&HgGx9Fi7LlamT=O;5 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

    u{(Ud26Q8S(cerf=!;TEOd3Lu@{b@6{I-QH!GG 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%0A~{{OS=9cu?91`e#{!o=y9;xX>?vNhsp0X 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

    *(^H(puw8ej*Efs>9bJxY2!j#F$I2FF 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 z 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⩔+d?H}Lh#jk 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 z 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 hhga~ZMN5>2_=#RoTIP-eLH9fd)szovWH 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%0AfCPvUmq`J{F{HMZT#$`>!-(l$ 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�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

    oNn>%9g;%n5yzGJf>0^z8VDRN0f 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⁡Gv3#E_&k{~+phbKN)AaWZ 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%0Dp{m$7_E2=L7sb=I{K=Prpio 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 literal 0 HcmV?d00001 diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/enclave.so b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/enclave.so new file mode 100755 index 0000000000000000000000000000000000000000..78d718cdd99a310dbcaef481764f551c7da75453 GIT binary patch literal 2656544 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
    |te-;m+^?HS=F9;AFl<%84F#^NIPMEEuv=aj17 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 z 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⩔+d?H}Lh#jk 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 z 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 hhga~ZMN5>2_=#RoTIP-eLH9fd)szovWH zahG>!9qll#w4`WOJ@_^GdSr``XNTHx80v3v_-lHVtxw~V~Nqhz;VDfcCEGub?rRcrex!}#lG8yz&3N0W1FQ3Rj%N{Mn~Y{yLd5Wr{9OG zW$Yl!zxgfy{7R5zbG0;^v5Zv9?BvxlJ9)LtHhOL%wUqZrq?YoEq?Rp@wj4t(<>Q#D z<)Yt+-^F;jNVTNeCt5A#dy`tq$0N0rIi!|+>%?lA&1z{c`18B5R8!8Z#R;d{YTEg= zU)$EsKn>nRRnWG_m`T5~{T8aHZ{cu8mcPyoN0!(@o(G}T&|8!s&*sQtHn9|mEEHxf zNy68XM;6UczC_3(?~w>uS#>+(_3)Mc+$Rgj{aGtSs zU`+1tFKbNYSRj0jkwr5IpZ41=QVGAnApCZq`OKnP*Nav4<@VO#WgI zTb#8f`LF-EZN&_b4Pyo`ZHklU+J6xhVMdD$A_o659ARPyncjr^SwR@HiGUQs)H=Oa z4=yO&*qskp7ELY-9cHCtBPoRG^5PkWFqVQ}$FyCnMq)kaeQu;y_9+5OjL^!O5N2Wl zxszJ>B}DlP_Q7RIOmJyysGR>Z+i#;HO!GI`hG|6q#1=HRf?Pj}b`OW@JC1aQ&y=`IsQ8 z@y^G$oa@+mvW}c58rf3hL%FAS8k?!>;6x#t>Zx%Kbo5Q|(tSn_lmcN{bs+a-#kLG> z(QP1bxbcjk4sdTSZF(0k0=40E87G`BIFQ|i136uAfZZj&w4|x|pm!Obw;In&5mQ=i zxK}*OHps-Z$J!M8D`wh$5fv?$-NtCS06GzgmWg6+7oiCSTK<=%Ftp50gqBu(O*A5; zm`b0vWL)_CxNPgeYR%Cy+g`X@c|U7tDX*@e!7rBw=A%11RvOS)3) zpryQV2rcDfhtN`%3ZW%Gl2x=kQL(^XanN#BVziXwyK!P$AsiSmGX-E~wh3TfIKwv1 zM1{{i-AUv8pV)2#6>G z@*`Qr+7lJ2ymM@FG*3 zf2g$G3@YI66I(DeK&>JHH&MLu@%RA*;BI6o%($hvkmS$Co|fi-Yt<~{k7wNSI-I?jO5x=c44rhwdt)-J?#2pOeak8! zD@tv`VYkCOh7L|X9M13#We>nScmNJ~o%Q?|o`GgBZDrLe4%C~c*~XbbT1>b-jd|zV za@!4|0&a!aAfg0nMSz=3`1HMa0s*`a;ztSls?qSoim<#&_;gbcHjSWe?vJ${Lp`?b ztHkC`);CL*l@iI@nunHbFXi6WtzqR(icNeH;;1LIla<#o1#jQf2=G>3CAQ5huG)H* zv+@w(_OtRj;a0R#BixqOAJvXUjVkr68rFSaY;$|&C~|EiM1SEfP6GW6H}Xi~M#h2c zbR39maA*rVy~7mScp1-5KVA8==`q{QpwdQhE;~jBK%t{)!&)@=wyByLA>HHAMz;0nzvfPAK^xiY&+xGB7HC5@r73NE>yaqhkc}3PHt4FYNgMJZ zB56auP9$x}8j-ZYkNSARHPsqV5t1Y3`H|UCv~fbC%-e{ORwN*@n!hki?2V{Ve2O-@~?BP$iv@bC`4%PBJ4MYq92U$8RXcDhpUr zz8VZ4t0=MN%}K|ehhEHpO*(gUO*l{?FHVwlqpqMEDcoN;Fy{!@7|z;awDRqT zY$Il%Af}sZ=GjTyUm9<_5mnk5bt%(MF#sWYtYa+_{!%=Fpq<FvW z$5L*!sg%9<*@nl!EipOf?Bwacj6~p3ZkiJNg3b7jxebN<~JSdn8xOhH!ov5I)6Mj8(FDJ#P*iW(U2{y z#CNwdQxowVcE>=$IBuD7CI66|A-E@rfPp>IiDX*Gnq$KXp+T$hVfy_ot%4?d9 zos`;UBPjh9?2n^Rv3{pq>#t$0|9s4xZ}!e#Md27$U_F1MvhLp?HzST%r}FW=)A>7q z9r8PX0<3a*YGeU+seTHebetEC$22&~V3xu~RuIjmZv>7GZ*(YE) zemFsi@3Lfx5|w=d%qh|CoRjU%0uobVw)NP{@#dcdC1xideOW$-eM*#fjYEkiX~O`^ zlqg@b&qH85jiE>UX;VuRz@uR%If5$e+N5zCz=EPDK$Y->NXEyfQnT@Djd?GjW{KmI! zx3x;BKkvqbI{mw5glcCOgZB8%1))x6$r7O|F`>-~HJSM|TY;ey6RLJ12~|s;P~~&j zCscXYID~qVwllCysPc7933bHq7=$WcH8G*m9a^7I1AO57v4@x` z+XYcD@h zho(q04yyP2x@}a~w|{sHRI0}@@5Gxcyu8bZ5FS6CcxO>Mm&W%L^*o7q;`)8Nh%1#E zSBih%bW!?sqjWO&eeQ7%J^kD`4m~}3K>-5!jDE8q_?~wR*t6Q{9lanENn; zAm=^gyqQVGki#bqoa{#E>VCh|fH1R@+63bI7b&KCRA}{$yZ%i-MPbg0ut@8d4CCPE zh_wFs#i2;+J+BExTJM3#>WH*Hn9Cv3`p^QzOka#p>u8~EqzwE|1Sy?(_~(>optyBW7n`oukWKXzO+K90pu9exzYGt-nt(132q?PiDq?Ij? zuWqK5@>xhL<^4!2We#bj%pt9mIi!^`hqRJ%@RzmHUO@BJ(V8jU>v2Mv({jp_q@4G9 z>?`L75z2XL!OgP;w%BHT#``;hG&g(D^-RL39r#(7B0bn|YnXHQPpv^Ki}9 zlGSX@s%FbOB+_hoMbhk+$2T|AZ22t4CQ58E7@N@2NxArxMd4dn$MA@99qIpkTw~3) z7f^hinP#gFzp&sI;h#RAMD;Ge$+j{CmPV=fDTY~py3zJasTy9Rv4(HHC0xT}2O6J( zMog&TW`3}gh9`(G-bNa3DWJCrcWXw38YnkKsKJ3E)X)JDYH&b=8d^TR$J>1Y8P-pJ zP!QbRda-GKn{QhW0;^1v`_zN2#RF`=nX2KR6|#o615QLn_d1IAFYD%g4jVf9z0W=F zYFgKLxw^3Vr)X0#>6~^0Nj&Lne6pzo`i|y!(b-=>WUxx1jqM|g&E4T8n%J*Jcfm!lrroDrBrA})n!DhG;9W?l(Zbi zQ7Lo|*bm4)K>@WXSYKE`ZT_T#*SVI(!5za0PZ&yjHa3O}Vw*VZ7FRvT`v!K4`*cq0 z4gQ<1v8~A_2FNJ}ygBw?N`}Oj9qwMV7*hEhUty37T1RsMw04YKCT7%g{`-hi39_*3e8|T|u)G z9I`q#n#pGkp_zQ15SqzSAvBYvLTDySh0siv3ZWU5GSKWq#fa``W^A44D4i!4&z}8% zw$(W*9RKN#>Cb%Cb{nXW_8Sqbw6=dVq$P?D{Y|vKfHXf#HXzNK2Pp+!ra3Q(!`?la5praoyhphC&}ye+E;ArcEE`?iL}>FZuVM+Ns!|<0yg=3C3@yRtk zyZ5yXN`Y=B(0m55RZ}0^O`_s-&&wI72V81~(-z|&XBs$t6@H$uW&hzgt;9bz!D*}R zL))Q`W8-wTftD@7>Fi{1THe_XPRl!);Pf9$#`dB$j$%@UN3tX3O{`n8h{kKYj@;xV z5l+k7MB=o(R3uKz8j(0HYeeF-tPzRRvPL9MQ;l$(&W^(A6B=hYDm*=pafguKG9gY2 z?`BdsExn!zBMhHhsJ`z)+qe|C!3?U;PNuu8x9#RrVg2T>FszTh*bLUKMHt?KClKcM z-S{cvz`7FZ(FE4*_)%>|d5jI~+KGU5&A>rx)7S!W<(=)oy1bJKthZud;Y6@5-z5^( z#{~9tjijaur6yv!aCImhjlFq)=y|8-&@Vh?^7r?;K@bxSv_sTQdH>p zvzr&c*~4}Vs=z)jlY#x2^UZ+WS`6QG{DuP9pJFMdUnM@U+wmr+fW2HRN$-V4%Z6Vi z1?&-n6SNYzFM7Ryezp`Qs+j&b)BZaZFXd?Q|oXW9}E4H=V4>{Gi2z48=x&3fgoCdU0qj+JZ0;8)(& z%f z?ZTlC{k_NY*yzAX(d-gJf-U4x-v-9MlHUV50)0v)?7d z5(n|DMM4hZS&QU3NX}d&j01aeY3Q|fwvjY2){KTyd>=n<-9V@9hE^%-yIq;G9#1o) zEIV;vkK#GRuxSE*dW)2$#H}--Ec>$_wnEk=qAcyiQI?iGWyzClPH^F zERIULQ-s<(r5MX(+USHtG$r^<(NuisymP;8=+wiRJ`Afs4=d{Q4t+rj?&NTxS$#N0 zY5d5dh#QIDX6)CTapReK5Dsm*cQj%ZzT+K@ScM;X2d>iktw1zB1f3k8)n30yI}0~V z)62Gxd&7bCTEFFUDE?@_cW~IE_4{a!anBPUiLl=%dqEeolL}<|!&@DWK|a5y!teIf zY)|u497B}SYt9ot0S*DnIM zyU-VD>pVYgo!6;6t+#hKBA!)ypC9aU?B|^Q`b7337!F~R4a+{zf(N`Cnp`FK-|T&3 zu&Z#hlMmZ7_yCQe#PzTs(C@c+cTXxPTMxT&TmhMn^PvSb-ucjib>26i(lt&bQBcA+ z5FeLMTy%n*b;!XEFDQl_K5^k>14Yh#a5p*}eKinflyZu0m3qsN8)23K(AWpn^3qXS489YD(H08&N=kTN>J{jguql3xxgMc3| zqjrV1@6a#pOy)&|?av)K(C;Sh##%}L_xV~ow1LZ^fd~`T;YVmCAlcv0y(5sU9gWPn zBQH@qvL-vScR8>47f`02v{z5k)RPYC$vNstNA<*|o^(=AI;$sL)RT1eq^o+;jZU~* z6UQ>HwL`ZqQoFTgbnABL$eE&BFOS`=@4v*mslH&q{WrHm-_}Im)NubE^7C_?FOTJ@8D}G-TRklD0J^t==Krao1%H2soh(K05oV@ zcJKD+-nj`-TPu0_bwcf{(X)?r_x=tC7y@*7-^qvd8QyvODZ2gqky_bW(Dn$e>@Y}t zx)$`qdMF6iC(qum29oIwf%jwf?6y|bPqroVLTdNE|9Yc)cjLxUy7vM~ARNDVFC=vI z?N9)8^rDJjfnt>+dY|a*2;_#{jpt(}C`=PFQK#a=EyG47WM2jc-e%i z{b%Ia0!xr1^E2iOn5t+m;tDc_@9CY!w(vUG!lYEs4{|w0=az*-*4I=`o z#fxX+sg_|o4-&RB4rDXoKsFN&^gytkH(-lvE!c>$1^sShGp}hqo4V)LWIAz7zG+j0 zDcX|EyQm7e`f5WVALnZ+3VAs-6f2|`5)|@osK1Fq(kOx0=lO9I*G?+rAEA)#A{3JL zv1Ijg8VWfsN+D&6R7ja36;h^1g_J2$A!UkGNSPuPQl?0SlqpgnWr|ctnIaWZrbva9 zDN-TFDGEvLK*rm88k6V>nFEDv7om{ZhCg5~G3rv1jIo!JWQ@R+Bx4+=BpIVIBq_>Gt-{JpBQssOMNA+vVMA=I8OlxLv{6F2 zyT(@T`@6-pVmCBpm#FsPATgA~fz?|K<#5&(>iyeKlj+w1ieMQ-y-!!5d#OH|mQXdk z9|BE~iyi(CzLuilKcZ%44WADQ8vdsSQw=wUi_fPte36Pz_BC9Y2#c%XG*m53Oy8x# z!66n9VLU#$S6Ez93hJ z(oyMQbgz^T<9sDOjQExGF!oo{!%P4rJEMN*b4g@e!T&pNx`XhiT(yu4fCOZZ& zjf??IGCcyAWO@WJ$@B# zgkhVS5e9B*Mi{!O8Da3IW`yCJnh^$YYDO5ssTpAqr)Gp<9A!j-9PQw_0(R79#a&~7 zoCt7%x%X~K>>5K`C1Ch-AX?a!`x#m5zOs`1em-3!&opE z?nO$$-01>yiqFah%!SANxi&V;y_{>wmMf)F@xU(R>UsmvwU0)S@OWYGq7Srwhvs-U z)oJ|}VplZE!>UZm%kXYO-uoi2eopJTyH+epMi&DV0nZ%M&Q5B0_MK#!QH8W#Jq<{! z=4&aCRzkngZdy(9dzJ{&E?i7$>w`wrB;xj|Io^YQT*>H$};@A;w z$!ToKkq7ObUg@SDG_vTHt#So}CVn(wtN3e&;_Ja!#+{ODV&N&dCT55<%{-ApvsF_s4?VNN=EkT#9HDHF!24mv)3aCl2Ih$A#PxaUoac znnJG3HHBQ6YYMqC*A#MPt|{coTvN!Exu%dSb4?*v=9)sT%r%8vnQIEUGS?JxN5p{K zYy)yle2)g?<^Xcfi37RW2IP__a;b#evN({NVF_}144M#fXYsX?v|edFhyKM$KjE{) zfl*iZEOFKrsQdBT$skC80=b#nzAvXpF3tyF5Bxis=2iiFeBPhg1EF)RXHi2w4 z+XS=KY!lE{vrSN2%{GB;HQNNY)oc^sRyt6R)ZP-$j7$_Hp2wW(C<|CLe2qgzu8r@O^)JVjpYQgl-48VUstM!&l+;6Rubs z7`lZk7H4e%-532m87v7<{IeL)og&NlpYQ(Z&170!MQ`jpuRCo&F5=O+Uo z;*)>x?j~3HofJpIReqh8SFPnO(ejoL&Z{1rw`4F0>$JRPE$=|xu}8i0j%U(Z(fygU zR&+-uf_Ti^l1VE@>obF!v3fK!xWhZ|gG@w2m{*sHwWZDlRNna}m3RJ`$~%8g<(+5Uh&(pzxU1iuIdxN>c;W*8m?yvd zLVqSmaw?+m;y;+OH) zHL+)LRlh#}hcXmfWW9GNzCG;R*xT=!yt;GaxqR>soP6HbUF{k>_&rm~JD>8M^*(o> zLWhI8tY^4qgy&Arw~KsRwTkVf)NkvS1P|c<_5O`T>mSYFznT0um;V;<-y!^W6#p%y zzki=bU5fG?br4y^0hnT|_>d+Lsq|9uq9JXG20-*i{uJKgE; zYJ|hPtMF4N{oR^Tw>G$`ZUX|GaCE%7!@-3}*;sd^vcmzoE_U8_ z0r4Gc>Xedmif8-~pM)MqP$w}Re<)+>Inc*Wjpr3tb=Rsoyhc5E-ea@U3%tuPJK32y zGSj#KAUPeaHrTn{Uo)koM;2Jk@orsSa0x!}9qbI^qx+1<+Yin;M!CgV8FhKTEGN{NxBEK~tzx=X8_&XU1NUgQRH zI7@Zn;|$`ur3&v=gZEH1P1MQ{!i=fbe76m0Oha=Fshd)M4nLN|cr1RRZi9W>Jqt4M z0}syG(%62muMW-eE9&~x91nQ&z(DD}2Rj?7NeYlXIHz8;WW{5s1k7Xh}*Do&xHhHF$Y^%#_>iQ}*NX_JuCH{>Q99{e4 zj8b3FQ^yH9PPN+si!`ur*80XyvxzA@z3H4!}QdEf8$U`|5bYG zO?v8Xu#V%}|LUoi>8XeP8$FJj{-~#Rr&Q16k{Z7^-_c<{Zc&X`Zaj4^$mEA_1lQ-cHu7T58HyXqUzyXvWT)$c;@s;AynU+wQZr6jADzh*-4egC{EQ2wHdg&AmEN7r}$gs!dU zJ{Vj{xjpn;sM{+_?&#op%DqU>h1&f@$-N7~f{~l0=R*C)E4f31+bQ>QJr`>DO(nM| zxQ}wL(Q~1Wxk|1lc#Lvy)N`ShUqWtC#g5Wq-wz1_Z_5O{{pU3W-h6mj@6ZJ<#IPZ( zL%@%rV1R1Y-c^5W@9?}0o^{l94+emMzhTlH*u8KQMljtAk76{^y>JCaFx?B+0mE~G zE2t0~0RtZ_+}qvn=@s1SClQ$73^uXoq=Kti+s18J<4n(64#8914T*nit1JS4h z(WnDa)S)5YCty7q)`?a_BQ>LCu3h>vek}|UgW$gIWyg{03?AnMFhF;THjT_?aG$fR z8Qe#iX!V0M$lDe8avy~>9(e^<0%-_(IE3pGX^hfS1wCxkQ@^gK3VL{7PrXJ@74-0y zo_dL%D(GRZp6b$51wH&kPu+uKh#n?VD$zq?YOu-*mdfQ?WEpUQrRxo`SPl$e>3XHs z%IUao<&sYe$hTB$Genc;r+d4LJd;Mw}&5dB$U8T%muubH06*18OJ zfYV>t#Ocu?jDl!j6hs4~Ack;F;Iuu=6*z4Va|KS@!(4&Wp3wV1G~NfI@jehk?;~(J zKU4>zQ3s+?2coDW=rAxIzlchyKlnX*kuhS3N2yQ!R-sh>sWO-;5>TpW_R*ooglIe_ zMB_0bhF(oH`(2?r5REzzjXDrRbwsn<`>8~;+xw|RvwK3%2GMvnh{m%)6wel$9_M4V zViNQyys>a15=$OCUt!51^Ke11q~OElxID4s4SK5J!?*R+EIn25;UDzWZhETV!&!Rj zAsp$tf)A(YsT(O(4wuGKD)C|bVUmTxQKBMXz(hqreu;{J_YxHW({E%8)2>VT)nqoNNLEPsocJRl9U!WE353j=b<81`d z_j`2LT*m+4g1~vf6wl-G#2-iKHb@mrF;!39tfva5xKB_0P)`+1F+@-O2c=4;xPelM zDPlX*;(O2HO@x% zNFV144dM#%T~E;n{*9OLoiwj+X37=u@_~-^Nejf2-|EZradJSifLWRT3|KOuc6{p z4LZFgoLcjof>Yca0)i6YRNG?C?`GlcT8KG2u|1Ns=59qR5atMU@#FG@IhX6H0$u*1 zr=CZt5?x-RRI<>br#a1LGo#XgCsApDlBhJGNK_gCBq|Nq5t*jLMpUvujHu+fth`al z0wxUvOiCra3tw6gv3Ni|g{G;eP%`xt`lX&iwbWB+m2#>pl$s)RNllr{U0qEP z8lJ`QbcP!(iTFv3^WaKo6oce0&B2&MUxO=?q zqgU*XH9Y7a3EN)$RE;;Pzx561l$L($p}5uHyv>672TibN)UOFyox~Y+lMNJ(x;YiAgg=$!EHiFIwIf_{TSPWzV zE5>eM0gJ=(Sim~4Y!5*XU$0ws)>bD)86n3^2ZTfk+zSuhC(DVsBn3HMZ9% ze~pgyQ+tonm*h{qP!unvF9moNRblT^GJ0t#6+J4B)ZZOlS3ZH)#Y*508HL}WGcws0 zumBYP8w)_;S6KiG|CR-y@Xtvg6rKekkgZyUJ1Hw<|KW_R!ZmuTZvW}2wR);<|LLi( z>8ZN?r>D-*Q+4}KPn|}oA^VR~$^J{NFfkjsCt9N+@Fr2IxvXo6N(qEWRI1w2wFDX@ zx>kd@R#GcWmi!3aNVnRe?Xp*u+-SS3O3973%Sx2oXuE7^DA&+dWzFN&$c0_DH?c)F znM%SUdy zumCLh4GX}6IV=DRsz@L#sDxn4A~TGk==JuB^^;+Pn{UswT$t!DIqRo&Ewbe7suo#4 zt!R-YYx>ZL)jIo6W6if%zD0JAKuC*svTKo{yg*Is*RQto=51zIHBJITBxP5PGC=us zva6=j>q@)ohjd1E)i@S_rT4G^EFH!Iu=MLJ082e25S9*r5LkMd;%%ElS+J{w1$6<= z$gY~ErwR+Iou2xAJylpx+b4>$!}U~QL9NzPZ>CgfK~+;KSx~8!SBC#s=zN@2Pjgub z;}j5D9jAa$<2VJDCb~s~C}4Nx)v|~20Kaox`S~`;$#mMMu~))9DDC=5ZWDUZ&s#oRLkll?CWw zJqysol`KFH-(vxKSjz(R@Sh}*9=;C2mQ9nXyC2%hrb*6zXkD8oIll}Mb<*}jE7~;4 zI!#*9rUA1Hl(KF)%w@o^US43B_43s=uP+eJ`t=*c^;_ui8Tt_PJSoeBJuqQkQVX}s zDedvuI3BMnEt8dWMwZEYEC3N}SpXvblLa8+>ns2fUnYSN@z)Rn*QsCL9-}N+Cc*}J z0%v5IY}HeR4f24Vx>QdUHpsX1)PGT`v_Wp9RI))*D;G_IL+E1!^A(6f>&)|nhMDIH zZ5nE0<>HIq$4{nP4$-#3WFPM!0=hq01$+*x;AuLC zRZvbxSOt&L5mrG79bpyRk7LLxSolelD4u6l4Ic3wF;8s_LdCaZ*L{50PWOz{)!a0#}8-{b2ewvIB089++JV+ z+v((WIEP+Wa{HmN1aQE$APc~?ttRAA;tz-eX_8tj@Yqbyp-&MaC&g82aD};ZG zeB$=bda7XYXZ6&5bQ#Iwk5DSHcxr{Px~@^MaLZN*UpNL0t#fZQyB_z-ToZQv47p&} z1CeVwuE#ZrS8t&sc$Lq=t5?!Fc=a+mf>-;{5xjan9l@(^97DYNB;A{M^)VLE|4LXu z|GSR`^uLiTp#KeL0sZeABvAjm6@o2ZH75JpidU24u-4_(q{pWzb~Fpdc82=ozkM%s zE-7~86$+=@$amXFysl)&Pw0%;aTyChr^PG)o&L)L(CIA}fKGoVfzauHAp~yBP<-<3 zs1Y&p6+Bppd}7D#R6+9K4=I&+FtuVo1B((IH;udp%_G>$gr9CfF8JwSXtm+5CKtD4QXRPaMCQ0Yh&j1_5wSFQ~Yuk@yo$)LvxbimrTR7J)K5h z&(P~iewjjN#4i(A0LDDP0x;%#EC6HfWC0j6m;}O@LI{EN*rv+w(Lc8NEoDh2$-)_9 z(CP58O>Bf8d8c@(T>$m2)i@z=Ura}UJD&sG|3T*f_t)tNaDRo40Qb3c1h~J1V+h}b8g1FoEc=(7l- zhkpzGKPiaLI2|E+%TT2tbSHp|boS^jmK z<*RL$7rsjC?b9HxZ*5K?95dH2H~-JWqb!OpQr9P4q`C z&y&puaqgaZ4z^eDOk3o_5P2C~xIMD)$I>@@kK!u$+NXaxJxonr(<;17Q$0RUY1)Dh zQkr()6O^X?_~@hw0k(^p>e#kwV@SakAG@d#2IdrQK}7bP!s9IOM@06V!X5ZNu2T?` z#P+_AOUptd{MEsO^T~zv9K(H+e;`Ddlg{8#7V#BcC+t>5seBhKz%Q{i)Gg$X{r)P} zx7)jo9SaPbfYIAzCh<0-Yz*8B#r9%i4%^<_l-jyY0liIu{kO6AN#2o?LS9$)SK*?u z@j`eyhVp$?$mu8hpyk@uPs`?-(Txlf82j-{`xxf8v0-s zwZwPfa@C zIKGFgeXxGHkTcPG^`8hi7mZlIQOE^o%la>bJOoWzzemWU(6aSMgj|XSuCJvnb((lT zIqWLO+KYX4-a+GCJo$E@9Cpz8SZ=A~3?8A)Bhq`*U-}pi2l@aH2m0s^2l~(s2l}`U z2YgTmYADCIb9^0Orm+Lv=UC#^3%hvHMg$w-{l!Oi^fld&>6SDGeVhew!$cOq4L@K3 z+~8#a+;A5Q;D#Y25I5Wop$?xi7d^Rf8d|RC$sOXLZ?kjsaC0-WK_8S03nKle5~Z|wvJ^?wKTe+Tt{2lamk^?wKTe+Tt{2lfB9+!_Zuk)n@y zK}S>c0hUK6P0>e+KEmna2G2>SkK5^%L?1V^0Q$I=1<=RkEPy^PWdZcjn+4EEcM^y` zTo8ypm=%r|V4PvjBX8{0dE{d%!()-JgG_7>C-{EggA95A8~iZ}w@vYfeG@k|{74Ny zfYPbqhoylRTB-p?G>sKb^zg$orDRot!N;*1fN?Dze9#3Fk2*5GhIv@i(Eg2+27gyXU3#@=m~x zdezZ8>Qzuhxf!do9d8ZJ&X&5#rOUnvpHgZ4H|uhO%lw|c!FvC|35EON*O@?morO7t z@6mvSeI_WqJXCtQUiv}u0>Lq}k2cra!XxQp3^A&*@Md}@1V5(nEH>t&5iXCTk5M!4p>cHH0Q~e(T{&*oVvUb$57Kl!2l12L)ov-{el`VSU=eG|^W^6O5IeW_PXO|UQZ6=>z6ipYJbdysMw zuEyAxdLkMxVqfaRC2QmFO%jv0ziumSPH7Hv=6pRNRzZ{haTu{Wen zzg};LcpFkr_>sj8slW9VYU|L3)H5->5s^+mlp9iixd*3VL+TlFL+VbKa9TTeBLJjML$&DY7+ z-DrKDw%TU-r8dhqi1OCvf%}?mNDcjYpS|k2x#-_|k?`$JQDh}6URR|^c*Io{S#2f4wqGu;J6ul{46<5Jy_r%y27^>nDlteZf_CIOAxlesrZMzcD$2eb zYYU0yTED8`0!t52ZT+f(0W4j$L0mPt2-?sE0qO(3ie9PXehg6WsT7F;>U(lRSBU}Y zA1Os*fck4nkr<%vLlJ=bD6yvJMK<^2?Pv{s6M#Mh6;s<<53~-;At<-I9Y@r*)<2^T zWQBEKy-Z=<)V9`=b@8hitP9a#U5J8pV>9R{{m}CE88mEL(s36k1GLFs!36;xf-;Zd z@ZyV0b3OXD+ zgiZ_=yW>*yC7tMEu-N5Fkr*u2NhuP8#kPJqbfXw7wh%?YVnYOrjj_&RKS9ORrq=^) zGg9QH*X^?K8(CqbUVRltN^N>gOYyeSNUs^@!L?KSpcPxlE*-HfTe|-)%)|x3E`mpX zh07DWbkI`;k36lX2I=M~D|lprp1M{~6+Cjcp1P1yC65fERN|3T=+!el^eXy?@H!2> z7(GBo{}|AIg;FF2w0BX8#DMl~7csOK2x!03I<)^46;r!mhwo8&_a*q%tibfc7b-A) zChvybsW)1rg^>F*bvNu+=z>ra0j^)g8A0yzda3}|9(w9jJyn2fQ!i2WK1!9~x{Xo^ zTvIV6PtBN;_^pMP{pJhsyXlY^1Me(`D5J%WxR z95Vk!Mc~~TyF>PGpa_<*>#g$?>^fa`$bPaX-mZl>lAerSx*&+ z^Q@k_k8Umz=MhRJ#7V`!JCX74fD>Y>?YtgnZ5=0KfWY2!83Zx~2rRM=0{=oqfWT?7 zVfKgA>#P_fTfU?ybX#ngy}3J{w1vu9BEP+d8dl(qNI8WXcEA}a=R=e#)i8*gvKpqs zZ{fQ&V-k9825Ux!&PU-yWNJ5h&z9_;eFVRwr60UIZk2fd>>qSZ>X$V3 z&)zYd)Wg_6d+PvRCnopL{;AwQJG827uiQV|*^f(ORax=nSXH+6Dy2X8>9L@a%Xk^f zZ8#(N`iq{rmRGLi>Zvd3slo--TTgvTPZgu2G(B~^o+?I3JJZE=@6=NTSgz4i3n*3g z$y!P!nGoYB`I0T%FeNCOM_I^<&(u&V7t7O-}$js<)j@-_+d zA;=pL7!FcfY%4<;8%tJcvw}=ou|S^|_y=NFZw@%Jl|}qc&L9@7nQr?{HIv@T$xaNB z)E3*emd?(Fscdt7AruxAWbi(vM((qX^pzq#Gi3rHq!Tr^ik>t+&sK8cHzzx1xoz}BTys}54?C zrsS4(Kyw(FgY{HlN`9oLUazMLQ}UmBYF|B7n3BKKQ@iM?!j!DiQ}^Q-G9@3SR5B$~ zt71~CVr;L9$#uzszJ9(8D*4WyIwR}sXDk47XRrXweToHO z?qn8#xuql!=H3q>&?N^-@6p}Cb(96`OxR(!91AXpK@NhH3PsQY40H^n9pDEYqk2MPM4m-Rb+^R0c-TLOQ}I;&T{9 zZ_qi6qF3n%qv&^Zgi-WAbc9hf8^@4Q)Pc^(C_1*E1SsfU7NDSCumA4GU1v zk4PW|eFuUqqsZ{-w3Shmw0kJmvIE0b*xTey8>*SK0n&;_(WubJMmAh`XtdTdieMTD z__A&q%w;68US5Ek_43s=uP>m_`t=*c^;>A#+`k)oo|I{0tQdm<@IFO`MF?3S?HS^D zTDl9(B2AlGIwR!#CksH%*I58^zRUuU^Vci@IbR@wkn>pxf!s{RwE2Rv&`83F8ILnE zZC2{3!ic$3PyLUcDvX!{J@pkzl}5~0DK)iv6XW{zr}*m4X*=<|>83{vyJDnLB!*pa zL#RkByW)Hlfn5<}m+%KE7Z$|?I>Mshb66Ck=^PftU37#+F_ez5D2nI^i^79r$f9^- z2hPZ%_!A4zi+L2(~N=iXqjOZkD7S6Rl`bBxe`2 z#COnIZkCi?uqIwKYJHW#$+ipb2tZqtvI`0foI4Zkf`4p7vq-z(Pjp6h!8{fS|5zaW zV}bCG1;RfP82=yyE>J(yUQSuC3xowQ9A{(~ysf7S3*crw^$(OPEr4uFO|7P0zbkw) zN!ZfK?7e6{bOasqIp}yfor8|w zr6cILmX4s~f6)kC00p0OSETB7fVgcRJ!2-JD!7Wr6-Ek)g)E&1# zutmp)i@vP}_{mWpXr>kEIO!qr5IatXQFaQK+9+&q1|l`s-Z;9RNIQlXGUhzOkqywf zq)0W_0HHIHRL4-WNKzd^XGE&SEC9s@vH%pjfd!yg9t%LRY!V2?`alRQ%uoi~k5d+a zT+nB815gg6dOxK~`V3Gi(P!!_2<0n?6`!Gv1nI?MwAWDtjHYZy-i?|PTy`EE!DW07 zE<1sF~kJl zq%&fIK`fy4Z)5?je>Dqe{jais*6+&#TK@tPsP)|tY%#&8He`a<8=Iu?JpSasnTF>t ztwR4#3ePjnWIT6Lvq(JOyON*%Tg|GLfc)i%qw zsyT|jZ?eaE%_+EgfIu-~8+0;J%)eIopQS3wRM8osOeG6Y=O3{Eb$*xysPls?K%GaC zK7ZTd!ZMdOP@&7Ug*cwz0m8-_CoKAT5>P+E3mUiQk&oY09V1%p8jR@Fg2;Y z(7~iOcEJX|7T9pPruIS?yUf~J6jsO|38eNyKlAoNzjXrkJg>w_YB6(!$;?a6t&^i2P)v_(3K*Nb#GBWN4-T>q_iiS#WZ9d2_;Nv zi2v3ikxq1k>kkp>qx`peMEY@&K1!tX_UfNdK-D^tUK)F=^=|J1MD1-6C-+SM7S*M( zZxIXNkOCIKA=k424!ME_a7aHEz#$irKpb)|gu2*!rmryeOmAEQi}nX#3*H^K9%o6> zMi06jXoK%>l{Qd*JZ_lU^OoHXDVjldU%wRQ()zfIVG8-<|G$a_VfGr$&U9#sX1Hx@ zQZ#eQ)6B~Ylc$+Rs!KGpkp2eV3vni0JDr`0nBnY3B)Ylg1`e9b^G<3kf?4B zx#PbmEuvqVZNEMNn?qLf)zYY9YWsDu$NU+w{rdm?%XZfU^6V2kOV@859v zhl~9+&a!4#oilitDjZDm$p$3#WPWca$F+}BRZm{$JRPE$=|xu}8i0j%Nm|z4P{G z2A6o}?Z^x+_s-jr8C>U`SDzW&?47qNGq}S$?}N9uVx44ZLpx;Ep7x#$W5sAaP&j&_@PwdQNme8FwsxzXY9eWLkx-d*hb z92X5-Hb~aji@b2N!_m0T-N&JyPxs*bJ)HCPzwNoxGlK4-Rcs$HR-2L5FB`Yke1%!r zXsGGS-IcdsY^(WJXb0C-Y;tSP6*JoBt-0wo&)|XX=~r^ragXod^aB$+Y15nCmEDmv z2*NYhP~MDz8AW40)||EOr+VRh#;~-iuQyj5cDkQ#?%;4#9C5lU=iuj_F)VYC?-<=| z5PoN^>PMqIZ&RPq#=PsvSve^G*dX^EpAVY8+5OW-{Nh^G#4e>;)$lH(wEX>A)uarM zdv>*_sxYfr%imMrp8bx;waZ<39o^tiH}{YGLn!oZ&8x22nWoijO}o!%=DqHc!VYMK zlJs`>xq~(C?rH7NtunOyU6VE!`Wh-4c6svs?#fBHrSBcBsz;vtt%=t<3UaSGziNon zlfTma)9=#Lj9IQ#UDMtD*6^N=+#c6g4Qa<&x0q$M=d3KVtTfK*WR}%|vvzWOMBM8f z&RSuX)seIQVV33MtY4XBb>gh2%(6No>xmyky>1su9v+pPPRTb#C3mIduOPXix|`Z; zXz3^1+Dn?V#{Cw4l-xA;eY4Oj3Y{B$!!j$5WK6n1t9k<~ukqveOv`pUnunDx8kmX4 z)ce@VK{=mm&Q<6|nsce<8<;W3x5ZPjW!JWeJ&LP3d~li5F(_xdRy9Lh=SQQO zhdm~G=qgk->Y+-=wP+(?l{#dYSF`LCv6lxtT4a9T{#Rl@ztVt^`zd_ z-RNC6iq4>{^jA0=J%tMsVyqEqb?zot@N^r-bw>7qONqtZoRdMzqlbflj}rHfuP zH7cFE&;$7Om1mLtM@i$(QxIN`d(P#e=g6YeZ7$GWg7Try^l;v%VyMwG@WU4R#$*o4 z+f4mJn=v&jd#rZ#jf`{n5!};XpmwY954aon31Gh0^Sy=cK84(~T-x+%@%t24jmgz2 z4yC&*Kfr6DYZiR`uFb!SJp)DH7m(>-)U0HCvxjB%IKY%!T{;CdZ(O1Ov>838tSBv|g&$|NmG&eWv zJhNyZNW|d`Oy#5kbVbd%Hm|y|v!1W{cA>#Lpl?oej?$`1om&3VNnZp;9-}MZKE7HM z?r`5M&9~V7Rxy5v;`S(}ak0k0BTdcCp0^L-+JR{-!h6~rn8e~y62H&lJ`%sj;%*X$ zL)>=cYk}s_PpU|KU*<1^yYNeaJ~Dyznh%7uUlLMRBn_Ir!~M)QEr50wSs0cqG-A zZbT$?0R)w#+)9n0diuy1p^_!3qO+J zBEduP@HjVw#}5JcW8pE1>3H1e6JXpp$MZHJapO-tZxakR{@C+2WAKk~;(41fxD=uS zy2*@B4q+FSu<^;~w?vLlR^1RjKIwOpGCmoh!H(0%C>Ww_Zon|5AZ(a2Kp&vUOkPE!>=Ayl>bpt)g75^M$&La%YWBByT;>M?5^xU zw>Wf(`^U%Fe%ye8N}z*Qv!R2(=82N@j&=KkY3=Ho%6V{-spT)8^f{Z34X}MCUZq$( zswnt>%;M&1j9a>S+;643bJNd9jq)$Ttm+G4PQQ5(Ocr6x)E#=%#IW94xT7JFsY|-Rko*LW*1{fiq_zZ7=|@fh0U$o<>T5zX@jnrCB&S#?b%!`qMY*E|$V>xc#_Y!BnQ8ZA^iX^Utf z7}pc~tIZPX%*3zSn5E6tXq#)!C##zpXNTwsD-C;5JT_ja@f?hoaU|;zqh!^3dn-~TuFeLmVoQzyPN03F?MT>#T|;dS`;dBK$B=zkJE<|?llKA6 zRi$5zI-T_U`gYN;(=o#C{2FjhHz*%MT>)bOFN z<$x*45VC4e{(eBnPBK@2`Xc?#RmE2iff0FiZc+aGMODRF(3L^W5%}?ep&))%kU%(o zq?zK!wu%PeN1YA)NN4=0)A8dAeN;~PG3f%?HzM(aOqW49JByqv2l@6(!)K?bV(YGn zgdaC>RUJR}&`=3YA@KvXS5ws-SrzS4`3|?sH(>h+{1`48h4Ew95CI-54e;22!i=qJ zAONByc#!@xe&jNKq%nTL_>uTQEmWAl%@Tg}5cpBY_yJ1)0VsXdpu8RW8xw9+jcX|M zZPPJ=5TX#S03`2re$H9qHAz?ARvEMUri z(zAfI zrnrlJ4YA*Xspflwnw*qMa4ob+_-aU*D(R;Hl@4?b zCV$QAI05}}1$3UOVNeI|C)E1*U7BYv#q%sDsVUe97IV>`FUBV)3<+&`f zR=OaDc+|K)`9GrdvjS5lq%MdD9;t|1ki?4EOxk6xzgWYJwi^cQeFyO6eu~Zoi~XH* zxK(v`Nb!t+SED6ZL6^8I&qZ%D6!Zg~%Bb;~&i+X43!li4qWpdEjdjT_s+tJoW>fee zp*EcMq`K}(F(=^xeo zhY(q=R^-Ksyi}3bC~|`$Z_{OW<#J;1iCGVL{#Af9PtKkqUsF+4Ieg9Vf)Dbo)W$S< zsvd4Gs=9punk>sxv%P~>^|!2DC`@lRKtt*fK7? z)`sTAIM1Y-^g5U+!f62jC99N5XY&xMs48s{rGJN#a*KV32E&8y`?$#GS9)&fH=a?P zHJ&{112jDUC>q)oY@YP9x*Dflxar$%`NeS8T^7=}w#4`*Tik*Rw;c;H;`vL{?6#aZpNs;<9= z1wn5zgkIu1{NwmU$ErJ&Q=C=mXzHLimM8m{k4boRMQo-zO}xk6%9_0Z)wh==?5mQ^&P6%<@EHeF3ek0(cIBJ zlZFf0m_^V;eg8>k&9L>RZ7)MsZyj6l8A^DkRl)=U_=rT7eoq? zm;HaAGqcGiJzng(?X6C#;=Q+fHgPpXB=T(Qs zy^b5zlQMD+u`Wh7eK{odrgf=oB3Jf+vh98;O!^w1SM{q+~rjm$*)D5K8|?h%!t)K6wGh}lxVkDO>J z^%^niwuQIxu&D9AWmD5v*ALH?Jp8lvc=6c2!uI&&o!*PvRAwt(1$VK0!SxWU7hJQV ztCQp6$7oD+8X2D&YO1bEjh|~{HzvL~+LT_-s)IOfS9Mas#Sf~J=9Z4ps_z`BZLLm< zyI3vfsVr?w)vBs1M_xQ%T{*XOZesPOG1|H6%G8VB%6akB>e>fS957c;8~@FR;oDMT zc30QNS-&zBT8Yok^y;>g)$k?CmYF>dfJLQ%!qQVs;Sl zM9l^FM`1OmJr{e_Y`gf6Bui#U^|bhJc9}L+C#wim51!a)P71F}F@2m$j8*QPH>qf+ z-6xrYG{*N$l4VS{>S@!z*_~plluSPEEq^ze!#Aav_NBypNa&LUq+H0oK(!molpfX7 zioV%l+9g5vDXDgvQ^G4#O#4$}c8XHp!ZfR^Mq2BoNS}sOS7!R^`3$x?u7rV@9X z#NDsrZZ(JRN--TsiP=@N+gC@4c1wva^r+c=@pzIYH9~30v{xb=P!SH8(V3`Vw_YHL zr57mE_a$2E->%kn`|6R$D9{Vi5m+*#+S3}9Z#^UhIY2?C_zqE!cTpR&?%Gk?0SV{+ zyOiX7kD3D)KTonuNoiMYs%|8jUX&@m&(Ky{d)hkSJB&a^Nj9pIq>gS!Th+B=tOuna zpM=yL@g1ZbHE4?&gYDSZ5#L_Qu}jKvu1C$0i~G@5PJ7zYt3;yd<#6~uMp@I_Rn`&T zzUoScQIJEbAXDR*M>b^ zaDQX2Iqv@OCKN-vXh$&@d>@i=vv!f$qj|fd(Iv&yCB^Kmt}U=uG1D*3_a3@neowQe z79&k9=F6Hm-!>q`l!z8hD@K}DOeIZFHQP8^G3D*wyb;CdjfnY|bA4N?E2S%vCi?<9 zq|{N(3mhX2i1tHU9q=7(mF{O#x0;c@&6GQ_MSl|`{Y}h!_*TP43?QX>IVq$n>Ru7> z1pUfL_YMRclh%4cMZk^HH|hdzR02*J-A0+|MJl`1)c7t^;;F5d7~gYnmSX0#Ud#*b zGv=Ba_a3R%>1`D6g3m72-_+zJ;TOsbdjeit=4*J@%;u)P^}@Y7m@b$ z4|B~n_eWBx-P$PP1>ZkfcEhPXS}m-!^3C1oO24A8w$=-)cgXacRAxjQg+r{<=9=B^ z-BOkP+bG-x-|?26>6EC}ikZqiN(?=GXLW6+_1$hY2Yj`ZHZdipGO7H-)R;}J6+3*F z-rv$GQnic^N#*Y+#k6R;%92yUcO&k%=9&ZUze^pb#cWF|r}4etTJclDchL2H-m>e= z938Vasr<{Nn2%diNGg$NEH|Bz#xliP(~TZfI<~3O!li6qwx*$!@DEi_OLs{9=frH% z)zF%PPz^;mWv)5m-X(@Gy#v)yg#9f$&D4Oswy&z7ZWCQ;9qFpE>&y)4NJEX?Cz|Qj zp=Mg?LZ|fTKu68G(gIsYN^0y=QzJUiNo7;tic@AZTN{IP znR}ldT0Sl`eg4IH47JwBU+d1LUX}b>Q5To|Wa0M;<>LCU z?W=4VQ`@^fq>SC#xhSNd{E}(&Vvyq6+Peglv9rA^VWj7mNW0SWyQA$NQb?cJzVs>W zOP|((^!!$6`?n&}^UI)J>2o@eetP@T2P~%jLSO)GUxiZz7(ly);3~e|LiA|St;lcK zO4Y5{+U!;$+Ui#Nx7n>k1=@vf3j@@d(!o^#YEA2C?3aGKgE3z^@D9d#>B-x_ z?2#_L;}Qkxy5oXr|3tw;IxbkZjtkbK!-Cm5E?7jzCF=iAlqjm>5_R-ThpOt}2M$%$ z(a#!;j~_8@_cT-6>}hh^Y{t{u>}dj4(N>3}wb>blv@K${HbrdNQ8#slogMY}>8QDt zWC<$|vy2NV9~Z)v856HZb+e4>Q9i1N#T8o4|4rrcL%4ifN_k}}531(BE0<{L^S@SC zYKzy^`B~6;K5c%r+P?98@F22b`Sc#8(BCunCVtMu-sycd*E|=wo7!LJ*e(R!QtM zVtywvcY!#xh>4dT6YJ|B<_UMpmTb3Bqh=ZS+aG|jkZO!DMnkv13yD~7>UJ?_RbGZ2S zfjE3j*jfzQ_Z1M)MK|H9k)(E;IXcD>PaX*LJ_(W-hG@&R=F_BHHP*=42%sm9W_?6+ zk&H(fC1p{0`@{zemBvuCNph+Kg1HV`BgMeT34w|>N&2c)(DIdxF0pG)L?o4_@(!dY z7GLy@r1u3uzJ-7R`%ZK6t|a_71b30b2%b$K^q1C1SE5RsQj8~hr6`H6Rpml5s%`n+ z!$BMo*o7^)kXPkgv_+cXRL(@FzQaJA5eGjACD3k?+b2bk!b@3wxajFg-z~kFIFhz1 zTaiqt_Z`3o4U0DN(MDbo=OnAELA0r4uS9ktVFvS*y^J_mLlqS55aFfMAdudJU}n;b zxFp#fMn+0an-KgN-Ply6OMov$^eRz@l&0vAq{ir^cP|v%Cnu_7s^&!WAUYun6{2Vd z@=G_RN+l(vI`T275!M~utdYybU?qbs^GJJ(=;b^Gc;*e|>|%h_^@R2L+g% zfIFujNjjgA4(6UjI^WT^F{BAB}hV!(C`GA@0BHlth7OSc-JR+caFo`o z%uFO8fkUq$#ztL?HXEySgwkMDxun^tZ%2y|8xu)mqX;3UrYpau#x|tD5&( zPDRD<54ns*l_#u`Og(1F*_R}79RpZUPLe(|Xs)ZSEjjqUiCK5OY8r|T`)f{8M>P#d zU2_;+@m{!%HHUp4Fg>smHr4FIQKIZH6J=B=!Os(%3xk?^iF1;m^}b!~KV-jALcSM* z7by|k7L>(dJ@|(z^?Kh4y3-8K{ez zKpvNt;C-bdg1yk5ebs#TP@&AFQbw@N6p%()LMDl~l;kjtq|p)@iVpdyyiedr&CdL~ z>e@-x_oUujp*1@tYQ2O$8##`}7$pZkFjKsJk|_GC_w7c$t>_Ws(d+&_yekbOB2F}^ z?v>OfZk1SAU8XLc7$7oyShLSpgT0)S1a_!I8j8O3<9Y;+DNCw3od0ok?F5-Iq0IDb zWL6>q@y$gN<;ieE(OyZ^Fk3OKeIhb1*@aDbzsLMNE=5T2u&xbKm$-k&=!(9~)J^`d zUZO2XyIU{ONnYqCi8Rmy<9YzTs@a!+SY%<2#96LD$f-eD`fjmBb;W@sdQ*~gRT--( z)-IA%N=F_VNdwn*L{L{5B)eDF33-TETcrim8xBj+x?=P9|b85}}SF*hP(Vq%&z?xYzAoy2_nC zAG$tHSSjcPUV~O!!g!7*{ZfQd=}o?UO&3rZp6?67f3B*tx^j~5goOW_*vjl8f?`Li zHA?lJRP`yE_uG_K>UmwIm+H@v)2 zYspMYQcD_GM`j%ya+USZ8aWBuw%z1im{1&#=Fnv ze(u#coYyVllbI}&y{caPx|CjLW?KGZJD3ceR(_>ZKiep03$}P~!bcqsf6uyL zwj@^Z@Ovs`mr;cLt8^7<Z{%TAB4PAs#H^PuV<@vPQCyh?5GjPxk5+L)OUqBciR5IT1w9j~H)_WNm~s@)r?B z)<}K%fHm@QwFJc)`BcOUMEple#MOz`1rL}s?Jw7GzE<91gyu|#1M3t*Scy=!QQimS zK2`BZguF+pyi4x2W=$rDmv`}UBnv1;lfq`@P5@MvAJGG4{uNiPZeCQKKc!;e7=o5} z8N}bZi?`PKS=mwdOZI8yHFXcLPbsfgYpT9ZE8kpKK!cEEc_WinXNx0L#T^l>T2GsQ z)PK}}Sc#oxO?@ZgWilumdHfo)W-7I&mAw-o1>l2KpYT^!m|RomzFJS}V_fRG3?Qim z8@&VSW^g1ToH9h%%DyT8ffw{huMp|4-Bem5on%t?lwNyJZ^T;9>`klqlUkL-O#2~f zroDB+!xDIYwU}h^dqDo8s(-#NpKb~})2w$ruH}I%nZaHE8~&*K%VlRn9vYz3 z81oOY$~zFZyvyZ?Q2#Pvo{0HJ-E%+C4XGcuhM#zwKmPiB{?uL1N4e^L@lBmSXw}IR zdV5JPKb>?hD||ES{?t{hv8HYhd-M^SBri*2&DkOK9<8b;WIZ?8KFuV3UT}C=Rpe+K za>DC)7e_U2+bXVo@MiGHWwhzg z=;4QE_o`n{45g>^vT7Sn)?dmB9c!{AX=aB-v zVta6sUa@{J4YY3F1G?K;6pIO@FIuDWEBEncm%6L1;+bT9y1M>TRXMT*MivVVZ1`MC znqD#H`t*uo(962Zhh0^S>5p4~@ttcE4Xnqt{u=TO%-|Q97u<`3EU&0{a1i`}L0`Yd z^MP)4y^yf%ti}2iJ!5q@tgh+)Zc=7?`EIGtZ!^m;WR!0u{PlHJBt`AaF1z3_9=u>b zE0WM1>q@MTG$6KGfl>E&R-U{q^-Yr3H(KdD9JIO>_?4YC7w=xMzxcfc$4l-iyYQVi zsqDfvk|z4ZU2`1WO?LB_A^tM1=PSG`c7cG2jHQr^MSHI0QoX%!QB?O_&+lU=N6oK5>EjaPCNNgmcaACH)>A3PN? zRX=z>;y(T04-w<_gFi*2=?CvbB+3DjsMtuNA|t7aTW&-xH)56>5zCEu6@So6#Gof- zPGbd{lqjv@9aW;l9mmtkk9oSL%|E8muF@76s(fl$+EYP8(SQ9=wKuLs`jh#)nu&|3 zwF%T+^=Bu~{H>OkH_q}uW`5MXmSGULQ)fODj}QHO){0bt_MEpUePcz)RTU{$Y84?@ zRD@h!Yd&@?(fVhWC%$9U^)IjhPL#?hveF?cP)e;ZRD}wZ>X1fMT1(#*5%J#&%R8l# z{4XnW)w_vBT`su4@EgZh9-hWkDT|j)0nZ&cl*b!q*KX3i)s;3cPgctmPgvi)T=_fF zcxfMG^TDrL9uxEVn3&^ZV*W9PcP`VTSr>F=7*UBxH!V)ZR(adS zK;B8I@izp=rzXgY4xUdtb4^6r{2mb+j&i(=;VL?LH*K~)6(&(AV@{#p|pxIb#)DA#g?lG>XM)pM$n2>f+I&%W7*`? z+lL{>_Sj=95OZFG=Dq6OhviV)oH$+$gqt^ulGDmRC3z(JYRcp^mOo$euIXk9Ksjlf zH&R5+YT9GHLM~4OMX$e%)T~#?ARvXOSfLc}dL>dk5z->7i7Hl`c4kLfcy(I&Vb%b? zAm_BoXVw0GSsu-DWmz6QHLW~9;=a-4IT7PWbCfn3kHpb<#EXea_@<=GD_PNN#v;z2 zS{d+7E59S6?m51-hqjVryp{7woQra0xvDHoosLK;>B-|{1-4Cc?cbzA^vsC&=RR^J z-WZ(sBDJE?WL={buc=~G{PqbcO~rj@4PAAtRJ7TsIBcQr&kW96baO7R6}cGsSzn%3 zkxlogm%eTh#voUkGg4BUbysC5gYy zb+N=1-^5FOxjYo#fX7;Xuxi%LC*0lqTZ+#hEcMn2 zmSv-lq;B%ZmNrlZ)wGHUD0$NLX%$Y!o|(~U6(wje2?eI3zX=RmlNh$_3|mfyt(gp4 zC3F05&Lifsw2E?-LV34I_oqFzX`XR8^eu8QLs|s(bG6jDb!wnf1DzV^)Ig^OIyKO# zfldu{YM@gCof_!WK&J*e(7;t4_;-5$D;kiy9RF`@cDH-7bBb-`NSjl0WZU!evv9GO zWEFcH?yT(Tj_etFIa3R>^X;=7gHm(y9PW5`MoFR9K4(ypg!SB(T~yR8va?WYN;kTh zm#f&@?A%$Hb%~S5?k)*vH(5mR6c_Z5p3}D|%GUSaiX&|!ZJf-xT+0}BUsgtDa&l@$ zhIZ>Ld%lz+#z?)$++A+L+K?5BoPoekVKPw0T)APBg<&br4$$NwR^p8 zEg;U|*dbc<@c3avIx?EY&s#;rw)%{xr zjgg=#f6`DVsbe$8WZgAxTvnh`m9`v(#RXZ#g-%zYCU>*hN)0s_yEo)xQEI!?PaC2o z{w8JBclQ^h{^ZHTzR`o{XxvLob-P{e5jJN*wyU7X?scL$TfU<(&pUmDt#6KPmWRK$ zU9M$i6}ddNJ4V_>EBzxiSCPYQ_qyDZrx^JSaus<8iRtDK^5o6&0+|*Y3=>d0jS-1M|rkN_IkxGJIW|2RiJI%o zcLZWJmP6tZ5^uM|o}*H><+@!3HX4J&tqS6?g^#oq7U$;|VeZrH9%puzA)5#gl)s)% zwySWK!|iR6`Lq(mQaz3>*X6e5I}07?%X9gq@rw%^%P2)O(l2y*ZH_`$ao%*>wBp=c zhuh{UvS&L~VtNd657x_F%?mc09?#)bI*@!X(ZkrL^d%LWlf{8(rcp6PcDKF2flBo1 zZImm$Q0#!D9lGuU@yNoKI;Y5y?M1G5TVr%j6!Ig7tGF;Hkd&&&doq%2GaMy)NRN%C zoI^}cadx)D5Ps3)D{$U5GQg{bZVg1f`PZ$j^60*}T)89vlDd*lxC)nkt~! z_B=TGY#Dl3 zx5plALUb-cjee|Swyi0EsKaO=(;YN@sZ_n@Tj-;y8RbzahBO}4>~#6FoTA9fwG?SJ zWN1{?2-_WEbkZkMxh{QgFTm`*9N#uLKljJF1sUaTwU&eGrB#0=hS!A%jr~a5;q=S{ zW~+&GL>$rA6Qxp+14BOPmV)a;iWTV9yr`?GFT-R-$xZz%5(h3oP=s7aWnobsqmIQi zgX&rDTvU5%v{H}Fm1{GSP@PnZ@P@_PZWj4(mhANLNNQ8kYxMWJ#P^c?8vXUM>S07K zsc1>SuzHNbUYNr;zz8~xfxxEnK@B<5Z=>&w>2$+%<9RkOAwBkNX`R%%q$S&3M(x|~ zRh4f`YN~sw`mC%%+Z}(j&+IM7&%EkMzIaO=;`YNR8XLx zLKy{+-OtY^>SrgC^?ihKt{MAD#y&LQt_8NS8Q$2eteBYL`W1*%zXaj0!(Nb{JvIX` z{eshNcX~bP*{P|x4X3N+njO0lht$+SVy)~0>Bj|M;c%((ebeS5Nv@a1W{w_hT=Nzv zA+mDa4hQ)fZF|tY?qUx^$7ts?H@|`gvCmdNuecJXakPES)nPj^uFbNt+|!$-61V~# zIZ`7Jxqx=uHha3=%f+dFZSI(p?NDQ^(oQ>a&Y7bm4J4DD?<#CeD%YOxacBjT``P=c zADe-nX$AHoah;~S4wmC={Ww;RbM)gOTET6(&cdAj{T%)H`8U#5aGQg(NF+MZ!8Wgh zEwqEp*1;Ct!Is#;Hok*xY6n|U2V1)@*T(aO4z@Qs*fw^s?dV`T)WH@|U!Z9Qsv~e7 zP=DauVr+qPld%QP&BhiuAK$gkZ-Z-EAa24NE!#8(Tk!d;w5D@$ z-y0NXM{1qFBLaD}wvRT_62IS&wwwoO8UE+U5pZ(`$sTZ%eXx6e8)1UO2lDSq+RIwx zzu_mk+iLa_XSuPTmR{$Vvp*A*YtmZ7t)zZh_rS+Fz z*OA(7VyhL*y`Ph*voh#d+|~x2S8@DdmLBfu$#wqT#_{v)L+|aFKpw5_=S^&q;V-0J zd0(CX>7Uj4-Ow_8wUMv5e;#xk9IpS=rg%q!j)TJl9|!WcP{tMH8Jzzr@({OwGj#D1 z@=4s@C3XJ&q}Z8#@fd=#XFl|Pj+RmSomSW>i4Er^ndK#gmWd!$6uYYOJ*{%oiO%+ z>zo@Cm9ut@u|H(^>#qEr7dZNTEo}?BeNG$rjJ}8Cs4wdL_rv4x0q*CI1j-OPRjZ@U z!3K{Wt@ED%NsCnm8sD+d=E_NjTT6M3>#@Yei7M)&Rr=nzj+^($ZAs$3;|JMl|Hz(a z)ZVdeo9t~_FPQISUpFglnCyT1)DH{TCmwk|`nT+#xT*S`kJu0S(dijIlC^nAye_-A))@RS}HcWrUVcXO9rH}I)D z2LEhSW>Y@zdjA)Z_5Q!Wgj?(VcfrMe_5PRP9?;;iAJzM(;J&MWy}v8R>-yIF zpM(m|d$adO)cbedQtzJxlAh4}=BDF-o9w&dE(E)M-(!j2m%Lv57t(2&x5JS4`^xbD zO86)KmzVznADp=hJN^v2{xgih-tUC(u;~|IES$&Iekt~i`*!Tz!tqtoPSZ_m8r_58jTd_s4Vo zMtr@0>hOBM4WdELL)i!OEa&4P(eMwsz21K#+z(!m^Q-P?&da!+hsO>7Cq~x$eQ*fs zAaE{j!36tzyg4IAH2qxTX@T22V#G9iPL}$qsVRRs&9-}t$3*cJ zRnSTT#!Vv0u*G)i?|W_>wE6q~(pv>a{J`x87q=K%yXkOgL_>~1{;^H>FWS6wK_X6< zerrSH;Ra6;oViYJ@&p{ISFa<_)&l;~*~$bY`#@AxV#9x^+<(b;#O3m^#v2^K@Q+i`(`R3z zx90xby=lEZ1L-4WK~c*v!BJ#YifsSYeHXKyP8WTruCL^<<@tX#pa1Uo7DMib4Y~hM z@9#9}8UJ_f|5f>A^{;II^j;6H-THs&{`=}-uu=YhdT*3_@c*Uzj>;csM~3*FyG{*s zYT$pN1_IYBL%8x}Vv>W4V|f_ec*&6Ajfu&3+^nE z_2&9IW-xPTvRt`YJYmdpw46E9D38jn@rtfdo`C=0tgIYYmN6Tm(UKeHq0?MJ_i_*_pgD z!geoHcf5AD%wtL(pDB~gWKy9g5XR8hSms!&@qsyt@@U@a@YrTM+%nTprtC4lPo@A( zBDX8sk;4z?ruZqNNB{G25RF+WcCVW8C(~(||I?TGfBL)tP1DPhUdTjO zXU=$;#%xPXP99-1Tx@DGvaLTujhZ=>EYHei)8kDjw&%#iuI#a{LT1D{bBY~G7p&C3 z*QU=1km-K>XCAR060H;tWQvW1wUKMFUNSvBB|wrl@GxYAO_vDqd6uP~kBDA#m<}lu zADiSDch{X6OoUZ=%alpCn*e(1YF3V##^L^_yH6SdLTfdwEm?WOlVj&AnD>ia{0Yb652Ilm9t; zBUtP8Y{-+r!ia)^)v6ZQD3nKe1@v>LJ!gz7r#QdZql&<(tw2AwW!qU|k;BAR;|7~_ zA`7*_ol4GdWiGckt4Vl9{f%ata7szAnrBaU z6gKuH(pBY@6xs`zn%mf;1nYgYnz^nrX{}l6bBT=k?ZNSaJ68&>izywfn*|9NG6klL zln`l)Y3zkw<}bI_-5TXETJ;#aH+#C0#&BqwIBm;uQT38Ufdo=U(Aa@B>MuiXHr^xG z+bR`xYMUlKH&cu0#0|sNugFz_bbC?lpebIGJFmC^p+)}SC{Z^0YQ4wRedr|_R4BKz zfXT{|pq^febJm?DKXbTUN{pmJI(RP9i@a)zrgN6WnpR@_Hv%Xj8sm*|6eP)%H5H8$ zxyP&S>B}@@)l*7ljpYvXbNbA9m6V?USSA#V_qtUwa;ytYyK|@;#*O(k6}d(A>r;Gn z&5ckc%y%&i>bjI{^VHO5H(qvqNMsxh_=_OA9PM_ts_Dx5h^Fu~9CWY5ZW4$wdytwy zFFm}JKexD0O*d_dH`ax+^wKs>+gwdtkN8e!h@j3 z^#$RZl`>Z*p};I}8Oxd6>kNv{ zOl=iEkR@$G=KFda(phn(}Bhx$OukMR) zemZZ(WuGkdo?Kd4>0J8xFGu~=_wKSv>jy9Ph;T*K4}9$r?@vB?^^N;KezalMJrjQX zY{9!Rzkjcv<&DjylQx{X;?TRJmaN!4A^ZKy@**RzS#bGV{o=!W-*&zrYRuJF#%J8? zx!ket@}JMTZOf+l3!>b=da-W9Z|~0i;qQwo?%wp$g#67n)ctB_#AVNYv>@)PZ;M{| zdFXYOFW=BDf7nf1N*i_;>!lK5;C6{L5!vYWV9nb7sDq_eJ-gFZg5LI`^rhGm{ z$)i2G;oly8jC9-D`}x(^E}Fmne`@(y+kZOk@%!0hYxXI&Cw3<`Cv`3B7v!adSAke& z2tM6#?SV_E_5S-vR?67KX#^kOX(b z1egeuAPXGegc%?&N}ms9un-o(lkhaW2(Q3OSPko;2DXE|%KZS;!cp+SX=nhGg}xlF zhCUDp10W8D!R;^-MnNV_g2|8t1uzplFdHghF+2k=!mF?fR>NA@3|nC*?16)D1Wv+f zI0qM?D-FFnSm6ff4Sk^>41@$ohEzz0agYg9ARC-e3iF`?o`hxa61)m;!g{EL&9Du& z!)`bX$KV3^!O{g;;0ovo*FrDo4gDYz2EhcF2vfiTvtd3gh9}`^cn+4s3RnrNU^Q%j zEwB}~!%o-@`{5{@f^*Q7&hJX-3G%AzFt`Nv0gGT6 zEQd9)4ys@aY=iBv3--fdI0nbz40K@-u)?(v4!1x*h=f>3fFzgz888W^Ko&S*CX~Ta zSPrkiDp(I2pbECaemDS!p&op28XBNWcj^TCz%9@h2EZVQgJejDF)$7?VG?A)444VC zVF8rGVps|4`QV1=t848mam41|%80OKGNoKOPuVF4_J z3Rna$!Af`w*28Al0^490?1uet1dhTfxB!0W&c#nJ=mX)<4+cRT+zxlcM3@9qU;lZKNtwZAr(f!B*=nnaDofwLm4cB zrSKxW0xMu8R6z~wggtN+d~h1h!IeLtejyBQfk+qtF)$30U=(CP7R&?>l)zkA49~#p zuo~9DTG#-Uunl&?LAU^2xgfj}Zh(F;5QafAq(VB3gNZN&^1ulN@F2{Gg-`)Y;7M2p z%i(oc2UV~e_Q63o2FKwPG=Lv^Uqju(Ac%$AAr;2JB$xp%m};VK5SsAQ{pj3mlLKGhi;1LK!TECGZR^g*C7aDxn6p z!5%mRU9Y3vf)%cYYvBgy4SgXNhQmlmg>jGxPAC8u6vLD73@nFN;dNL8>!Av^!!Fnd z`{6Jgfn#tS&Oifn=i=WAw?IFLg(R2)*)SU(ghlW)EQRIp3ao~;umQHfR@e=Pp&m}b zY4AhW>nShvfjAfjw?i_d!x+efJeUcyVJ?)y0$2=7VHvD|Rj?Y?LM3d5ov;V?!9h3z z$KW(vfNNRo(i>tR7E&P{CctDUf%)(xJOj_cOYkbJgg0RgY=-TyACAKXu>26af}YR| z!r>Me2!kLF5?~BW04L0V2VpKOgmQQiR=`SF1#iMy*aF*OH|&90I0fgx4_$hbAM}Mm z5Cg;Dc1VIzFb*ec*#L(EUd05^jKgFaQQZER2Ly zxEsbnCU{^zRKOy54qk#+U=6$lTi`I9f(Gc$57OQc4!1xY42J|rg1aFDra(40VI~yA zgD@8sLODDQ&%ttd1y;ancnfM^5A27-a2guGbQ3lUSHRWK3;MzU7z86B9mc>oD1ezz z4vXPwco9~?I;eyi*bH0Y0MvpH&cFpQ@dNxy;L|EvZx{~ga5qeVJSc_-VF4_GXW%(l z2Cu;Dum;w_E;tNF;TW6(KlHSbKJ@FJ{)H(@PQ zK@HTxQ8*4hI0t^XG8{cZ93(+HjDtxq8M43wb728I4bQ-f@H(u9HBbqgVGkUDBTx?~ z;WV5B%gxviSfMwBLthvGF)$qNhH;P$dEkL!D1`;E5SG9)SPn12Td*GX!(liA$KecE zZXr*&0{THD41!pQgH)IR888X5VFr}JVt5)>z$$nXHb4z*f!%NbYQYDmpaHr>kRSAd z8z2%!LJ}my7|4P=m;og)7fN9PEQJ^0byx%Ipa!;?tcEJs0$X7>8~`7jhF<+B7sSCZ7y}uQ30W`$3cv%i zp%k8mrLYWE!0WIY)Ly-SPCz~3RnpnpbB=w z9;k(SI1Z=4bSve8KF}8i!8pi-EO5XKC;$(XK{-^wGq4QS!aAsdZEyf;;TW8Rb8z(l z>;hsS7Dhq>+zsO(6P!>0E_e_Y!87n2yacbntFRun!BIE{r=S5YK=&x@5PHEaFbLvc zI3&SDm;_Fk4fA0kJPFHT6|9E0U@L5g{csp+p&oqThpq$B8-&5_kPPWC2JGN~nNSYP z;6->9R>K;ofz7ZB4ua`6>K?knm2d-uL0=dMu`mpVLjp{M$>4$#D1`;^Bs>Gl;3aqk z-h{WH5~^Su?1H0k47vdmMU$J}?ks;dV%Z3E%)1%!JwSAk2mNum~2z zbFdU%gtuTlY=A1*4F}*T_@K*BbO$}*7Knj37zVe)7#If`FbV810}7x57Q-rd9oE7+ z*akbH7V6;)n1*48&=q<^0;EDZjDsm)hhiv&Meq{53M*j??1qDI5>CMx=n_x+g>Z<4 zI7os~a5rSYM92aMxL_vCg~jk3tbn(m2DZR<*bRH&033!|@PlbMbpy9RUx;D8x06Ba-@JOe9W z4QznTuoDizK{yF#z%r72;0EXoVGs@jAr^)~0wjYAJWvcJ@E|OJCGZR^gO%_)tbuh< z30q)0oPsVtraglddO{z#1tMV(#6l8GglurYY?u!V;YC;r>tO>_K@DtyJ+L1R!%^^o zAFfECj4%vthmnv3lOPKmkOw6&7b;*0tbz@&4dhKA2cRB~!AZCPy%W(F^o0Qs0|}4} zsW1iXkOu{@5SGA8@G86sZ^3%l4+r5GoPh@Do`n3+6Rw4Dh=n+~9TH#?IA8|Mh6mwE zSP5^zde{J4;VAgv6f{7WJL!Mm1_*;&AQA>aGGss|Oa?o6U@nxw0w{+i@C+=2HBbXv zVHX^LS~v+^lc{$IgTBxYVqq8zhjB0woKOLa;7ND|UWM0T4XlUFupJJ=Q8)(2;UqLb z_Z0L7z2FvzgxetjQsHix02wd|9N>a7SPU=1E3gt)!Ft#LTVN0DhXyzYT~etZxEcmP z3?xB1WI!g^VK&T#QdkTx!76wi*1={lYqUw|0$t$>xDtB8)zAz2Kp6A|F5Nqy|C_Ku z=zRW9--hvYKL4k^(11Fh|IqV^MCHsgmdo?I-mb@pXe6u=R|NX2RfhsbDhaE`_AY8+*9Nkf9Lam zet+@2zVrD%_sct<|93wB=ed37^M9V}bUy#@eE!cf{?6zBozMR}pZ{~eKB@Ehf9Lc6 z&gcJ~>;JhI%`^T!(7FDfc|RdM--gch|NMUBIe+K+e||f3W1b##uK#B~>*dUkgU5H*~K5r?2E0f9Lvtp5^j< zzjOURbK!5~nJ#p$|L6C{O{~x1Ie+K+f7XETjK6dJKVt{a_&eACGsl5v`rmf9Lvt)@Jf-zjOUR>j4LGKLR?}|FedZXZ@Y)|GBp0S%2sHf9654cE5A| zKeoVg|IYRQ{Jvm)e&_oC&h`JD>;M1vtpCsHbHXpY-}{9Bo*Pg2$J}tj@4x;-6@a^p<{JeIc)s4q)8cS@| zHy`BP1wDYrF6!G4Ja$mu7Lj)u`~c*A2G;<$T=@coKDU9}j@k{tZ8xnqaLY-(?|@q_ z>YWER_S|yNZU%mGYfPzE??K>ar^ajAG=6recOvk!L%kP)*K=uHdTYGeN_``NS3hYn zz@?WK3tW1r?Y@D+_Nd`F|J)(w4M&U+$ypy#VJD;n;JcCSXW*P_*4d|BfL zwAmX?_R(%ahc@(gGrEgFZ$Cn3{n6L0=qd_5-G+{$(a&IXGX%X1MJMs-V+6Xm13mm0 z9VBW=+MQammZGI{(DUkRuD!0;^*8*m_lltvimTJ8Q*jGh}-WN`Qz`AN`fJB+q<5LNj>jO zPD#CMR9gB^dfq*H%-C_`2|eMSjC(VGI`O_qp+5_qe7`E|ln1h!k`WoEHl3=Yo;~d? zTrNHB*>hSpt~qU#!O^p4?xm4hap{>iz0uX#c+~vh=QHvP0xpHdfvZRkW`>5k4F_Y_ zzI8B9rh_dI|DxaDRZ!<4wh+I+l$b*6Tb19Ug^dry*63wqJNQoG9>4!wW0VbzM}Y&& z`M^=|o}B%qX8EhzyMM!U)aUN{^fxZYKMaTEPA=SMpF*| zd3mocdy`Q*jt?ei+6n(zOJf|L|KMT&cCzp-Z}9ss)YLAYH1Cb=eoN@r3+23^YT*s$ z2R8Z>w68Z%x(ml^H}p1X+x^;2U#sxPYnR`!k?>~itIZ=nx_-02YIC3Y+C~cFJ9vTc z{@R0mrgkN~aqg4z#O?me^mD)e=)ox`=HY+-D}N~(Iyb0vUY38OzlWxDQtI!TU_;?- zzwUeD;vc{A-=1ajpOSMKH^c|g{r<3veu|`y#7{Q8gryDQakLUGC;DT>ZG%nuoYDRH zJF;}7I#z$>q}1@zojF;krx!?5yb}_Xd`8F)cgvMolc4}*0 zs9s``ym8b08&gP-^HRUnZ`vq962f$UE5{ZiHi?TDTj@m%LEPs_L5xlJ^7(z%#_)ds zDcyAgPWln~)T*Nde_)`N_@BBAe?3(2U-6zN`Jp3m=kIH>lViXCVAdyL+pYevPq573 z%{&k7HgkLA{GcC?U++J4DA~|^aQ?wjn;mb|vk|+Htu*MbI@JG!&FP{14O{U0C3kYX6?VkOHaUXM&W?~hBlN2M03I0!9bwE9&P(A z)UFykHU?Y~@BI1maw)I*eM$*$QGW7h%Ebt3*g?RZ;85Y;xRUQ#E093%dS{P%R1@6rcJ-e7|yO{wIO%o!)eb@|Sw1xPcIU|1dqCQ5WKF z$g(jI#&yDn`t+Rf3lmg0T;)IyPu`M016WW}Dhb`6zec~HpDSDBFtC@{ni`Lc+9kBa z3E0dO$~dXDqui7GSxl&<%0AfCPvUmq`J{F{HMZT#$`>!-(l$ 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�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 I04TE6zd-~&1ONa4 literal 0 HcmV?d00001 diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/nohup.out b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/nohup.out new file mode 100644 index 000000000..b07bf981a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/nohup.out @@ -0,0 +1,529 @@ + + Checksum(0x0x7ffcba70a890, 100) = 0xfffd4143 +Info: executing thread synchronization, please wait... +Server is running on http://0.0.0.0:8082 +-------------------- +Received a POST request to decrypt transaction. +RSA key params loaded successfully from file Enclave/enclave_keys.txt. +Private key restored! +Public key restored! +Error: fail to decrypt "from". +Fail to decrypt trasaction data. +Failed to decrypt transaction. +-------------------- +Received a POST request to decrypt transaction. +RSA key params loaded successfully from file Enclave/enclave_keys.txt. +Private key restored! +Public key restored! +Error: fail to decrypt "from". +Fail to decrypt trasaction data. +Failed to decrypt transaction. +-------------------- +Received a POST request to decrypt transaction. +RSA key params loaded successfully from file Enclave/enclave_keys.txt. +Private key restored! +Public key restored! +from: 12 +to: 11 +amount11.000000 +Successfully decrypt transaction. +Error: fail to open file . +Error: failed to read data from outer. +Failed to read wallet file: Wallets/wallet12.txt. +Error: failed to read RSA key params from file. +Error: Failed to get RSA keys for wallet_id 12 +Successfully write encrypted transaction into file. +Transaction decrypted successfully. +-------------------- +Received a POST request of transaction warning. +No exception detected +-------------------- +Received a POST request to shuffle transaction. +Shuffling transaction: +Address: 6 Amount: 0.63 +Address: 4 Amount: 0.53 +Address: 3 Amount: 9.84 +Transaction shuffled successfully. +Error: fail to open file . +Error: failed to read data from outer. +Failed to read wallet file: Wallets/wallet12.txt. +Error: failed to read RSA key params from file. +Error: Failed to get RSA keys for wallet_id 12 +Failed to encrypt transaction. +Failed to shuffle transaction. +-------------------- +Received a POST request to decrypt transaction. +RSA key params loaded successfully from file Enclave/enclave_keys.txt. +Private key restored! +Public key restored! +from: 12 +to: 11 +amount1199999.000000 +Successfully decrypt transaction. +Error: fail to open file . +Error: failed to read data from outer. +Failed to read wallet file: Wallets/wallet12.txt. +Error: failed to read RSA key params from file. +Error: Failed to get RSA keys for wallet_id 12 +Successfully write encrypted transaction into file. +Transaction decrypted successfully. +-------------------- +Received a POST request of transaction warning. +Exception detected: Amount exceeds the maximum allowed for a single transaction. +-------------------- +Received a POST request to decrypt transaction. +RSA key params loaded successfully from file Enclave/enclave_keys.txt. +Private key restored! +Public key restored! +from: 12 +to: 11 +amount0.010000 +Successfully decrypt transaction. +Error: fail to open file . +Error: failed to read data from outer. +Failed to read wallet file: Wallets/wallet12.txt. +Error: failed to read RSA key params from file. +Error: Failed to get RSA keys for wallet_id 12 +Successfully write encrypted transaction into file. +Transaction decrypted successfully. +-------------------- +Received a POST request of transaction warning. +No exception detected +-------------------- +Received a POST request to shuffle transaction. +Shuffling transaction: +Address: 9 Amount: 0.00 +Address: 2 Amount: 0.00 +Address: 4 Amount: 0.00 +Address: 1 Amount: 0.00 +Address: 3 Amount: 0.01 +Transaction shuffled successfully. +Error: fail to open file . +Error: failed to read data from outer. +Failed to read wallet file: Wallets/wallet12.txt. +Error: failed to read RSA key params from file. +Error: Failed to get RSA keys for wallet_id 12 +Failed to encrypt transaction. +Failed to shuffle transaction. +-------------------- +Received a POST request to decrypt transaction. +RSA key params loaded successfully from file Enclave/enclave_keys.txt. +Private key restored! +Public key restored! +from: 12 +to: 11 +amount11.000000 +Successfully decrypt transaction. +Error: fail to open file . +Error: failed to read data from outer. +Failed to read wallet file: Wallets/wallet12.txt. +Error: failed to read RSA key params from file. +Error: Failed to get RSA keys for wallet_id 12 +Successfully write encrypted transaction into file. +Transaction decrypted successfully. +-------------------- +Received a POST request of transaction warning. +No exception detected +-------------------- +Received a POST request to shuffle transaction. +Shuffling transaction: +Address: 4 Amount: 0.38 +Address: 5 Amount: 2.96 +Address: 2 Amount: 2.79 +Address: 8 Amount: 4.86 +Transaction shuffled successfully. +Error: fail to open file . +Error: failed to read data from outer. +Failed to read wallet file: Wallets/wallet12.txt. +Error: failed to read RSA key params from file. +Error: Failed to get RSA keys for wallet_id 12 +Failed to encrypt transaction. +Failed to shuffle transaction. +-------------------- +Received a POST request to decrypt transaction. +RSA key params loaded successfully from file Enclave/enclave_keys.txt. +Private key restored! +Public key restored! +from: 12 +to: 11 +amount1.000000 +Successfully decrypt transaction. +Error: fail to open file . +Error: failed to read data from outer. +Failed to read wallet file: Wallets/wallet12.txt. +Error: failed to read RSA key params from file. +Error: Failed to get RSA keys for wallet_id 12 +Successfully write encrypted transaction into file. +Transaction decrypted successfully. +-------------------- +Received a POST request of transaction warning. +No exception detected +-------------------- +Received a POST request to shuffle transaction. +Shuffling transaction: +Address: 9 Amount: 0.26 +Address: 7 Amount: 0.34 +Address: 4 Amount: 0.12 +Address: 6 Amount: 0.10 +Address: 1 Amount: 0.17 +Transaction shuffled successfully. +Error: fail to open file . +Error: failed to read data from outer. +Failed to read wallet file: Wallets/wallet12.txt. +Error: failed to read RSA key params from file. +Error: Failed to get RSA keys for wallet_id 12 +Failed to encrypt transaction. +Failed to shuffle transaction. +-------------------- +Received a POST request to shuffle transaction. +Shuffling transaction: +Address: 6 Amount: 0.19 +Address: 9 Amount: 0.02 +Address: 7 Amount: 0.79 +Transaction shuffled successfully. +Error: fail to open file . +Error: failed to read data from outer. +Failed to read wallet file: Wallets/wallet11.txt. +Error: failed to read RSA key params from file. +Error: Failed to get RSA keys for wallet_id 11 +Failed to encrypt transaction. +Failed to shuffle transaction. +-------------------- +Received a POST request to shuffle transaction. +Shuffling transaction: +Address: 1 Amount: 0.45 +Address: 9 Amount: 0.21 +Address: 7 Amount: 0.13 +Address: 6 Amount: 0.21 +Transaction shuffled successfully. +Error: fail to open file . +Error: failed to read data from outer. +Failed to read wallet file: Wallets/wallet11.txt. +Error: failed to read RSA key params from file. +Error: Failed to get RSA keys for wallet_id 11 +Failed to encrypt transaction. +Failed to shuffle transaction. +-------------------- +Received a POST request to shuffle transaction. +Shuffling transaction: +Address: 8 Amount: 0.38 +Address: 9 Amount: 0.13 +Address: 7 Amount: 0.11 +Address: 2 Amount: 0.10 +Address: 3 Amount: 0.28 +Transaction shuffled successfully. +Error: fail to open file . +Error: failed to read data from outer. +Failed to read wallet file: Wallets/wallet11.txt. +Error: failed to read RSA key params from file. +Error: Failed to get RSA keys for wallet_id 11 +Failed to encrypt transaction. +Failed to shuffle transaction. +-------------------- +Checksum(0x0x7ffec7b13760, 100) = 0xfffd4143 +Info: executing thread synchronization, please wait... +Server is running on http://0.0.0.0:8082 +-------------------- +Received a POST request to shuffle transaction. +Shuffling transaction: +Address: 8 Amount: 164425.71 +Address: 2 Amount: 91520.69 +Address: 3 Amount: 264170.74 +Address: 5 Amount: 98402.93 +Address: 9 Amount: 68430.61 +Address: 6 Amount: 122428.85 +Transaction shuffled successfully. +Warning sign: 1 +Message: Amount exceeds the maximum allowed for a single transaction. +-------------------- +Received a POST request to shuffle transaction. +Shuffling transaction: +Address: 4 Amount: 202797.52 +Address: 3 Amount: 218772.71 +Address: 5 Amount: 89401.75 +Address: 8 Amount: 58333.56 +Address: 6 Amount: 127516.56 +Transaction shuffled successfully. +Warning sign: 1 +Message: Amount exceeds the maximum allowed for a single transaction. +-------------------- +Received a POST request to shuffle transaction. +Shuffling transaction: +Address: 8 Amount: 98398.11 +Address: 2 Amount: 60562.32 +Address: 4 Amount: 193061.20 +Transaction shuffled successfully. +Warning sign: 1 +Message: Amount exceeds the maximum allowed for a single transaction. +-------------------- +Received a POST request to shuffle transaction. +Shuffling transaction: +Address: 6 Amount: 127960.60 +Address: 1 Amount: 171233.94 +Address: 8 Amount: 169769.89 +Address: 3 Amount: 78161.22 +Address: 5 Amount: 519.47 +Address: 7 Amount: 96457.78 +Transaction shuffled successfully. +Warning sign: 1 +Message: Amount exceeds the maximum allowed for a single transaction. +-------------------- +Received a POST request to shuffle transaction. +Shuffling transaction: +Address: 3 Amount: 361825.54 +Address: 5 Amount: 6969.84 +Address: 1 Amount: 52353.42 +Address: 6 Amount: 406330.99 +Transaction shuffled successfully. +Warning sign: 1 +Message: Amount exceeds the maximum allowed for a single transaction. +-------------------- +Received a POST request to shuffle transaction. +Shuffling transaction: +Address: 2 Amount: 2844.26 +Address: 4 Amount: 20060.20 +Address: 1 Amount: 6416.30 +Address: 7 Amount: 11191.78 +Address: 9 Amount: 9084.30 +Address: 6 Amount: 16084.34 +Transaction shuffled successfully. +Warning sign: 0 +Message: No exception detected in the transaction. +-------------------- +Received a POST request to shuffle transaction. +Shuffling transaction: +Address: 2 Amount: 41935.38 +Address: 6 Amount: 38883.11 +Address: 5 Amount: 66276.60 +Address: 9 Amount: 108092.13 +Transaction shuffled successfully. +Warning sign: 1 +Message: Amount exceeds the maximum allowed for a single transaction. +-------------------- +Received a POST request to shuffle transaction. +Shuffling transaction: +Address: 6 Amount: 290677.56 +Address: 2 Amount: 244719.32 +Address: 3 Amount: 39982.22 +Address: 5 Amount: 281567.56 +Transaction shuffled successfully. +Warning sign: 1 +Message: Amount exceeds the maximum allowed for a single transaction. +-------------------- +Received a POST request to shuffle transaction. +Shuffling transaction: +Address: 2 Amount: 28515.37 +Address: 1 Amount: 15986.82 +Address: 4 Amount: 5114.76 +Address: 7 Amount: 6041.09 +Address: 5 Amount: 7213.91 +Transaction shuffled successfully. +Warning sign: 0 +Message: No exception detected in the transaction. +-------------------- +Received a POST request to decrypt transaction. +RSA key params loaded successfully from file Enclave/enclave_keys.txt. +Private key restored! +Public key restored! +from: 50 +to: 68 +amount929603.710000 +Successfully decrypt transaction. +RSA key params loaded successfully from file Wallets/wallet50.txt. +Private key restored! +Public key restored! +Data to encrypt: +Successfully write encrypted transaction into file. +Transaction decrypted successfully. +-------------------- +Received a post request for creating a new wallet. +Generating key pair for wallet_id 1 +Key params created! +Private key created! +Public key created! +Successfully write rsa key params into file. +RSA key params loaded successfully from file Wallets/wallet1.txt. +Private key restored! +Public key restored! +Restored key pair from file passed 4/4 test. +Successfully created a new wallet. +-------------------- +Received a post request for creating a new wallet. +Generating key pair for wallet_id 2 +Key params created! +Private key created! +Public key created! +Successfully write rsa key params into file. +RSA key params loaded successfully from file Wallets/wallet2.txt. +Private key restored! +Public key restored! +Restored key pair from file passed 4/4 test. +Successfully created a new wallet. +-------------------- +Received a post request for creating a new wallet. +Generating key pair for wallet_id 3 +Key params created! +Private key created! +Public key created! +Successfully write rsa key params into file. +RSA key params loaded successfully from file Wallets/wallet3.txt. +Private key restored! +Public key restored! +Restored key pair from file passed 4/4 test. +Successfully created a new wallet. +-------------------- +Received a post request for creating a new wallet. +Generating key pair for wallet_id 4 +Key params created! +Private key created! +Public key created! +Successfully write rsa key params into file. +RSA key params loaded successfully from file Wallets/wallet4.txt. +Private key restored! +Public key restored! +Restored key pair from file passed 4/4 test. +Successfully created a new wallet. +-------------------- +Received a post request for creating a new wallet. +Generating key pair for wallet_id 5 +Key params created! +Private key created! +Public key created! +Successfully write rsa key params into file. +RSA key params loaded successfully from file Wallets/wallet5.txt. +Private key restored! +Public key restored! +Restored key pair from file passed 4/4 test. +Successfully created a new wallet. +-------------------- +Received a post request for creating a new wallet. +Generating key pair for wallet_id 6 +Key params created! +Private key created! +Public key created! +Successfully write rsa key params into file. +RSA key params loaded successfully from file Wallets/wallet6.txt. +Private key restored! +Public key restored! +Restored key pair from file passed 4/4 test. +Successfully created a new wallet. +-------------------- +Received a post request for creating a new wallet. +Generating key pair for wallet_id 7 +Key params created! +Private key created! +Public key created! +Successfully write rsa key params into file. +RSA key params loaded successfully from file Wallets/wallet7.txt. +Private key restored! +Public key restored! +Restored key pair from file passed 4/4 test. +Successfully created a new wallet. +-------------------- +Received a post request for creating a new wallet. +Generating key pair for wallet_id 8 +Key params created! +Private key created! +Public key created! +Successfully write rsa key params into file. +RSA key params loaded successfully from file Wallets/wallet8.txt. +Private key restored! +Public key restored! +Restored key pair from file passed 4/4 test. +Successfully created a new wallet. +-------------------- +Received a post request for creating a new wallet. +Generating key pair for wallet_id 9 +Key params created! +Private key created! +Public key created! +Successfully write rsa key params into file. +RSA key params loaded successfully from file Wallets/wallet9.txt. +Private key restored! +Public key restored! +Restored key pair from file passed 4/4 test. +Successfully created a new wallet. +-------------------- +Received a post request for creating a new wallet. +Generating key pair for wallet_id 10 +Key params created! +Private key created! +Public key created! +Successfully write rsa key params into file. +RSA key params loaded successfully from file Wallets/wallet10.txt. +Private key restored! +Public key restored! +Restored key pair from file passed 4/4 test. +Successfully created a new wallet. +-------------------- +Received a post request for creating a new wallet. +Generating key pair for wallet_id 11 +Key params created! +Private key created! +Public key created! +Successfully write rsa key params into file. +RSA key params loaded successfully from file Wallets/wallet11.txt. +Private key restored! +Public key restored! +Restored key pair from file passed 4/4 test. +Successfully created a new wallet. +-------------------- +Received a post request for creating a new wallet. +Generating key pair for wallet_id 12 +Key params created! +Private key created! +Public key created! +Successfully write rsa key params into file. +RSA key params loaded successfully from file Wallets/wallet12.txt. +Private key restored! +Public key restored! +Restored key pair from file passed 4/4 test. +Successfully created a new wallet. +-------------------- +Received a POST request to decrypt transaction. +RSA key params loaded successfully from file Enclave/enclave_keys.txt. +Private key restored! +Public key restored! +from: 12 +to: 11 +amount10.000000 +Successfully decrypt transaction. +RSA key params loaded successfully from file Wallets/wallet12.txt. +Private key restored! +Public key restored! +Data to encrypt: +Successfully write encrypted transaction into file. +Transaction decrypted successfully. +-------------------- +Received a POST request of transaction warning. +No exception detected +-------------------- +Received a POST request to shuffle transaction. +Shuffling transaction: +Address: 8 Amount: 0.18 +Address: 3 Amount: 1.24 +Address: 5 Amount: 3.89 +Address: 1 Amount: 0.15 +Address: 6 Amount: 4.53 +Transaction shuffled successfully. +Warning sign: 0 +Message: No exception detected in the transaction. +-------------------- +Received a POST request to decrypt transaction. +RSA key params loaded successfully from file Enclave/enclave_keys.txt. +Private key restored! +Public key restored! +from: 12 +to: 11 +amount1199983.000000 +Successfully decrypt transaction. +RSA key params loaded successfully from file Wallets/wallet12.txt. +Private key restored! +Public key restored! +Data to encrypt: +Successfully write encrypted transaction into file. +Transaction decrypted successfully. +-------------------- +Received a POST request of transaction warning. +Exception detected: Amount exceeds the maximum allowed for a single transaction. +-------------------- diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/run.sh b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/run.sh new file mode 100755 index 000000000..f54c88414 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/TEE/run.sh @@ -0,0 +1,6 @@ +#! /bin/bash + +make clean +make +./app + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/config/config.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/config/config.go new file mode 100644 index 000000000..a8f4d51f0 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/config/config.go @@ -0,0 +1,141 @@ +package config + +import ( + "encoding/hex" + "encoding/json" + "fmt" + "io" + "log" + "os" + "path/filepath" + + "github.com/FISCO-BCOS/go-sdk/v3/client" + "gopkg.in/yaml.v2" +) + +type Config struct { + Database struct { + Username string `yaml:"username"` + Password string `yaml:"password"` + Host string `yaml:"host"` + Port int `yaml:"port"` + DBName string `yaml:"dbname"` + Charset string `yaml:"charset"` + } `yaml:"database"` + + Fisco struct { + IsSMCrypto bool `yaml:"is_sm_crypto"` + GroupID string `yaml:"group_id"` + DisableSsl bool `yaml:"disable_ssl"` + Host string `yaml:"host"` + Port int `yaml:"port"` + TLSCaFile string `yaml:"tls_ca_file"` + TLSKeyFile string `yaml:"tls_key_file"` + TLSCertFile string `yaml:"tls_cert_file"` + Authorizationtoken string `yaml:"Authorizationtoken"` + } `yaml:"fisco"` + + Contract struct { + KeyShareContract string `yaml:"key_share_contract"` + DecisionContract string `yaml:"decision_contract"` + } `yaml:"contract"` + + Tee struct { + PrivateKey string `yaml:"private_key"` + PublicKey string `yaml:"public_key"` + } `yaml:"tee"` +} + +var GlobalConfig Config + +func LoadConfig(configPath string) (*Config, error) { + config := &Config{} + + file, err := os.ReadFile(configPath) + if err != nil { + return nil, fmt.Errorf("error reading config file: %v", err) + } + + err = yaml.Unmarshal(file, config) + if err != nil { + return nil, fmt.Errorf("error parsing config file: %v", err) + } + + GlobalConfig = *config + return config, nil +} + +func ReadConfig(pk string) *client.Config { + privateKey, _ := hex.DecodeString(pk) + + config := &client.Config{ + IsSMCrypto: GlobalConfig.Fisco.IsSMCrypto, + GroupID: GlobalConfig.Fisco.GroupID, + DisableSsl: GlobalConfig.Fisco.DisableSsl, + PrivateKey: privateKey, + Host: GlobalConfig.Fisco.Host, + Port: GlobalConfig.Fisco.Port, + TLSCaFile: GlobalConfig.Fisco.TLSCaFile, + TLSKeyFile: GlobalConfig.Fisco.TLSKeyFile, + TLSCertFile: GlobalConfig.Fisco.TLSCertFile, + } + + return config +} + +type KeyData struct { + PublicKey string `json:"publicKey"` + PrivateKey string `json:"privateKey"` +} + +func ReadJuryKeys() ([]string, []string) { + juryPrivateKeys := []string{} + juryPublicKeys := []string{} + + // Define the directory containing the key files + dir := "config/keys" + + // Read all files in the directory + files, err := os.ReadDir(dir) + if err != nil { + log.Fatalf("Failed to read directory: %v", err) + } + + // Iterate over each file + for _, file := range files { + // Construct the full file path + filePath := filepath.Join(dir, file.Name()) + + // Open the file + jsonFile, err := os.Open(filePath) + if err != nil { + log.Printf("Failed to open file %s: %v", filePath, err) + continue + } + + // Read the file contents + byteValue, err := io.ReadAll(jsonFile) + if err != nil { + log.Printf("Failed to read file %s: %v", filePath, err) + jsonFile.Close() + continue + } + + // Close the file + jsonFile.Close() + + // Parse the JSON + var keyData KeyData + err = json.Unmarshal(byteValue, &keyData) + if err != nil { + log.Printf("Failed to parse JSON from file %s: %v", filePath, err) + continue + } + + // Append the keys to the respective slices + juryPrivateKeys = append(juryPrivateKeys, keyData.PrivateKey) + juryPublicKeys = append(juryPublicKeys, keyData.PublicKey) + } + + return juryPrivateKeys, juryPublicKeys +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/config/config.yaml b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/config/config.yaml new file mode 100644 index 000000000..af28c51e8 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/config/config.yaml @@ -0,0 +1,26 @@ +database: + username: root + password: "zss123456zss" + host: 127.0.0.1 + port: 3306 + dbname: gva + charset: utf8mb4 + +fisco: + is_sm_crypto: false + group_id: "group0" + disable_ssl: false + host: "127.0.0.1" + port: 20200 + tls_ca_file: "./config/sdk/ca.crt" + tls_key_file: "./config/sdk/sdk.key" + tls_cert_file: "./config/sdk/sdk.crt" + Authorizationtoken: "Token 213cd1766722b0b51238b25f4868bad4d0c1b616e2ad71cde9fa1c89a3fa88ac" + +contract: + key_share_contract: "0x6849f21d1e455e9f0712b1e99fa4fcd23758e8f1" + decision_contract: "0x4721d1a77e0e76851d460073e64ea06d9c104194" + +tee: + private_key: "a1d6e8b17cabcaea1374facffca5474338af69d86de0f4137b7ba4c744338148" + public_key: "22acd867175ab1cf5b3da4b0db073e7c687bb5c7fbba6b7f2e4a3087d2aa9d92a9711922eacf680fe35dc60c5ce7a698115568b4a6cf1e6c397f20a886802817" \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/Decision/DecisionStorage.abi b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/Decision/DecisionStorage.abi new file mode 100644 index 000000000..f9d8f7663 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/Decision/DecisionStorage.abi @@ -0,0 +1 @@ +[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"evidence","type":"string"},{"indexed":false,"internalType":"string","name":"nodeID","type":"string"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"DecisionRecorded","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"decisions","outputs":[{"internalType":"string","name":"evidence","type":"string"},{"internalType":"string","name":"nodeID","type":"string"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getDecision","outputs":[{"internalType":"string","name":"evidence","type":"string"},{"internalType":"string","name":"nodeID","type":"string"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDecisionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"evidence","type":"string"},{"internalType":"string","name":"nodeID","type":"string"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"recordDecision","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"evidence","type":"string"}],"name":"verifyEvidence","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/Decision/DecisionStorage.bin b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/Decision/DecisionStorage.bin new file mode 100644 index 000000000..64acb8752 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/Decision/DecisionStorage.bin @@ -0,0 +1 @@ +608060405234801561001057600080fd5b50610b7e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80636f13f95a1461005c578063af7548481461008c578063b829df82146100bf578063b8c0dbbd146100f2578063e4ff19da14610122575b600080fd5b610076600480360381019061007191906107ae565b610140565b6040516100839190610812565b60405180910390f35b6100a660048036038101906100a19190610863565b61014b565b6040516100b69493929190610927565b60405180910390f35b6100d960048036038101906100d49190610863565b610335565b6040516100e99493929190610927565b60405180910390f35b61010c600480360381019061010791906109a6565b610492565b6040516101199190610812565b60405180910390f35b61012a6105a5565b6040516101379190610a31565b60405180910390f35b600060019050919050565b6060806000806000805490508510610198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018f90610a98565b60405180910390fd5b60008086815481106101ad576101ac610ab8565b5b90600052602060002090600402016040518060800160405290816000820180546101d690610b16565b80601f016020809104026020016040519081016040528092919081815260200182805461020290610b16565b801561024f5780601f106102245761010080835404028352916020019161024f565b820191906000526020600020905b81548152906001019060200180831161023257829003601f168201915b5050505050815260200160018201805461026890610b16565b80601f016020809104026020016040519081016040528092919081815260200182805461029490610b16565b80156102e15780601f106102b6576101008083540402835291602001916102e1565b820191906000526020600020905b8154815290600101906020018083116102c457829003601f168201915b50505050508152602001600282015481526020016003820160009054906101000a900460ff161515151581525050905080600001518160200151826040015183606001519450945094509450509193509193565b6000818154811061034557600080fd5b906000526020600020906004020160009150905080600001805461036890610b16565b80601f016020809104026020016040519081016040528092919081815260200182805461039490610b16565b80156103e15780601f106103b6576101008083540402835291602001916103e1565b820191906000526020600020905b8154815290600101906020018083116103c457829003601f168201915b5050505050908060010180546103f690610b16565b80601f016020809104026020016040519081016040528092919081815260200182805461042290610b16565b801561046f5780601f106104445761010080835404028352916020019161046f565b820191906000526020600020905b81548152906001019060200180831161045257829003601f168201915b5050505050908060020154908060030160009054906101000a900460ff16905084565b60008060405180608001604052808681526020018581526020014281526020018415158152509050600081908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000190805190602001906105029291906105b1565b50602082015181600101908051906020019061051f9291906105b1565b506040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555050507f641014cc6abca52c1d84346d29137b54af42068d1b3b5b3c52e98b16eb08542881600001518260200151836040015184606001516040516105919493929190610927565b60405180910390a160019150509392505050565b60008080549050905090565b8280546105bd90610b16565b90600052602060002090601f0160209004810192826105df5760008555610626565b82601f106105f857805160ff1916838001178555610626565b82800160010185558215610626579182015b8281111561062557825182559160200191906001019061060a565b5b5090506106339190610637565b5090565b5b80821115610650576000816000905550600101610638565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6106bb82610672565b810181811067ffffffffffffffff821117156106da576106d9610683565b5b80604052505050565b60006106ed610654565b90506106f982826106b2565b919050565b600067ffffffffffffffff82111561071957610718610683565b5b61072282610672565b9050602081019050919050565b82818337600083830152505050565b600061075161074c846106fe565b6106e3565b90508281526020810184848401111561076d5761076c61066d565b5b61077884828561072f565b509392505050565b600082601f83011261079557610794610668565b5b81356107a584826020860161073e565b91505092915050565b6000602082840312156107c4576107c361065e565b5b600082013567ffffffffffffffff8111156107e2576107e1610663565b5b6107ee84828501610780565b91505092915050565b60008115159050919050565b61080c816107f7565b82525050565b60006020820190506108276000830184610803565b92915050565b6000819050919050565b6108408161082d565b811461084b57600080fd5b50565b60008135905061085d81610837565b92915050565b6000602082840312156108795761087861065e565b5b60006108878482850161084e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156108ca5780820151818401526020810190506108af565b838111156108d9576000848401525b50505050565b60006108ea82610890565b6108f4818561089b565b93506109048185602086016108ac565b61090d81610672565b840191505092915050565b6109218161082d565b82525050565b6000608082019050818103600083015261094181876108df565b9050818103602083015261095581866108df565b90506109646040830185610918565b6109716060830184610803565b95945050505050565b610983816107f7565b811461098e57600080fd5b50565b6000813590506109a08161097a565b92915050565b6000806000606084860312156109bf576109be61065e565b5b600084013567ffffffffffffffff8111156109dd576109dc610663565b5b6109e986828701610780565b935050602084013567ffffffffffffffff811115610a0a57610a09610663565b5b610a1686828701610780565b9250506040610a2786828701610991565b9150509250925092565b6000602082019050610a466000830184610918565b92915050565b7f496e646578206f7574206f6620626f756e647300000000000000000000000000600082015250565b6000610a8260138361089b565b9150610a8d82610a4c565b602082019050919050565b60006020820190508181036000830152610ab181610a75565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610b2e57607f821691505b60208210811415610b4257610b41610ae7565b5b5091905056fea2646970667358221220977b96c748e0423ec306543f50d16911b1ba1f1f2928bff91954f64010dea1d264736f6c634300080b0033 \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/Decision/DecisionStorage.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/Decision/DecisionStorage.go new file mode 100644 index 000000000..e28063252 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/Decision/DecisionStorage.go @@ -0,0 +1,445 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package Decision + +import ( + "fmt" + "math/big" + "strings" + + "github.com/FISCO-BCOS/go-sdk/v3/abi" + "github.com/FISCO-BCOS/go-sdk/v3/abi/bind" + "github.com/FISCO-BCOS/go-sdk/v3/types" + "github.com/ethereum/go-ethereum/common" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = big.NewInt + _ = strings.NewReader + _ = abi.U256 + _ = bind.Bind + _ = common.Big1 +) + +// DecisionStorageABI is the input ABI used to generate the binding from. +const DecisionStorageABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"evidence\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"nodeID\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"DecisionRecorded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"decisions\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"evidence\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"nodeID\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getDecision\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"evidence\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"nodeID\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDecisionCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"evidence\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"nodeID\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"recordDecision\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"evidence\",\"type\":\"string\"}],\"name\":\"verifyEvidence\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]" + +// DecisionStorageBin is the compiled bytecode used for deploying new contracts. +var DecisionStorageBin = "0x608060405234801561001057600080fd5b50610b7e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80636f13f95a1461005c578063af7548481461008c578063b829df82146100bf578063b8c0dbbd146100f2578063e4ff19da14610122575b600080fd5b610076600480360381019061007191906107ae565b610140565b6040516100839190610812565b60405180910390f35b6100a660048036038101906100a19190610863565b61014b565b6040516100b69493929190610927565b60405180910390f35b6100d960048036038101906100d49190610863565b610335565b6040516100e99493929190610927565b60405180910390f35b61010c600480360381019061010791906109a6565b610492565b6040516101199190610812565b60405180910390f35b61012a6105a5565b6040516101379190610a31565b60405180910390f35b600060019050919050565b6060806000806000805490508510610198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018f90610a98565b60405180910390fd5b60008086815481106101ad576101ac610ab8565b5b90600052602060002090600402016040518060800160405290816000820180546101d690610b16565b80601f016020809104026020016040519081016040528092919081815260200182805461020290610b16565b801561024f5780601f106102245761010080835404028352916020019161024f565b820191906000526020600020905b81548152906001019060200180831161023257829003601f168201915b5050505050815260200160018201805461026890610b16565b80601f016020809104026020016040519081016040528092919081815260200182805461029490610b16565b80156102e15780601f106102b6576101008083540402835291602001916102e1565b820191906000526020600020905b8154815290600101906020018083116102c457829003601f168201915b50505050508152602001600282015481526020016003820160009054906101000a900460ff161515151581525050905080600001518160200151826040015183606001519450945094509450509193509193565b6000818154811061034557600080fd5b906000526020600020906004020160009150905080600001805461036890610b16565b80601f016020809104026020016040519081016040528092919081815260200182805461039490610b16565b80156103e15780601f106103b6576101008083540402835291602001916103e1565b820191906000526020600020905b8154815290600101906020018083116103c457829003601f168201915b5050505050908060010180546103f690610b16565b80601f016020809104026020016040519081016040528092919081815260200182805461042290610b16565b801561046f5780601f106104445761010080835404028352916020019161046f565b820191906000526020600020905b81548152906001019060200180831161045257829003601f168201915b5050505050908060020154908060030160009054906101000a900460ff16905084565b60008060405180608001604052808681526020018581526020014281526020018415158152509050600081908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000190805190602001906105029291906105b1565b50602082015181600101908051906020019061051f9291906105b1565b506040820151816002015560608201518160030160006101000a81548160ff02191690831515021790555050507f641014cc6abca52c1d84346d29137b54af42068d1b3b5b3c52e98b16eb08542881600001518260200151836040015184606001516040516105919493929190610927565b60405180910390a160019150509392505050565b60008080549050905090565b8280546105bd90610b16565b90600052602060002090601f0160209004810192826105df5760008555610626565b82601f106105f857805160ff1916838001178555610626565b82800160010185558215610626579182015b8281111561062557825182559160200191906001019061060a565b5b5090506106339190610637565b5090565b5b80821115610650576000816000905550600101610638565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6106bb82610672565b810181811067ffffffffffffffff821117156106da576106d9610683565b5b80604052505050565b60006106ed610654565b90506106f982826106b2565b919050565b600067ffffffffffffffff82111561071957610718610683565b5b61072282610672565b9050602081019050919050565b82818337600083830152505050565b600061075161074c846106fe565b6106e3565b90508281526020810184848401111561076d5761076c61066d565b5b61077884828561072f565b509392505050565b600082601f83011261079557610794610668565b5b81356107a584826020860161073e565b91505092915050565b6000602082840312156107c4576107c361065e565b5b600082013567ffffffffffffffff8111156107e2576107e1610663565b5b6107ee84828501610780565b91505092915050565b60008115159050919050565b61080c816107f7565b82525050565b60006020820190506108276000830184610803565b92915050565b6000819050919050565b6108408161082d565b811461084b57600080fd5b50565b60008135905061085d81610837565b92915050565b6000602082840312156108795761087861065e565b5b60006108878482850161084e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156108ca5780820151818401526020810190506108af565b838111156108d9576000848401525b50505050565b60006108ea82610890565b6108f4818561089b565b93506109048185602086016108ac565b61090d81610672565b840191505092915050565b6109218161082d565b82525050565b6000608082019050818103600083015261094181876108df565b9050818103602083015261095581866108df565b90506109646040830185610918565b6109716060830184610803565b95945050505050565b610983816107f7565b811461098e57600080fd5b50565b6000813590506109a08161097a565b92915050565b6000806000606084860312156109bf576109be61065e565b5b600084013567ffffffffffffffff8111156109dd576109dc610663565b5b6109e986828701610780565b935050602084013567ffffffffffffffff811115610a0a57610a09610663565b5b610a1686828701610780565b9250506040610a2786828701610991565b9150509250925092565b6000602082019050610a466000830184610918565b92915050565b7f496e646578206f7574206f6620626f756e647300000000000000000000000000600082015250565b6000610a8260138361089b565b9150610a8d82610a4c565b602082019050919050565b60006020820190508181036000830152610ab181610a75565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610b2e57607f821691505b60208210811415610b4257610b41610ae7565b5b5091905056fea2646970667358221220977b96c748e0423ec306543f50d16911b1ba1f1f2928bff91954f64010dea1d264736f6c634300080b0033" +var DecisionStorageSMBin = "0x" + +// DeployDecisionStorage deploys a new contract, binding an instance of DecisionStorage to it. +func DeployDecisionStorage(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Receipt, *DecisionStorage, error) { + parsed, err := abi.JSON(strings.NewReader(DecisionStorageABI)) + if err != nil { + return common.Address{}, nil, nil, err + } + + var bytecode []byte + if backend.SMCrypto() { + bytecode = common.FromHex(DecisionStorageSMBin) + } else { + bytecode = common.FromHex(DecisionStorageBin) + } + if len(bytecode) == 0 { + return common.Address{}, nil, nil, fmt.Errorf("cannot deploy empty bytecode") + } + address, receipt, contract, err := bind.DeployContract(auth, parsed, bytecode, DecisionStorageABI, backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, receipt, &DecisionStorage{DecisionStorageCaller: DecisionStorageCaller{contract: contract}, DecisionStorageTransactor: DecisionStorageTransactor{contract: contract}, DecisionStorageFilterer: DecisionStorageFilterer{contract: contract}}, nil +} + +func AsyncDeployDecisionStorage(auth *bind.TransactOpts, handler func(*types.Receipt, error), backend bind.ContractBackend) (*types.Transaction, error) { + parsed, err := abi.JSON(strings.NewReader(DecisionStorageABI)) + if err != nil { + return nil, err + } + + var bytecode []byte + if backend.SMCrypto() { + bytecode = common.FromHex(DecisionStorageSMBin) + } else { + bytecode = common.FromHex(DecisionStorageBin) + } + if len(bytecode) == 0 { + return nil, fmt.Errorf("cannot deploy empty bytecode") + } + tx, err := bind.AsyncDeployContract(auth, handler, parsed, bytecode, DecisionStorageABI, backend) + if err != nil { + return nil, err + } + return tx, nil +} + +// DecisionStorage is an auto generated Go binding around a Solidity contract. +type DecisionStorage struct { + DecisionStorageCaller // Read-only binding to the contract + DecisionStorageTransactor // Write-only binding to the contract + DecisionStorageFilterer // Log filterer for contract events +} + +// DecisionStorageCaller is an auto generated read-only Go binding around a Solidity contract. +type DecisionStorageCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DecisionStorageTransactor is an auto generated write-only Go binding around a Solidity contract. +type DecisionStorageTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DecisionStorageFilterer is an auto generated log filtering Go binding around a Solidity contract events. +type DecisionStorageFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// DecisionStorageSession is an auto generated Go binding around a Solidity contract, +// with pre-set call and transact options. +type DecisionStorageSession struct { + Contract *DecisionStorage // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// DecisionStorageCallerSession is an auto generated read-only Go binding around a Solidity contract, +// with pre-set call options. +type DecisionStorageCallerSession struct { + Contract *DecisionStorageCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// DecisionStorageTransactorSession is an auto generated write-only Go binding around a Solidity contract, +// with pre-set transact options. +type DecisionStorageTransactorSession struct { + Contract *DecisionStorageTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// DecisionStorageRaw is an auto generated low-level Go binding around a Solidity contract. +type DecisionStorageRaw struct { + Contract *DecisionStorage // Generic contract binding to access the raw methods on +} + +// DecisionStorageCallerRaw is an auto generated low-level read-only Go binding around a Solidity contract. +type DecisionStorageCallerRaw struct { + Contract *DecisionStorageCaller // Generic read-only contract binding to access the raw methods on +} + +// DecisionStorageTransactorRaw is an auto generated low-level write-only Go binding around a Solidity contract. +type DecisionStorageTransactorRaw struct { + Contract *DecisionStorageTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewDecisionStorage creates a new instance of DecisionStorage, bound to a specific deployed contract. +func NewDecisionStorage(address common.Address, backend bind.ContractBackend) (*DecisionStorage, error) { + contract, err := bindDecisionStorage(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &DecisionStorage{DecisionStorageCaller: DecisionStorageCaller{contract: contract}, DecisionStorageTransactor: DecisionStorageTransactor{contract: contract}, DecisionStorageFilterer: DecisionStorageFilterer{contract: contract}}, nil +} + +// NewDecisionStorageCaller creates a new read-only instance of DecisionStorage, bound to a specific deployed contract. +func NewDecisionStorageCaller(address common.Address, caller bind.ContractCaller) (*DecisionStorageCaller, error) { + contract, err := bindDecisionStorage(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &DecisionStorageCaller{contract: contract}, nil +} + +// NewDecisionStorageTransactor creates a new write-only instance of DecisionStorage, bound to a specific deployed contract. +func NewDecisionStorageTransactor(address common.Address, transactor bind.ContractTransactor) (*DecisionStorageTransactor, error) { + contract, err := bindDecisionStorage(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &DecisionStorageTransactor{contract: contract}, nil +} + +// NewDecisionStorageFilterer creates a new log filterer instance of DecisionStorage, bound to a specific deployed contract. +func NewDecisionStorageFilterer(address common.Address, filterer bind.ContractFilterer) (*DecisionStorageFilterer, error) { + contract, err := bindDecisionStorage(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &DecisionStorageFilterer{contract: contract}, nil +} + +// bindDecisionStorage binds a generic wrapper to an already deployed contract. +func bindDecisionStorage(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(DecisionStorageABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_DecisionStorage *DecisionStorageRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { + return _DecisionStorage.Contract.DecisionStorageCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_DecisionStorage *DecisionStorageRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, *types.Receipt, error) { + return _DecisionStorage.Contract.DecisionStorageTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_DecisionStorage *DecisionStorageRaw) TransactWithResult(opts *bind.TransactOpts, result interface{}, method string, params ...interface{}) (*types.Transaction, *types.Receipt, error) { + return _DecisionStorage.Contract.DecisionStorageTransactor.contract.TransactWithResult(opts, result, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_DecisionStorage *DecisionStorageCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { + return _DecisionStorage.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_DecisionStorage *DecisionStorageTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, *types.Receipt, error) { + return _DecisionStorage.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_DecisionStorage *DecisionStorageTransactorRaw) TransactWithResult(opts *bind.TransactOpts, result interface{}, method string, params ...interface{}) (*types.Transaction, *types.Receipt, error) { + return _DecisionStorage.Contract.contract.TransactWithResult(opts, result, method, params...) +} + +// Decisions is a free data retrieval call binding the contract method 0xb829df82. +// +// Solidity: function decisions(uint256 ) constant returns(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageCaller) Decisions(opts *bind.CallOpts, arg0 *big.Int) (struct { + Evidence string + NodeID string + Timestamp *big.Int + Approved bool +}, error) { + ret := new(struct { + Evidence string + NodeID string + Timestamp *big.Int + Approved bool + }) + out := ret + err := _DecisionStorage.contract.Call(opts, out, "decisions", arg0) + return *ret, err +} + +// Decisions is a free data retrieval call binding the contract method 0xb829df82. +// +// Solidity: function decisions(uint256 ) constant returns(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageSession) Decisions(arg0 *big.Int) (struct { + Evidence string + NodeID string + Timestamp *big.Int + Approved bool +}, error) { + return _DecisionStorage.Contract.Decisions(&_DecisionStorage.CallOpts, arg0) +} + +// Decisions is a free data retrieval call binding the contract method 0xb829df82. +// +// Solidity: function decisions(uint256 ) constant returns(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageCallerSession) Decisions(arg0 *big.Int) (struct { + Evidence string + NodeID string + Timestamp *big.Int + Approved bool +}, error) { + return _DecisionStorage.Contract.Decisions(&_DecisionStorage.CallOpts, arg0) +} + +// GetDecision is a free data retrieval call binding the contract method 0xaf754848. +// +// Solidity: function getDecision(uint256 index) constant returns(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageCaller) GetDecision(opts *bind.CallOpts, index *big.Int) (struct { + Evidence string + NodeID string + Timestamp *big.Int + Approved bool +}, error) { + ret := new(struct { + Evidence string + NodeID string + Timestamp *big.Int + Approved bool + }) + out := ret + err := _DecisionStorage.contract.Call(opts, out, "getDecision", index) + return *ret, err +} + +// GetDecision is a free data retrieval call binding the contract method 0xaf754848. +// +// Solidity: function getDecision(uint256 index) constant returns(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageSession) GetDecision(index *big.Int) (struct { + Evidence string + NodeID string + Timestamp *big.Int + Approved bool +}, error) { + return _DecisionStorage.Contract.GetDecision(&_DecisionStorage.CallOpts, index) +} + +// GetDecision is a free data retrieval call binding the contract method 0xaf754848. +// +// Solidity: function getDecision(uint256 index) constant returns(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageCallerSession) GetDecision(index *big.Int) (struct { + Evidence string + NodeID string + Timestamp *big.Int + Approved bool +}, error) { + return _DecisionStorage.Contract.GetDecision(&_DecisionStorage.CallOpts, index) +} + +// GetDecisionCount is a free data retrieval call binding the contract method 0xe4ff19da. +// +// Solidity: function getDecisionCount() constant returns(uint256) +func (_DecisionStorage *DecisionStorageCaller) GetDecisionCount(opts *bind.CallOpts) (*big.Int, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + err := _DecisionStorage.contract.Call(opts, out, "getDecisionCount") + return *ret0, err +} + +// GetDecisionCount is a free data retrieval call binding the contract method 0xe4ff19da. +// +// Solidity: function getDecisionCount() constant returns(uint256) +func (_DecisionStorage *DecisionStorageSession) GetDecisionCount() (*big.Int, error) { + return _DecisionStorage.Contract.GetDecisionCount(&_DecisionStorage.CallOpts) +} + +// GetDecisionCount is a free data retrieval call binding the contract method 0xe4ff19da. +// +// Solidity: function getDecisionCount() constant returns(uint256) +func (_DecisionStorage *DecisionStorageCallerSession) GetDecisionCount() (*big.Int, error) { + return _DecisionStorage.Contract.GetDecisionCount(&_DecisionStorage.CallOpts) +} + +// VerifyEvidence is a free data retrieval call binding the contract method 0x6f13f95a. +// +// Solidity: function verifyEvidence(string evidence) constant returns(bool) +func (_DecisionStorage *DecisionStorageCaller) VerifyEvidence(opts *bind.CallOpts, evidence string) (bool, error) { + var ( + ret0 = new(bool) + ) + out := ret0 + err := _DecisionStorage.contract.Call(opts, out, "verifyEvidence", evidence) + return *ret0, err +} + +// VerifyEvidence is a free data retrieval call binding the contract method 0x6f13f95a. +// +// Solidity: function verifyEvidence(string evidence) constant returns(bool) +func (_DecisionStorage *DecisionStorageSession) VerifyEvidence(evidence string) (bool, error) { + return _DecisionStorage.Contract.VerifyEvidence(&_DecisionStorage.CallOpts, evidence) +} + +// VerifyEvidence is a free data retrieval call binding the contract method 0x6f13f95a. +// +// Solidity: function verifyEvidence(string evidence) constant returns(bool) +func (_DecisionStorage *DecisionStorageCallerSession) VerifyEvidence(evidence string) (bool, error) { + return _DecisionStorage.Contract.VerifyEvidence(&_DecisionStorage.CallOpts, evidence) +} + +// RecordDecision is a paid mutator transaction binding the contract method 0xb8c0dbbd. +// +// Solidity: function recordDecision(string evidence, string nodeID, bool approved) returns(bool) +func (_DecisionStorage *DecisionStorageTransactor) RecordDecision(opts *bind.TransactOpts, evidence string, nodeID string, approved bool) (bool, *types.Transaction, *types.Receipt, error) { + var ( + ret0 = new(bool) + ) + out := ret0 + transaction, receipt, err := _DecisionStorage.contract.TransactWithResult(opts, out, "recordDecision", evidence, nodeID, approved) + return *ret0, transaction, receipt, err +} + +func (_DecisionStorage *DecisionStorageTransactor) AsyncRecordDecision(handler func(*types.Receipt, error), opts *bind.TransactOpts, evidence string, nodeID string, approved bool) (*types.Transaction, error) { + return _DecisionStorage.contract.AsyncTransact(opts, handler, "recordDecision", evidence, nodeID, approved) +} + +// RecordDecision is a paid mutator transaction binding the contract method 0xb8c0dbbd. +// +// Solidity: function recordDecision(string evidence, string nodeID, bool approved) returns(bool) +func (_DecisionStorage *DecisionStorageSession) RecordDecision(evidence string, nodeID string, approved bool) (bool, *types.Transaction, *types.Receipt, error) { + return _DecisionStorage.Contract.RecordDecision(&_DecisionStorage.TransactOpts, evidence, nodeID, approved) +} + +func (_DecisionStorage *DecisionStorageSession) AsyncRecordDecision(handler func(*types.Receipt, error), evidence string, nodeID string, approved bool) (*types.Transaction, error) { + return _DecisionStorage.Contract.AsyncRecordDecision(handler, &_DecisionStorage.TransactOpts, evidence, nodeID, approved) +} + +// RecordDecision is a paid mutator transaction binding the contract method 0xb8c0dbbd. +// +// Solidity: function recordDecision(string evidence, string nodeID, bool approved) returns(bool) +func (_DecisionStorage *DecisionStorageTransactorSession) RecordDecision(evidence string, nodeID string, approved bool) (bool, *types.Transaction, *types.Receipt, error) { + return _DecisionStorage.Contract.RecordDecision(&_DecisionStorage.TransactOpts, evidence, nodeID, approved) +} + +func (_DecisionStorage *DecisionStorageTransactorSession) AsyncRecordDecision(handler func(*types.Receipt, error), evidence string, nodeID string, approved bool) (*types.Transaction, error) { + return _DecisionStorage.Contract.AsyncRecordDecision(handler, &_DecisionStorage.TransactOpts, evidence, nodeID, approved) +} + +// DecisionStorageDecisionRecorded represents a DecisionRecorded event raised by the DecisionStorage contract. +type DecisionStorageDecisionRecorded struct { + Evidence string + NodeID string + Timestamp *big.Int + Approved bool + Raw types.Log // Blockchain specific contextual infos +} + +// WatchDecisionRecorded is a free log subscription operation binding the contract event 0x641014cc6abca52c1d84346d29137b54af42068d1b3b5b3c52e98b16eb085428. +// +// Solidity: event DecisionRecorded(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageFilterer) WatchDecisionRecorded(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _DecisionStorage.contract.WatchLogs(fromBlock, handler, "DecisionRecorded") +} + +func (_DecisionStorage *DecisionStorageFilterer) WatchAllDecisionRecorded(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _DecisionStorage.contract.WatchLogs(fromBlock, handler, "DecisionRecorded") +} + +// ParseDecisionRecorded is a log parse operation binding the contract event 0x641014cc6abca52c1d84346d29137b54af42068d1b3b5b3c52e98b16eb085428. +// +// Solidity: event DecisionRecorded(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageFilterer) ParseDecisionRecorded(log types.Log) (*DecisionStorageDecisionRecorded, error) { + event := new(DecisionStorageDecisionRecorded) + if err := _DecisionStorage.contract.UnpackLog(event, "DecisionRecorded", log); err != nil { + return nil, err + } + return event, nil +} + +// WatchDecisionRecorded is a free log subscription operation binding the contract event 0x641014cc6abca52c1d84346d29137b54af42068d1b3b5b3c52e98b16eb085428. +// +// Solidity: event DecisionRecorded(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageSession) WatchDecisionRecorded(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _DecisionStorage.Contract.WatchDecisionRecorded(fromBlock, handler) +} + +func (_DecisionStorage *DecisionStorageSession) WatchAllDecisionRecorded(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _DecisionStorage.Contract.WatchAllDecisionRecorded(fromBlock, handler) +} + +// ParseDecisionRecorded is a log parse operation binding the contract event 0x641014cc6abca52c1d84346d29137b54af42068d1b3b5b3c52e98b16eb085428. +// +// Solidity: event DecisionRecorded(string evidence, string nodeID, uint256 timestamp, bool approved) +func (_DecisionStorage *DecisionStorageSession) ParseDecisionRecorded(log types.Log) (*DecisionStorageDecisionRecorded, error) { + return _DecisionStorage.Contract.ParseDecisionRecorded(log) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/Decision/DecisionStorage.sol b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/Decision/DecisionStorage.sol new file mode 100644 index 000000000..19c90c817 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/Decision/DecisionStorage.sol @@ -0,0 +1,74 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.10 <0.8.20; + +contract DecisionStorage { + // 决策记录结构 + struct Decision { + string evidence; // 证据 + string nodeID; // 节点ID + uint256 timestamp; // 时间戳 + bool approved; // 是否批准 + } + + // 存储所有决策记录 + Decision[] public decisions; + + // 记录决策的事件 + event DecisionRecorded( + string evidence, + string nodeID, + uint256 timestamp, + bool approved + ); + + function recordDecision(string memory evidence, string memory nodeID, bool approved) public returns (bool) { + Decision memory newDecision = Decision({ + evidence: evidence, + nodeID: nodeID, + timestamp: block.timestamp, + approved: approved + }); + + // 存储决策 + decisions.push(newDecision); + + // 触发事件 + emit DecisionRecorded( + newDecision.evidence, + newDecision.nodeID, + newDecision.timestamp, + newDecision.approved + ); + + return true; + } + + // 验证证据 可以添加具体的验证逻辑 + function verifyEvidence(string memory evidence) public view returns (bool) { + // 目前返回true用于测试 + return true; + } + + // 获取决策记录数量 + function getDecisionCount() public view returns (uint256) { + return decisions.length; + } + + // 获取指定索引的决策记录 + function getDecision(uint256 index) public view returns ( + string memory evidence, + string memory nodeID, + uint256 timestamp, + bool approved + ) { + require(index < decisions.length, "Index out of bounds"); + Decision memory decision = decisions[index]; + return ( + decision.evidence, + decision.nodeID, + decision.timestamp, + decision.approved + ); + } + +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KVTable.abi b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KVTable.abi new file mode 100644 index 000000000..134580fc6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KVTable.abi @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"string","name":"key","type":"string"}],"name":"get","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"value","type":"string"}],"name":"set","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KVTable.bin b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KVTable.bin new file mode 100644 index 000000000..e69de29bb diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KeyShare.abi b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KeyShare.abi new file mode 100644 index 000000000..1103d5e2d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KeyShare.abi @@ -0,0 +1 @@ +[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"count","type":"int256"}],"name":"CreateResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"count","type":"int256"}],"name":"InsertResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"count","type":"int256"}],"name":"RemoveResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"count","type":"int256"}],"name":"UpdateResult","type":"event"},{"inputs":[{"internalType":"string","name":"tableName","type":"string"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string[]","name":"fields","type":"string[]"}],"name":"createTable","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"desc","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"id","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"secret","type":"string"}],"name":"insert","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"id","type":"string"}],"name":"remove","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"id","type":"string"}],"name":"select","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"id","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"secret","type":"string"}],"name":"update","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KeyShare.bin b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KeyShare.bin new file mode 100644 index 000000000..55e893525 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KeyShare.bin @@ -0,0 +1 @@ +60806040523480156200001157600080fd5b506000600267ffffffffffffffff81111562000032576200003162000399565b5b6040519080825280602002602001820160405280156200006757816020015b6060815260200190600190039081620000515790505b5090506040518060400160405280600481526020017f6e616d650000000000000000000000000000000000000000000000000000000081525081600081518110620000b757620000b6620003c8565b5b60200260200101819052506040518060400160405280600681526020017f7365637265740000000000000000000000000000000000000000000000000000815250816001815181106200010f576200010e620003c8565b5b6020026020010181905250600060405180604001604052806040518060400160405280600281526020017f6964000000000000000000000000000000000000000000000000000000000000815250815260200183815250905061100273ffffffffffffffffffffffffffffffffffffffff166331a5a51e6040518060400160405280600b81526020017f745f6b65795f7368617265000000000000000000000000000000000000000000815250836040518363ffffffff1660e01b8152600401620001dc92919062000605565b6020604051808303816000875af1158015620001fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000222919062000683565b50600061100273ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040518060400160405280600b81526020017f745f6b65795f73686172650000000000000000000000000000000000000000008152506040518263ffffffff1660e01b8152600401620002979190620006b5565b602060405180830381865afa158015620002b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002db91906200073e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000347906200079a565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620007bc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b60005b838110156200043357808201518184015260208101905062000416565b8381111562000443576000848401525b50505050565b6000601f19601f8301169050919050565b60006200046782620003f7565b62000473818562000402565b93506200048581856020860162000413565b620004908162000449565b840191505092915050565b600082825260208201905092915050565b6000620004b982620003f7565b620004c581856200049b565b9350620004d781856020860162000413565b620004e28162000449565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000620005278383620004ac565b905092915050565b6000602082019050919050565b60006200054982620004ed565b620005558185620004f8565b935083602082028501620005698562000509565b8060005b85811015620005ab578484038952815162000589858262000519565b945062000596836200052f565b925060208a019950506001810190506200056d565b50829750879550505050505092915050565b60006040830160008301518482036000860152620005dc8282620004ac565b91505060208301518482036020860152620005f882826200053c565b9150508091505092915050565b600060408201905081810360008301526200062181856200045a565b90508181036020830152620006378184620005bd565b90509392505050565b600080fd5b60008160030b9050919050565b6200065d8162000645565b81146200066957600080fd5b50565b6000815190506200067d8162000652565b92915050565b6000602082840312156200069c576200069b62000640565b5b6000620006ac848285016200066c565b91505092915050565b60006020820190508181036000830152620006d181846200045a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200070682620006d9565b9050919050565b6200071881620006f9565b81146200072457600080fd5b50565b60008151905062000738816200070d565b92915050565b60006020828403121562000757576200075662000640565b5b6000620007678482850162000727565b91505092915050565b50565b60006200078260008362000402565b91506200078f8262000770565b600082019050919050565b60006020820190508181036000830152620007b58162000773565b9050919050565b6115c480620007cc6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80632fe99bdc1461006757806331c3e4561461009757806355f150f1146100c75780636a5bae4e146100e657806380599e4b14610116578063fcd7e3c114610146575b600080fd5b610081600480360381019061007c9190610a2f565b610177565b60405161008e9190610af2565b60405180910390f35b6100b160048036038101906100ac9190610a2f565b610309565b6040516100be9190610af2565b60405180910390f35b6100cf61051b565b6040516100dd929190610ca1565b60405180910390f35b61010060048036038101906100fb9190610dbe565b6105eb565b60405161010d9190610e7e565b60405180910390f35b610130600480360381019061012b9190610e99565b6106cf565b60405161013d9190610af2565b60405180910390f35b610160600480360381019061015b9190610e99565b6107b0565b60405161016e929190610ee2565b60405180910390f35b600080600267ffffffffffffffff81111561019557610194610904565b5b6040519080825280602002602001820160405280156101c857816020015b60608152602001906001900390816101b35790505b50905083816000815181106101e0576101df610f19565b5b60200260200101819052508281600181518110610200576101ff610f19565b5b60200260200101819052506000604051806040016040528087815260200183815250905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c6e105f836040518263ffffffff1660e01b81526004016102809190611012565b6020604051808303816000875af115801561029f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c39190611060565b90507fc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce816040516102f491906110c8565b60405180910390a18093505050509392505050565b600080600267ffffffffffffffff81111561032757610326610904565b5b60405190808252806020026020018201604052801561036057816020015b61034d6108bb565b8152602001906001900390816103455790505b50905060405180604001604052806040518060400160405280600481526020017f6e616d6500000000000000000000000000000000000000000000000000000000815250815260200185815250816000815181106103c1576103c0610f19565b5b602002602001018190525060405180604001604052806040518060400160405280600681526020017f73656372657400000000000000000000000000000000000000000000000000008152508152602001848152508160018151811061042a57610429610f19565b5b602002602001018190525060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166341ffd75f87846040518363ffffffff1660e01b81526004016104939291906111e9565b6020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190611060565b90507f8e5890af40fc24a059396aca2f83d6ce41fcef086876548fa4fb8ec27e9d292a8160405161050791906110c8565b60405180910390a180925050509392505050565b606080600061100273ffffffffffffffffffffffffffffffffffffffff16635d0d6d546040518060400160405280600b81526020017f745f6b65795f73686172650000000000000000000000000000000000000000008152506040518263ffffffff1660e01b81526004016105909190611220565b600060405180830381865afa1580156105ad573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105d691906113f9565b90508060000151816020015192509250509091565b6000806040518060400160405280858152602001848152509050600061100273ffffffffffffffffffffffffffffffffffffffff166331a5a51e87846040518363ffffffff1660e01b8152600401610644929190611486565b6020604051808303816000875af1158015610663573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106879190611060565b90507fb5636cd912a73dcdb5b570dbe331dfa3e6435c93e029e642def2c8e40dacf210816040516106b891906110c8565b60405180910390a18060030b925050509392505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380599e4b846040518263ffffffff1660e01b815260040161072b9190611220565b6020604051808303816000875af115801561074a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076e9190611060565b90507f4b930e280fe29620bdff00c88155d46d6d82a39f45dd5c3ea114dc31573581128160405161079f91906110c8565b60405180910390a180915050919050565b60608060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fcd7e3c1856040518263ffffffff1660e01b815260040161080f9190611220565b600060405180830381865afa15801561082c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906108559190611545565b9050606080600283602001515114156108ad5782602001516000815181106108805761087f610f19565b5b6020026020010151915082602001516001815181106108a2576108a1610f19565b5b602002602001015190505b818194509450505050915091565b604051806040016040528060608152602001606081525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61093c826108f3565b810181811067ffffffffffffffff8211171561095b5761095a610904565b5b80604052505050565b600061096e6108d5565b905061097a8282610933565b919050565b600067ffffffffffffffff82111561099a57610999610904565b5b6109a3826108f3565b9050602081019050919050565b82818337600083830152505050565b60006109d26109cd8461097f565b610964565b9050828152602081018484840111156109ee576109ed6108ee565b5b6109f98482856109b0565b509392505050565b600082601f830112610a1657610a156108e9565b5b8135610a268482602086016109bf565b91505092915050565b600080600060608486031215610a4857610a476108df565b5b600084013567ffffffffffffffff811115610a6657610a656108e4565b5b610a7286828701610a01565b935050602084013567ffffffffffffffff811115610a9357610a926108e4565b5b610a9f86828701610a01565b925050604084013567ffffffffffffffff811115610ac057610abf6108e4565b5b610acc86828701610a01565b9150509250925092565b60008160030b9050919050565b610aec81610ad6565b82525050565b6000602082019050610b076000830184610ae3565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b47578082015181840152602081019050610b2c565b83811115610b56576000848401525b50505050565b6000610b6782610b0d565b610b718185610b18565b9350610b81818560208601610b29565b610b8a816108f3565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b6000610bdd82610b0d565b610be78185610bc1565b9350610bf7818560208601610b29565b610c00816108f3565b840191505092915050565b6000610c178383610bd2565b905092915050565b6000602082019050919050565b6000610c3782610b95565b610c418185610ba0565b935083602082028501610c5385610bb1565b8060005b85811015610c8f5784840389528151610c708582610c0b565b9450610c7b83610c1f565b925060208a01995050600181019050610c57565b50829750879550505050505092915050565b60006040820190508181036000830152610cbb8185610b5c565b90508181036020830152610ccf8184610c2c565b90509392505050565b600067ffffffffffffffff821115610cf357610cf2610904565b5b602082029050602081019050919050565b600080fd5b6000610d1c610d1784610cd8565b610964565b90508083825260208201905060208402830185811115610d3f57610d3e610d04565b5b835b81811015610d8657803567ffffffffffffffff811115610d6457610d636108e9565b5b808601610d718982610a01565b85526020850194505050602081019050610d41565b5050509392505050565b600082601f830112610da557610da46108e9565b5b8135610db5848260208601610d09565b91505092915050565b600080600060608486031215610dd757610dd66108df565b5b600084013567ffffffffffffffff811115610df557610df46108e4565b5b610e0186828701610a01565b935050602084013567ffffffffffffffff811115610e2257610e216108e4565b5b610e2e86828701610a01565b925050604084013567ffffffffffffffff811115610e4f57610e4e6108e4565b5b610e5b86828701610d90565b9150509250925092565b6000819050919050565b610e7881610e65565b82525050565b6000602082019050610e936000830184610e6f565b92915050565b600060208284031215610eaf57610eae6108df565b5b600082013567ffffffffffffffff811115610ecd57610ecc6108e4565b5b610ed984828501610a01565b91505092915050565b60006040820190508181036000830152610efc8185610b5c565b90508181036020830152610f108184610b5c565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b6000610f6482610b95565b610f6e8185610f48565b935083602082028501610f8085610bb1565b8060005b85811015610fbc5784840389528151610f9d8582610c0b565b9450610fa883610c1f565b925060208a01995050600181019050610f84565b50829750879550505050505092915050565b60006040830160008301518482036000860152610feb8282610bd2565b915050602083015184820360208601526110058282610f59565b9150508091505092915050565b6000602082019050818103600083015261102c8184610fce565b905092915050565b61103d81610ad6565b811461104857600080fd5b50565b60008151905061105a81611034565b92915050565b600060208284031215611076576110756108df565b5b60006110848482850161104b565b91505092915050565b6000819050919050565b60006110b26110ad6110a884610ad6565b61108d565b610e65565b9050919050565b6110c281611097565b82525050565b60006020820190506110dd60008301846110b9565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000604083016000830151848203600086015261112c8282610bd2565b915050602083015184820360208601526111468282610bd2565b9150508091505092915050565b600061115f838361110f565b905092915050565b6000602082019050919050565b600061117f826110e3565b61118981856110ee565b93508360208202850161119b856110ff565b8060005b858110156111d757848403895281516111b88582611153565b94506111c383611167565b925060208a0199505060018101905061119f565b50829750879550505050505092915050565b600060408201905081810360008301526112038185610b5c565b905081810360208301526112178184611174565b90509392505050565b6000602082019050818103600083015261123a8184610b5c565b905092915050565b600080fd5b600080fd5b600061125f61125a8461097f565b610964565b90508281526020810184848401111561127b5761127a6108ee565b5b611286848285610b29565b509392505050565b600082601f8301126112a3576112a26108e9565b5b81516112b384826020860161124c565b91505092915050565b60006112cf6112ca84610cd8565b610964565b905080838252602082019050602084028301858111156112f2576112f1610d04565b5b835b8181101561133957805167ffffffffffffffff811115611317576113166108e9565b5b808601611324898261128e565b855260208501945050506020810190506112f4565b5050509392505050565b600082601f830112611358576113576108e9565b5b81516113688482602086016112bc565b91505092915050565b60006040828403121561138757611386611242565b5b6113916040610964565b9050600082015167ffffffffffffffff8111156113b1576113b0611247565b5b6113bd8482850161128e565b600083015250602082015167ffffffffffffffff8111156113e1576113e0611247565b5b6113ed84828501611343565b60208301525092915050565b60006020828403121561140f5761140e6108df565b5b600082015167ffffffffffffffff81111561142d5761142c6108e4565b5b61143984828501611371565b91505092915050565b6000604083016000830151848203600086015261145f8282610bd2565b915050602083015184820360208601526114798282610f59565b9150508091505092915050565b600060408201905081810360008301526114a08185610b5c565b905081810360208301526114b48184611442565b90509392505050565b6000604082840312156114d3576114d2611242565b5b6114dd6040610964565b9050600082015167ffffffffffffffff8111156114fd576114fc611247565b5b6115098482850161128e565b600083015250602082015167ffffffffffffffff81111561152d5761152c611247565b5b61153984828501611343565b60208301525092915050565b60006020828403121561155b5761155a6108df565b5b600082015167ffffffffffffffff811115611579576115786108e4565b5b611585848285016114bd565b9150509291505056fea2646970667358221220c4aba62bac51140354dd55b475ed3bde2226a18fc413bccf0b2fbfb1fec7c8dc64736f6c634300080b0033 \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KeyShare.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KeyShare.go new file mode 100644 index 000000000..21e5ab5b6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KeyShare.go @@ -0,0 +1,614 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package KeyShare + +import ( + "fmt" + "math/big" + "strings" + + "github.com/FISCO-BCOS/go-sdk/v3/abi" + "github.com/FISCO-BCOS/go-sdk/v3/abi/bind" + "github.com/FISCO-BCOS/go-sdk/v3/types" + "github.com/ethereum/go-ethereum/common" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = big.NewInt + _ = strings.NewReader + _ = abi.U256 + _ = bind.Bind + _ = common.Big1 +) + +// KeyShareABI is the input ABI used to generate the binding from. +const KeyShareABI = "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"CreateResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"InsertResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"RemoveResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"UpdateResult\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"tableName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"fields\",\"type\":\"string[]\"}],\"name\":\"createTable\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"desc\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"id\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"secret\",\"type\":\"string\"}],\"name\":\"insert\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"id\",\"type\":\"string\"}],\"name\":\"remove\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"id\",\"type\":\"string\"}],\"name\":\"select\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"id\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"secret\",\"type\":\"string\"}],\"name\":\"update\",\"outputs\":[{\"internalType\":\"int32\",\"name\":\"\",\"type\":\"int32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" + +// KeyShareBin is the compiled bytecode used for deploying new contracts. +var KeyShareBin = "0x60806040523480156200001157600080fd5b506000600267ffffffffffffffff81111562000032576200003162000399565b5b6040519080825280602002602001820160405280156200006757816020015b6060815260200190600190039081620000515790505b5090506040518060400160405280600481526020017f6e616d650000000000000000000000000000000000000000000000000000000081525081600081518110620000b757620000b6620003c8565b5b60200260200101819052506040518060400160405280600681526020017f7365637265740000000000000000000000000000000000000000000000000000815250816001815181106200010f576200010e620003c8565b5b6020026020010181905250600060405180604001604052806040518060400160405280600281526020017f6964000000000000000000000000000000000000000000000000000000000000815250815260200183815250905061100273ffffffffffffffffffffffffffffffffffffffff166331a5a51e6040518060400160405280600b81526020017f745f6b65795f7368617265000000000000000000000000000000000000000000815250836040518363ffffffff1660e01b8152600401620001dc92919062000605565b6020604051808303816000875af1158015620001fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000222919062000683565b50600061100273ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040518060400160405280600b81526020017f745f6b65795f73686172650000000000000000000000000000000000000000008152506040518263ffffffff1660e01b8152600401620002979190620006b5565b602060405180830381865afa158015620002b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002db91906200073e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000347906200079a565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620007bc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b60005b838110156200043357808201518184015260208101905062000416565b8381111562000443576000848401525b50505050565b6000601f19601f8301169050919050565b60006200046782620003f7565b62000473818562000402565b93506200048581856020860162000413565b620004908162000449565b840191505092915050565b600082825260208201905092915050565b6000620004b982620003f7565b620004c581856200049b565b9350620004d781856020860162000413565b620004e28162000449565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000620005278383620004ac565b905092915050565b6000602082019050919050565b60006200054982620004ed565b620005558185620004f8565b935083602082028501620005698562000509565b8060005b85811015620005ab578484038952815162000589858262000519565b945062000596836200052f565b925060208a019950506001810190506200056d565b50829750879550505050505092915050565b60006040830160008301518482036000860152620005dc8282620004ac565b91505060208301518482036020860152620005f882826200053c565b9150508091505092915050565b600060408201905081810360008301526200062181856200045a565b90508181036020830152620006378184620005bd565b90509392505050565b600080fd5b60008160030b9050919050565b6200065d8162000645565b81146200066957600080fd5b50565b6000815190506200067d8162000652565b92915050565b6000602082840312156200069c576200069b62000640565b5b6000620006ac848285016200066c565b91505092915050565b60006020820190508181036000830152620006d181846200045a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200070682620006d9565b9050919050565b6200071881620006f9565b81146200072457600080fd5b50565b60008151905062000738816200070d565b92915050565b60006020828403121562000757576200075662000640565b5b6000620007678482850162000727565b91505092915050565b50565b60006200078260008362000402565b91506200078f8262000770565b600082019050919050565b60006020820190508181036000830152620007b58162000773565b9050919050565b6115c480620007cc6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80632fe99bdc1461006757806331c3e4561461009757806355f150f1146100c75780636a5bae4e146100e657806380599e4b14610116578063fcd7e3c114610146575b600080fd5b610081600480360381019061007c9190610a2f565b610177565b60405161008e9190610af2565b60405180910390f35b6100b160048036038101906100ac9190610a2f565b610309565b6040516100be9190610af2565b60405180910390f35b6100cf61051b565b6040516100dd929190610ca1565b60405180910390f35b61010060048036038101906100fb9190610dbe565b6105eb565b60405161010d9190610e7e565b60405180910390f35b610130600480360381019061012b9190610e99565b6106cf565b60405161013d9190610af2565b60405180910390f35b610160600480360381019061015b9190610e99565b6107b0565b60405161016e929190610ee2565b60405180910390f35b600080600267ffffffffffffffff81111561019557610194610904565b5b6040519080825280602002602001820160405280156101c857816020015b60608152602001906001900390816101b35790505b50905083816000815181106101e0576101df610f19565b5b60200260200101819052508281600181518110610200576101ff610f19565b5b60200260200101819052506000604051806040016040528087815260200183815250905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c6e105f836040518263ffffffff1660e01b81526004016102809190611012565b6020604051808303816000875af115801561029f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c39190611060565b90507fc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce816040516102f491906110c8565b60405180910390a18093505050509392505050565b600080600267ffffffffffffffff81111561032757610326610904565b5b60405190808252806020026020018201604052801561036057816020015b61034d6108bb565b8152602001906001900390816103455790505b50905060405180604001604052806040518060400160405280600481526020017f6e616d6500000000000000000000000000000000000000000000000000000000815250815260200185815250816000815181106103c1576103c0610f19565b5b602002602001018190525060405180604001604052806040518060400160405280600681526020017f73656372657400000000000000000000000000000000000000000000000000008152508152602001848152508160018151811061042a57610429610f19565b5b602002602001018190525060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166341ffd75f87846040518363ffffffff1660e01b81526004016104939291906111e9565b6020604051808303816000875af11580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190611060565b90507f8e5890af40fc24a059396aca2f83d6ce41fcef086876548fa4fb8ec27e9d292a8160405161050791906110c8565b60405180910390a180925050509392505050565b606080600061100273ffffffffffffffffffffffffffffffffffffffff16635d0d6d546040518060400160405280600b81526020017f745f6b65795f73686172650000000000000000000000000000000000000000008152506040518263ffffffff1660e01b81526004016105909190611220565b600060405180830381865afa1580156105ad573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105d691906113f9565b90508060000151816020015192509250509091565b6000806040518060400160405280858152602001848152509050600061100273ffffffffffffffffffffffffffffffffffffffff166331a5a51e87846040518363ffffffff1660e01b8152600401610644929190611486565b6020604051808303816000875af1158015610663573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106879190611060565b90507fb5636cd912a73dcdb5b570dbe331dfa3e6435c93e029e642def2c8e40dacf210816040516106b891906110c8565b60405180910390a18060030b925050509392505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380599e4b846040518263ffffffff1660e01b815260040161072b9190611220565b6020604051808303816000875af115801561074a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076e9190611060565b90507f4b930e280fe29620bdff00c88155d46d6d82a39f45dd5c3ea114dc31573581128160405161079f91906110c8565b60405180910390a180915050919050565b60608060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fcd7e3c1856040518263ffffffff1660e01b815260040161080f9190611220565b600060405180830381865afa15801561082c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906108559190611545565b9050606080600283602001515114156108ad5782602001516000815181106108805761087f610f19565b5b6020026020010151915082602001516001815181106108a2576108a1610f19565b5b602002602001015190505b818194509450505050915091565b604051806040016040528060608152602001606081525090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61093c826108f3565b810181811067ffffffffffffffff8211171561095b5761095a610904565b5b80604052505050565b600061096e6108d5565b905061097a8282610933565b919050565b600067ffffffffffffffff82111561099a57610999610904565b5b6109a3826108f3565b9050602081019050919050565b82818337600083830152505050565b60006109d26109cd8461097f565b610964565b9050828152602081018484840111156109ee576109ed6108ee565b5b6109f98482856109b0565b509392505050565b600082601f830112610a1657610a156108e9565b5b8135610a268482602086016109bf565b91505092915050565b600080600060608486031215610a4857610a476108df565b5b600084013567ffffffffffffffff811115610a6657610a656108e4565b5b610a7286828701610a01565b935050602084013567ffffffffffffffff811115610a9357610a926108e4565b5b610a9f86828701610a01565b925050604084013567ffffffffffffffff811115610ac057610abf6108e4565b5b610acc86828701610a01565b9150509250925092565b60008160030b9050919050565b610aec81610ad6565b82525050565b6000602082019050610b076000830184610ae3565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610b47578082015181840152602081019050610b2c565b83811115610b56576000848401525b50505050565b6000610b6782610b0d565b610b718185610b18565b9350610b81818560208601610b29565b610b8a816108f3565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b6000610bdd82610b0d565b610be78185610bc1565b9350610bf7818560208601610b29565b610c00816108f3565b840191505092915050565b6000610c178383610bd2565b905092915050565b6000602082019050919050565b6000610c3782610b95565b610c418185610ba0565b935083602082028501610c5385610bb1565b8060005b85811015610c8f5784840389528151610c708582610c0b565b9450610c7b83610c1f565b925060208a01995050600181019050610c57565b50829750879550505050505092915050565b60006040820190508181036000830152610cbb8185610b5c565b90508181036020830152610ccf8184610c2c565b90509392505050565b600067ffffffffffffffff821115610cf357610cf2610904565b5b602082029050602081019050919050565b600080fd5b6000610d1c610d1784610cd8565b610964565b90508083825260208201905060208402830185811115610d3f57610d3e610d04565b5b835b81811015610d8657803567ffffffffffffffff811115610d6457610d636108e9565b5b808601610d718982610a01565b85526020850194505050602081019050610d41565b5050509392505050565b600082601f830112610da557610da46108e9565b5b8135610db5848260208601610d09565b91505092915050565b600080600060608486031215610dd757610dd66108df565b5b600084013567ffffffffffffffff811115610df557610df46108e4565b5b610e0186828701610a01565b935050602084013567ffffffffffffffff811115610e2257610e216108e4565b5b610e2e86828701610a01565b925050604084013567ffffffffffffffff811115610e4f57610e4e6108e4565b5b610e5b86828701610d90565b9150509250925092565b6000819050919050565b610e7881610e65565b82525050565b6000602082019050610e936000830184610e6f565b92915050565b600060208284031215610eaf57610eae6108df565b5b600082013567ffffffffffffffff811115610ecd57610ecc6108e4565b5b610ed984828501610a01565b91505092915050565b60006040820190508181036000830152610efc8185610b5c565b90508181036020830152610f108184610b5c565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b6000610f6482610b95565b610f6e8185610f48565b935083602082028501610f8085610bb1565b8060005b85811015610fbc5784840389528151610f9d8582610c0b565b9450610fa883610c1f565b925060208a01995050600181019050610f84565b50829750879550505050505092915050565b60006040830160008301518482036000860152610feb8282610bd2565b915050602083015184820360208601526110058282610f59565b9150508091505092915050565b6000602082019050818103600083015261102c8184610fce565b905092915050565b61103d81610ad6565b811461104857600080fd5b50565b60008151905061105a81611034565b92915050565b600060208284031215611076576110756108df565b5b60006110848482850161104b565b91505092915050565b6000819050919050565b60006110b26110ad6110a884610ad6565b61108d565b610e65565b9050919050565b6110c281611097565b82525050565b60006020820190506110dd60008301846110b9565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000604083016000830151848203600086015261112c8282610bd2565b915050602083015184820360208601526111468282610bd2565b9150508091505092915050565b600061115f838361110f565b905092915050565b6000602082019050919050565b600061117f826110e3565b61118981856110ee565b93508360208202850161119b856110ff565b8060005b858110156111d757848403895281516111b88582611153565b94506111c383611167565b925060208a0199505060018101905061119f565b50829750879550505050505092915050565b600060408201905081810360008301526112038185610b5c565b905081810360208301526112178184611174565b90509392505050565b6000602082019050818103600083015261123a8184610b5c565b905092915050565b600080fd5b600080fd5b600061125f61125a8461097f565b610964565b90508281526020810184848401111561127b5761127a6108ee565b5b611286848285610b29565b509392505050565b600082601f8301126112a3576112a26108e9565b5b81516112b384826020860161124c565b91505092915050565b60006112cf6112ca84610cd8565b610964565b905080838252602082019050602084028301858111156112f2576112f1610d04565b5b835b8181101561133957805167ffffffffffffffff811115611317576113166108e9565b5b808601611324898261128e565b855260208501945050506020810190506112f4565b5050509392505050565b600082601f830112611358576113576108e9565b5b81516113688482602086016112bc565b91505092915050565b60006040828403121561138757611386611242565b5b6113916040610964565b9050600082015167ffffffffffffffff8111156113b1576113b0611247565b5b6113bd8482850161128e565b600083015250602082015167ffffffffffffffff8111156113e1576113e0611247565b5b6113ed84828501611343565b60208301525092915050565b60006020828403121561140f5761140e6108df565b5b600082015167ffffffffffffffff81111561142d5761142c6108e4565b5b61143984828501611371565b91505092915050565b6000604083016000830151848203600086015261145f8282610bd2565b915050602083015184820360208601526114798282610f59565b9150508091505092915050565b600060408201905081810360008301526114a08185610b5c565b905081810360208301526114b48184611442565b90509392505050565b6000604082840312156114d3576114d2611242565b5b6114dd6040610964565b9050600082015167ffffffffffffffff8111156114fd576114fc611247565b5b6115098482850161128e565b600083015250602082015167ffffffffffffffff81111561152d5761152c611247565b5b61153984828501611343565b60208301525092915050565b60006020828403121561155b5761155a6108df565b5b600082015167ffffffffffffffff811115611579576115786108e4565b5b611585848285016114bd565b9150509291505056fea2646970667358221220c4aba62bac51140354dd55b475ed3bde2226a18fc413bccf0b2fbfb1fec7c8dc64736f6c634300080b0033" +var KeyShareSMBin = "0x" + +// DeployKeyShare deploys a new contract, binding an instance of KeyShare to it. +func DeployKeyShare(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Receipt, *KeyShare, error) { + parsed, err := abi.JSON(strings.NewReader(KeyShareABI)) + if err != nil { + return common.Address{}, nil, nil, err + } + + var bytecode []byte + if backend.SMCrypto() { + bytecode = common.FromHex(KeyShareSMBin) + } else { + bytecode = common.FromHex(KeyShareBin) + } + if len(bytecode) == 0 { + return common.Address{}, nil, nil, fmt.Errorf("cannot deploy empty bytecode") + } + address, receipt, contract, err := bind.DeployContract(auth, parsed, bytecode, KeyShareABI, backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, receipt, &KeyShare{KeyShareCaller: KeyShareCaller{contract: contract}, KeyShareTransactor: KeyShareTransactor{contract: contract}, KeyShareFilterer: KeyShareFilterer{contract: contract}}, nil +} + +func AsyncDeployKeyShare(auth *bind.TransactOpts, handler func(*types.Receipt, error), backend bind.ContractBackend) (*types.Transaction, error) { + parsed, err := abi.JSON(strings.NewReader(KeyShareABI)) + if err != nil { + return nil, err + } + + var bytecode []byte + if backend.SMCrypto() { + bytecode = common.FromHex(KeyShareSMBin) + } else { + bytecode = common.FromHex(KeyShareBin) + } + if len(bytecode) == 0 { + return nil, fmt.Errorf("cannot deploy empty bytecode") + } + tx, err := bind.AsyncDeployContract(auth, handler, parsed, bytecode, KeyShareABI, backend) + if err != nil { + return nil, err + } + return tx, nil +} + +// KeyShare is an auto generated Go binding around a Solidity contract. +type KeyShare struct { + KeyShareCaller // Read-only binding to the contract + KeyShareTransactor // Write-only binding to the contract + KeyShareFilterer // Log filterer for contract events +} + +// KeyShareCaller is an auto generated read-only Go binding around a Solidity contract. +type KeyShareCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// KeyShareTransactor is an auto generated write-only Go binding around a Solidity contract. +type KeyShareTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// KeyShareFilterer is an auto generated log filtering Go binding around a Solidity contract events. +type KeyShareFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// KeyShareSession is an auto generated Go binding around a Solidity contract, +// with pre-set call and transact options. +type KeyShareSession struct { + Contract *KeyShare // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// KeyShareCallerSession is an auto generated read-only Go binding around a Solidity contract, +// with pre-set call options. +type KeyShareCallerSession struct { + Contract *KeyShareCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// KeyShareTransactorSession is an auto generated write-only Go binding around a Solidity contract, +// with pre-set transact options. +type KeyShareTransactorSession struct { + Contract *KeyShareTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// KeyShareRaw is an auto generated low-level Go binding around a Solidity contract. +type KeyShareRaw struct { + Contract *KeyShare // Generic contract binding to access the raw methods on +} + +// KeyShareCallerRaw is an auto generated low-level read-only Go binding around a Solidity contract. +type KeyShareCallerRaw struct { + Contract *KeyShareCaller // Generic read-only contract binding to access the raw methods on +} + +// KeyShareTransactorRaw is an auto generated low-level write-only Go binding around a Solidity contract. +type KeyShareTransactorRaw struct { + Contract *KeyShareTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewKeyShare creates a new instance of KeyShare, bound to a specific deployed contract. +func NewKeyShare(address common.Address, backend bind.ContractBackend) (*KeyShare, error) { + contract, err := bindKeyShare(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &KeyShare{KeyShareCaller: KeyShareCaller{contract: contract}, KeyShareTransactor: KeyShareTransactor{contract: contract}, KeyShareFilterer: KeyShareFilterer{contract: contract}}, nil +} + +// NewKeyShareCaller creates a new read-only instance of KeyShare, bound to a specific deployed contract. +func NewKeyShareCaller(address common.Address, caller bind.ContractCaller) (*KeyShareCaller, error) { + contract, err := bindKeyShare(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &KeyShareCaller{contract: contract}, nil +} + +// NewKeyShareTransactor creates a new write-only instance of KeyShare, bound to a specific deployed contract. +func NewKeyShareTransactor(address common.Address, transactor bind.ContractTransactor) (*KeyShareTransactor, error) { + contract, err := bindKeyShare(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &KeyShareTransactor{contract: contract}, nil +} + +// NewKeyShareFilterer creates a new log filterer instance of KeyShare, bound to a specific deployed contract. +func NewKeyShareFilterer(address common.Address, filterer bind.ContractFilterer) (*KeyShareFilterer, error) { + contract, err := bindKeyShare(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &KeyShareFilterer{contract: contract}, nil +} + +// bindKeyShare binds a generic wrapper to an already deployed contract. +func bindKeyShare(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := abi.JSON(strings.NewReader(KeyShareABI)) + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_KeyShare *KeyShareRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { + return _KeyShare.Contract.KeyShareCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_KeyShare *KeyShareRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.KeyShareTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_KeyShare *KeyShareRaw) TransactWithResult(opts *bind.TransactOpts, result interface{}, method string, params ...interface{}) (*types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.KeyShareTransactor.contract.TransactWithResult(opts, result, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_KeyShare *KeyShareCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error { + return _KeyShare.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_KeyShare *KeyShareTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_KeyShare *KeyShareTransactorRaw) TransactWithResult(opts *bind.TransactOpts, result interface{}, method string, params ...interface{}) (*types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.contract.TransactWithResult(opts, result, method, params...) +} + +// Desc is a free data retrieval call binding the contract method 0x55f150f1. +// +// Solidity: function desc() constant returns(string, string[]) +func (_KeyShare *KeyShareCaller) Desc(opts *bind.CallOpts) (string, []string, error) { + var ( + ret0 = new(string) + ret1 = new([]string) + ) + out := &[]interface{}{ + ret0, + ret1, + } + err := _KeyShare.contract.Call(opts, out, "desc") + return *ret0, *ret1, err +} + +// Desc is a free data retrieval call binding the contract method 0x55f150f1. +// +// Solidity: function desc() constant returns(string, string[]) +func (_KeyShare *KeyShareSession) Desc() (string, []string, error) { + return _KeyShare.Contract.Desc(&_KeyShare.CallOpts) +} + +// Desc is a free data retrieval call binding the contract method 0x55f150f1. +// +// Solidity: function desc() constant returns(string, string[]) +func (_KeyShare *KeyShareCallerSession) Desc() (string, []string, error) { + return _KeyShare.Contract.Desc(&_KeyShare.CallOpts) +} + +// Select is a free data retrieval call binding the contract method 0xfcd7e3c1. +// +// Solidity: function select(string id) constant returns(string, string) +func (_KeyShare *KeyShareCaller) Select(opts *bind.CallOpts, id string) (string, string, error) { + var ( + ret0 = new(string) + ret1 = new(string) + ) + out := &[]interface{}{ + ret0, + ret1, + } + err := _KeyShare.contract.Call(opts, out, "select", id) + return *ret0, *ret1, err +} + +// Select is a free data retrieval call binding the contract method 0xfcd7e3c1. +// +// Solidity: function select(string id) constant returns(string, string) +func (_KeyShare *KeyShareSession) Select(id string) (string, string, error) { + return _KeyShare.Contract.Select(&_KeyShare.CallOpts, id) +} + +// Select is a free data retrieval call binding the contract method 0xfcd7e3c1. +// +// Solidity: function select(string id) constant returns(string, string) +func (_KeyShare *KeyShareCallerSession) Select(id string) (string, string, error) { + return _KeyShare.Contract.Select(&_KeyShare.CallOpts, id) +} + +// CreateTable is a paid mutator transaction binding the contract method 0x6a5bae4e. +// +// Solidity: function createTable(string tableName, string key, string[] fields) returns(int256) +func (_KeyShare *KeyShareTransactor) CreateTable(opts *bind.TransactOpts, tableName string, key string, fields []string) (*big.Int, *types.Transaction, *types.Receipt, error) { + var ( + ret0 = new(*big.Int) + ) + out := ret0 + transaction, receipt, err := _KeyShare.contract.TransactWithResult(opts, out, "createTable", tableName, key, fields) + return *ret0, transaction, receipt, err +} + +func (_KeyShare *KeyShareTransactor) AsyncCreateTable(handler func(*types.Receipt, error), opts *bind.TransactOpts, tableName string, key string, fields []string) (*types.Transaction, error) { + return _KeyShare.contract.AsyncTransact(opts, handler, "createTable", tableName, key, fields) +} + +// CreateTable is a paid mutator transaction binding the contract method 0x6a5bae4e. +// +// Solidity: function createTable(string tableName, string key, string[] fields) returns(int256) +func (_KeyShare *KeyShareSession) CreateTable(tableName string, key string, fields []string) (*big.Int, *types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.CreateTable(&_KeyShare.TransactOpts, tableName, key, fields) +} + +func (_KeyShare *KeyShareSession) AsyncCreateTable(handler func(*types.Receipt, error), tableName string, key string, fields []string) (*types.Transaction, error) { + return _KeyShare.Contract.AsyncCreateTable(handler, &_KeyShare.TransactOpts, tableName, key, fields) +} + +// CreateTable is a paid mutator transaction binding the contract method 0x6a5bae4e. +// +// Solidity: function createTable(string tableName, string key, string[] fields) returns(int256) +func (_KeyShare *KeyShareTransactorSession) CreateTable(tableName string, key string, fields []string) (*big.Int, *types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.CreateTable(&_KeyShare.TransactOpts, tableName, key, fields) +} + +func (_KeyShare *KeyShareTransactorSession) AsyncCreateTable(handler func(*types.Receipt, error), tableName string, key string, fields []string) (*types.Transaction, error) { + return _KeyShare.Contract.AsyncCreateTable(handler, &_KeyShare.TransactOpts, tableName, key, fields) +} + +// Insert is a paid mutator transaction binding the contract method 0x2fe99bdc. +// +// Solidity: function insert(string id, string name, string secret) returns(int32) +func (_KeyShare *KeyShareTransactor) Insert(opts *bind.TransactOpts, id string, name string, secret string) (int32, *types.Transaction, *types.Receipt, error) { + var ( + ret0 = new(int32) + ) + out := ret0 + transaction, receipt, err := _KeyShare.contract.TransactWithResult(opts, out, "insert", id, name, secret) + return *ret0, transaction, receipt, err +} + +func (_KeyShare *KeyShareTransactor) AsyncInsert(handler func(*types.Receipt, error), opts *bind.TransactOpts, id string, name string, secret string) (*types.Transaction, error) { + return _KeyShare.contract.AsyncTransact(opts, handler, "insert", id, name, secret) +} + +// Insert is a paid mutator transaction binding the contract method 0x2fe99bdc. +// +// Solidity: function insert(string id, string name, string secret) returns(int32) +func (_KeyShare *KeyShareSession) Insert(id string, name string, secret string) (int32, *types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.Insert(&_KeyShare.TransactOpts, id, name, secret) +} + +func (_KeyShare *KeyShareSession) AsyncInsert(handler func(*types.Receipt, error), id string, name string, secret string) (*types.Transaction, error) { + return _KeyShare.Contract.AsyncInsert(handler, &_KeyShare.TransactOpts, id, name, secret) +} + +// Insert is a paid mutator transaction binding the contract method 0x2fe99bdc. +// +// Solidity: function insert(string id, string name, string secret) returns(int32) +func (_KeyShare *KeyShareTransactorSession) Insert(id string, name string, secret string) (int32, *types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.Insert(&_KeyShare.TransactOpts, id, name, secret) +} + +func (_KeyShare *KeyShareTransactorSession) AsyncInsert(handler func(*types.Receipt, error), id string, name string, secret string) (*types.Transaction, error) { + return _KeyShare.Contract.AsyncInsert(handler, &_KeyShare.TransactOpts, id, name, secret) +} + +// Remove is a paid mutator transaction binding the contract method 0x80599e4b. +// +// Solidity: function remove(string id) returns(int32) +func (_KeyShare *KeyShareTransactor) Remove(opts *bind.TransactOpts, id string) (int32, *types.Transaction, *types.Receipt, error) { + var ( + ret0 = new(int32) + ) + out := ret0 + transaction, receipt, err := _KeyShare.contract.TransactWithResult(opts, out, "remove", id) + return *ret0, transaction, receipt, err +} + +func (_KeyShare *KeyShareTransactor) AsyncRemove(handler func(*types.Receipt, error), opts *bind.TransactOpts, id string) (*types.Transaction, error) { + return _KeyShare.contract.AsyncTransact(opts, handler, "remove", id) +} + +// Remove is a paid mutator transaction binding the contract method 0x80599e4b. +// +// Solidity: function remove(string id) returns(int32) +func (_KeyShare *KeyShareSession) Remove(id string) (int32, *types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.Remove(&_KeyShare.TransactOpts, id) +} + +func (_KeyShare *KeyShareSession) AsyncRemove(handler func(*types.Receipt, error), id string) (*types.Transaction, error) { + return _KeyShare.Contract.AsyncRemove(handler, &_KeyShare.TransactOpts, id) +} + +// Remove is a paid mutator transaction binding the contract method 0x80599e4b. +// +// Solidity: function remove(string id) returns(int32) +func (_KeyShare *KeyShareTransactorSession) Remove(id string) (int32, *types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.Remove(&_KeyShare.TransactOpts, id) +} + +func (_KeyShare *KeyShareTransactorSession) AsyncRemove(handler func(*types.Receipt, error), id string) (*types.Transaction, error) { + return _KeyShare.Contract.AsyncRemove(handler, &_KeyShare.TransactOpts, id) +} + +// Update is a paid mutator transaction binding the contract method 0x31c3e456. +// +// Solidity: function update(string id, string name, string secret) returns(int32) +func (_KeyShare *KeyShareTransactor) Update(opts *bind.TransactOpts, id string, name string, secret string) (int32, *types.Transaction, *types.Receipt, error) { + var ( + ret0 = new(int32) + ) + out := ret0 + transaction, receipt, err := _KeyShare.contract.TransactWithResult(opts, out, "update", id, name, secret) + return *ret0, transaction, receipt, err +} + +func (_KeyShare *KeyShareTransactor) AsyncUpdate(handler func(*types.Receipt, error), opts *bind.TransactOpts, id string, name string, secret string) (*types.Transaction, error) { + return _KeyShare.contract.AsyncTransact(opts, handler, "update", id, name, secret) +} + +// Update is a paid mutator transaction binding the contract method 0x31c3e456. +// +// Solidity: function update(string id, string name, string secret) returns(int32) +func (_KeyShare *KeyShareSession) Update(id string, name string, secret string) (int32, *types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.Update(&_KeyShare.TransactOpts, id, name, secret) +} + +func (_KeyShare *KeyShareSession) AsyncUpdate(handler func(*types.Receipt, error), id string, name string, secret string) (*types.Transaction, error) { + return _KeyShare.Contract.AsyncUpdate(handler, &_KeyShare.TransactOpts, id, name, secret) +} + +// Update is a paid mutator transaction binding the contract method 0x31c3e456. +// +// Solidity: function update(string id, string name, string secret) returns(int32) +func (_KeyShare *KeyShareTransactorSession) Update(id string, name string, secret string) (int32, *types.Transaction, *types.Receipt, error) { + return _KeyShare.Contract.Update(&_KeyShare.TransactOpts, id, name, secret) +} + +func (_KeyShare *KeyShareTransactorSession) AsyncUpdate(handler func(*types.Receipt, error), id string, name string, secret string) (*types.Transaction, error) { + return _KeyShare.Contract.AsyncUpdate(handler, &_KeyShare.TransactOpts, id, name, secret) +} + +// KeyShareCreateResult represents a CreateResult event raised by the KeyShare contract. +type KeyShareCreateResult struct { + Count *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// WatchCreateResult is a free log subscription operation binding the contract event 0xb5636cd912a73dcdb5b570dbe331dfa3e6435c93e029e642def2c8e40dacf210. +// +// Solidity: event CreateResult(int256 count) +func (_KeyShare *KeyShareFilterer) WatchCreateResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.contract.WatchLogs(fromBlock, handler, "CreateResult") +} + +func (_KeyShare *KeyShareFilterer) WatchAllCreateResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.contract.WatchLogs(fromBlock, handler, "CreateResult") +} + +// ParseCreateResult is a log parse operation binding the contract event 0xb5636cd912a73dcdb5b570dbe331dfa3e6435c93e029e642def2c8e40dacf210. +// +// Solidity: event CreateResult(int256 count) +func (_KeyShare *KeyShareFilterer) ParseCreateResult(log types.Log) (*KeyShareCreateResult, error) { + event := new(KeyShareCreateResult) + if err := _KeyShare.contract.UnpackLog(event, "CreateResult", log); err != nil { + return nil, err + } + return event, nil +} + +// WatchCreateResult is a free log subscription operation binding the contract event 0xb5636cd912a73dcdb5b570dbe331dfa3e6435c93e029e642def2c8e40dacf210. +// +// Solidity: event CreateResult(int256 count) +func (_KeyShare *KeyShareSession) WatchCreateResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.Contract.WatchCreateResult(fromBlock, handler) +} + +func (_KeyShare *KeyShareSession) WatchAllCreateResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.Contract.WatchAllCreateResult(fromBlock, handler) +} + +// ParseCreateResult is a log parse operation binding the contract event 0xb5636cd912a73dcdb5b570dbe331dfa3e6435c93e029e642def2c8e40dacf210. +// +// Solidity: event CreateResult(int256 count) +func (_KeyShare *KeyShareSession) ParseCreateResult(log types.Log) (*KeyShareCreateResult, error) { + return _KeyShare.Contract.ParseCreateResult(log) +} + +// KeyShareInsertResult represents a InsertResult event raised by the KeyShare contract. +type KeyShareInsertResult struct { + Count *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// WatchInsertResult is a free log subscription operation binding the contract event 0xc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce. +// +// Solidity: event InsertResult(int256 count) +func (_KeyShare *KeyShareFilterer) WatchInsertResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.contract.WatchLogs(fromBlock, handler, "InsertResult") +} + +func (_KeyShare *KeyShareFilterer) WatchAllInsertResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.contract.WatchLogs(fromBlock, handler, "InsertResult") +} + +// ParseInsertResult is a log parse operation binding the contract event 0xc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce. +// +// Solidity: event InsertResult(int256 count) +func (_KeyShare *KeyShareFilterer) ParseInsertResult(log types.Log) (*KeyShareInsertResult, error) { + event := new(KeyShareInsertResult) + if err := _KeyShare.contract.UnpackLog(event, "InsertResult", log); err != nil { + return nil, err + } + return event, nil +} + +// WatchInsertResult is a free log subscription operation binding the contract event 0xc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce. +// +// Solidity: event InsertResult(int256 count) +func (_KeyShare *KeyShareSession) WatchInsertResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.Contract.WatchInsertResult(fromBlock, handler) +} + +func (_KeyShare *KeyShareSession) WatchAllInsertResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.Contract.WatchAllInsertResult(fromBlock, handler) +} + +// ParseInsertResult is a log parse operation binding the contract event 0xc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce. +// +// Solidity: event InsertResult(int256 count) +func (_KeyShare *KeyShareSession) ParseInsertResult(log types.Log) (*KeyShareInsertResult, error) { + return _KeyShare.Contract.ParseInsertResult(log) +} + +// KeyShareRemoveResult represents a RemoveResult event raised by the KeyShare contract. +type KeyShareRemoveResult struct { + Count *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// WatchRemoveResult is a free log subscription operation binding the contract event 0x4b930e280fe29620bdff00c88155d46d6d82a39f45dd5c3ea114dc3157358112. +// +// Solidity: event RemoveResult(int256 count) +func (_KeyShare *KeyShareFilterer) WatchRemoveResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.contract.WatchLogs(fromBlock, handler, "RemoveResult") +} + +func (_KeyShare *KeyShareFilterer) WatchAllRemoveResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.contract.WatchLogs(fromBlock, handler, "RemoveResult") +} + +// ParseRemoveResult is a log parse operation binding the contract event 0x4b930e280fe29620bdff00c88155d46d6d82a39f45dd5c3ea114dc3157358112. +// +// Solidity: event RemoveResult(int256 count) +func (_KeyShare *KeyShareFilterer) ParseRemoveResult(log types.Log) (*KeyShareRemoveResult, error) { + event := new(KeyShareRemoveResult) + if err := _KeyShare.contract.UnpackLog(event, "RemoveResult", log); err != nil { + return nil, err + } + return event, nil +} + +// WatchRemoveResult is a free log subscription operation binding the contract event 0x4b930e280fe29620bdff00c88155d46d6d82a39f45dd5c3ea114dc3157358112. +// +// Solidity: event RemoveResult(int256 count) +func (_KeyShare *KeyShareSession) WatchRemoveResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.Contract.WatchRemoveResult(fromBlock, handler) +} + +func (_KeyShare *KeyShareSession) WatchAllRemoveResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.Contract.WatchAllRemoveResult(fromBlock, handler) +} + +// ParseRemoveResult is a log parse operation binding the contract event 0x4b930e280fe29620bdff00c88155d46d6d82a39f45dd5c3ea114dc3157358112. +// +// Solidity: event RemoveResult(int256 count) +func (_KeyShare *KeyShareSession) ParseRemoveResult(log types.Log) (*KeyShareRemoveResult, error) { + return _KeyShare.Contract.ParseRemoveResult(log) +} + +// KeyShareUpdateResult represents a UpdateResult event raised by the KeyShare contract. +type KeyShareUpdateResult struct { + Count *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// WatchUpdateResult is a free log subscription operation binding the contract event 0x8e5890af40fc24a059396aca2f83d6ce41fcef086876548fa4fb8ec27e9d292a. +// +// Solidity: event UpdateResult(int256 count) +func (_KeyShare *KeyShareFilterer) WatchUpdateResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.contract.WatchLogs(fromBlock, handler, "UpdateResult") +} + +func (_KeyShare *KeyShareFilterer) WatchAllUpdateResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.contract.WatchLogs(fromBlock, handler, "UpdateResult") +} + +// ParseUpdateResult is a log parse operation binding the contract event 0x8e5890af40fc24a059396aca2f83d6ce41fcef086876548fa4fb8ec27e9d292a. +// +// Solidity: event UpdateResult(int256 count) +func (_KeyShare *KeyShareFilterer) ParseUpdateResult(log types.Log) (*KeyShareUpdateResult, error) { + event := new(KeyShareUpdateResult) + if err := _KeyShare.contract.UnpackLog(event, "UpdateResult", log); err != nil { + return nil, err + } + return event, nil +} + +// WatchUpdateResult is a free log subscription operation binding the contract event 0x8e5890af40fc24a059396aca2f83d6ce41fcef086876548fa4fb8ec27e9d292a. +// +// Solidity: event UpdateResult(int256 count) +func (_KeyShare *KeyShareSession) WatchUpdateResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.Contract.WatchUpdateResult(fromBlock, handler) +} + +func (_KeyShare *KeyShareSession) WatchAllUpdateResult(fromBlock *int64, handler func(int, []types.Log)) (string, error) { + return _KeyShare.Contract.WatchAllUpdateResult(fromBlock, handler) +} + +// ParseUpdateResult is a log parse operation binding the contract event 0x8e5890af40fc24a059396aca2f83d6ce41fcef086876548fa4fb8ec27e9d292a. +// +// Solidity: event UpdateResult(int256 count) +func (_KeyShare *KeyShareSession) ParseUpdateResult(log types.Log) (*KeyShareUpdateResult, error) { + return _KeyShare.Contract.ParseUpdateResult(log) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KeyShare.sol b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KeyShare.sol new file mode 100644 index 000000000..d30783026 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/KeyShare.sol @@ -0,0 +1,79 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity >=0.6.10 <0.8.20; +pragma experimental ABIEncoderV2; + +import "./Table.sol"; + +contract KeyShare { + event CreateResult(int256 count); + event InsertResult(int256 count); + event UpdateResult(int256 count); + event RemoveResult(int256 count); + + TableManager constant tm = TableManager(address(0x1002)); + Table table; + string constant TABLE_NAME = "t_key_share"; + constructor () public{ + // create table + string[] memory columnNames = new string[](2); + columnNames[0] = "name"; + columnNames[1] = "secret"; + TableInfo memory tf = TableInfo("id", columnNames); + + tm.createTable(TABLE_NAME, tf); + address t_address = tm.openTable(TABLE_NAME); + require(t_address!=address(0x0),""); + table = Table(t_address); + } + + function select(string memory id) public view returns (string memory,string memory) + { + Entry memory entry = table.select(id); + + string memory name; + string memory secret; + if(entry.fields.length==2){ + name = entry.fields[0]; + secret = entry.fields[1]; + } + return (name,secret); + } + + function insert(string memory id,string memory name,string memory secret) public returns (int32){ + string[] memory columns = new string[](2); + columns[0] = name; + columns[1] = secret; + Entry memory entry = Entry(id, columns); + int32 result = table.insert(entry); + emit InsertResult(result); + return result; + } + + function update(string memory id, string memory name, string memory secret) public returns (int32){ + UpdateField[] memory updateFields = new UpdateField[](2); + updateFields[0] = UpdateField("name", name); + updateFields[1] = UpdateField("secret", secret); + + int32 result = table.update(id, updateFields); + emit UpdateResult(result); + return result; + } + + function remove(string memory id) public returns(int32){ + int32 result = table.remove(id); + emit RemoveResult(result); + return result; + } + + function createTable(string memory tableName,string memory key,string[] memory fields) public returns(int256){ + TableInfo memory tf = TableInfo(key, fields); + int32 result = tm.createTable(tableName,tf); + emit CreateResult(result); + return result; + } + + function desc() public view returns(string memory, string[] memory){ + TableInfo memory ti = tm.desc(TABLE_NAME); + return (ti.keyColumn,ti.valueColumns); + } +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/Table.abi b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/Table.abi new file mode 100644 index 000000000..900206549 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/Table.abi @@ -0,0 +1 @@ +[{"inputs":[{"components":[{"internalType":"enum ConditionOP","name":"op","type":"uint8"},{"internalType":"string","name":"value","type":"string"}],"internalType":"struct Condition[]","name":"conditions","type":"tuple[]"}],"name":"count","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string[]","name":"fields","type":"string[]"}],"internalType":"struct Entry","name":"entry","type":"tuple"}],"name":"insert","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum ConditionOP","name":"op","type":"uint8"},{"internalType":"string","name":"value","type":"string"}],"internalType":"struct Condition[]","name":"conditions","type":"tuple[]"},{"components":[{"internalType":"uint32","name":"offset","type":"uint32"},{"internalType":"uint32","name":"count","type":"uint32"}],"internalType":"struct Limit","name":"limit","type":"tuple"}],"name":"remove","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"key","type":"string"}],"name":"remove","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum ConditionOP","name":"op","type":"uint8"},{"internalType":"string","name":"value","type":"string"}],"internalType":"struct Condition[]","name":"conditions","type":"tuple[]"},{"components":[{"internalType":"uint32","name":"offset","type":"uint32"},{"internalType":"uint32","name":"count","type":"uint32"}],"internalType":"struct Limit","name":"limit","type":"tuple"}],"name":"select","outputs":[{"components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string[]","name":"fields","type":"string[]"}],"internalType":"struct Entry[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"key","type":"string"}],"name":"select","outputs":[{"components":[{"internalType":"string","name":"key","type":"string"},{"internalType":"string[]","name":"fields","type":"string[]"}],"internalType":"struct Entry","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"key","type":"string"},{"components":[{"internalType":"string","name":"columnName","type":"string"},{"internalType":"string","name":"value","type":"string"}],"internalType":"struct UpdateField[]","name":"updateFields","type":"tuple[]"}],"name":"update","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum ConditionOP","name":"op","type":"uint8"},{"internalType":"string","name":"value","type":"string"}],"internalType":"struct Condition[]","name":"conditions","type":"tuple[]"},{"components":[{"internalType":"uint32","name":"offset","type":"uint32"},{"internalType":"uint32","name":"count","type":"uint32"}],"internalType":"struct Limit","name":"limit","type":"tuple"},{"components":[{"internalType":"string","name":"columnName","type":"string"},{"internalType":"string","name":"value","type":"string"}],"internalType":"struct UpdateField[]","name":"updateFields","type":"tuple[]"}],"name":"update","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/Table.bin b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/Table.bin new file mode 100644 index 000000000..e69de29bb diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/Table.sol b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/Table.sol new file mode 100644 index 000000000..65169a9e6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/Table.sol @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: Apache-2.0 +// 该接口文件定义了FISCO BCOS v3.1.0及以前版本的接口,使用时需要将该文件放在合约目录下 +// 若要使用FISCO BCOS v3.2.0及以后版本的接口,请使用TableV320.sol,旧合约仍然能在新节点中使用 +pragma solidity >=0.6.10 <0.8.20; +pragma experimental ABIEncoderV2; + +// KeyOrder指定Key的排序规则,字典序和数字序,如果指定为数字序,key只能为数字 +// enum KeyOrder {Lexicographic, Numerical} + struct TableInfo { + string keyColumn; + string[] valueColumns; + } + +// 记录,用于select和insert + struct Entry { + string key; + string[] fields; // 考虑2.0的Entry接口,临时Precompiled的问题,考虑加工具类接口 + } + +// 更新字段,用于update + struct UpdateField { + string columnName; + // 考虑工具类 + string value; + } + +// 筛选条件,大于、大于等于、小于、小于等于 + enum ConditionOP {GT, GE, LT, LE} + struct Condition { + ConditionOP op; + // string field; + string value; + } + +// 数量限制 + struct Limit { + uint32 offset; + // count limit max is 500 + uint32 count; + } + +// 表管理合约,是静态Precompiled,有固定的合约地址 +abstract contract TableManager { + // 创建表,传入TableInfo + function createTable(string memory path, TableInfo memory tableInfo) public virtual returns (int32); + + // 创建KV表,传入key和value字段名 + function createKVTable(string memory tableName, string memory keyField, string memory valueField) public virtual returns (int32); + + // 只提供给Solidity合约调用时使用 + function openTable(string memory path) public view virtual returns (address); + + // 变更表字段 + // 只能新增字段,不能删除字段,新增的字段默认值为空,不能与原有字段重复 + function appendColumns(string memory path, string[] memory newColumns) public virtual returns (int32); + + // 获取表信息 + function desc(string memory tableName) public view virtual returns (TableInfo memory); +} + +// 表合约,是动态Precompiled,TableManager创建时指定地址 +abstract contract Table { + // 按key查询entry + function select(string memory key) public virtual view returns (Entry memory); + + // 按条件批量查询entry,condition为空则查询所有记录 + function select(Condition[] memory conditions, Limit memory limit) public virtual view returns (Entry[] memory); + + // 按照条件查询count数据 + function count(Condition[] memory conditions) public virtual view returns (uint32); + + // 插入数据 + function insert(Entry memory entry) public virtual returns (int32); + + // 按key更新entry + function update(string memory key, UpdateField[] memory updateFields) public virtual returns (int32); + + // 按条件批量更新entry,condition为空则更新所有记录 + function update(Condition[] memory conditions, Limit memory limit, UpdateField[] memory updateFields) public virtual returns (int32); + + // 按key删除entry + function remove(string memory key) public virtual returns (int32); + // 按条件批量删除entry,condition为空则删除所有记录 + function remove(Condition[] memory conditions, Limit memory limit) public virtual returns (int32); +} + +abstract contract KVTable { + function get(string memory key) public view virtual returns (bool, string memory); + + function set(string memory key, string memory value) public virtual returns (int32); +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/TableManager.abi b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/TableManager.abi new file mode 100644 index 000000000..52e130933 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/TableManager.abi @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"string","name":"path","type":"string"},{"internalType":"string[]","name":"newColumns","type":"string[]"}],"name":"appendColumns","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"tableName","type":"string"},{"internalType":"string","name":"keyField","type":"string"},{"internalType":"string","name":"valueField","type":"string"}],"name":"createKVTable","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"path","type":"string"},{"components":[{"internalType":"string","name":"keyColumn","type":"string"},{"internalType":"string[]","name":"valueColumns","type":"string[]"}],"internalType":"struct TableInfo","name":"tableInfo","type":"tuple"}],"name":"createTable","outputs":[{"internalType":"int32","name":"","type":"int32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"tableName","type":"string"}],"name":"desc","outputs":[{"components":[{"internalType":"string","name":"keyColumn","type":"string"},{"internalType":"string[]","name":"valueColumns","type":"string[]"}],"internalType":"struct TableInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"path","type":"string"}],"name":"openTable","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}] \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/TableManager.bin b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/KeyShare/TableManager.bin new file mode 100644 index 000000000..e69de29bb diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/README.md b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/README.md new file mode 100644 index 000000000..36e587321 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/README.md @@ -0,0 +1,26 @@ +# DecisionStorage + +合约名 `DecisionStorage`,用于在区块链上存储和管理决策记录 + +- **Decision**: 用于表示单个决策记录,包含以下字段: + - `evidence`: 证据的字符串表示。 + - `nodeID`: 节点的唯一标识符。 + - `timestamp`: 决策记录的时间戳。 + - `approved`: 表示决策是否被批准的布尔值。 + +# KeyShare + +`KeyShare`,用于在区块链上管理密钥共享信息。使用 `Table` 外部合约来实现数据存储和管理。以下是合约的主要功能和结构: + +### 事件 + +- **CreateResult**: 创建表的结果。 +- **InsertResult**: 插入记录的结果。 +- **UpdateResult**: 更新记录的结果。 +- **RemoveResult**: 移除记录的结果。 + +### 状态变量 + +- **tm**: `TableManager` 合约的地址,用于管理表。 +- **table**: 当前操作的表。 +- **TABLE_NAME**: 表的名称,固定为 `"t_key_share"`。 \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/source/DecisionStorage.sol b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/source/DecisionStorage.sol new file mode 100644 index 000000000..19c90c817 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/source/DecisionStorage.sol @@ -0,0 +1,74 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.10 <0.8.20; + +contract DecisionStorage { + // 决策记录结构 + struct Decision { + string evidence; // 证据 + string nodeID; // 节点ID + uint256 timestamp; // 时间戳 + bool approved; // 是否批准 + } + + // 存储所有决策记录 + Decision[] public decisions; + + // 记录决策的事件 + event DecisionRecorded( + string evidence, + string nodeID, + uint256 timestamp, + bool approved + ); + + function recordDecision(string memory evidence, string memory nodeID, bool approved) public returns (bool) { + Decision memory newDecision = Decision({ + evidence: evidence, + nodeID: nodeID, + timestamp: block.timestamp, + approved: approved + }); + + // 存储决策 + decisions.push(newDecision); + + // 触发事件 + emit DecisionRecorded( + newDecision.evidence, + newDecision.nodeID, + newDecision.timestamp, + newDecision.approved + ); + + return true; + } + + // 验证证据 可以添加具体的验证逻辑 + function verifyEvidence(string memory evidence) public view returns (bool) { + // 目前返回true用于测试 + return true; + } + + // 获取决策记录数量 + function getDecisionCount() public view returns (uint256) { + return decisions.length; + } + + // 获取指定索引的决策记录 + function getDecision(uint256 index) public view returns ( + string memory evidence, + string memory nodeID, + uint256 timestamp, + bool approved + ) { + require(index < decisions.length, "Index out of bounds"); + Decision memory decision = decisions[index]; + return ( + decision.evidence, + decision.nodeID, + decision.timestamp, + decision.approved + ); + } + +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/source/KeyShare.sol b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/source/KeyShare.sol new file mode 100644 index 000000000..d30783026 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/source/KeyShare.sol @@ -0,0 +1,79 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity >=0.6.10 <0.8.20; +pragma experimental ABIEncoderV2; + +import "./Table.sol"; + +contract KeyShare { + event CreateResult(int256 count); + event InsertResult(int256 count); + event UpdateResult(int256 count); + event RemoveResult(int256 count); + + TableManager constant tm = TableManager(address(0x1002)); + Table table; + string constant TABLE_NAME = "t_key_share"; + constructor () public{ + // create table + string[] memory columnNames = new string[](2); + columnNames[0] = "name"; + columnNames[1] = "secret"; + TableInfo memory tf = TableInfo("id", columnNames); + + tm.createTable(TABLE_NAME, tf); + address t_address = tm.openTable(TABLE_NAME); + require(t_address!=address(0x0),""); + table = Table(t_address); + } + + function select(string memory id) public view returns (string memory,string memory) + { + Entry memory entry = table.select(id); + + string memory name; + string memory secret; + if(entry.fields.length==2){ + name = entry.fields[0]; + secret = entry.fields[1]; + } + return (name,secret); + } + + function insert(string memory id,string memory name,string memory secret) public returns (int32){ + string[] memory columns = new string[](2); + columns[0] = name; + columns[1] = secret; + Entry memory entry = Entry(id, columns); + int32 result = table.insert(entry); + emit InsertResult(result); + return result; + } + + function update(string memory id, string memory name, string memory secret) public returns (int32){ + UpdateField[] memory updateFields = new UpdateField[](2); + updateFields[0] = UpdateField("name", name); + updateFields[1] = UpdateField("secret", secret); + + int32 result = table.update(id, updateFields); + emit UpdateResult(result); + return result; + } + + function remove(string memory id) public returns(int32){ + int32 result = table.remove(id); + emit RemoveResult(result); + return result; + } + + function createTable(string memory tableName,string memory key,string[] memory fields) public returns(int256){ + TableInfo memory tf = TableInfo(key, fields); + int32 result = tm.createTable(tableName,tf); + emit CreateResult(result); + return result; + } + + function desc() public view returns(string memory, string[] memory){ + TableInfo memory ti = tm.desc(TABLE_NAME); + return (ti.keyColumn,ti.valueColumns); + } +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/source/Table.sol b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/source/Table.sol new file mode 100644 index 000000000..65169a9e6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/contract/source/Table.sol @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: Apache-2.0 +// 该接口文件定义了FISCO BCOS v3.1.0及以前版本的接口,使用时需要将该文件放在合约目录下 +// 若要使用FISCO BCOS v3.2.0及以后版本的接口,请使用TableV320.sol,旧合约仍然能在新节点中使用 +pragma solidity >=0.6.10 <0.8.20; +pragma experimental ABIEncoderV2; + +// KeyOrder指定Key的排序规则,字典序和数字序,如果指定为数字序,key只能为数字 +// enum KeyOrder {Lexicographic, Numerical} + struct TableInfo { + string keyColumn; + string[] valueColumns; + } + +// 记录,用于select和insert + struct Entry { + string key; + string[] fields; // 考虑2.0的Entry接口,临时Precompiled的问题,考虑加工具类接口 + } + +// 更新字段,用于update + struct UpdateField { + string columnName; + // 考虑工具类 + string value; + } + +// 筛选条件,大于、大于等于、小于、小于等于 + enum ConditionOP {GT, GE, LT, LE} + struct Condition { + ConditionOP op; + // string field; + string value; + } + +// 数量限制 + struct Limit { + uint32 offset; + // count limit max is 500 + uint32 count; + } + +// 表管理合约,是静态Precompiled,有固定的合约地址 +abstract contract TableManager { + // 创建表,传入TableInfo + function createTable(string memory path, TableInfo memory tableInfo) public virtual returns (int32); + + // 创建KV表,传入key和value字段名 + function createKVTable(string memory tableName, string memory keyField, string memory valueField) public virtual returns (int32); + + // 只提供给Solidity合约调用时使用 + function openTable(string memory path) public view virtual returns (address); + + // 变更表字段 + // 只能新增字段,不能删除字段,新增的字段默认值为空,不能与原有字段重复 + function appendColumns(string memory path, string[] memory newColumns) public virtual returns (int32); + + // 获取表信息 + function desc(string memory tableName) public view virtual returns (TableInfo memory); +} + +// 表合约,是动态Precompiled,TableManager创建时指定地址 +abstract contract Table { + // 按key查询entry + function select(string memory key) public virtual view returns (Entry memory); + + // 按条件批量查询entry,condition为空则查询所有记录 + function select(Condition[] memory conditions, Limit memory limit) public virtual view returns (Entry[] memory); + + // 按照条件查询count数据 + function count(Condition[] memory conditions) public virtual view returns (uint32); + + // 插入数据 + function insert(Entry memory entry) public virtual returns (int32); + + // 按key更新entry + function update(string memory key, UpdateField[] memory updateFields) public virtual returns (int32); + + // 按条件批量更新entry,condition为空则更新所有记录 + function update(Condition[] memory conditions, Limit memory limit, UpdateField[] memory updateFields) public virtual returns (int32); + + // 按key删除entry + function remove(string memory key) public virtual returns (int32); + // 按条件批量删除entry,condition为空则删除所有记录 + function remove(Condition[] memory conditions, Limit memory limit) public virtual returns (int32); +} + +abstract contract KVTable { + function get(string memory key) public view virtual returns (bool, string memory); + + function set(string memory key, string memory value) public virtual returns (int32); +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/pool.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/pool.go new file mode 100644 index 000000000..b9b5af60e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/pool.go @@ -0,0 +1,97 @@ +package controller + +import ( + "errors" + "fmt" + "hufu/model" + "log" + "math/rand" + "sync" +) + +// WalletPool 是一个管理钱包的全局池 +type WalletPool struct { + wallets []*model.Wallet + mutex sync.RWMutex +} + +// 全局 WalletPool 实例 +var GlobalWalletPool *WalletPool + +const ( + initCount = 10 + initBalance = 1000000 + initPrefix = "ProxyWallet" +) + +// InitWalletPool 初始化全局 WalletPool +func InitWalletPool() { + GlobalWalletPool = &WalletPool{ + wallets: make([]*model.Wallet, 0), + } + + // 获取所有以 ProxyWallet 开头的钱包 + var existingWallets []*model.Wallet + if err := model.DB.Where("wallet_name LIKE ?", fmt.Sprintf("%s%%", initPrefix)).Find(&existingWallets).Error; err != nil { + log.Fatal(err) + } + + if len(existingWallets) == 0 { + // 如果池中没有钱包,则创建新的钱包 + for i := 0; i < initCount; i++ { + wallet, err := NewWallet(fmt.Sprintf("%s%d", initPrefix, i), fmt.Sprintf("proxy-user%d", i), initBalance) + if err != nil { + log.Fatal(err) + } + GlobalWalletPool.AddWallet(wallet) + } + } else { + GlobalWalletPool.wallets = existingWallets + } +} + +// AddWallet 向池中添加钱包 +func (wp *WalletPool) AddWallet(wallet *model.Wallet) { + wp.mutex.Lock() + defer wp.mutex.Unlock() + wp.wallets = append(wp.wallets, wallet) +} + +// GetRandomWallet 从池中随机获取一个钱包 +func (wp *WalletPool) GetRandomWallet() *model.Wallet { + wp.mutex.RLock() + defer wp.mutex.RUnlock() + if len(wp.wallets) == 0 { + return nil + } + return wp.wallets[rand.Intn(len(wp.wallets))] +} + +// GetAllWallets 获取池中所有钱包 +func (wp *WalletPool) GetAllWallets() []*model.Wallet { + wp.mutex.RLock() + defer wp.mutex.RUnlock() + return wp.wallets +} + +// GetRandomWallets 从池中随机获取指定数量的钱包 +func (wp *WalletPool) GetRandomWallets(count int) ([]*model.Wallet, error) { + wp.mutex.RLock() + defer wp.mutex.RUnlock() + + if len(wp.wallets) == 0 { + return nil, errors.New("no wallets in the pool") + } + + if count >= len(wp.wallets) { + return nil, errors.New("not enough wallets in the pool") + } + + selectedWallets := make([]*model.Wallet, count) + indexes := rand.Perm(len(wp.wallets)) + for i := 0; i < count; i++ { + selectedWallets[i] = wp.wallets[indexes[i]] + } + + return selectedWallets, nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/regulator.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/regulator.go new file mode 100644 index 000000000..1c4eed2ec --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/regulator.go @@ -0,0 +1,132 @@ +package controller + +import ( + "fmt" + "time" + + "hufu/model" + "hufu/supervisor" + "hufu/utils" +) + +type Regulator struct { + maxTransactionAmount float64 + maxDailyAmount float64 + suspiciousFrequency int // 每小时可疑交易频率阈值 +} + +func NewRegulator() *Regulator { + return &Regulator{ + maxTransactionAmount: 10000, + maxDailyAmount: 50000, + suspiciousFrequency: 100, + } +} + +func (r *Regulator) SendAlert(tx *model.Transaction, evidence string) error { + return nil +} + +func (r *Regulator) CheckTransaction(tx *model.Transaction, w *model.Wallet) error { + // 检查最大交易金额 + if tx.Amount > r.maxTransactionAmount { + return fmt.Errorf("交易金额超过允许的最大值: %f", r.maxTransactionAmount) + } + + // 检查日累计交易金额 + dailyAmount, _ := r.getDailyTransactionAmount(w.ID) + if dailyAmount+tx.Amount > r.maxDailyAmount { + return fmt.Errorf("日交易总额超过限制: %f", r.maxDailyAmount) + } + + // 检查交易频率 + frequency, err := r.getHourlyTransactionFrequency(w.ID) + if err != nil { + return fmt.Errorf("获取交易频率失败: %v", err) + } + if frequency >= r.suspiciousFrequency { + // 记录可疑交易 + return fmt.Errorf("交易频率过高") + } + + return nil +} + +// 获取钱包当日交易总额 +func (r *Regulator) getDailyTransactionAmount(walletID uint) (float64, error) { + var totalAmount float64 + today := time.Now().Format("2006-01-02") + + err := model.DB.Model(&model.Transaction{}). + Where("wallet_id = ? AND DATE(created_at) = ?", walletID, today). + Select("COALESCE(SUM(amount), 0)"). + Row(). + Scan(&totalAmount) + + return totalAmount, err +} + +// 获取每小时交易频率 +func (r *Regulator) getHourlyTransactionFrequency(walletID uint) (int, error) { + var count int64 + oneHourAgo := time.Now().Add(-time.Hour) + + err := model.DB.Model(&model.Transaction{}). + Where("from_wallet_id = ? AND created_at >= ?", walletID, oneHourAgo). + Count(&count).Error + + return int(count), err +} + +func ProcessPrivateKey(walletID uint, evidence string) ([]string, error) { + // 获取私钥 + walletKey, err := GetWalletKeyByWalletID(walletID) + if err != nil { + return nil, fmt.Errorf("failed to get wallet key: %v", err) + } + + parts, err := utils.SharePrivateKey(walletKey.PrivateKey) + if err != nil { + return nil, fmt.Errorf("failed to share private key: %v", err) + } + + approved, err := supervisor.JuryInstance.HandleRegulatoryRequest(fmt.Sprintf("wallet-%d-%s", walletID, evidence)) + if err != nil { + return nil, fmt.Errorf("failed to handle regulatory request: %v", err) + } + + res := []string{} + + for i, part := range parts { + if approved[supervisor.JuryInstance.Nodes[i].NodeID] { + encryptedPart, err := utils.EncryptData(supervisor.JuryInstance.Nodes[i].PublicKey, part) + if err != nil { + return nil, fmt.Errorf("failed to encrypt part %d: %v", i, err) + } + // 存储加密后的分片 + id := fmt.Sprintf("%d-%d", walletID, i) + name := fmt.Sprintf("key_share_%s", id) + err = supervisor.JuryInstance.Nodes[i].StoreEncryptedKeyShare(id, name, encryptedPart) + if err != nil { + return nil, fmt.Errorf("failed to store encrypted part %d: %v", i, err) + } + + res = append(res, part) + } + } + + return res, nil +} + +// GetAbnormalTransactions 获取所有异常交易 +func GetAbnormalTransactions() ([]model.AbnormalTransaction, error) { + var transactions []model.AbnormalTransaction + + // 从数据库中查询标记为异常的交易 + result := model.DB.Find(&transactions) + if result.Error != nil { + return nil, result.Error + } + + return transactions, nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/tee_controller.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/tee_controller.go new file mode 100644 index 000000000..57e2ba0fa --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/tee_controller.go @@ -0,0 +1,269 @@ +package controller + +import ( + "bytes" + "crypto/rand" + "crypto/rsa" + "crypto/sha256" + "encoding/binary" + "encoding/hex" + "encoding/json" + "fmt" + "io" + "log" + "math/big" + "net/http" + "strconv" + "strings" + + "golang.org/x/net/proxy" +) + +type TeeController struct{} + +func NewTeeController() *TeeController { + return &TeeController{} +} + +// 创建代理客户端的通用函数 +func (tc *TeeController) createProxyClient() (*http.Client, error) { + dialer, err := proxy.SOCKS5("tcp", "127.0.0.1:1080", nil, proxy.Direct) + if err != nil { + return nil, err + } + + return &http.Client{ + Transport: &http.Transport{ + Dial: dialer.Dial, + }, + }, nil +} + +// 发送HTTP请求的通用函数 +func (tc *TeeController) sendRequest(client *http.Client, method, url string, body io.Reader, contentType string) ([]byte, int, error) { + req, err := http.NewRequest(method, url, body) + if err != nil { + return nil, http.StatusInternalServerError, err + } + + req.Header.Set("Content-Type", contentType) + + resp, err := client.Do(req) + if err != nil { + return nil, http.StatusInternalServerError, err + } + defer resp.Body.Close() + + respBody, err := io.ReadAll(resp.Body) + if err != nil { + return nil, http.StatusInternalServerError, err + } + + return respBody, resp.StatusCode, nil +} + +func (tc *TeeController) Add(add string) ([]byte, int, error) { + client, err := tc.createProxyClient() + if err != nil { + return nil, http.StatusInternalServerError, err + } + + return tc.sendRequest( + client, + "POST", + "http://10.77.110.184:8080/add", + strings.NewReader(add), + "text/plain", + ) +} + +func (tc *TeeController) GenerateKey(walletID int) ([]byte, int, error) { + client, err := tc.createProxyClient() + if err != nil { + return nil, http.StatusInternalServerError, err + } + + request := struct { + WalletID int `json:"wallet_id"` + }{ + WalletID: walletID, + } + + jsonBody, _ := json.Marshal(request) + return tc.sendRequest( + client, + "POST", + "http://10.77.110.184:8082/api/create_wallet", + bytes.NewBuffer(jsonBody), + "application/json", + ) +} + +func (tc *TeeController) Warning(from, to int, amount float64) ([]byte, int, error) { + client, err := tc.createProxyClient() + if err != nil { + return nil, http.StatusInternalServerError, err + } + + request := struct { + From int `json:"from"` + To int `json:"to"` + Amount float64 `json:"amount"` + }{ + From: from, + To: to, + Amount: amount, + } + + jsonBody, _ := json.Marshal(request) + return tc.sendRequest( + client, + "POST", + "http://10.77.110.184:8082/api/transaction_warning", + bytes.NewBuffer(jsonBody), + "application/json", + ) +} + +func (tc *TeeController) Shuffle(from, to int, amount float64) ([]byte, int, error) { + client, err := tc.createProxyClient() + if err != nil { + return nil, http.StatusInternalServerError, err + } + + request := struct { + From int `json:"from"` + To int `json:"to"` + Amount float64 `json:"amount"` + }{ + From: from, + To: to, + Amount: amount, + } + + jsonBody, _ := json.Marshal(request) + return tc.sendRequest( + client, + "POST", + "http://10.77.110.184:8082/api/shuffle_transaction", + bytes.NewBuffer(jsonBody), + "application/json", + ) +} + +func (tc *TeeController) Decrypt(from, to, amount string) ([]byte, int, error) { + client, err := tc.createProxyClient() + if err != nil { + return nil, http.StatusInternalServerError, err + } + + request := struct { + From string `json:"from"` + To string `json:"to"` + Amount string `json:"amount"` + }{ + From: from, + To: to, + Amount: amount, + } + + jsonBody, _ := json.Marshal(request) + return tc.sendRequest( + client, + "POST", + "http://10.77.110.184:8082/api/decrypt_transaction", + bytes.NewBuffer(jsonBody), + "application/json", + ) +} + +func (tc *TeeController) Encrypt(from, to string, amount string) (map[string]string, error) { + fromInt, err := strconv.Atoi(from) + if err != nil { + return nil, fmt.Errorf("无效的 from: %v", err) + } + toInt, err := strconv.Atoi(to) + if err != nil { + return nil, fmt.Errorf("无效的 to: %v", err) + } + amountFloat, err := strconv.ParseFloat(amount, 64) + if err != nil { + return nil, fmt.Errorf("无效的 amount: %v", err) + } + + dataLittleEndian := map[string][]byte{ + "from": tc.intToBytesLittleEndian(fromInt), + "to": tc.intToBytesLittleEndian(toInt), + "amount": tc.floatToBytesLittleEndian(amountFloat), + } + + nHex := "922e9ebb9ede6554aadb495da961f38775c226259adf3bd18e00ddc5c099c40d8a714be8f6dbdcac72e1adb21675966a2f541c8f50a0a1ea3cf3d429134b699ddce0b675ee87ac1bc4adae441b0f00ae4fddd0e7b59b058a52357e37a65963f943f2706c678900e7bbb68d6b3eade4ad8ee2c73f3da5244e543f6a6082f2eb31a8c13200945c56980829d0ab9f00261655fc86fd25269f6748dc85b6d7debb03d00c392e04aafef09b41b87d0f1737f66a739d83717d7ef0c3040e10b9202c06b63bd5733626035f657de8dc3e581e237d5b3bbdaa46bde47a06883cf37166b328958217dbccc20c3807099b6a6c8b2dbdf94281a8ff0d29a4053a85572906ede8e141ae3ced4719e8f7fefcd9057435b1aa0e5e84e7a31cf126a84e00d8be983c3939704011174a1f6c2a6ad0808a17eadbc312570a69ee662631a0441bd5eaa96bb9693587cb351015ba1eed3cecf872243ecd822764128ebb338e03a883df35912e75aafb39052d2ecddc2df1270561f7624f7b7aef3dae05a64a7385e99d" + e := 65537 + + n, err := tc.hexToBytes(nHex) + if err != nil { + return nil, fmt.Errorf("Error converting hex to bytes: %v", err) + } + + publicKey := &rsa.PublicKey{ + N: new(big.Int).SetBytes(n), + E: e, + } + + encryptedData := make(map[string]string) + for key, value := range dataLittleEndian { + encrypted, err := tc.rsaEncrypt(publicKey, value) + if err != nil { + return nil, fmt.Errorf("Error encrypting data: %v", err) + } + encryptedData[key] = encrypted + } + + return encryptedData, nil +} + +// 辅助方法 +func (tc *TeeController) hexToBytes(hexStr string) ([]byte, error) { + return hex.DecodeString(hexStr) +} + +func (tc *TeeController) rsaEncrypt(publicKey *rsa.PublicKey, plaintext []byte) (string, error) { + cipherText, err := rsa.EncryptOAEP(sha256.New(), rand.Reader, publicKey, plaintext, nil) + if err != nil { + return "", err + } + return hex.EncodeToString(cipherText), nil +} + +func (tc *TeeController) intToBytesLittleEndian(n int) []byte { + buf := new(bytes.Buffer) + err := binary.Write(buf, binary.LittleEndian, int32(n)) + if err != nil { + log.Fatal(err) + } + return buf.Bytes() +} + +func (tc *TeeController) floatToBytesLittleEndian(f float64) []byte { + buf := new(bytes.Buffer) + err := binary.Write(buf, binary.LittleEndian, f) + if err != nil { + log.Fatal(err) + } + return buf.Bytes() +} + +func (tc *TeeController) GetEncryptedTransaction(id string) ([]byte, int, error) { + client, err := tc.createProxyClient() + if err != nil { + return nil, http.StatusInternalServerError, err + } + + return tc.sendRequest( + client, + "POST", + "http://10.77.110.184:38080/getfile", + bytes.NewBuffer([]byte(fmt.Sprintf(`{"id": "%s"}`, id))), + "application/json", + ) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/transaction.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/transaction.go new file mode 100644 index 000000000..ce3fd987b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/transaction.go @@ -0,0 +1,560 @@ +package controller + +import ( + "fmt" + "hufu/config" + "hufu/errors" + "hufu/model" + "hufu/utils" + "time" + + "gorm.io/gorm" +) + +const ( + TransactionStatusFailed = "failed" + TransactionStatusSuccess = "completed" +) + +const ProxyWalletCount = 3 + +// NormalTransfer 普通转账,不经过代理钱包 +func NormalTransfer(from *model.Wallet, to *model.Wallet, amount float64) (*model.Transaction, error) { + tx := model.DB.Begin() + defer func() { + if r := recover(); r != nil { + tx.Rollback() + } + }() + + originalTx, err := createOriginalTransaction(tx, from, to, amount) + if err != nil { + tx.Rollback() + return nil, err + } + + if err := updateWalletBalances(tx, from, to, amount); err != nil { + tx.Rollback() + return nil, err + } + + originalTx.Status = TransactionStatusSuccess + if err := tx.Save(originalTx).Error; err != nil { + tx.Rollback() + return nil, err + } + + return originalTx, tx.Commit().Error +} + +// ProxyTransfer 代理转账, 经过代理钱包 +func ProxyTransfer(from *model.Wallet, to *model.Wallet, amount float64) (*model.Transaction, error) { + tx := model.DB.Begin() + defer func() { + if r := recover(); r != nil { + tx.Rollback() + } + }() + + // 1. 创建并保存原始交易 + originalTx, err := createOriginalTransaction(tx, from, to, amount) + if err != nil { + tx.Rollback() + return nil, err + } + + // 2. 验证交易合规性 + if err := validateTransaction(tx, from, originalTx); err != nil { + // 如果是不合规的交易,直接提交事务并返回 + // 因为validateTransaction已经更新了交易状态并创建了异常记录 + if err := tx.Commit().Error; err != nil { + tx.Rollback() + return nil, err + } + return originalTx, nil + } + + // 3. 创建关联交易记录 + if err := createAssociatedTransactions(tx, originalTx); err != nil { + tx.Rollback() + return nil, err + } + + // 4. 更新钱包余额 + if err := updateWalletBalances(tx, from, to, amount); err != nil { + tx.Rollback() + return nil, err + } + + // 5. 完成交易 + if err := finalizeTransaction(tx, originalTx); err != nil { + tx.Rollback() + return nil, err + } + + return originalTx, tx.Commit().Error +} + +// GetTransferHistory 获取转账历史 +func GetTransferHistory(walletID uint, page, pageSize int) (*model.PageResult, error) { + var total int64 + + // 定义包含用户名的查询结果结构 + type TransactionWithUsername struct { + model.Transaction + FromUsername string `json:"from_username"` + ToUsername string `json:"to_username"` + } + + var transactions []TransactionWithUsername + offset := (page - 1) * pageSize + + // 获取总数 + if err := model.DB.Model(&model.Transaction{}). + Where("(from_wallet_id = ? OR to_wallet_id = ?) AND type = ?", + walletID, walletID, model.DirectTransaction). + Count(&total).Error; err != nil { + return nil, err + } + + // 使用JOIN查询获取用户名 + if err := model.DB.Table("transactions"). + Select("transactions.*, fw.username as from_username, tw.username as to_username"). + Joins("LEFT JOIN wallets fw ON transactions.from_wallet_id = fw.id"). + Joins("LEFT JOIN wallets tw ON transactions.to_wallet_id = tw.id"). + Where("(transactions.from_wallet_id = ? OR transactions.to_wallet_id = ?) AND transactions.type = ?", + walletID, walletID, model.DirectTransaction). + Limit(pageSize). + Offset(offset). + Order("transactions.created_at DESC"). + Find(&transactions).Error; err != nil { + return nil, err + } + + return &model.PageResult{ + List: transactions, + Total: total, + Page: page, + PageSize: pageSize, + }, nil +} + +// createOriginalTransaction 创建原始交易记录 +func createOriginalTransaction(tx *gorm.DB, from *model.Wallet, to *model.Wallet, amount float64) (*model.Transaction, error) { + originalTx := &model.Transaction{ + FromWalletID: from.ID, + ToWalletID: to.ID, + Amount: amount, + Type: model.DirectTransaction, + Status: "pending", + } + return originalTx, tx.Create(originalTx).Error +} + +// validateTransaction 验证交易合规性 +func validateTransaction(tx *gorm.DB, from *model.Wallet, originalTx *model.Transaction) error { + regulator := NewRegulator() + if err := regulator.CheckTransaction(originalTx, from); err != nil { + // 生成证据和签名 + evidence := fmt.Sprintf("Transaction ID: %d, From: %d, To: %d, Amount: %f, Time: %s, Error: %v", + originalTx.ID, originalTx.FromWalletID, originalTx.ToWalletID, + originalTx.Amount, time.Now().Format(time.RFC3339), err) + + // 使用监管者的私钥对证据进行签名 + signature, err := utils.SignData(config.GlobalConfig.Tee.PrivateKey, evidence) + if err != nil { + return err + } + + // 创建异常交易记录 + abnormal := &model.AbnormalTransaction{ + WalletID: from.ID, + TransactionID: originalTx.ID, + Evidence: evidence, + Signature: signature, + } + + if err := tx.Create(abnormal).Error; err != nil { + return err + } + + // 更新原始交易状态为失败 + originalTx.Status = TransactionStatusFailed + if err := tx.Save(originalTx).Error; err != nil { + return err + } + + return errors.ErrTransactionAmountTooLarge + } + return nil +} + +// createAssociatedTransactions 创建关联交易记录 +func createAssociatedTransactions(tx *gorm.DB, originalTx *model.Transaction) error { + // 创建加密交易记录 + encryptedTx, err := createEncryptedTransaction(originalTx) + if err != nil { + return err + } + if err := tx.Create(encryptedTx).Error; err != nil { + return err + } + + // 创建脱敏交易记录 + desensitizedTx := createDesensitizedTransaction(originalTx) + if err := tx.Create(desensitizedTx).Error; err != nil { + return err + } + + // 创建代交易记录 + proxyTxs, err := createProxyTransactions(originalTx, originalTx.Amount) + if err != nil { + return err + } + for _, proxyTx := range proxyTxs { + if err := tx.Create(proxyTx).Error; err != nil { + return err + } + } + return nil +} + +// updateWalletBalances 更新钱包余额 +func updateWalletBalances(tx *gorm.DB, from *model.Wallet, to *model.Wallet, amount float64) error { + if from.Balance < amount { + return errors.ErrInsufficientBalance + } + + from.Balance -= amount + to.Balance += amount + + if err := tx.Save(from).Error; err != nil { + return err + } + return tx.Save(to).Error +} + +// finalizeTransaction 完成交易 +func finalizeTransaction(tx *gorm.DB, originalTx *model.Transaction) error { + originalTx.Status = "completed" + return tx.Save(originalTx).Error +} + +// createProxyTransactions 创建代理交易记录 +func createProxyTransactions(originalTx *model.Transaction, amount float64) ([]*model.Transaction, error) { + // 获取代理钱包 + proxyWallets, err := GlobalWalletPool.GetRandomWallets(ProxyWalletCount) + if err != nil { + return nil, err + } + + // 拆分金额 + amounts := splitAmount(amount) + if len(amounts) != ProxyWalletCount { + return nil, fmt.Errorf("金额拆分数量与代理钱包数量不匹配") + } + + proxyTxs := make([]*model.Transaction, 0, ProxyWalletCount*2) + + // 1. 创建从原始钱包到代理钱包的交易 + for i, proxyWallet := range proxyWallets { + toProxyTx := &model.Transaction{ + FromWalletID: originalTx.FromWalletID, + ToWalletID: proxyWallet.ID, + Amount: amounts[i], + Type: model.ToProxyTransaction, + Status: "completed", + } + proxyTxs = append(proxyTxs, toProxyTx) + + // 2. 创建代理钱包到目标钱包的交易 + fromProxyTx := &model.Transaction{ + FromWalletID: proxyWallet.ID, + ToWalletID: originalTx.ToWalletID, + Amount: amounts[i], + Type: model.FromProxyTransaction, + Status: "completed", + } + proxyTxs = append(proxyTxs, fromProxyTx) + } + + return proxyTxs, nil +} + +// splitAmount 将金额拆分成多个小额 +func splitAmount(amount float64) []float64 { + // 这里实现金额拆分的逻辑 + // 示例:简单地将金额平均拆分为3份 + part := amount / 3 + return []float64{part, part, amount - 2*part} +} + +func createEncryptedTransaction(t *model.Transaction) (*model.EncryptedTransaction, error) { + // 从数据库读取公钥和私钥 + walletKey, err := GetWalletKeyByWalletID(t.FromWalletID) + if err != nil { + return nil, err + } + + // 加密交易 + encryptedFromWalletID, err := utils.RSAEncryptWithHexKey(fmt.Sprintf("%d", t.FromWalletID), walletKey.PublicKey) + if err != nil { + return nil, err + } + + encryptedToWalletID, err := utils.RSAEncryptWithHexKey(fmt.Sprintf("%d", t.ToWalletID), walletKey.PublicKey) + if err != nil { + return nil, err + } + + encryptedAmount, err := utils.RSAEncryptWithHexKey(fmt.Sprintf("%f", t.Amount), walletKey.PublicKey) + if err != nil { + return nil, err + } + + return &model.EncryptedTransaction{ + TransactionID: t.ID, + EncryptedFromWalletID: encryptedFromWalletID, + EncryptedToWalletID: encryptedToWalletID, + EncryptedAmount: encryptedAmount, + }, nil +} + +// TODO: 脱敏金额和时间范围需要根据实际情况进行调整 +func createDesensitizedTransaction(t *model.Transaction) *model.DesensitizedTransaction { + return &model.DesensitizedTransaction{ + FromWalletID: t.FromWalletID, + ToWalletID: t.ToWalletID, + AmountRange: fmt.Sprintf("%f-%f", t.Amount-10, t.Amount+10), + TimeRange: fmt.Sprintf("%d-%d", t.CreatedAt.Unix()-10, t.CreatedAt.Unix()+10), + } +} + +// GetEncryptedTransaction 获取加密交易信息 +func GetEncryptedTransaction(walletID uint, privateKey string) ([]*model.Transaction, error) { + walletKey, err := GetWalletKeyByWalletID(walletID) + if err != nil { + return nil, err + } + + if walletKey.PrivateKey != privateKey { + return nil, errors.ErrPrivateKeyInvalid + } + + // 从数据库读取 + var txs []*model.Transaction + if err := model.DB.Where("from_wallet_id = ? OR to_wallet_id = ?", walletID, walletID).Find(&txs).Error; err != nil { + return nil, err + } + + res := make([]*model.Transaction, 0) + for _, tx := range txs { + if tx.Type == model.DirectTransaction { + res = append(res, tx) + } + } + + return res, nil +} + +// GetDesensitizedTransaction 获取脱敏交易记录 +func GetDesensitizedTransaction(walletID uint) ([]*model.DesensitizedTransaction, error) { + var txs []*model.DesensitizedTransaction + if err := model.DB.Where("from_wallet_id = ? OR to_wallet_id = ?", walletID, walletID).Find(&txs).Error; err != nil { + return nil, err + } + return txs, nil +} + +// GetReceivedTransactions 获取收款记录 +func GetReceivedTransactions(walletID uint) ([]*model.Transaction, error) { + var transactions []*model.Transaction + + // 直接查询所有已完成的收款记录 + if err := model.DB.Where("to_wallet_id = ? AND status = ?", + walletID, + "completed"). + Find(&transactions).Error; err != nil { + return nil, err + } + + return transactions, nil +} + +// TransactionStats 交易统计信息 +type TransactionStats struct { + TotalAmount float64 `json:"total_amount"` // 总收入 + TodayAmount float64 `json:"today_amount"` // 今日收入 + WeekAmount float64 `json:"week_amount"` // 本周收入 + MonthAmount float64 `json:"month_amount"` // 本月收入 +} + +// GetTransactionStats 获取交易统计信息 +func GetTransactionStats(walletID uint) (*TransactionStats, error) { + var stats TransactionStats + + // 获取时间范围 + now := time.Now() + + // 今天开始时间(0点) + todayStart := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location()) + + // 本周开始时间 + offset := int(time.Monday - now.Weekday()) + if offset > 0 { + offset = -6 + } + weekStart := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location()).AddDate(0, 0, offset) + + // 本月开始时间(修正:使用当前月份的第一天) + monthStart := time.Date(now.Year(), now.Month(), 1, 0, 0, 0, 0, now.Location()) + + // 查询所有的交易 + var txs []*model.Transaction + if err := model.DB.Where("to_wallet_id = ? AND type = ? AND status = ?", + walletID, model.DirectTransaction, "completed").Find(&txs).Error; err != nil { + return nil, err + } + + // 计算总收入 + for _, tx := range txs { + stats.TotalAmount += tx.Amount + } + + // 计算今日收入 + for _, tx := range txs { + if tx.CreatedAt.After(todayStart) { + stats.TodayAmount += tx.Amount + } + } + + // 计算本周收入 + for _, tx := range txs { + if tx.CreatedAt.After(weekStart) { + stats.WeekAmount += tx.Amount + } + } + + // 计算本月收入 + nextMonth := time.Date(now.Year(), now.Month()+1, 1, 0, 0, 0, 0, now.Location()) + for _, tx := range txs { + if tx.CreatedAt.After(monthStart) && tx.CreatedAt.Before(nextMonth) { + stats.MonthAmount += tx.Amount + } + } + + return &stats, nil +} + +// TransactionData 交易数据结构 +type TransactionData struct { + Date string `json:"date"` + Income float64 `json:"income"` // 收入 + Expense float64 `json:"expense"` // 支出 +} + +// TransactionTrend 交易趋势数据 +type TransactionTrend struct { + WeeklyData []TransactionData `json:"weeklyData"` + MonthlyData []TransactionData `json:"monthlyData"` +} + +// GetTrend 获取收支趋势 +func GetTrend(walletID uint) (*TransactionTrend, error) { + now := time.Now() + + monthlyData, err := getMonthlyData(walletID, now) + if err != nil { + return nil, err + } + + weeklyData, err := getWeeklyData(walletID, now) + if err != nil { + return nil, err + } + + return &TransactionTrend{ + WeeklyData: weeklyData, + MonthlyData: monthlyData, + }, nil +} + +// getMonthlyData 获取月度收支数据(最近30天) +func getMonthlyData(walletID uint, now time.Time) ([]TransactionData, error) { + var result []TransactionData + + // 获取最近30天的数据 + for i := 29; i >= 0; i-- { + currentDay := now.AddDate(0, 0, -i) + dayStart := time.Date(currentDay.Year(), currentDay.Month(), currentDay.Day(), 0, 0, 0, 0, now.Location()) + dayEnd := dayStart.AddDate(0, 0, 1) + + // 查询收入 + var income float64 + if err := model.DB.Model(&model.Transaction{}). + Select("COALESCE(SUM(amount), 0) as amount"). + Where("to_wallet_id = ? AND status = ? AND created_at >= ? AND created_at < ?", + walletID, "completed", dayStart, dayEnd). + Scan(&income).Error; err != nil { + return nil, err + } + + // 查询支出 + var expense float64 + if err := model.DB.Model(&model.Transaction{}). + Select("COALESCE(SUM(amount), 0) as amount"). + Where("from_wallet_id = ? AND status = ? AND created_at >= ? AND created_at < ?", + walletID, "completed", dayStart, dayEnd). + Scan(&expense).Error; err != nil { + return nil, err + } + + result = append(result, TransactionData{ + Date: dayStart.Format("01-02"), + Income: income, + Expense: expense, + }) + } + + return result, nil +} + +// getWeeklyData 获取周收支数据(最近7天) +func getWeeklyData(walletID uint, now time.Time) ([]TransactionData, error) { + var result []TransactionData + + // 获取最近7天的数据 + for i := 6; i >= 0; i-- { + currentDay := now.AddDate(0, 0, -i) + dayStart := time.Date(currentDay.Year(), currentDay.Month(), currentDay.Day(), 0, 0, 0, 0, now.Location()) + dayEnd := dayStart.AddDate(0, 0, 1) + + // 查询收入 + var income float64 + if err := model.DB.Model(&model.Transaction{}). + Select("COALESCE(SUM(amount), 0) as amount"). + Where("to_wallet_id = ? AND status = ? AND created_at >= ? AND created_at < ?", + walletID, "completed", dayStart, dayEnd). + Scan(&income).Error; err != nil { + return nil, err + } + + // 查询支出 + var expense float64 + if err := model.DB.Model(&model.Transaction{}). + Select("COALESCE(SUM(amount), 0) as amount"). + Where("from_wallet_id = ? AND status = ? AND created_at >= ? AND created_at < ?", + walletID, "completed", dayStart, dayEnd). + Scan(&expense).Error; err != nil { + return nil, err + } + + result = append(result, TransactionData{ + Date: dayStart.Format("01-02"), + Income: income, + Expense: expense, + }) + } + + return result, nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/wallet.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/wallet.go new file mode 100644 index 000000000..e1fd3f469 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/controller/wallet.go @@ -0,0 +1,130 @@ +package controller + +import ( + "fmt" + "hufu/model" + "hufu/utils" + "time" +) + +type WalletStats struct { + TodayTransactions int64 `json:"today_transactions"` // 今日交易次数 + TotalTransactions int64 `json:"total_transactions"` // 总交易次数 +} + +func NewWallet(walletName, username string, balance float64) (*model.Wallet, error) { + w := &model.Wallet{ + WalletName: walletName, + Username: username, + Balance: balance, + } + + // 统计id数量 + var count int64 + if err := model.DB.Model(&model.Wallet{}).Count(&count).Error; err != nil { + return nil, err + } + + privateKey, publicKey := utils.GenerateRSAKey(int(count + 1)) + if privateKey == "" || publicKey == "" { + return nil, fmt.Errorf("failed to generate RSA key") + } + + if err := model.DB.Create(w).Error; err != nil { + return nil, err + } + + walletKey := &model.WalletKey{ + WalletID: w.ID, + PublicKey: publicKey, + PrivateKey: privateKey, + } + if err := model.DB.Create(walletKey).Error; err != nil { + return nil, err + } + + return w, nil +} + +func GetWalletByWalletName(walletName string) (*model.Wallet, error) { + var w model.Wallet + if err := model.DB.Where("wallet_name = ?", walletName).First(&w).Error; err != nil { + return nil, err + } + return &w, nil +} + +func GetWalletByUsername(username string) (*model.Wallet, error) { + var w model.Wallet + if err := model.DB.Where("username = ?", username).First(&w).Error; err != nil { + return nil, err + } + return &w, nil +} + +func GetWalletByID(ID uint) (*model.Wallet, error) { + var w model.Wallet + if err := model.DB.Where("id = ?", ID).First(&w).Error; err != nil { + return nil, err + } + return &w, nil +} + +func SetWalletBalance(ID uint, balance float64) error { + return model.DB.Model(&model.Wallet{}).Where("id = ?", ID).Update("balance", balance).Error +} + +func GetWalletKeyByWalletID(walletID uint) (*model.WalletKey, error) { + var wk model.WalletKey + if err := model.DB.Where("wallet_id = ?", walletID).First(&wk).Error; err != nil { + return nil, err + } + return &wk, nil +} + +// UpdateWallet 更新钱包信息 +func UpdateWallet(walletID uint, name string, balance float64) error { + // 首先检查钱包是否存在 + wallet, err := GetWalletByID(walletID) + if err != nil { + return fmt.Errorf("wallet not found: %v", err) + } + + // 更新钱包信息 + wallet.WalletName = name + wallet.Balance = balance + + // 保存更新 + if err := model.DB.Save(wallet).Error; err != nil { + return fmt.Errorf("update wallet failed: %v", err) + } + + return nil +} + +func GetWalletStats(walletID uint) (*WalletStats, error) { + // 获取今天的开始时间(零点) + now := time.Now() + todayStart := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location()) + + var todayCount int64 + if err := model.DB.Model(&model.Transaction{}). + Where("(from_wallet_id = ? OR to_wallet_id = ?) AND created_at >= ? AND type = ?", + walletID, walletID, todayStart, model.DirectTransaction). + Count(&todayCount).Error; err != nil { + return nil, err + } + + var totalCount int64 + if err := model.DB.Model(&model.Transaction{}). + Where("(from_wallet_id = ? OR to_wallet_id = ?) AND type = ?", + walletID, walletID, model.DirectTransaction). + Count(&totalCount).Error; err != nil { + return nil, err + } + + return &WalletStats{ + TodayTransactions: todayCount, + TotalTransactions: totalCount, + }, nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/db.md b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/db.md new file mode 100644 index 000000000..58e398474 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/db.md @@ -0,0 +1,143 @@ +# 数据库设计文档 + +## 1. 钱包相关表 + +### Wallet (钱包表) +| 字段名 | 类型 | 必填 | 默认值 | 描述 | +|-------|------|------|--------|------| +| id | uint | 是 | 自增 | 主键ID | +| created_at | datetime | 是 | - | 创建时间 | +| updated_at | datetime | 是 | - | 更新时间 | +| deleted_at | datetime | 否 | null | 删除时间 | +| username | varchar(100) | 是 | - | 用户名 | +| wallet_name | varchar(100) | 是 | - | 钱包名称 | +| balance | decimal(20,8) | 是 | 0 | 钱包余额 | + +### WalletKey (钱包密钥表) +| 字段名 | 类型 | 必填 | 默认值 | 描述 | +|-------|------|------|--------|------| +| id | uint | 是 | 自增 | 主键ID | +| created_at | datetime | 是 | - | 创建时间 | +| updated_at | datetime | 是 | - | 更新时间 | +| deleted_at | datetime | 否 | null | 删除时间 | +| wallet_id | int | 是 | - | 关联的钱包ID | +| public_key | varchar(1024) | 是 | - | 公钥 | +| private_key | varchar(1024) | 是 | - | 私钥 | + +## 2. 交易相关表 + +### Transaction (交易记录表) +| 字段名 | 类型 | 必填 | 默认值 | 描述 | +|-------|------|------|--------|------| +| id | uint | 是 | 自增 | 主键ID | +| created_at | datetime | 是 | - | 创建时间 | +| updated_at | datetime | 是 | - | 更新时间 | +| deleted_at | datetime | 否 | null | 删除时间 | +| from_wallet_id | int | 是 | - | 转出钱包ID | +| to_wallet_id | int | 是 | - | 转入钱包ID | +| amount | decimal(20,8) | 是 | - | 交易金额 | +| status | varchar(20) | 是 | pending | 交易状态(pending/completed/failed) | +| type | varchar(20) | 是 | - | 交易类型(direct/to_proxy/from_proxy) | + +### EncryptedTransaction (加密交易表) +| 字段名 | 类型 | 必填 | 默认值 | 描述 | +|-------|------|------|--------|------| +| id | uint | 是 | 自增 | 主键ID | +| created_at | datetime | 是 | - | 创建时间 | +| updated_at | datetime | 是 | - | 更新时间 | +| deleted_at | datetime | 否 | null | 删除时间 | +| transaction_id | int | 是 | - | 关联的交易ID | +| encrypted_from_wallet_id | varchar(255) | 是 | - | 加密后的转出钱包ID | +| encrypted_to_wallet_id | varchar(255) | 是 | - | 加密后的转入钱包ID | +| encrypted_amount | varchar(255) | 是 | - | 加密后的交易金额 | + +### DesensitizedTransaction (脱敏交易表) +| 字段名 | 类型 | 必填 | 默认值 | 描述 | +|-------|------|------|--------|------| +| id | uint | 是 | 自增 | 主键ID | +| created_at | datetime | 是 | - | 创建时间 | +| updated_at | datetime | 是 | - | 更新时间 | +| deleted_at | datetime | 否 | null | 删除时间 | +| transaction_id | int | 是 | - | 关联的交易ID | +| from_wallet_id | int | 是 | - | 转出钱包ID | +| to_wallet_id | int | 是 | - | 转入钱包ID | +| amount_range | varchar(255) | 是 | - | 交易金额范围 | +| time_range | varchar(255) | 是 | - | 交易时间范围 | + +### AbnormalTransaction (异常交易表) +| 字段名 | 类型 | 必填 | 默认值 | 描述 | +|-------|------|------|--------|------| +| id | uint | 是 | 自增 | 主键ID | +| created_at | datetime | 是 | - | 创建时间 | +| updated_at | datetime | 是 | - | 更新时间 | +| deleted_at | datetime | 否 | null | 删除时间 | +| wallet_id | int | 是 | - | 相关钱包ID | +| transaction_id | int | 是 | - | 异常交易ID | +| evidence | text | 是 | - | 异常证据内容 | +| signature | text | 是 | - | 监管者签名 | + +## 3. 发票相关表 + +### Invoice (发票表) +| 字段名 | 类型 | 必填 | 默认值 | 描述 | +|-------|------|------|--------|------| +| id | uint | 是 | 自增 | 主键ID | +| created_at | datetime | 是 | - | 创建时间 | +| updated_at | datetime | 是 | - | 更新时间 | +| deleted_at | datetime | 否 | null | 删除时间 | +| invoice_id | varchar(255) | 是 | - | 发票编号 | +| issue_date | varchar(255) | 是 | - | 开票日期 | +| seller_name | varchar(255) | 是 | - | 卖方名称 | +| seller_tax_id | varchar(255) | 是 | - | 卖方税号 | +| item_name | varchar(255) | 是 | - | 项目名称 | +| unit_price | decimal | 是 | - | 单价 | +| quantity | int | 是 | - | 数量 | +| amount | decimal | 是 | - | 金额 | +| tax_rate | decimal | 是 | - | 税率 | +| tax_amount | decimal | 是 | - | 税额 | +| total_amount | decimal | 是 | - | 合计金额 | +| invoice_status | varchar(255) | 是 | - | 发票状态 | +| remarks | varchar(255) | 否 | - | 备注 | +| invoice_type | varchar(255) | 是 | - | 发票类型 | + +## 4. 分页相关结构 + +### PageInfo (分页请求参数) +| 字段名 | 类型 | 描述 | +|-------|------|------| +| page | int | 页码 | +| page_size | int | 每页数量 | + +### PageResult (分页返回结果) +| 字段名 | 类型 | 描述 | +|-------|------|------| +| list | interface{} | 数据列表 | +| total | int64 | 总数 | +| page | int | 当前页码 | +| page_size | int | 每页数量 | + +## 5. 表关系说明 + +1. Wallet 与 WalletKey 是一对一关系,通过 wallet_id 关联 +2. Transaction 与 EncryptedTransaction 是一对一关系,通过 transaction_id 关联 +3. Transaction 与 DesensitizedTransaction 是一对一关系,通过 transaction_id 关联 +4. Transaction 与 AbnormalTransaction 是一对一关系,通过 transaction_id 关联 +5. Transaction 表中的 from_wallet_id 和 to_wallet_id 都关联到 Wallet 表的 id + +## 6. 字段说明补充 + +### 交易状态(status)说明 +- pending: 交易待处理 +- completed: 交易已完成 +- failed: 交易失败 + +### 交易类型(type)说明 +- direct: 直接交易 +- to_proxy: 转入代理钱包 +- from_proxy: 代理钱包转出 + +### 安全性说明 +1. WalletKey 表存储了敏感的密钥信息,需要采取额外的加密措施 +2. EncryptedTransaction 表用于存储加密后的交易信息,保护交易隐私 +3. DesensitizedTransaction 表用于存储脱敏后的交易信息,用于数据分析 +4. AbnormalTransaction 表用于记录异常交易,包含证据和监管者签名 \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/docs b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/docs new file mode 160000 index 000000000..fd1eef595 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/docs @@ -0,0 +1 @@ +Subproject commit fd1eef59543a0b708560e733658aa4f29865616b diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/errors/errors.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/errors/errors.go new file mode 100644 index 000000000..8eed1b262 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/errors/errors.go @@ -0,0 +1,31 @@ +package errors + +import "fmt" + +// 定义错误类型 +type HufuError struct { + Code int + Message string +} + +func (e *HufuError) Error() string { + return fmt.Sprintf("错误码: %d, 错误信息: %s", e.Code, e.Message) +} + +var ( + ErrInsufficientBalance = &HufuError{Code: 1001, Message: "余额不足"} + ErrWalletNotFound = &HufuError{Code: 1002, Message: "钱包未找到"} + ErrTransferFailed = &HufuError{Code: 1003, Message: "转账失败"} + ErrNoProxyWallets = &HufuError{Code: 1004, Message: "没有可用的代理钱包"} + ErrPrivateKeyNotFound = &HufuError{Code: 1005, Message: "私钥未找到"} + ErrPrivateKeyInvalid = &HufuError{Code: 1006, Message: "私钥无效"} + ErrPrivateKeyApply = &HufuError{Code: 1007, Message: "私钥申请失败"} + ErrTransactionAmountTooLarge = &HufuError{Code: 1008, Message: "交易金额过大"} +) + +func NewHufuError(code int, message string) *HufuError { + return &HufuError{ + Code: code, + Message: message, + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/evidence/wallet-12-20241115020658-success.txt b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/evidence/wallet-12-20241115020658-success.txt new file mode 100644 index 000000000..1e2287394 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/evidence/wallet-12-20241115020658-success.txt @@ -0,0 +1,8 @@ +异常交易记录 +------------------------ +创建时间: 2024-11-15 02:06:02 +钱包序号: 12 +交易序号: 5 +异常证据: Transaction ID: 5, From: 12, To: 11, Amount: 199999.000000, Time: 2024-11-15T02:06:02Z, Error: Amount exceeds the maximum allowed for a single transaction. +监管签名: 078fb81ca4477147ea5137c6d4ef3d89a0869f3ca0ea03f36c8d37f2a9a08823a7356ff94222df7948066f432db6fb837c6decbadb759264b50afd361c678a43 +------------------------ \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/evidence/wallet-12-20241115071644-success.txt b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/evidence/wallet-12-20241115071644-success.txt new file mode 100644 index 000000000..aebafd1f2 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/evidence/wallet-12-20241115071644-success.txt @@ -0,0 +1,8 @@ +异常交易记录 +------------------------ +创建时间: 2024-11-15 07:16:12 +钱包序号: 12 +交易序号: 6 +异常证据: Transaction ID: 6, From: 12, To: 11, Amount: 199999.000000, Time: 2024-11-15T07:16:12Z, Error: Amount exceeds the maximum allowed for a single transaction. +监管签名: 51f7517b586ef3e95c22e074672eddb7e8de770377342a8bd8fc47084ae52fe10554951c2cf952ce1f8733fad38440c8888ace601772ee6a750a7864891179d7 +------------------------ \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/go.mod b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/go.mod new file mode 100644 index 000000000..93c3f20d3 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/go.mod @@ -0,0 +1,71 @@ +module hufu + +go 1.23.1 + +require ( + github.com/SSSaaS/sssa-golang v0.0.0-20170502204618-d37d7782d752 + github.com/ethereum/go-ethereum v1.14.11 + github.com/gin-contrib/cors v1.7.2 + gorm.io/driver/mysql v1.5.7 + gorm.io/gorm v1.25.12 +) + +require ( + github.com/FISCO-BCOS/bcos-c-sdk v0.0.0-20240726021820-a278b4749e34 // indirect + github.com/FISCO-BCOS/crypto v0.0.0-20200202032121-bd8ab0b5d4f1 // indirect + github.com/TarsCloud/TarsGo v1.4.5 // indirect + github.com/bits-and-blooms/bitset v1.13.0 // indirect + github.com/bytedance/sonic v1.11.6 // indirect + github.com/bytedance/sonic/loader v0.1.1 // indirect + github.com/cloudwego/base64x v0.1.4 // indirect + github.com/cloudwego/iasm v0.2.0 // indirect + github.com/consensys/bavard v0.1.13 // indirect + github.com/consensys/gnark-crypto v0.12.1 // indirect + github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect + github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect + github.com/deckarep/golang-set/v2 v2.6.0 // indirect + github.com/ethereum/c-kzg-4844 v1.0.0 // indirect + github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.3 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.20.0 // indirect + github.com/goccy/go-json v0.10.2 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/cpuid/v2 v2.2.7 // indirect + github.com/leodido/go-urn v1.4.0 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mmcloughlin/addchain v0.4.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/patrickmn/go-cache v2.1.0+incompatible // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect + github.com/supranational/blst v0.3.13 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.2.12 // indirect + golang.org/x/arch v0.8.0 // indirect + golang.org/x/net v0.25.0 // indirect + golang.org/x/sync v0.7.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + rsc.io/tmplfunc v0.0.3 // indirect +) + +require ( + github.com/FISCO-BCOS/go-sdk/v3 v3.0.2 + github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect + github.com/gin-gonic/gin v1.10.0 + github.com/go-sql-driver/mysql v1.7.0 // indirect + github.com/holiman/uint256 v1.3.1 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + golang.org/x/crypto v0.23.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/text v0.15.0 // indirect +) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/go.sum b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/go.sum new file mode 100644 index 000000000..b9438ca64 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/go.sum @@ -0,0 +1,251 @@ +github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= +github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= +github.com/FISCO-BCOS/bcos-c-sdk v0.0.0-20240726021820-a278b4749e34 h1:4YqD9AkbNjGw83vZzVOc4cLGBaiSNs7DppbpPDNurm8= +github.com/FISCO-BCOS/bcos-c-sdk v0.0.0-20240726021820-a278b4749e34/go.mod h1:n2KxbYa73MW3xdLVu2vpPpoblZMms+CwPmvFkubO9xM= +github.com/FISCO-BCOS/crypto v0.0.0-20200202032121-bd8ab0b5d4f1 h1:ThPht4qK10+cMZC5COIjHPq0INm5HAMVYqrez5zEgFI= +github.com/FISCO-BCOS/crypto v0.0.0-20200202032121-bd8ab0b5d4f1/go.mod h1:UrLdwsFrjiaCsvdcPLcH6B7s/FUmym3qfM93u2ziR+4= +github.com/FISCO-BCOS/go-sdk/v3 v3.0.2 h1:GvRTyudvHLeLlej4wv1uh+E/8Yyp0EHWBI7Qi2vcK/0= +github.com/FISCO-BCOS/go-sdk/v3 v3.0.2/go.mod h1:+I/+xu+rvrhUe0C1p9xh978ODtkYll5A9OV5HiFEnhg= +github.com/SSSaaS/sssa-golang v0.0.0-20170502204618-d37d7782d752 h1:NMpC6M+PtNNDYpq7ozB7kINpv10L5yeli5GJpka2PX8= +github.com/SSSaaS/sssa-golang v0.0.0-20170502204618-d37d7782d752/go.mod h1:PbJ8S5YaSYAvDPTiEuUsBHQwTUlPs6VM+Av8Oi3v570= +github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= +github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= +github.com/TarsCloud/TarsGo v1.4.5 h1:AeOILCND6p35Swnu8MRHVLWqcjzJ+M6aKi6UIfsemNM= +github.com/TarsCloud/TarsGo v1.4.5/go.mod h1:fQITmq34rZnC0bz+KbQcHGdQUijzcmVtowXlic33jSk= +github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= +github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE= +github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= +github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 h1:59Kx4K6lzOW5w6nFlA0v5+lk/6sjybR934QNHSJZPTQ= +github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/bytedance/sonic v1.11.6 h1:oUp34TzMlL+OY1OUWxHqsdkgC/Zfc85zGqw9siXjrc0= +github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4= +github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= +github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= +github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA= +github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= +github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= +github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= +github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= +github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= +github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= +github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= +github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= +github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-ethereum v1.14.11 h1:8nFDCUUE67rPc6AKxFj7JKaOa2W/W1Rse3oS6LvvxEY= +github.com/ethereum/go-ethereum v1.14.11/go.mod h1:+l/fr42Mma+xBnhefL/+z11/hcmJ2egl+ScIVPjhc7E= +github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 h1:8NfxH2iXvJ60YRB8ChToFTUzl8awsc3cJ8CbLjGIl/A= +github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= +github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/gin-contrib/cors v1.7.2 h1:oLDHxdg8W/XDoN/8zamqk/Drgt4oVZDvaV0YmvVICQw= +github.com/gin-contrib/cors v1.7.2/go.mod h1:SUJVARKgQ40dmrzgXEVxj2m7Ig1v1qIboQkPDTQ9t2E= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU= +github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.20.0 h1:K9ISHbSaI0lyB2eWMPJo+kOS/FBExVwjEviJTixqxL8= +github.com/go-playground/validator/v10 v10.20.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= +github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= +github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/holiman/uint256 v1.3.1 h1:JfTzmih28bittyHM8z360dCjIA9dbPIBlcTI6lmctQs= +github.com/holiman/uint256 v1.3.1/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4= +github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= +github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= +github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= +github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= +github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= +github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= +github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= +github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= +github.com/prometheus/client_golang v1.12.0 h1:C+UIj/QWtmqY13Arb8kwMt5j34/0Z2iKamrJ+ryC0Gg= +github.com/prometheus/client_golang v1.12.0/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_model v0.2.1-0.20210607210712-147c58e9608a h1:CmF68hwI0XsOQ5UwlBopMi2Ow4Pbg32akc4KIVCOm+Y= +github.com/prometheus/client_model v0.2.1-0.20210607210712-147c58e9608a/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= +github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/supranational/blst v0.3.13 h1:AYeSxdOMacwu7FBmpfloBz5pbFXDmJL33RuwnKtmTjk= +github.com/supranational/blst v0.3.13/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= +github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +go.uber.org/automaxprocs v1.5.2/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc= +golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/exp v0.0.0-20240119083558-1b970713d09a h1:Q8/wZp0KX97QFTc2ywcOE0YRjZPVIx+MXInMzdvQqcA= +golang.org/x/exp v0.0.0-20240119083558-1b970713d09a/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/mysql v1.5.7 h1:MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo= +gorm.io/driver/mysql v1.5.7/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM= +gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8= +gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= +rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= +rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/common.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/common.go new file mode 100644 index 000000000..8ee3d0e70 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/common.go @@ -0,0 +1,44 @@ +package handler + +import ( + "encoding/json" + "hufu/config" + "hufu/utils" + + "github.com/gin-gonic/gin" +) + +// GetEncryptionKeys 获取加密密钥的处理函数 +func GetEncryptionKeys(c *gin.Context) { + c.JSON(200, gin.H{ + "public_key": config.GlobalConfig.Tee.PublicKey, + }) +} + +func EncryptData(c *gin.Context) { + type Request struct { + FromWalletID uint `json:"from_wallet_id"` + ToWalletID uint `json:"to_wallet_id"` + Amount int `json:"amount"` + } + + var request Request + if err := c.ShouldBindJSON(&request); err != nil { + c.JSON(400, gin.H{"error": err.Error()}) + return + } + + data, err := json.Marshal(request) + if err != nil { + c.JSON(500, gin.H{"error": err.Error()}) + return + } + + encryptedData, err := utils.RSAEncryptWithHexKey(string(data), config.GlobalConfig.Tee.PublicKey) + if err != nil { + c.JSON(500, gin.H{"error": err.Error()}) + return + } + + c.JSON(200, gin.H{"data": encryptedData}) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/invoice.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/invoice.go new file mode 100644 index 000000000..925e04cf7 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/invoice.go @@ -0,0 +1,208 @@ +package handler + +import ( + "net/http" + + "hufu/model" + "hufu/utils" + + "github.com/gin-gonic/gin" +) + +// CreateInvoice 创建发票 +func CreateInvoice(c *gin.Context) { + var invoice model.Invoice + if err := c.ShouldBindJSON(&invoice); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "无效的请求数据"}) + return + } + + // 创建发票记录 + invoice.InvoiceID = utils.GenerateRandomNumber(20) + if err := model.DB.Create(&invoice).Error; err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "创建发票失败"}) + return + } + + c.JSON(http.StatusOK, gin.H{"data": invoice}) +} + +// GetInvoice 获取单张发票 +func GetInvoice(c *gin.Context) { + invoiceID := c.Param("id") + var invoice model.Invoice + + if err := model.DB.First(&invoice, "invoice_id = ?", invoiceID).Error; err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "发票不存在"}) + return + } + + c.JSON(http.StatusOK, gin.H{"data": invoice}) +} + +// ListInvoices 获取发票列表 +func ListInvoices(c *gin.Context) { + var pageInfo model.PageInfo + if err := c.ShouldBindQuery(&pageInfo); err != nil { + pageInfo.Page = 1 + pageInfo.PageSize = 10 + } + + var invoices []model.Invoice + var total int64 + + // 获取总数 + model.DB.Model(&model.Invoice{}).Count(&total) + + // 分页查询 + offset := (pageInfo.Page - 1) * pageInfo.PageSize + result := model.DB.Offset(offset).Limit(pageInfo.PageSize).Find(&invoices) + if result.Error != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "获取发票列表失败"}) + return + } + + c.JSON(http.StatusOK, gin.H{ + "data": model.PageResult{ + List: invoices, + Total: total, + Page: pageInfo.Page, + PageSize: pageInfo.PageSize, + }, + }) +} + +// UpdateInvoice 更新发票信息 +func UpdateInvoice(c *gin.Context) { + invoiceID := c.Param("id") + var invoice model.Invoice + + // 检查发票是否存在 + if err := model.DB.First(&invoice, "invoice_id = ?", invoiceID).Error; err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "发票不存在"}) + return + } + + // 绑定更新数据 + var updateData model.Invoice + if err := c.ShouldBindJSON(&updateData); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "无效的请求数据"}) + return + } + + // 更新发票信息 + if err := model.DB.Model(&invoice).Updates(updateData).Error; err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "更新发票失败"}) + return + } + + c.JSON(http.StatusOK, gin.H{"data": invoice}) +} + +// CancelInvoice 作废发票 +func CancelInvoice(c *gin.Context) { + invoiceID := c.Param("id") + var invoice model.Invoice + + if err := model.DB.First(&invoice, "invoice_id = ?", invoiceID).Error; err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "发票不存在"}) + return + } + + // 更新发票状态为作废 + if err := model.DB.Model(&invoice).Update("invoice_status", "已作废").Error; err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "作废发票失败"}) + return + } + + c.JSON(http.StatusOK, gin.H{"message": "发票已作废"}) +} + +// GetInvoiceStats 获取发票统计 +func GetInvoiceStats(c *gin.Context) { + var stats struct { + TotalCount int64 `json:"total_count"` + TotalAmount float64 `json:"total_amount"` + CancelledCount int64 `json:"cancelled_count"` + } + + // 统计总发票数和总金额 + model.DB.Model(&model.Invoice{}).Count(&stats.TotalCount) + model.DB.Model(&model.Invoice{}).Select("COALESCE(SUM(total_amount), 0)").Scan(&stats.TotalAmount) + model.DB.Model(&model.Invoice{}).Where("invoice_status = ?", "已作废").Count(&stats.CancelledCount) + + c.JSON(http.StatusOK, gin.H{"data": stats}) +} + +// VerifyInvoice 验证发票 +func VerifyInvoice(c *gin.Context) { + invoiceID := c.Param("id") + var invoice model.Invoice + + if err := model.DB.First(&invoice, "invoice_id = ?", invoiceID).Error; err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "发票不存在"}) + return + } + + // 验证发票金额计算是否正确 + calculatedAmount := float64(invoice.Quantity) * invoice.UnitPrice + calculatedTaxAmount := calculatedAmount * invoice.TaxRate + calculatedTotalAmount := calculatedAmount + calculatedTaxAmount + + isValid := invoice.Amount == calculatedAmount && + invoice.TaxAmount == calculatedTaxAmount && + invoice.TotalAmount == calculatedTotalAmount + + c.JSON(http.StatusOK, gin.H{ + "is_valid": isValid, + "details": gin.H{ + "calculated_amount": calculatedAmount, + "calculated_tax_amount": calculatedTaxAmount, + "calculated_total_amount": calculatedTotalAmount, + }, + }) +} + +// DownloadInvoice 下载发票 +func DownloadInvoice(c *gin.Context) { + invoiceID := c.Param("id") + var invoice model.Invoice + + if err := model.DB.First(&invoice, "invoice_id = ?", invoiceID).Error; err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "发票不存在"}) + return + } + + // TODO: 实现生成PDF文件的逻辑 + // 这里需要集成PDF生成库,如go-pdf等 + + c.Header("Content-Disposition", "attachment; filename=invoice-"+invoiceID+".pdf") + c.Header("Content-Type", "application/pdf") + // c.File(pdfPath) // 发送生成的PDF文件 +} + +// EmailInvoice 发送发票到邮箱 +func EmailInvoice(c *gin.Context) { + var req struct { + InvoiceID string `json:"invoice_id"` + Email string `json:"email"` + } + + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "无效的请求数据"}) + return + } + + var invoice model.Invoice + if err := model.DB.First(&invoice, "invoice_id = ?", req.InvoiceID).Error; err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": "发票不存在"}) + return + } + + // TODO: 实现邮件发送逻辑 + // 1. 生成PDF + // 2. 配置邮件服务 + // 3. 发送邮件 + + c.JSON(http.StatusOK, gin.H{"message": "发票已发送至邮箱"}) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/regulator.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/regulator.go new file mode 100644 index 000000000..62b21d43f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/regulator.go @@ -0,0 +1,225 @@ +package handler + +import ( + "fmt" + "hufu/controller" + "hufu/supervisor" + "log" + "net/http" + "os" + "strconv" + "time" + + "io" + "path/filepath" + "strings" + + "github.com/SSSaaS/sssa-golang" + "github.com/gin-gonic/gin" +) + +func CheckTransaction(c *gin.Context) { + c.JSON( + http.StatusOK, + gin.H{ + "message": "success", + }, + ) +} + +func GetPrivateKey(c *gin.Context) { + // 从multipart form获取数据 + walletID := c.PostForm("wallet_id") + if walletID == "" { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "缺少wallet_id参数", + }) + return + } + + // 解析wallet_id为uint + wID, err := strconv.ParseUint(walletID, 10, 32) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "无效的wallet_id格式", + }) + return + } + + // 获取上传的文件 + file, err := c.FormFile("evidence") + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "获取evidence文件失败", + }) + return + } + + // 读取文件内容 + f, err := file.Open() + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "error": "读取文件失败", + }) + return + } + defer f.Close() + + evidence, err := io.ReadAll(f) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "error": "读取文件内容失败", + }) + return + } + + // 解析文件内容,提取异常证据 + evidenceStr := string(evidence) + var actualEvidence string + + fileName := fmt.Sprintf("wallet-%d-%s-failed", wID, time.Now().Format("20060102150405")) + filePath := fmt.Sprintf("./evidence/%s.txt", fileName) + err = os.WriteFile(filePath, evidence, 0644) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "error": "保存证据文件失败", + }) + return + } + + // 按行分割文本 + lines := strings.Split(evidenceStr, "\n") + for i := 0; i < len(lines); i++ { + line := strings.TrimSpace(lines[i]) + if strings.HasPrefix(line, "异常证据:") || strings.HasPrefix(line, "异常证据:") { + actualEvidence = strings.TrimSpace(strings.TrimPrefix(strings.TrimPrefix(line, "异常证据:"), "异常证据:")) + break + } + } + + if actualEvidence == "" { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "文件格式错误:未找到异常证据", + }) + return + } + + log.Println("actualEvidence", actualEvidence) + + // 调用处理函数,使用解析出的异常证据 + res, err := controller.ProcessPrivateKey(uint(wID), actualEvidence) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "error": "处理私钥失败: " + err.Error(), + }) + return + } + + pk, err := sssa.Combine(res) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "error": "处理私钥失败: " + err.Error(), + }) + return + } + + // 重命名文件 + fileName = fmt.Sprintf("wallet-%d-%s-success", wID, time.Now().Format("20060102150405")) + os.Rename(filePath, fmt.Sprintf("./evidence/%s.txt", fileName)) + + c.JSON(http.StatusOK, gin.H{ + "message": "success", + "data": pk, + "shares": res, + }) +} + +// 获取异常交易 +func GetAbnormalTransaction(c *gin.Context) { + // 从数据库获取异常交易列表 + abnormalTxs, err := controller.GetAbnormalTransactions() + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "code": -1, + "message": "获取异常交易失败", + "error": err.Error(), + }) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "message": "success", + "data": abnormalTxs, + }) +} + +// 获取决策 +func GetDecision(c *gin.Context) { + decision, err := supervisor.GetDecision() + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "error": err.Error(), + }) + } + + c.JSON(http.StatusOK, gin.H{ + "message": "success", + "data": decision, + }) +} + +// 获取事件 +func GetEvent(c *gin.Context) { + event, err := supervisor.GetEvent() + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "error": err.Error(), + }) + } + + c.JSON(http.StatusOK, event) +} + +// GetApplication 获取申请记录 +func GetApplication(c *gin.Context) { + // 查找匹配的文件 + files, err := filepath.Glob("./evidence/wallet-*") + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": "查找文件失败"}) + return + } + + applications := make([]map[string]interface{}, 0) + for _, file := range files { + // 读取文件内容 + content, err := os.ReadFile(file) + if err != nil { + continue + } + + // 从文件名解析信息 + fileName := filepath.Base(file) + // 移除.txt后缀 + fileName = strings.TrimSuffix(fileName, ".txt") + parts := strings.Split(fileName, "-") + if len(parts) < 4 { + continue + } + + // 构建返回数据 + application := map[string]interface{}{ + "wallet_id": parts[1], // 钱包ID (12) + "timestamp": parts[2], // 时间戳 (20241107124506) + "status": strings.TrimSuffix(parts[3], ".txt"), // 状态 (success/failed) + "content": string(content), + } + applications = append(applications, application) + } + + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "msg": "success", + "data": applications, + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/tee.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/tee.go new file mode 100644 index 000000000..be82bf1ac --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/tee.go @@ -0,0 +1,289 @@ +package handler + +import ( + "hufu/controller" + "hufu/model" + "hufu/utils" + "net/http" + "time" + + "github.com/gin-gonic/gin" +) + +type TeeHandler struct { + TeeController *controller.TeeController +} + +func NewTeeHandler() *TeeHandler { + return &TeeHandler{ + TeeController: controller.NewTeeController(), + } +} + +func (h *TeeHandler) TeeAdd(c *gin.Context) { + var requestBody struct { + Add string `json:"add"` + } + + if err := c.ShouldBindJSON(&requestBody); err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "解析 JSON 请求失败: " + err.Error(), + }) + return + } + + respBody, statusCode, err := h.TeeController.Add(requestBody.Add) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "error": "请求失败: " + err.Error(), + }) + return + } + + c.String(statusCode, string(respBody)) +} + +func (h *TeeHandler) TeeGenerateKey(c *gin.Context) { + var request struct { + WalletID int `json:"wallet_id"` + } + + if err := c.ShouldBindJSON(&request); err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "无效的请求格式: " + err.Error(), + }) + return + } + + if request.WalletID == 0 { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "wallet_id 不能为空", + }) + return + } + + respBody, statusCode, err := h.TeeController.GenerateKey(request.WalletID) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "error": "请求失败: " + err.Error(), + }) + return + } + + c.String(statusCode, string(respBody)) +} + +func (h *TeeHandler) TeeShuffle(c *gin.Context) { + var request struct { + From int `json:"from"` + To int `json:"to"` + Amount float64 `json:"amount"` + } + + if err := c.ShouldBindJSON(&request); err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "无效的请求格式: " + err.Error(), + }) + return + } + + respBody, statusCode, err := h.TeeController.Shuffle(request.From, request.To, request.Amount) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "error": "请求失败: " + err.Error(), + }) + return + } + + c.String(statusCode, string(respBody)) +} + +func (h *TeeHandler) TeeWarning(c *gin.Context) { + var request struct { + From int `json:"from"` + To int `json:"to"` + Amount float64 `json:"amount"` + } + if err := c.ShouldBindJSON(&request); err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "无效的请求格式: " + err.Error(), + }) + return + } + + respBody, statusCode, err := h.TeeController.Warning(request.From, request.To, request.Amount) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "error": "请求失败: " + err.Error(), + }) + return + } + + c.String(statusCode, string(respBody)) +} + +func (h *TeeHandler) TeeDecrypt(c *gin.Context) { + var request struct { + From string `json:"from"` + To string `json:"to"` + Amount string `json:"amount"` + } + + if err := c.ShouldBindJSON(&request); err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "无效的请求格式: " + err.Error(), + }) + return + } + + respBody, statusCode, err := h.TeeController.Decrypt(request.From, request.To, request.Amount) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "error": "请求失败: " + err.Error(), + }) + return + } + + c.String(statusCode, string(respBody)) +} + +func (h *TeeHandler) TeeEncrypt(c *gin.Context) { + var request struct { + From string `json:"from"` + To string `json:"to"` + Amount string `json:"amount"` + } + + if err := c.ShouldBindJSON(&request); err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "无效的请求格式: " + err.Error(), + }) + return + } + + encryptedData, err := h.TeeController.Encrypt(request.From, request.To, request.Amount) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "error": err.Error(), + }) + return + } + + c.JSON(http.StatusOK, encryptedData) +} + +func (h *TeeHandler) GetEncryptedHistory(c *gin.Context) { + var req struct { + Id string `json:"id"` + PrivateKey string `json:"private_key"` + } + + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "无效的请求格式: " + err.Error(), + }) + return + } + + // 验证私钥是否正确 + wallet, err := controller.GetWalletByID(utils.StringToUint(req.Id)) + if err != nil { + c.JSON(http.StatusNotFound, gin.H{ + "error": "钱包不存在: " + err.Error(), + }) + return + } + walletKey, err := controller.GetWalletKeyByWalletID(wallet.ID) + if err != nil { + c.JSON(http.StatusNotFound, gin.H{ + "error": "钱包密钥不存在: " + err.Error(), + }) + return + } + + // 验证私钥是否匹配 + if walletKey.PrivateKey != req.PrivateKey { + c.JSON(http.StatusUnauthorized, gin.H{ + "error": "私钥验证失败", + }) + return + } + var result []model.EncryptedTransaction + if err := model.DB.Find(&result).Error; err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "error": "请求失败: " + err.Error(), + }) + return + } + + c.JSON(http.StatusOK, result) +} + +func (h *TeeHandler) GetDecryptedHistory(c *gin.Context) { + var req struct { + Id string `json:"id"` + PrivateKey string `json:"private_key"` + } + + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "error": "无效的请求格式: " + err.Error(), + }) + return + } + + // 验证私钥是否正确 + wallet, err := controller.GetWalletByID(utils.StringToUint(req.Id)) + if err != nil { + c.JSON(http.StatusNotFound, gin.H{ + "error": "钱包不存在: " + err.Error(), + }) + return + } + walletKey, err := controller.GetWalletKeyByWalletID(wallet.ID) + if err != nil { + c.JSON(http.StatusNotFound, gin.H{ + "error": "钱包密钥不存在: " + err.Error(), + }) + return + } + + // 验证私钥是否匹配 + if walletKey.PrivateKey != req.PrivateKey { + c.JSON(http.StatusUnauthorized, gin.H{ + "error": "私钥验证失败", + }) + return + } + + type DecryptedTransaction struct { + From string `json:"from"` + To string `json:"to"` + Amount string `json:"amount"` + CreateAt string `json:"create_at"` + } + var result []model.EncryptedTransaction + if err := model.DB.Find(&result).Error; err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "error": "请求失败: " + err.Error(), + }) + return + } + + var resp []DecryptedTransaction + for _, item := range result { + from, _ := utils.RSADecryptWithHexKey(item.EncryptedFromWalletID, walletKey.PrivateKey, walletKey.PublicKey) + to, _ := utils.RSADecryptWithHexKey(item.EncryptedToWalletID, walletKey.PrivateKey, walletKey.PublicKey) + amount, _ := utils.RSADecryptWithHexKey(item.EncryptedAmount, walletKey.PrivateKey, walletKey.PublicKey) + createAt := item.CreatedAt.Format(time.DateTime) + decrypted := DecryptedTransaction{ + From: from, + To: to, + Amount: amount, + CreateAt: createAt, + } + resp = append(resp, decrypted) + } + + c.JSON(http.StatusOK, resp) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/transaction.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/transaction.go new file mode 100644 index 000000000..25d3f2153 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/transaction.go @@ -0,0 +1,407 @@ +package handler + +import ( + "encoding/json" + "fmt" + "hufu/config" + "hufu/controller" + "hufu/model" + "hufu/utils" + "log" + "net/http" + "strconv" + "time" + + "github.com/gin-gonic/gin" +) + +type EncryptFTA struct { + From string `json:"from"` + To string `json:"to"` + Amount string `json:"amount"` +} + +type DecryptFTA struct { + From int `json:"from"` + To int `json:"to"` + Amount float64 `json:"amount"` +} + +type ResDecrypt struct { + Message string `json:"message"` + Data DecryptFTA `json:"data"` +} + +type ResWarning struct { + TransactionStatus string `json:"transaction_status"` + WarningMessage string `json:"warning_msg"` +} + +type ResShuffle struct { + Data map[string]float64 `json:"data"` +} + +// NormalTransfer 处理转账请求 +func NormalTransfer(c *gin.Context) { + var req model.Transaction + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) + return + } + + from, err := controller.GetWalletByID(req.FromWalletID) + if err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": err.Error()}) + return + } + to, err := controller.GetWalletByID(req.ToWalletID) + if err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": err.Error()}) + return + } + + tx, err := controller.NormalTransfer(from, to, req.Amount) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + + c.JSON(http.StatusOK, gin.H{"data": tx}) +} + +// ProxyTransfer 处理转账请求 +func ProxyTransfer(c *gin.Context) { + var req EncryptFTA + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) + return + } + + tc := controller.NewTeeController() + + // 1. 解密交易数据 + decryptedData, err := handleDecryption(tc, req) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + + // 2. 保存EncryptFTA + if err := createEncryptedTransaction(decryptedData); err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + + // 3. 验证交易 + if err := handleWarningCheck(tc, decryptedData); err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + + // 4. 混洗交易 + shuffleResult, err := handleShuffle(tc, decryptedData) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + + // 5. 执行源钱包到代理钱包的转账 + if err := handleSourceToProxy(decryptedData); err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + + // 6. 执行代理到目标钱包的转账 + if err := handleProxyToTarget(decryptedData, shuffleResult); err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + + c.JSON(http.StatusOK, gin.H{"message": "success"}) +} + +// createEncryptedTransaction 创建加密交易记录 +func createEncryptedTransaction(decryptedData *DecryptFTA) error { + walletKey, err := controller.GetWalletKeyByWalletID(uint(decryptedData.From)) + if err != nil { + return err + } + + encryptedFromWalletID, err := utils.RSAEncryptWithHexKey(strconv.Itoa(decryptedData.From), walletKey.PublicKey) + if err != nil { + return err + } + + encryptedToWalletID, err := utils.RSAEncryptWithHexKey(strconv.Itoa(decryptedData.To), walletKey.PublicKey) + if err != nil { + return err + } + + encryptedAmount, err := utils.RSAEncryptWithHexKey(strconv.FormatFloat(decryptedData.Amount, 'f', -1, 64), walletKey.PublicKey) + if err != nil { + return err + } + + var count int64 + if err := model.DB.Model(&model.Transaction{}).Count(&count).Error; err != nil { + return err + } + + encryptedTx := &model.EncryptedTransaction{ + TransactionID: uint(count + 1), + EncryptedFromWalletID: encryptedFromWalletID, + EncryptedToWalletID: encryptedToWalletID, + EncryptedAmount: encryptedAmount, + } + + return model.DB.Create(encryptedTx).Error +} + +// handleDecryption 处理解密过程 +func handleDecryption(tc *controller.TeeController, req EncryptFTA) (*DecryptFTA, error) { + respBody, _, _ := tc.Decrypt(req.From, req.To, req.Amount) + log.Println(string(respBody)) + + var resDecrypt ResDecrypt + if err := json.Unmarshal(respBody, &resDecrypt); err != nil { + return nil, err + } + + if resDecrypt.Message != "Transaction decrypted successfully." { + return nil, fmt.Errorf(resDecrypt.Message) + } + + return &resDecrypt.Data, nil +} + +// handleWarningCheck 处理交易验证 +func handleWarningCheck(tc *controller.TeeController, decryptedData *DecryptFTA) error { + respBody, _, _ := tc.Warning(decryptedData.From, decryptedData.To, decryptedData.Amount) + log.Println("warning:", string(respBody)) + + var resWarning ResWarning + if err := json.Unmarshal(respBody, &resWarning); err != nil { + return err + } + + if resWarning.TransactionStatus != "Success" { + log.Println("warning:================================================") + log.Println(resWarning.WarningMessage) + if err := createAbnormalTransaction(decryptedData, resWarning.WarningMessage); err != nil { + return err + } + return fmt.Errorf(resWarning.WarningMessage) + } + + return nil +} + +// createAbnormalTransaction 创建异常交易记录 +func createAbnormalTransaction(decryptedData *DecryptFTA, warningMessage string) error { + var count int64 + if err := model.DB.Model(&model.Transaction{}).Count(&count).Error; err != nil { + return err + } + + evidence := fmt.Sprintf("Transaction ID: %d, From: %d, To: %d, Amount: %f, Time: %s, Error: %v", + count+1, decryptedData.From, decryptedData.To, decryptedData.Amount, + time.Now().Format(time.RFC3339), warningMessage) + + // 使用监管者的私钥对证据进行签名 + signature, err := utils.SignData(config.GlobalConfig.Tee.PrivateKey, evidence) + if err != nil { + return err + } + + abnormal := &model.AbnormalTransaction{ + WalletID: uint(decryptedData.From), + TransactionID: uint(count + 1), + Evidence: evidence, + Signature: signature, + } + + return model.DB.Create(abnormal).Error +} + +// handleShuffle 处理混洗过程 +func handleShuffle(tc *controller.TeeController, decryptedData *DecryptFTA) (*ResShuffle, error) { + respBody, _, _ := tc.Shuffle(decryptedData.From, decryptedData.To, decryptedData.Amount) + log.Println("shuffle:", string(respBody)) + + var resShuffle ResShuffle + if err := json.Unmarshal(respBody, &resShuffle); err != nil { + return nil, err + } + + return &resShuffle, nil +} + +// handleSourceToProxy 处理源钱包到代理钱包的转账 +func handleSourceToProxy(decryptedData *DecryptFTA) error { + from, err := controller.GetWalletByID(uint(decryptedData.From)) + if err != nil { + return err + } + + proxy, err := controller.GetWalletByID(2) + if err != nil { + return err + } + + _, err = controller.NormalTransfer(from, proxy, decryptedData.Amount) + return err +} + +// handleProxyToTarget 处理代理到目标钱包的转账 +func handleProxyToTarget(decryptedData *DecryptFTA, shuffleResult *ResShuffle) error { + to, err := controller.GetWalletByID(uint(decryptedData.To)) + if err != nil { + return err + } + + for from, amount := range shuffleResult.Data { + id, _ := strconv.Atoi(from) + fromWallet, err := controller.GetWalletByID(uint(id)) + if err != nil { + return err + } + + if _, err := controller.NormalTransfer(fromWallet, to, amount); err != nil { + return err + } + } + + return nil +} + +// GetTransferHistory 获取转账历史 +func GetTransferHistory(c *gin.Context) { + var req struct { + WalletID uint `json:"wallet_id" binding:"required"` + Page int `json:"page"` + PageSize int `json:"page_size"` + } + + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) + return + } + + // 设置默认值 + if req.Page <= 0 { + req.Page = 1 + } + if req.PageSize <= 0 { + req.PageSize = 10 + } + + result, err := controller.GetTransferHistory(req.WalletID, req.Page, req.PageSize) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "data": result, + }) +} + +// GetEncryptedTransaction 获取加密交易信息 +// func GetEncryptedTransaction(c *gin.Context) { +// var req Req +// if err := c.ShouldBindJSON(&req); err != nil { +// c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) +// return +// } + +// encryptedTx, err := controller.GetEncryptedTransaction(req.WalletID, req.PrivateKey) +// if err != nil { +// c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) +// return +// } + +// c.JSON(http.StatusOK, gin.H{ +// "code": 0, +// "data": encryptedTx, +// }) +// } + +// GetDesensitizedTransaction 获取脱敏交易记录 +// func GetDesensitizedTransaction(c *gin.Context) { +// var req Req +// if err := c.ShouldBindJSON(&req); err != nil { +// c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) +// return +// } + +// transactions, err := controller.GetDesensitizedTransaction(req.WalletID) +// if err != nil { +// c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) +// return +// } + +// c.JSON(http.StatusOK, gin.H{ +// "data": transactions, +// }) +// } + +// GetReceivedTransactions 获取收款记录 +func GetReceivedTransactions(c *gin.Context) { + var req struct { + WalletID uint `json:"wallet_id" binding:"required"` + } + + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) + return + } + + result, err := controller.GetReceivedTransactions(req.WalletID) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "data": result, + }) +} + +// GetTransactionStats 获取交易统计信息 +func GetTransactionStats(c *gin.Context) { + var req struct { + WalletID uint `json:"wallet_id" binding:"required"` + } + + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "code": -1, + "msg": "参数错误: " + err.Error(), + }) + return + } + + stats, err := controller.GetTransactionStats(req.WalletID) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "code": -1, + "msg": "获取统计信息失败: " + err.Error(), + }) + return + } + + // 在返回结果之前对数据进行格式化处理 + formattedStats := gin.H{ + "total_amount": utils.FormatFloat(stats.TotalAmount, 2), + "today_amount": utils.FormatFloat(stats.TodayAmount, 2), + "week_amount": utils.FormatFloat(stats.WeekAmount, 2), + "month_amount": utils.FormatFloat(stats.MonthAmount, 2), + } + + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "data": formattedStats, + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/wallet.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/wallet.go new file mode 100644 index 000000000..ae67e9a0a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/handler/wallet.go @@ -0,0 +1,144 @@ +package handler + +import ( + "hufu/controller" + "hufu/model" + "net/http" + + "github.com/gin-gonic/gin" +) + +// CreateWallet 创建钱包 +func CreateWallet(c *gin.Context) { + var req model.Wallet + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) + return + } + + wallet, err := controller.NewWallet(req.WalletName, req.Username, req.Balance) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + + c.JSON(http.StatusOK, gin.H{"data": wallet}) +} + +// GetWallet 获取单个钱包详情 +func GetWallet(c *gin.Context) { + var req model.Wallet + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) + return + } + + if req.ID != 0 { + wallet, err := controller.GetWalletByID(req.ID) + if err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": err.Error()}) + return + } + c.JSON(http.StatusOK, gin.H{"data": wallet}) + return + } + if req.WalletName != "" { + wallet, err := controller.GetWalletByWalletName(req.WalletName) + if err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": err.Error()}) + return + } + c.JSON(http.StatusOK, gin.H{"data": wallet}) + + } + if req.Username != "" { + wallet, err := controller.GetWalletByUsername(req.Username) + if err != nil { + c.JSON(http.StatusNotFound, gin.H{"error": err.Error()}) + return + } + c.JSON(http.StatusOK, gin.H{"data": wallet}) + } + +} + +// UpdateWallet 更新钱包信息 +func UpdateWallet(c *gin.Context) { + var req model.Wallet + + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "code": -1, + "msg": "参数错误: " + err.Error(), + }) + return + } + + // 调用 controller 层更新钱包 + err := controller.UpdateWallet(req.ID, req.WalletName, req.Balance) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "code": -1, + "msg": "更新钱包失败: " + err.Error(), + }) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "msg": "更新钱包成功", + }) +} + +// GetWalletStats 获取钱包统计信息 +func GetWalletStats(c *gin.Context) { + var req struct { + WalletID uint `json:"wallet_id" binding:"required"` + } + + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) + return + } + + stats, err := controller.GetWalletStats(req.WalletID) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) + return + } + + c.JSON(http.StatusOK, gin.H{"data": stats}) +} + +// GetTrend 获取收支趋势 +func GetTrend(c *gin.Context) { + var req struct { + WalletID uint `json:"wallet_id" binding:"required"` + } + + if err := c.ShouldBindJSON(&req); err != nil { + c.JSON(http.StatusBadRequest, gin.H{ + "code": -1, + "message": "参数错误", + "error": err.Error(), + }) + return + } + + // 从数据库获取支出趋势数据 + trends, err := controller.GetTrend(req.WalletID) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "code": -1, + "message": "获取支出趋势失败", + "error": err.Error(), + }) + return + } + + c.JSON(http.StatusOK, gin.H{ + "code": 0, + "message": "success", + "data": trends, + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/main.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/main.go new file mode 100644 index 000000000..efc3cd6c3 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/main.go @@ -0,0 +1,38 @@ +package main + +import ( + "fmt" + "hufu/config" + "hufu/controller" + "hufu/model" + "hufu/router" + "hufu/supervisor" + + "github.com/gin-contrib/cors" + "github.com/gin-gonic/gin" +) + +func main() { + if _, err := config.LoadConfig("config/config.yaml"); err != nil { + panic(fmt.Sprintf("Error loading config: %v", err)) + } + model.SetupDB() + controller.InitWalletPool() + supervisor.InitJury() + r := gin.Default() + r.Use(cors.New(cors.Config{ + AllowOrigins: []string{"*"}, + AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"}, + AllowHeaders: []string{"Origin", "Content-Type", "Content-Length", "Accept-Encoding", "X-CSRF-Token", "Authorization"}, + ExposeHeaders: []string{"Content-Length"}, + AllowCredentials: true, + })) + + r.GET("/ping", func(c *gin.Context) { + c.JSON(200, gin.H{"message": "pong"}) + }) + + router.InitHufuRouter(r) + router.InitRegulatorRouter(r) + r.Run(":3338") +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/model/common.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/model/common.go new file mode 100644 index 000000000..7c8bb2262 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/model/common.go @@ -0,0 +1,36 @@ +package model + +import "gorm.io/gorm" + +// PageInfo 分页请求参数 +type PageInfo struct { + Page int `json:"page" form:"page"` // 页码 + PageSize int `json:"page_size" form:"page_size"` // 每页数量 +} + +// PageResult 分页返回结果 +type PageResult struct { + List interface{} `json:"list"` // 数据列表 + Total int64 `json:"total"` // 总数 + Page int `json:"page"` // 当前页码 + PageSize int `json:"page_size"` // 每页数量 +} + +// Invoice 发票结构体 +type Invoice struct { + gorm.Model + InvoiceID string `json:"invoice_id"` // 发票编号 + IssueDate string `json:"issue_date"` // 开票日期 + SellerName string `json:"seller_name"` // 卖方名称 + SellerTaxID string `json:"seller_tax_id"` // 卖方税号 + ItemName string `json:"item_name"` // 项目名称 + UnitPrice float64 `json:"unit_price"` // 单价 + Quantity int `json:"quantity"` // 数量 + Amount float64 `json:"amount"` // 金额 + TaxRate float64 `json:"tax_rate"` // 税率 + TaxAmount float64 `json:"tax_amount"` // 税额 + TotalAmount float64 `json:"total_amount"` // 合计金额 + InvoiceStatus string `json:"invoice_status"` // 发票状态 + Remarks string `json:"remarks"` // 备注 + InvoiceType string `json:"invoice_type"` // 发票类型 +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/model/db.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/model/db.go new file mode 100644 index 000000000..fba5fe14c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/model/db.go @@ -0,0 +1,45 @@ +package model + +import ( + "fmt" + "hufu/config" + + "gorm.io/driver/mysql" + "gorm.io/gorm" +) + +var DB *gorm.DB + +func SetupDB() *gorm.DB { + cfg := config.GlobalConfig.Database + dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=True&loc=Local", + cfg.Username, + cfg.Password, + cfg.Host, + cfg.Port, + cfg.DBName, + cfg.Charset, + ) + + db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) + if err != nil { + panic("failed to connect database") + } + + // 按照依赖关系顺序进行迁移 + err = db.AutoMigrate( + &Wallet{}, + &WalletKey{}, + &Transaction{}, + &EncryptedTransaction{}, + &DesensitizedTransaction{}, + &AbnormalTransaction{}, + &Invoice{}, + ) + if err != nil { + panic("failed to auto migrate: " + err.Error()) + } + + DB = db + return db +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/model/transaction.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/model/transaction.go new file mode 100644 index 000000000..3e20477a3 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/model/transaction.go @@ -0,0 +1,52 @@ +package model + +import ( + "gorm.io/gorm" +) + +// TransactionType 交易类型 +type TransactionType string + +const ( + DirectTransaction TransactionType = "direct" // 直接交易 + ToProxyTransaction TransactionType = "to_proxy" // 转入代理钱包 + FromProxyTransaction TransactionType = "from_proxy" // 代理钱包转出 +) + +// Transaction 交易记录 +type Transaction struct { + gorm.Model + FromWalletID uint `json:"from_wallet_id" gorm:"type:int;not null"` + ToWalletID uint `json:"to_wallet_id" gorm:"type:int;not null"` + Amount float64 `json:"amount" gorm:"type:decimal(20,8);not null"` + Status string `json:"status" gorm:"type:varchar(20);not null;default:'pending'"` // pending, completed, failed + Type TransactionType `json:"type" gorm:"type:varchar(20);not null"` // direct, proxy, mixed +} + +// EncryptedTransaction 加密交易 +type EncryptedTransaction struct { + gorm.Model + TransactionID uint `json:"transaction_id" gorm:"type:int;not null"` + EncryptedFromWalletID string `json:"encrypted_from_wallet_id"` + EncryptedToWalletID string `json:"encrypted_to_wallet_id"` + EncryptedAmount string `json:"encrypted_amount"` +} + +// DesensitizedTransaction 脱敏交易 +type DesensitizedTransaction struct { + gorm.Model + TransactionID uint `json:"transaction_id" gorm:"type:int;not null"` + FromWalletID uint `json:"from_wallet_id"` + ToWalletID uint `json:"to_wallet_id"` + AmountRange string `json:"amount_range"` + TimeRange string `json:"time_range"` +} + +// AbnormalTransaction 异常交易 +type AbnormalTransaction struct { + gorm.Model + WalletID uint `json:"wallet_id" gorm:"type:int;not null"` + TransactionID uint `json:"transaction_id" gorm:"type:int;not null"` + Evidence string `json:"evidence" gorm:"type:text;not null"` // 证据内容 + Signature string `json:"signature" gorm:"type:text;not null"` // 监管者签名 +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/model/wallet.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/model/wallet.go new file mode 100644 index 000000000..bfc6ae26c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/model/wallet.go @@ -0,0 +1,19 @@ +package model + +import "gorm.io/gorm" + +// Wallet 钱包 +type Wallet struct { + gorm.Model + Username string `json:"user_name" gorm:"type:varchar(100);not null"` // 用户名 + WalletName string `json:"wallet_name" gorm:"type:varchar(100);not null"` // 钱包名称 + Balance float64 `json:"balance" gorm:"type:decimal(20,8);default:0"` // 余额 +} + +// 钱包公私钥 +type WalletKey struct { + gorm.Model + WalletID uint `json:"wallet_id" gorm:"type:int;not null"` + PublicKey string `json:"public_key" gorm:"type:varchar(1024);not null"` + PrivateKey string `json:"private_key" gorm:"type:varchar(1024);not null"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/router/router.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/router/router.go new file mode 100644 index 000000000..7b773a29d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/router/router.go @@ -0,0 +1,80 @@ +package router + +import ( + "hufu/handler" + + "github.com/gin-gonic/gin" +) + +func InitHufuRouter(r *gin.Engine) { + hufu := r.Group("/api/v1/hufu") + { + // 钱包相关路由 + wallet := hufu.Group("/wallet") + { + wallet.POST("/create", handler.CreateWallet) // 创建钱包 + wallet.POST("/", handler.GetWallet) // 获取单个钱包 + wallet.POST("/update", handler.UpdateWallet) // 更新钱包 + wallet.POST("/stats", handler.GetWalletStats) // 获取钱包统计 + wallet.POST("/trend", handler.GetTrend) // 获取收支趋势 + } + + // 转账相关路由 + tx := hufu.Group("/tx") + { + tx.POST("/normal-transfer", handler.NormalTransfer) // 普通转账 + tx.POST("/proxy-transfer", handler.ProxyTransfer) // 代理转账 + // tx.POST("/encrypt", handler.EncryptData) // 加密数据 + // tx.POST("/encrypted-transfer", handler.EncryptedTransfer) // 加密转账 + tx.POST("/history", handler.GetTransferHistory) // 获取转账历史 + // tx.POST("/desensitized", handler.GetDesensitizedTransaction) // 获取脱敏交易记录 + tx.POST("/received", handler.GetReceivedTransactions) // 添加获取收款记录路由 + tx.POST("/stats", handler.GetTransactionStats) // 添加获取收入统计路由 + } + + // 发票相关路由 + invoice := hufu.Group("/invoice") + { + invoice.POST("/create", handler.CreateInvoice) // 创建发票 + invoice.POST("/get", handler.GetInvoice) // 获取单张发票 + invoice.POST("/list", handler.ListInvoices) // 获取发票列表 + invoice.POST("/update", handler.UpdateInvoice) // 更新发票信息 + invoice.POST("/cancel", handler.CancelInvoice) // 作废发票 + invoice.POST("/stats", handler.GetInvoiceStats) // 获取发票统计 + invoice.POST("/verify", handler.VerifyInvoice) // 验证发票 + invoice.POST("/download", handler.DownloadInvoice) // 下载发票 + invoice.POST("/email", handler.EmailInvoice) // 发送发票到邮箱 + } + + // 密钥相关路由 + keys := hufu.Group("/keys") + { + keys.POST("/", handler.GetEncryptionKeys) // 获取加密密钥 + } + + teeHandler := handler.NewTeeHandler() + tee := hufu.Group("/tee") + { + tee.POST("/add", teeHandler.TeeAdd) + tee.POST("/generate-key", teeHandler.TeeGenerateKey) + tee.POST("/encrypt-transaction", teeHandler.TeeEncrypt) + tee.POST("/decrypt-transaction", teeHandler.TeeDecrypt) + tee.POST("/shuffle", teeHandler.TeeShuffle) + tee.POST("/warning", teeHandler.TeeWarning) + tee.POST("/encrypted-history", teeHandler.GetEncryptedHistory) // 获取加密交易记录 + tee.POST("/decrypt-history", teeHandler.GetDecryptedHistory) // 获取解密交易记录 + } + } +} + +func InitRegulatorRouter(r *gin.Engine) { + regulator := r.Group("/api/v1/regulator") + { + regulator.POST("/alert", handler.CheckTransaction) // 检查交易 + regulator.POST("/private-key", handler.GetPrivateKey) // 获取私钥 + regulator.POST("/application", handler.GetApplication) // 获取申请记录 + regulator.POST("/abnormal", handler.GetAbnormalTransaction) // 获取异常交易 + regulator.POST("/decision", handler.GetDecision) // 获取决策 + regulator.POST("/event", handler.GetEvent) // 获取事件 + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/script b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/script new file mode 160000 index 000000000..d051bb815 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/script @@ -0,0 +1 @@ +Subproject commit d051bb815063bdc2a3aa942e79b4aac1a190c9d1 diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/.gitignore b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/.gitignore new file mode 100644 index 000000000..4ef27174d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/.gitignore @@ -0,0 +1,2 @@ + +*.log diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/Dockerfile b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/Dockerfile new file mode 100644 index 000000000..69cb44dc6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/Dockerfile @@ -0,0 +1,31 @@ +FROM golang:alpine as builder + +WORKDIR /go/src/github.com/flipped-aurora/gin-vue-admin/server +COPY . . + +RUN go env -w GO111MODULE=on \ + && go env -w GOPROXY=https://goproxy.cn,direct \ + && go env -w CGO_ENABLED=0 \ + && go env \ + && go mod tidy \ + && go build -o server . + +FROM alpine:latest + +LABEL MAINTAINER="SliverHorn@sliver_horn@qq.com" +# 设置时区 +ENV TZ=Asia/Shanghai +RUN apk update && apk add --no-cache tzdata openntpd \ + && ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +WORKDIR /go/src/github.com/flipped-aurora/gin-vue-admin/server + +COPY --from=0 /go/src/github.com/flipped-aurora/gin-vue-admin/server/server ./ +COPY --from=0 /go/src/github.com/flipped-aurora/gin-vue-admin/server/resource ./resource/ +COPY --from=0 /go/src/github.com/flipped-aurora/gin-vue-admin/server/config.docker.yaml ./ + +# 挂载目录:如果使用了sqlite数据库,容器命令示例:docker run -d -v /宿主机路径/gva.db:/go/src/github.com/flipped-aurora/gin-vue-admin/server/gva.db -p 8888:8888 --name gva-server-v1 gva-server:1.0 +# VOLUME ["/go/src/github.com/flipped-aurora/gin-vue-admin/server"] + +EXPOSE 8888 +ENTRYPOINT ./server -c config.docker.yaml diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/README.md b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/README.md new file mode 100644 index 000000000..9a34870bc --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/README.md @@ -0,0 +1,54 @@ +## server项目结构 + +```shell +├── api +│   └── v1 +├── config +├── core +├── docs +├── global +├── initialize +│   └── internal +├── middleware +├── model +│   ├── request +│   └── response +├── packfile +├── resource +│   ├── excel +│   ├── page +│   └── template +├── router +├── service +├── source +└── utils + ├── timer + └── upload +``` + +| 文件夹 | 说明 | 描述 | +| ------------ | ----------------------- | --------------------------- | +| `api` | api层 | api层 | +| `--v1` | v1版本接口 | v1版本接口 | +| `config` | 配置包 | config.yaml对应的配置结构体 | +| `core` | 核心文件 | 核心组件(zap, viper, server)的初始化 | +| `docs` | swagger文档目录 | swagger文档目录 | +| `global` | 全局对象 | 全局对象 | +| `initialize` | 初始化 | router,redis,gorm,validator, timer的初始化 | +| `--internal` | 初始化内部函数 | gorm 的 longger 自定义,在此文件夹的函数只能由 `initialize` 层进行调用 | +| `middleware` | 中间件层 | 用于存放 `gin` 中间件代码 | +| `model` | 模型层 | 模型对应数据表 | +| `--request` | 入参结构体 | 接收前端发送到后端的数据。 | +| `--response` | 出参结构体 | 返回给前端的数据结构体 | +| `packfile` | 静态文件打包 | 静态文件打包 | +| `resource` | 静态资源文件夹 | 负责存放静态文件 | +| `--excel` | excel导入导出默认路径 | excel导入导出默认路径 | +| `--page` | 表单生成器 | 表单生成器 打包后的dist | +| `--template` | 模板 | 模板文件夹,存放的是代码生成器的模板 | +| `router` | 路由层 | 路由层 | +| `service` | service层 | 存放业务逻辑问题 | +| `source` | source层 | 存放初始化数据的函数 | +| `utils` | 工具包 | 工具函数封装 | +| `--timer` | timer | 定时器接口封装 | +| `--upload` | oss | oss接口封装 | + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/enter.go new file mode 100644 index 000000000..5c1dff443 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/enter.go @@ -0,0 +1,13 @@ +package v1 + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/api/v1/example" + "github.com/flipped-aurora/gin-vue-admin/server/api/v1/system" +) + +var ApiGroupApp = new(ApiGroup) + +type ApiGroup struct { + SystemApiGroup system.ApiGroup + ExampleApiGroup example.ApiGroup +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/example/enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/example/enter.go new file mode 100644 index 000000000..c182328ea --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/example/enter.go @@ -0,0 +1,13 @@ +package example + +import "github.com/flipped-aurora/gin-vue-admin/server/service" + +type ApiGroup struct { + CustomerApi + FileUploadAndDownloadApi +} + +var ( + customerService = service.ServiceGroupApp.ExampleServiceGroup.CustomerService + fileUploadAndDownloadService = service.ServiceGroupApp.ExampleServiceGroup.FileUploadAndDownloadService +) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/example/exa_breakpoint_continue.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/example/exa_breakpoint_continue.go new file mode 100644 index 000000000..8f39cb160 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/example/exa_breakpoint_continue.go @@ -0,0 +1,150 @@ +package example + +import ( + "fmt" + "io" + "mime/multipart" + "strconv" + + "github.com/flipped-aurora/gin-vue-admin/server/model/example" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + exampleRes "github.com/flipped-aurora/gin-vue-admin/server/model/example/response" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +// BreakpointContinue +// @Tags ExaFileUploadAndDownload +// @Summary 断点续传到服务器 +// @Security ApiKeyAuth +// @accept multipart/form-data +// @Produce application/json +// @Param file formData file true "an example for breakpoint resume, 断点续传示例" +// @Success 200 {object} response.Response{msg=string} "断点续传到服务器" +// @Router /fileUploadAndDownload/breakpointContinue [post] +func (b *FileUploadAndDownloadApi) BreakpointContinue(c *gin.Context) { + fileMd5 := c.Request.FormValue("fileMd5") + fileName := c.Request.FormValue("fileName") + chunkMd5 := c.Request.FormValue("chunkMd5") + chunkNumber, _ := strconv.Atoi(c.Request.FormValue("chunkNumber")) + chunkTotal, _ := strconv.Atoi(c.Request.FormValue("chunkTotal")) + _, FileHeader, err := c.Request.FormFile("file") + if err != nil { + global.GVA_LOG.Error("接收文件失败!", zap.Error(err)) + response.FailWithMessage("接收文件失败", c) + return + } + f, err := FileHeader.Open() + if err != nil { + global.GVA_LOG.Error("文件读取失败!", zap.Error(err)) + response.FailWithMessage("文件读取失败", c) + return + } + defer func(f multipart.File) { + err := f.Close() + if err != nil { + fmt.Println(err) + } + }(f) + cen, _ := io.ReadAll(f) + if !utils.CheckMd5(cen, chunkMd5) { + global.GVA_LOG.Error("检查md5失败!", zap.Error(err)) + response.FailWithMessage("检查md5失败", c) + return + } + file, err := fileUploadAndDownloadService.FindOrCreateFile(fileMd5, fileName, chunkTotal) + if err != nil { + global.GVA_LOG.Error("查找或创建记录失败!", zap.Error(err)) + response.FailWithMessage("查找或创建记录失败", c) + return + } + pathC, err := utils.BreakPointContinue(cen, fileName, chunkNumber, chunkTotal, fileMd5) + if err != nil { + global.GVA_LOG.Error("断点续传失败!", zap.Error(err)) + response.FailWithMessage("断点续传失败", c) + return + } + + if err = fileUploadAndDownloadService.CreateFileChunk(file.ID, pathC, chunkNumber); err != nil { + global.GVA_LOG.Error("创建文件记录失败!", zap.Error(err)) + response.FailWithMessage("创建文件记录失败", c) + return + } + response.OkWithMessage("切片创建成功", c) +} + +// FindFile +// @Tags ExaFileUploadAndDownload +// @Summary 查找文件 +// @Security ApiKeyAuth +// @accept multipart/form-data +// @Produce application/json +// @Param file formData file true "Find the file, 查找文件" +// @Success 200 {object} response.Response{data=exampleRes.FileResponse,msg=string} "查找文件,返回包括文件详情" +// @Router /fileUploadAndDownload/findFile [get] +func (b *FileUploadAndDownloadApi) FindFile(c *gin.Context) { + fileMd5 := c.Query("fileMd5") + fileName := c.Query("fileName") + chunkTotal, _ := strconv.Atoi(c.Query("chunkTotal")) + file, err := fileUploadAndDownloadService.FindOrCreateFile(fileMd5, fileName, chunkTotal) + if err != nil { + global.GVA_LOG.Error("查找失败!", zap.Error(err)) + response.FailWithMessage("查找失败", c) + } else { + response.OkWithDetailed(exampleRes.FileResponse{File: file}, "查找成功", c) + } +} + +// BreakpointContinueFinish +// @Tags ExaFileUploadAndDownload +// @Summary 创建文件 +// @Security ApiKeyAuth +// @accept multipart/form-data +// @Produce application/json +// @Param file formData file true "上传文件完成" +// @Success 200 {object} response.Response{data=exampleRes.FilePathResponse,msg=string} "创建文件,返回包括文件路径" +// @Router /fileUploadAndDownload/findFile [post] +func (b *FileUploadAndDownloadApi) BreakpointContinueFinish(c *gin.Context) { + fileMd5 := c.Query("fileMd5") + fileName := c.Query("fileName") + filePath, err := utils.MakeFile(fileName, fileMd5) + if err != nil { + global.GVA_LOG.Error("文件创建失败!", zap.Error(err)) + response.FailWithDetailed(exampleRes.FilePathResponse{FilePath: filePath}, "文件创建失败", c) + } else { + response.OkWithDetailed(exampleRes.FilePathResponse{FilePath: filePath}, "文件创建成功", c) + } +} + +// RemoveChunk +// @Tags ExaFileUploadAndDownload +// @Summary 删除切片 +// @Security ApiKeyAuth +// @accept multipart/form-data +// @Produce application/json +// @Param file formData file true "删除缓存切片" +// @Success 200 {object} response.Response{msg=string} "删除切片" +// @Router /fileUploadAndDownload/removeChunk [post] +func (b *FileUploadAndDownloadApi) RemoveChunk(c *gin.Context) { + var file example.ExaFile + err := c.ShouldBindJSON(&file) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.RemoveChunk(file.FileMd5) + if err != nil { + global.GVA_LOG.Error("缓存切片删除失败!", zap.Error(err)) + return + } + err = fileUploadAndDownloadService.DeleteFileChunk(file.FileMd5, file.FilePath) + if err != nil { + global.GVA_LOG.Error(err.Error(), zap.Error(err)) + response.FailWithMessage(err.Error(), c) + return + } + response.OkWithMessage("缓存切片删除成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/example/exa_customer.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/example/exa_customer.go new file mode 100644 index 000000000..5d9ef1c02 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/example/exa_customer.go @@ -0,0 +1,176 @@ +package example + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/example" + exampleRes "github.com/flipped-aurora/gin-vue-admin/server/model/example/response" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type CustomerApi struct{} + +// CreateExaCustomer +// @Tags ExaCustomer +// @Summary 创建客户 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body example.ExaCustomer true "客户用户名, 客户手机号码" +// @Success 200 {object} response.Response{msg=string} "创建客户" +// @Router /customer/customer [post] +func (e *CustomerApi) CreateExaCustomer(c *gin.Context) { + var customer example.ExaCustomer + err := c.ShouldBindJSON(&customer) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(customer, utils.CustomerVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + customer.SysUserID = utils.GetUserID(c) + customer.SysUserAuthorityID = utils.GetUserAuthorityId(c) + err = customerService.CreateExaCustomer(customer) + if err != nil { + global.GVA_LOG.Error("创建失败!", zap.Error(err)) + response.FailWithMessage("创建失败", c) + return + } + response.OkWithMessage("创建成功", c) +} + +// DeleteExaCustomer +// @Tags ExaCustomer +// @Summary 删除客户 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body example.ExaCustomer true "客户ID" +// @Success 200 {object} response.Response{msg=string} "删除客户" +// @Router /customer/customer [delete] +func (e *CustomerApi) DeleteExaCustomer(c *gin.Context) { + var customer example.ExaCustomer + err := c.ShouldBindJSON(&customer) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(customer.GVA_MODEL, utils.IdVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = customerService.DeleteExaCustomer(customer) + if err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage("删除失败", c) + return + } + response.OkWithMessage("删除成功", c) +} + +// UpdateExaCustomer +// @Tags ExaCustomer +// @Summary 更新客户信息 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body example.ExaCustomer true "客户ID, 客户信息" +// @Success 200 {object} response.Response{msg=string} "更新客户信息" +// @Router /customer/customer [put] +func (e *CustomerApi) UpdateExaCustomer(c *gin.Context) { + var customer example.ExaCustomer + err := c.ShouldBindJSON(&customer) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(customer.GVA_MODEL, utils.IdVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(customer, utils.CustomerVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = customerService.UpdateExaCustomer(&customer) + if err != nil { + global.GVA_LOG.Error("更新失败!", zap.Error(err)) + response.FailWithMessage("更新失败", c) + return + } + response.OkWithMessage("更新成功", c) +} + +// GetExaCustomer +// @Tags ExaCustomer +// @Summary 获取单一客户信息 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query example.ExaCustomer true "客户ID" +// @Success 200 {object} response.Response{data=exampleRes.ExaCustomerResponse,msg=string} "获取单一客户信息,返回包括客户详情" +// @Router /customer/customer [get] +func (e *CustomerApi) GetExaCustomer(c *gin.Context) { + var customer example.ExaCustomer + err := c.ShouldBindQuery(&customer) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(customer.GVA_MODEL, utils.IdVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + data, err := customerService.GetExaCustomer(customer.ID) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(exampleRes.ExaCustomerResponse{Customer: data}, "获取成功", c) +} + +// GetExaCustomerList +// @Tags ExaCustomer +// @Summary 分页获取权限客户列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query request.PageInfo true "页码, 每页大小" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "分页获取权限客户列表,返回包括列表,总数,页码,每页数量" +// @Router /customer/customerList [get] +func (e *CustomerApi) GetExaCustomerList(c *gin.Context) { + var pageInfo request.PageInfo + err := c.ShouldBindQuery(&pageInfo) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(pageInfo, utils.PageInfoVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + customerList, total, err := customerService.GetCustomerInfoList(utils.GetUserAuthorityId(c), pageInfo) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败"+err.Error(), c) + return + } + response.OkWithDetailed(response.PageResult{ + List: customerList, + Total: total, + Page: pageInfo.Page, + PageSize: pageInfo.PageSize, + }, "获取成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/example/exa_file_upload_download.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/example/exa_file_upload_download.go new file mode 100644 index 000000000..6905936d7 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/example/exa_file_upload_download.go @@ -0,0 +1,133 @@ +package example + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/example" + exampleRes "github.com/flipped-aurora/gin-vue-admin/server/model/example/response" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type FileUploadAndDownloadApi struct{} + +// UploadFile +// @Tags ExaFileUploadAndDownload +// @Summary 上传文件示例 +// @Security ApiKeyAuth +// @accept multipart/form-data +// @Produce application/json +// @Param file formData file true "上传文件示例" +// @Success 200 {object} response.Response{data=exampleRes.ExaFileResponse,msg=string} "上传文件示例,返回包括文件详情" +// @Router /fileUploadAndDownload/upload [post] +func (b *FileUploadAndDownloadApi) UploadFile(c *gin.Context) { + var file example.ExaFileUploadAndDownload + noSave := c.DefaultQuery("noSave", "0") + _, header, err := c.Request.FormFile("file") + if err != nil { + global.GVA_LOG.Error("接收文件失败!", zap.Error(err)) + response.FailWithMessage("接收文件失败", c) + return + } + file, err = fileUploadAndDownloadService.UploadFile(header, noSave) // 文件上传后拿到文件路径 + if err != nil { + global.GVA_LOG.Error("上传文件失败!", zap.Error(err)) + response.FailWithMessage("上传文件失败", c) + return + } + response.OkWithDetailed(exampleRes.ExaFileResponse{File: file}, "上传成功", c) +} + +// EditFileName 编辑文件名或者备注 +func (b *FileUploadAndDownloadApi) EditFileName(c *gin.Context) { + var file example.ExaFileUploadAndDownload + err := c.ShouldBindJSON(&file) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = fileUploadAndDownloadService.EditFileName(file) + if err != nil { + global.GVA_LOG.Error("编辑失败!", zap.Error(err)) + response.FailWithMessage("编辑失败", c) + return + } + response.OkWithMessage("编辑成功", c) +} + +// DeleteFile +// @Tags ExaFileUploadAndDownload +// @Summary 删除文件 +// @Security ApiKeyAuth +// @Produce application/json +// @Param data body example.ExaFileUploadAndDownload true "传入文件里面id即可" +// @Success 200 {object} response.Response{msg=string} "删除文件" +// @Router /fileUploadAndDownload/deleteFile [post] +func (b *FileUploadAndDownloadApi) DeleteFile(c *gin.Context) { + var file example.ExaFileUploadAndDownload + err := c.ShouldBindJSON(&file) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + if err := fileUploadAndDownloadService.DeleteFile(file); err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage("删除失败", c) + return + } + response.OkWithMessage("删除成功", c) +} + +// GetFileList +// @Tags ExaFileUploadAndDownload +// @Summary 分页文件列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.PageInfo true "页码, 每页大小" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "分页文件列表,返回包括列表,总数,页码,每页数量" +// @Router /fileUploadAndDownload/getFileList [post] +func (b *FileUploadAndDownloadApi) GetFileList(c *gin.Context) { + var pageInfo request.PageInfo + err := c.ShouldBindJSON(&pageInfo) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + list, total, err := fileUploadAndDownloadService.GetFileRecordInfoList(pageInfo) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(response.PageResult{ + List: list, + Total: total, + Page: pageInfo.Page, + PageSize: pageInfo.PageSize, + }, "获取成功", c) +} + +// ImportURL +// @Tags ExaFileUploadAndDownload +// @Summary 导入URL +// @Security ApiKeyAuth +// @Produce application/json +// @Param data body example.ExaFileUploadAndDownload true "对象" +// @Success 200 {object} response.Response{msg=string} "导入URL" +// @Router /fileUploadAndDownload/importURL [post] +func (b *FileUploadAndDownloadApi) ImportURL(c *gin.Context) { + var file []example.ExaFileUploadAndDownload + err := c.ShouldBindJSON(&file) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + if err := fileUploadAndDownloadService.ImportURL(&file); err != nil { + global.GVA_LOG.Error("导入URL失败!", zap.Error(err)) + response.FailWithMessage("导入URL失败", c) + return + } + response.OkWithMessage("导入URL成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/auto_code_history.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/auto_code_history.go new file mode 100644 index 000000000..065ddd86c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/auto_code_history.go @@ -0,0 +1,115 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + common "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + request "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type AutoCodeHistoryApi struct{} + +// First +// @Tags AutoCode +// @Summary 获取meta信息 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.GetById true "请求参数" +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "获取meta信息" +// @Router /autoCode/getMeta [post] +func (a *AutoCodeHistoryApi) First(c *gin.Context) { + var info common.GetById + err := c.ShouldBindJSON(&info) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + data, err := autoCodeHistoryService.First(c.Request.Context(), info) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + response.OkWithDetailed(gin.H{"meta": data}, "获取成功", c) +} + +// Delete +// @Tags AutoCode +// @Summary 删除回滚记录 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.GetById true "请求参数" +// @Success 200 {object} response.Response{msg=string} "删除回滚记录" +// @Router /autoCode/delSysHistory [post] +func (a *AutoCodeHistoryApi) Delete(c *gin.Context) { + var info common.GetById + err := c.ShouldBindJSON(&info) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = autoCodeHistoryService.Delete(c.Request.Context(), info) + if err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage("删除失败", c) + return + } + response.OkWithMessage("删除成功", c) +} + +// RollBack +// @Tags AutoCode +// @Summary 回滚自动生成代码 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.SysAutoHistoryRollBack true "请求参数" +// @Success 200 {object} response.Response{msg=string} "回滚自动生成代码" +// @Router /autoCode/rollback [post] +func (a *AutoCodeHistoryApi) RollBack(c *gin.Context) { + var info request.SysAutoHistoryRollBack + err := c.ShouldBindJSON(&info) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = autoCodeHistoryService.RollBack(c.Request.Context(), info) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + response.OkWithMessage("回滚成功", c) +} + +// GetList +// @Tags AutoCode +// @Summary 查询回滚记录 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body common.PageInfo true "请求参数" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "查询回滚记录,返回包括列表,总数,页码,每页数量" +// @Router /autoCode/getSysHistory [post] +func (a *AutoCodeHistoryApi) GetList(c *gin.Context) { + var info common.PageInfo + err := c.ShouldBindJSON(&info) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + list, total, err := autoCodeHistoryService.GetList(c.Request.Context(), info) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(response.PageResult{ + List: list, + Total: total, + Page: info.Page, + PageSize: info.PageSize, + }, "获取成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/auto_code_package.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/auto_code_package.go new file mode 100644 index 000000000..655f29ab2 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/auto_code_package.go @@ -0,0 +1,100 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + common "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/gin-gonic/gin" + "go.uber.org/zap" + "strings" +) + +type AutoCodePackageApi struct{} + +// Create +// @Tags AutoCodePackage +// @Summary 创建package +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.SysAutoCodePackageCreate true "创建package" +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "创建package成功" +// @Router /autoCode/createPackage [post] +func (a *AutoCodePackageApi) Create(c *gin.Context) { + var info request.SysAutoCodePackageCreate + _ = c.ShouldBindJSON(&info) + if err := utils.Verify(info, utils.AutoPackageVerify); err != nil { + response.FailWithMessage(err.Error(), c) + return + } + if strings.Contains(info.PackageName, "\\") || strings.Contains(info.PackageName, "/") || strings.Contains(info.PackageName, "..") { + response.FailWithMessage("包名不合法", c) + return + } // PackageName可能导致路径穿越的问题 / 和 \ 都要防止 + err := autoCodePackageService.Create(c.Request.Context(), &info) + if err != nil { + global.GVA_LOG.Error("创建失败!", zap.Error(err)) + response.FailWithMessage("创建失败", c) + return + } + response.OkWithMessage("创建成功", c) +} + +// Delete +// @Tags AutoCode +// @Summary 删除package +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body common.GetById true "创建package" +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "删除package成功" +// @Router /autoCode/delPackage [post] +func (a *AutoCodePackageApi) Delete(c *gin.Context) { + var info common.GetById + _ = c.ShouldBindJSON(&info) + err := autoCodePackageService.Delete(c.Request.Context(), info) + if err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage("删除失败", c) + return + } + response.OkWithMessage("删除成功", c) +} + +// All +// @Tags AutoCodePackage +// @Summary 获取package +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "创建package成功" +// @Router /autoCode/getPackage [post] +func (a *AutoCodePackageApi) All(c *gin.Context) { + data, err := autoCodePackageService.All(c.Request.Context()) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(gin.H{"pkgs": data}, "获取成功", c) +} + +// Templates +// @Tags AutoCodePackage +// @Summary 获取package +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "创建package成功" +// @Router /autoCode/getTemplates [get] +func (a *AutoCodePackageApi) Templates(c *gin.Context) { + data, err := autoCodePackageService.Templates(c.Request.Context()) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(data, "获取成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/auto_code_plugin.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/auto_code_plugin.go new file mode 100644 index 000000000..30029feb2 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/auto_code_plugin.go @@ -0,0 +1,119 @@ +package system + +import ( + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type AutoCodePluginApi struct{} + +// Install +// @Tags AutoCodePlugin +// @Summary 安装插件 +// @Security ApiKeyAuth +// @accept multipart/form-data +// @Produce application/json +// @Param plug formData file true "this is a test file" +// @Success 200 {object} response.Response{data=[]interface{},msg=string} "安装插件成功" +// @Router /autoCode/installPlugin [post] +func (a *AutoCodePluginApi) Install(c *gin.Context) { + header, err := c.FormFile("plug") + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + web, server, err := autoCodePluginService.Install(header) + webStr := "web插件安装成功" + serverStr := "server插件安装成功" + if web == -1 { + webStr = "web端插件未成功安装,请按照文档自行解压安装,如果为纯后端插件请忽略此条提示" + } + if server == -1 { + serverStr = "server端插件未成功安装,请按照文档自行解压安装,如果为纯前端插件请忽略此条提示" + } + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + response.OkWithData([]interface{}{ + gin.H{ + "code": web, + "msg": webStr, + }, + gin.H{ + "code": server, + "msg": serverStr, + }}, c) +} + +// Packaged +// @Tags AutoCodePlugin +// @Summary 打包插件 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param plugName query string true "插件名称" +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "打包插件成功" +// @Router /autoCode/pubPlug [post] +func (a *AutoCodePluginApi) Packaged(c *gin.Context) { + plugName := c.Query("plugName") + zipPath, err := autoCodePluginService.PubPlug(plugName) + if err != nil { + global.GVA_LOG.Error("打包失败!", zap.Error(err)) + response.FailWithMessage("打包失败"+err.Error(), c) + return + } + response.OkWithMessage(fmt.Sprintf("打包成功,文件路径为:%s", zipPath), c) +} + +// Packaged +// @Tags AutoCodePlugin +// @Summary 打包插件 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "打包插件成功" +// @Router /autoCode/initMenu [post] +func (a *AutoCodePluginApi) InitMenu(c *gin.Context) { + var menuInfo request.InitMenu + err := c.ShouldBindJSON(&menuInfo) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = autoCodePluginService.InitMenu(menuInfo) + if err != nil { + global.GVA_LOG.Error("创建初始化Menu失败!", zap.Error(err)) + response.FailWithMessage("创建初始化Menu失败"+err.Error(), c) + return + } + response.OkWithMessage("文件变更成功", c) +} + +// Packaged +// @Tags AutoCodePlugin +// @Summary 打包插件 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "打包插件成功" +// @Router /autoCode/initAPI [post] +func (a *AutoCodePluginApi) InitAPI(c *gin.Context) { + var apiInfo request.InitApi + err := c.ShouldBindJSON(&apiInfo) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = autoCodePluginService.InitAPI(apiInfo) + if err != nil { + global.GVA_LOG.Error("创建初始化API失败!", zap.Error(err)) + response.FailWithMessage("创建初始化API失败"+err.Error(), c) + return + } + response.OkWithMessage("文件变更成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/auto_code_template.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/auto_code_template.go new file mode 100644 index 000000000..18a5b9b5e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/auto_code_template.go @@ -0,0 +1,108 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type AutoCodeTemplateApi struct{} + +// Preview +// @Tags AutoCodeTemplate +// @Summary 预览创建后的代码 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.AutoCode true "预览创建代码" +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "预览创建后的代码" +// @Router /autoCode/preview [post] +func (a *AutoCodeTemplateApi) Preview(c *gin.Context) { + var info request.AutoCode + err := c.ShouldBindJSON(&info) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(info, utils.AutoCodeVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = info.Pretreatment() + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + info.PackageT = utils.FirstUpper(info.Package) + autoCode, err := autoCodeTemplateService.Preview(c.Request.Context(), info) + if err != nil { + global.GVA_LOG.Error("预览失败!", zap.Error(err)) + response.FailWithMessage("预览失败", c) + } else { + response.OkWithDetailed(gin.H{"autoCode": autoCode}, "预览成功", c) + } +} + +// Create +// @Tags AutoCodeTemplate +// @Summary 自动代码模板 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.AutoCode true "创建自动代码" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}" +// @Router /autoCode/createTemp [post] +func (a *AutoCodeTemplateApi) Create(c *gin.Context) { + var info request.AutoCode + err := c.ShouldBindJSON(&info) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(info, utils.AutoCodeVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = info.Pretreatment() + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = autoCodeTemplateService.Create(c.Request.Context(), info) + if err != nil { + global.GVA_LOG.Error("创建失败!", zap.Error(err)) + response.FailWithMessage(err.Error(), c) + } else { + response.OkWithMessage("创建成功", c) + } +} + +// Create +// @Tags AddFunc +// @Summary 增加方法 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.AutoCode true "增加方法" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}" +// @Router /autoCode/addFunc [post] +func (a *AutoCodeTemplateApi) AddFunc(c *gin.Context) { + var info request.AutoFunc + err := c.ShouldBindJSON(&info) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = autoCodeTemplateService.AddFunc(info) + if err != nil { + global.GVA_LOG.Error("注入失败!", zap.Error(err)) + response.FailWithMessage("注入失败", c) + } else { + response.OkWithMessage("注入成功", c) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/enter.go new file mode 100644 index 000000000..c268ccc7b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/enter.go @@ -0,0 +1,47 @@ +package system + +import "github.com/flipped-aurora/gin-vue-admin/server/service" + +type ApiGroup struct { + DBApi + JwtApi + BaseApi + SystemApi + CasbinApi + AutoCodeApi + SystemApiApi + AuthorityApi + DictionaryApi + AuthorityMenuApi + OperationRecordApi + DictionaryDetailApi + AuthorityBtnApi + SysExportTemplateApi + AutoCodePluginApi + AutoCodePackageApi + AutoCodeHistoryApi + AutoCodeTemplateApi + SysParamsApi +} + +var ( + apiService = service.ServiceGroupApp.SystemServiceGroup.ApiService + jwtService = service.ServiceGroupApp.SystemServiceGroup.JwtService + menuService = service.ServiceGroupApp.SystemServiceGroup.MenuService + userService = service.ServiceGroupApp.SystemServiceGroup.UserService + initDBService = service.ServiceGroupApp.SystemServiceGroup.InitDBService + casbinService = service.ServiceGroupApp.SystemServiceGroup.CasbinService + baseMenuService = service.ServiceGroupApp.SystemServiceGroup.BaseMenuService + authorityService = service.ServiceGroupApp.SystemServiceGroup.AuthorityService + dictionaryService = service.ServiceGroupApp.SystemServiceGroup.DictionaryService + authorityBtnService = service.ServiceGroupApp.SystemServiceGroup.AuthorityBtnService + systemConfigService = service.ServiceGroupApp.SystemServiceGroup.SystemConfigService + sysParamsService = service.ServiceGroupApp.SystemServiceGroup.SysParamsService + operationRecordService = service.ServiceGroupApp.SystemServiceGroup.OperationRecordService + dictionaryDetailService = service.ServiceGroupApp.SystemServiceGroup.DictionaryDetailService + autoCodeService = service.ServiceGroupApp.SystemServiceGroup.AutoCodeService + autoCodePluginService = service.ServiceGroupApp.SystemServiceGroup.AutoCodePlugin + autoCodePackageService = service.ServiceGroupApp.SystemServiceGroup.AutoCodePackage + autoCodeHistoryService = service.ServiceGroupApp.SystemServiceGroup.AutoCodeHistory + autoCodeTemplateService = service.ServiceGroupApp.SystemServiceGroup.AutoCodeTemplate +) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_api.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_api.go new file mode 100644 index 000000000..7c34f2cdb --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_api.go @@ -0,0 +1,323 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + systemReq "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + systemRes "github.com/flipped-aurora/gin-vue-admin/server/model/system/response" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type SystemApiApi struct{} + +// CreateApi +// @Tags SysApi +// @Summary 创建基础api +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysApi true "api路径, api中文描述, api组, 方法" +// @Success 200 {object} response.Response{msg=string} "创建基础api" +// @Router /api/createApi [post] +func (s *SystemApiApi) CreateApi(c *gin.Context) { + var api system.SysApi + err := c.ShouldBindJSON(&api) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(api, utils.ApiVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = apiService.CreateApi(api) + if err != nil { + global.GVA_LOG.Error("创建失败!", zap.Error(err)) + response.FailWithMessage("创建失败", c) + return + } + response.OkWithMessage("创建成功", c) +} + +// SyncApi +// @Tags SysApi +// @Summary 同步API +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{msg=string} "同步API" +// @Router /api/syncApi [get] +func (s *SystemApiApi) SyncApi(c *gin.Context) { + newApis, deleteApis, ignoreApis, err := apiService.SyncApi() + if err != nil { + global.GVA_LOG.Error("同步失败!", zap.Error(err)) + response.FailWithMessage("同步失败", c) + return + } + response.OkWithData(gin.H{ + "newApis": newApis, + "deleteApis": deleteApis, + "ignoreApis": ignoreApis, + }, c) +} + +// GetApiGroups +// @Tags SysApi +// @Summary 获取API分组 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{msg=string} "获取API分组" +// @Router /api/getApiGroups [get] +func (s *SystemApiApi) GetApiGroups(c *gin.Context) { + groups, apiGroupMap, err := apiService.GetApiGroups() + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithData(gin.H{ + "groups": groups, + "apiGroupMap": apiGroupMap, + }, c) +} + +// IgnoreApi +// @Tags IgnoreApi +// @Summary 忽略API +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{msg=string} "同步API" +// @Router /api/ignoreApi [post] +func (s *SystemApiApi) IgnoreApi(c *gin.Context) { + var ignoreApi system.SysIgnoreApi + err := c.ShouldBindJSON(&ignoreApi) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = apiService.IgnoreApi(ignoreApi) + if err != nil { + global.GVA_LOG.Error("忽略失败!", zap.Error(err)) + response.FailWithMessage("忽略失败", c) + return + } + response.Ok(c) +} + +// EnterSyncApi +// @Tags SysApi +// @Summary 确认同步API +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{msg=string} "确认同步API" +// @Router /api/enterSyncApi [post] +func (s *SystemApiApi) EnterSyncApi(c *gin.Context) { + var syncApi systemRes.SysSyncApis + err := c.ShouldBindJSON(&syncApi) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = apiService.EnterSyncApi(syncApi) + if err != nil { + global.GVA_LOG.Error("忽略失败!", zap.Error(err)) + response.FailWithMessage("忽略失败", c) + return + } + response.Ok(c) +} + +// DeleteApi +// @Tags SysApi +// @Summary 删除api +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysApi true "ID" +// @Success 200 {object} response.Response{msg=string} "删除api" +// @Router /api/deleteApi [post] +func (s *SystemApiApi) DeleteApi(c *gin.Context) { + var api system.SysApi + err := c.ShouldBindJSON(&api) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(api.GVA_MODEL, utils.IdVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = apiService.DeleteApi(api) + if err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage("删除失败", c) + return + } + response.OkWithMessage("删除成功", c) +} + +// GetApiList +// @Tags SysApi +// @Summary 分页获取API列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body systemReq.SearchApiParams true "分页获取API列表" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "分页获取API列表,返回包括列表,总数,页码,每页数量" +// @Router /api/getApiList [post] +func (s *SystemApiApi) GetApiList(c *gin.Context) { + var pageInfo systemReq.SearchApiParams + err := c.ShouldBindJSON(&pageInfo) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(pageInfo.PageInfo, utils.PageInfoVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + list, total, err := apiService.GetAPIInfoList(pageInfo.SysApi, pageInfo.PageInfo, pageInfo.OrderKey, pageInfo.Desc) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(response.PageResult{ + List: list, + Total: total, + Page: pageInfo.Page, + PageSize: pageInfo.PageSize, + }, "获取成功", c) +} + +// GetApiById +// @Tags SysApi +// @Summary 根据id获取api +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.GetById true "根据id获取api" +// @Success 200 {object} response.Response{data=systemRes.SysAPIResponse} "根据id获取api,返回包括api详情" +// @Router /api/getApiById [post] +func (s *SystemApiApi) GetApiById(c *gin.Context) { + var idInfo request.GetById + err := c.ShouldBindJSON(&idInfo) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(idInfo, utils.IdVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + api, err := apiService.GetApiById(idInfo.ID) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(systemRes.SysAPIResponse{Api: api}, "获取成功", c) +} + +// UpdateApi +// @Tags SysApi +// @Summary 修改基础api +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysApi true "api路径, api中文描述, api组, 方法" +// @Success 200 {object} response.Response{msg=string} "修改基础api" +// @Router /api/updateApi [post] +func (s *SystemApiApi) UpdateApi(c *gin.Context) { + var api system.SysApi + err := c.ShouldBindJSON(&api) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(api, utils.ApiVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = apiService.UpdateApi(api) + if err != nil { + global.GVA_LOG.Error("修改失败!", zap.Error(err)) + response.FailWithMessage("修改失败", c) + return + } + response.OkWithMessage("修改成功", c) +} + +// GetAllApis +// @Tags SysApi +// @Summary 获取所有的Api 不分页 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{data=systemRes.SysAPIListResponse,msg=string} "获取所有的Api 不分页,返回包括api列表" +// @Router /api/getAllApis [post] +func (s *SystemApiApi) GetAllApis(c *gin.Context) { + authorityID := utils.GetUserAuthorityId(c) + apis, err := apiService.GetAllApis(authorityID) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(systemRes.SysAPIListResponse{Apis: apis}, "获取成功", c) +} + +// DeleteApisByIds +// @Tags SysApi +// @Summary 删除选中Api +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.IdsReq true "ID" +// @Success 200 {object} response.Response{msg=string} "删除选中Api" +// @Router /api/deleteApisByIds [delete] +func (s *SystemApiApi) DeleteApisByIds(c *gin.Context) { + var ids request.IdsReq + err := c.ShouldBindJSON(&ids) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = apiService.DeleteApisByIds(ids) + if err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage("删除失败", c) + return + } + response.OkWithMessage("删除成功", c) +} + +// FreshCasbin +// @Tags SysApi +// @Summary 刷新casbin缓存 +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{msg=string} "刷新成功" +// @Router /api/freshCasbin [get] +func (s *SystemApiApi) FreshCasbin(c *gin.Context) { + err := casbinService.FreshCasbin() + if err != nil { + global.GVA_LOG.Error("刷新失败!", zap.Error(err)) + response.FailWithMessage("刷新失败", c) + return + } + response.OkWithMessage("刷新成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_authority.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_authority.go new file mode 100644 index 000000000..b34fc3a0b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_authority.go @@ -0,0 +1,202 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + systemRes "github.com/flipped-aurora/gin-vue-admin/server/model/system/response" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type AuthorityApi struct{} + +// CreateAuthority +// @Tags Authority +// @Summary 创建角色 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysAuthority true "权限id, 权限名, 父角色id" +// @Success 200 {object} response.Response{data=systemRes.SysAuthorityResponse,msg=string} "创建角色,返回包括系统角色详情" +// @Router /authority/createAuthority [post] +func (a *AuthorityApi) CreateAuthority(c *gin.Context) { + var authority, authBack system.SysAuthority + var err error + + if err = c.ShouldBindJSON(&authority); err != nil { + response.FailWithMessage(err.Error(), c) + return + } + + if err = utils.Verify(authority, utils.AuthorityVerify); err != nil { + response.FailWithMessage(err.Error(), c) + return + } + + if *authority.ParentId == 0 && global.GVA_CONFIG.System.UseStrictAuth { + authority.ParentId = utils.Pointer(utils.GetUserAuthorityId(c)) + } + + if authBack, err = authorityService.CreateAuthority(authority); err != nil { + global.GVA_LOG.Error("创建失败!", zap.Error(err)) + response.FailWithMessage("创建失败"+err.Error(), c) + return + } + err = casbinService.FreshCasbin() + if err != nil { + global.GVA_LOG.Error("创建成功,权限刷新失败。", zap.Error(err)) + response.FailWithMessage("创建成功,权限刷新失败。"+err.Error(), c) + return + } + response.OkWithDetailed(systemRes.SysAuthorityResponse{Authority: authBack}, "创建成功", c) +} + +// CopyAuthority +// @Tags Authority +// @Summary 拷贝角色 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body response.SysAuthorityCopyResponse true "旧角色id, 新权限id, 新权限名, 新父角色id" +// @Success 200 {object} response.Response{data=systemRes.SysAuthorityResponse,msg=string} "拷贝角色,返回包括系统角色详情" +// @Router /authority/copyAuthority [post] +func (a *AuthorityApi) CopyAuthority(c *gin.Context) { + var copyInfo systemRes.SysAuthorityCopyResponse + err := c.ShouldBindJSON(©Info) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(copyInfo, utils.OldAuthorityVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(copyInfo.Authority, utils.AuthorityVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + adminAuthorityID := utils.GetUserAuthorityId(c) + authBack, err := authorityService.CopyAuthority(adminAuthorityID, copyInfo) + if err != nil { + global.GVA_LOG.Error("拷贝失败!", zap.Error(err)) + response.FailWithMessage("拷贝失败"+err.Error(), c) + return + } + response.OkWithDetailed(systemRes.SysAuthorityResponse{Authority: authBack}, "拷贝成功", c) +} + +// DeleteAuthority +// @Tags Authority +// @Summary 删除角色 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysAuthority true "删除角色" +// @Success 200 {object} response.Response{msg=string} "删除角色" +// @Router /authority/deleteAuthority [post] +func (a *AuthorityApi) DeleteAuthority(c *gin.Context) { + var authority system.SysAuthority + var err error + if err = c.ShouldBindJSON(&authority); err != nil { + response.FailWithMessage(err.Error(), c) + return + } + if err = utils.Verify(authority, utils.AuthorityIdVerify); err != nil { + response.FailWithMessage(err.Error(), c) + return + } + // 删除角色之前需要判断是否有用户正在使用此角色 + if err = authorityService.DeleteAuthority(&authority); err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage("删除失败"+err.Error(), c) + return + } + _ = casbinService.FreshCasbin() + response.OkWithMessage("删除成功", c) +} + +// UpdateAuthority +// @Tags Authority +// @Summary 更新角色信息 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysAuthority true "权限id, 权限名, 父角色id" +// @Success 200 {object} response.Response{data=systemRes.SysAuthorityResponse,msg=string} "更新角色信息,返回包括系统角色详情" +// @Router /authority/updateAuthority [put] +func (a *AuthorityApi) UpdateAuthority(c *gin.Context) { + var auth system.SysAuthority + err := c.ShouldBindJSON(&auth) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(auth, utils.AuthorityVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + authority, err := authorityService.UpdateAuthority(auth) + if err != nil { + global.GVA_LOG.Error("更新失败!", zap.Error(err)) + response.FailWithMessage("更新失败"+err.Error(), c) + return + } + response.OkWithDetailed(systemRes.SysAuthorityResponse{Authority: authority}, "更新成功", c) +} + +// GetAuthorityList +// @Tags Authority +// @Summary 分页获取角色列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.PageInfo true "页码, 每页大小" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "分页获取角色列表,返回包括列表,总数,页码,每页数量" +// @Router /authority/getAuthorityList [post] +func (a *AuthorityApi) GetAuthorityList(c *gin.Context) { + authorityID := utils.GetUserAuthorityId(c) + list, err := authorityService.GetAuthorityInfoList(authorityID) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败"+err.Error(), c) + return + } + response.OkWithDetailed(list, "获取成功", c) +} + +// SetDataAuthority +// @Tags Authority +// @Summary 设置角色资源权限 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysAuthority true "设置角色资源权限" +// @Success 200 {object} response.Response{msg=string} "设置角色资源权限" +// @Router /authority/setDataAuthority [post] +func (a *AuthorityApi) SetDataAuthority(c *gin.Context) { + var auth system.SysAuthority + err := c.ShouldBindJSON(&auth) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(auth, utils.AuthorityIdVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + adminAuthorityID := utils.GetUserAuthorityId(c) + err = authorityService.SetDataAuthority(adminAuthorityID, auth) + if err != nil { + global.GVA_LOG.Error("设置失败!", zap.Error(err)) + response.FailWithMessage("设置失败"+err.Error(), c) + return + } + response.OkWithMessage("设置成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_authority_btn.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_authority_btn.go new file mode 100644 index 000000000..94f02a00e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_authority_btn.go @@ -0,0 +1,80 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type AuthorityBtnApi struct{} + +// GetAuthorityBtn +// @Tags AuthorityBtn +// @Summary 获取权限按钮 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.SysAuthorityBtnReq true "菜单id, 角色id, 选中的按钮id" +// @Success 200 {object} response.Response{data=response.SysAuthorityBtnRes,msg=string} "返回列表成功" +// @Router /authorityBtn/getAuthorityBtn [post] +func (a *AuthorityBtnApi) GetAuthorityBtn(c *gin.Context) { + var req request.SysAuthorityBtnReq + err := c.ShouldBindJSON(&req) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + res, err := authorityBtnService.GetAuthorityBtn(req) + if err != nil { + global.GVA_LOG.Error("查询失败!", zap.Error(err)) + response.FailWithMessage("查询失败", c) + return + } + response.OkWithDetailed(res, "查询成功", c) +} + +// SetAuthorityBtn +// @Tags AuthorityBtn +// @Summary 设置权限按钮 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.SysAuthorityBtnReq true "菜单id, 角色id, 选中的按钮id" +// @Success 200 {object} response.Response{msg=string} "返回列表成功" +// @Router /authorityBtn/setAuthorityBtn [post] +func (a *AuthorityBtnApi) SetAuthorityBtn(c *gin.Context) { + var req request.SysAuthorityBtnReq + err := c.ShouldBindJSON(&req) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = authorityBtnService.SetAuthorityBtn(req) + if err != nil { + global.GVA_LOG.Error("分配失败!", zap.Error(err)) + response.FailWithMessage("分配失败", c) + return + } + response.OkWithMessage("分配成功", c) +} + +// CanRemoveAuthorityBtn +// @Tags AuthorityBtn +// @Summary 设置权限按钮 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{msg=string} "删除成功" +// @Router /authorityBtn/canRemoveAuthorityBtn [post] +func (a *AuthorityBtnApi) CanRemoveAuthorityBtn(c *gin.Context) { + id := c.Query("id") + err := authorityBtnService.CanRemoveAuthorityBtn(id) + if err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage(err.Error(), c) + return + } + response.OkWithMessage("删除成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_auto_code.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_auto_code.go new file mode 100644 index 000000000..02f458bb3 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_auto_code.go @@ -0,0 +1,155 @@ +package system + +import ( + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/model/common" + "github.com/goccy/go-json" + "io" + "strings" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/utils/request" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type AutoCodeApi struct{} + +// GetDB +// @Tags AutoCode +// @Summary 获取当前所有数据库 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "获取当前所有数据库" +// @Router /autoCode/getDB [get] +func (autoApi *AutoCodeApi) GetDB(c *gin.Context) { + businessDB := c.Query("businessDB") + dbs, err := autoCodeService.Database(businessDB).GetDB(businessDB) + var dbList []map[string]interface{} + for _, db := range global.GVA_CONFIG.DBList { + var item = make(map[string]interface{}) + item["aliasName"] = db.AliasName + item["dbName"] = db.Dbname + item["disable"] = db.Disable + item["dbtype"] = db.Type + dbList = append(dbList, item) + } + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + } else { + response.OkWithDetailed(gin.H{"dbs": dbs, "dbList": dbList}, "获取成功", c) + } +} + +// GetTables +// @Tags AutoCode +// @Summary 获取当前数据库所有表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "获取当前数据库所有表" +// @Router /autoCode/getTables [get] +func (autoApi *AutoCodeApi) GetTables(c *gin.Context) { + dbName := c.Query("dbName") + businessDB := c.Query("businessDB") + if dbName == "" { + dbName = *global.GVA_ACTIVE_DBNAME + if businessDB != "" { + for _, db := range global.GVA_CONFIG.DBList { + if db.AliasName == businessDB { + dbName = db.Dbname + } + } + } + } + + tables, err := autoCodeService.Database(businessDB).GetTables(businessDB, dbName) + if err != nil { + global.GVA_LOG.Error("查询table失败!", zap.Error(err)) + response.FailWithMessage("查询table失败", c) + } else { + response.OkWithDetailed(gin.H{"tables": tables}, "获取成功", c) + } +} + +// GetColumn +// @Tags AutoCode +// @Summary 获取当前表所有字段 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "获取当前表所有字段" +// @Router /autoCode/getColumn [get] +func (autoApi *AutoCodeApi) GetColumn(c *gin.Context) { + businessDB := c.Query("businessDB") + dbName := c.Query("dbName") + if dbName == "" { + dbName = *global.GVA_ACTIVE_DBNAME + if businessDB != "" { + for _, db := range global.GVA_CONFIG.DBList { + if db.AliasName == businessDB { + dbName = db.Dbname + } + } + } + } + tableName := c.Query("tableName") + columns, err := autoCodeService.Database(businessDB).GetColumn(businessDB, tableName, dbName) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + } else { + response.OkWithDetailed(gin.H{"columns": columns}, "获取成功", c) + } +} + +func (autoApi *AutoCodeApi) LLMAuto(c *gin.Context) { + var llm common.JSONMap + err := c.ShouldBindJSON(&llm) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + if global.GVA_CONFIG.AutoCode.AiPath == "" { + response.FailWithMessage("请先前往插件市场个人中心获取AiPath并填入config.yaml中", c) + return + } + + path := strings.ReplaceAll(global.GVA_CONFIG.AutoCode.AiPath, "{FUNC}", fmt.Sprintf("api/chat/%s", llm["mode"])) + res, err := request.HttpRequest( + path, + "POST", + nil, + nil, + llm, + ) + if err != nil { + global.GVA_LOG.Error("大模型生成失败!", zap.Error(err)) + response.FailWithMessage("大模型生成失败"+err.Error(), c) + return + } + var resStruct response.Response + b, err := io.ReadAll(res.Body) + defer res.Body.Close() + if err != nil { + global.GVA_LOG.Error("大模型生成失败!", zap.Error(err)) + response.FailWithMessage("大模型生成失败"+err.Error(), c) + return + } + err = json.Unmarshal(b, &resStruct) + if err != nil { + global.GVA_LOG.Error("大模型生成失败!", zap.Error(err)) + response.FailWithMessage("大模型生成失败"+err.Error(), c) + return + } + + if resStruct.Code == 7 { + global.GVA_LOG.Error("大模型生成失败!"+resStruct.Msg, zap.Error(err)) + response.FailWithMessage("大模型生成失败"+resStruct.Msg, c) + return + } + response.OkWithData(resStruct.Data, c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_captcha.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_captcha.go new file mode 100644 index 000000000..b9f2110ec --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_captcha.go @@ -0,0 +1,70 @@ +package system + +import ( + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + systemRes "github.com/flipped-aurora/gin-vue-admin/server/model/system/response" + "github.com/gin-gonic/gin" + "github.com/mojocn/base64Captcha" + "go.uber.org/zap" +) + +// 当开启多服务器部署时,替换下面的配置,使用redis共享存储验证码 +// var store = captcha.NewDefaultRedisStore() +var store = base64Captcha.DefaultMemStore + +type BaseApi struct{} + +// Captcha +// @Tags Base +// @Summary 生成验证码 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{data=systemRes.SysCaptchaResponse,msg=string} "生成验证码,返回包括随机数id,base64,验证码长度,是否开启验证码" +// @Router /base/captcha [post] +func (b *BaseApi) Captcha(c *gin.Context) { + // 判断验证码是否开启 + openCaptcha := global.GVA_CONFIG.Captcha.OpenCaptcha // 是否开启防爆次数 + openCaptchaTimeOut := global.GVA_CONFIG.Captcha.OpenCaptchaTimeOut // 缓存超时时间 + key := c.ClientIP() + v, ok := global.BlackCache.Get(key) + if !ok { + global.BlackCache.Set(key, 1, time.Second*time.Duration(openCaptchaTimeOut)) + } + + var oc bool + if openCaptcha == 0 || openCaptcha < interfaceToInt(v) { + oc = true + } + // 字符,公式,验证码配置 + // 生成默认数字的driver + driver := base64Captcha.NewDriverDigit(global.GVA_CONFIG.Captcha.ImgHeight, global.GVA_CONFIG.Captcha.ImgWidth, global.GVA_CONFIG.Captcha.KeyLong, 0.7, 80) + // cp := base64Captcha.NewCaptcha(driver, store.UseWithCtx(c)) // v8下使用redis + cp := base64Captcha.NewCaptcha(driver, store) + id, b64s, _, err := cp.Generate() + if err != nil { + global.GVA_LOG.Error("验证码获取失败!", zap.Error(err)) + response.FailWithMessage("验证码获取失败", c) + return + } + response.OkWithDetailed(systemRes.SysCaptchaResponse{ + CaptchaId: id, + PicPath: b64s, + CaptchaLength: global.GVA_CONFIG.Captcha.KeyLong, + OpenCaptcha: oc, + }, "验证码获取成功", c) +} + +// 类型转换 +func interfaceToInt(v interface{}) (i int) { + switch v := v.(type) { + case int: + i = v + default: + i = 0 + } + return +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_casbin.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_casbin.go new file mode 100644 index 000000000..c1bf54894 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_casbin.go @@ -0,0 +1,69 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + systemRes "github.com/flipped-aurora/gin-vue-admin/server/model/system/response" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type CasbinApi struct{} + +// UpdateCasbin +// @Tags Casbin +// @Summary 更新角色api权限 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.CasbinInReceive true "权限id, 权限模型列表" +// @Success 200 {object} response.Response{msg=string} "更新角色api权限" +// @Router /casbin/UpdateCasbin [post] +func (cas *CasbinApi) UpdateCasbin(c *gin.Context) { + var cmr request.CasbinInReceive + err := c.ShouldBindJSON(&cmr) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(cmr, utils.AuthorityIdVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + adminAuthorityID := utils.GetUserAuthorityId(c) + err = casbinService.UpdateCasbin(adminAuthorityID, cmr.AuthorityId, cmr.CasbinInfos) + if err != nil { + global.GVA_LOG.Error("更新失败!", zap.Error(err)) + response.FailWithMessage("更新失败", c) + return + } + response.OkWithMessage("更新成功", c) +} + +// GetPolicyPathByAuthorityId +// @Tags Casbin +// @Summary 获取权限列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.CasbinInReceive true "权限id, 权限模型列表" +// @Success 200 {object} response.Response{data=systemRes.PolicyPathResponse,msg=string} "获取权限列表,返回包括casbin详情列表" +// @Router /casbin/getPolicyPathByAuthorityId [post] +func (cas *CasbinApi) GetPolicyPathByAuthorityId(c *gin.Context) { + var casbin request.CasbinInReceive + err := c.ShouldBindJSON(&casbin) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(casbin, utils.AuthorityIdVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + paths := casbinService.GetPolicyPathByAuthorityId(casbin.AuthorityId) + response.OkWithDetailed(systemRes.PolicyPathResponse{Paths: paths}, "获取成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_dictionary.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_dictionary.go new file mode 100644 index 000000000..1dfe9d089 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_dictionary.go @@ -0,0 +1,129 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type DictionaryApi struct{} + +// CreateSysDictionary +// @Tags SysDictionary +// @Summary 创建SysDictionary +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysDictionary true "SysDictionary模型" +// @Success 200 {object} response.Response{msg=string} "创建SysDictionary" +// @Router /sysDictionary/createSysDictionary [post] +func (s *DictionaryApi) CreateSysDictionary(c *gin.Context) { + var dictionary system.SysDictionary + err := c.ShouldBindJSON(&dictionary) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = dictionaryService.CreateSysDictionary(dictionary) + if err != nil { + global.GVA_LOG.Error("创建失败!", zap.Error(err)) + response.FailWithMessage("创建失败", c) + return + } + response.OkWithMessage("创建成功", c) +} + +// DeleteSysDictionary +// @Tags SysDictionary +// @Summary 删除SysDictionary +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysDictionary true "SysDictionary模型" +// @Success 200 {object} response.Response{msg=string} "删除SysDictionary" +// @Router /sysDictionary/deleteSysDictionary [delete] +func (s *DictionaryApi) DeleteSysDictionary(c *gin.Context) { + var dictionary system.SysDictionary + err := c.ShouldBindJSON(&dictionary) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = dictionaryService.DeleteSysDictionary(dictionary) + if err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage("删除失败", c) + return + } + response.OkWithMessage("删除成功", c) +} + +// UpdateSysDictionary +// @Tags SysDictionary +// @Summary 更新SysDictionary +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysDictionary true "SysDictionary模型" +// @Success 200 {object} response.Response{msg=string} "更新SysDictionary" +// @Router /sysDictionary/updateSysDictionary [put] +func (s *DictionaryApi) UpdateSysDictionary(c *gin.Context) { + var dictionary system.SysDictionary + err := c.ShouldBindJSON(&dictionary) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = dictionaryService.UpdateSysDictionary(&dictionary) + if err != nil { + global.GVA_LOG.Error("更新失败!", zap.Error(err)) + response.FailWithMessage("更新失败", c) + return + } + response.OkWithMessage("更新成功", c) +} + +// FindSysDictionary +// @Tags SysDictionary +// @Summary 用id查询SysDictionary +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query system.SysDictionary true "ID或字典英名" +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "用id查询SysDictionary" +// @Router /sysDictionary/findSysDictionary [get] +func (s *DictionaryApi) FindSysDictionary(c *gin.Context) { + var dictionary system.SysDictionary + err := c.ShouldBindQuery(&dictionary) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + sysDictionary, err := dictionaryService.GetSysDictionary(dictionary.Type, dictionary.ID, dictionary.Status) + if err != nil { + global.GVA_LOG.Error("字典未创建或未开启!", zap.Error(err)) + response.FailWithMessage("字典未创建或未开启", c) + return + } + response.OkWithDetailed(gin.H{"resysDictionary": sysDictionary}, "查询成功", c) +} + +// GetSysDictionaryList +// @Tags SysDictionary +// @Summary 分页获取SysDictionary列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "分页获取SysDictionary列表,返回包括列表,总数,页码,每页数量" +// @Router /sysDictionary/getSysDictionaryList [get] +func (s *DictionaryApi) GetSysDictionaryList(c *gin.Context) { + list, err := dictionaryService.GetSysDictionaryInfoList() + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(list, "获取成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_dictionary_detail.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_dictionary_detail.go new file mode 100644 index 000000000..754af1be6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_dictionary_detail.go @@ -0,0 +1,148 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type DictionaryDetailApi struct{} + +// CreateSysDictionaryDetail +// @Tags SysDictionaryDetail +// @Summary 创建SysDictionaryDetail +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysDictionaryDetail true "SysDictionaryDetail模型" +// @Success 200 {object} response.Response{msg=string} "创建SysDictionaryDetail" +// @Router /sysDictionaryDetail/createSysDictionaryDetail [post] +func (s *DictionaryDetailApi) CreateSysDictionaryDetail(c *gin.Context) { + var detail system.SysDictionaryDetail + err := c.ShouldBindJSON(&detail) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = dictionaryDetailService.CreateSysDictionaryDetail(detail) + if err != nil { + global.GVA_LOG.Error("创建失败!", zap.Error(err)) + response.FailWithMessage("创建失败", c) + return + } + response.OkWithMessage("创建成功", c) +} + +// DeleteSysDictionaryDetail +// @Tags SysDictionaryDetail +// @Summary 删除SysDictionaryDetail +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysDictionaryDetail true "SysDictionaryDetail模型" +// @Success 200 {object} response.Response{msg=string} "删除SysDictionaryDetail" +// @Router /sysDictionaryDetail/deleteSysDictionaryDetail [delete] +func (s *DictionaryDetailApi) DeleteSysDictionaryDetail(c *gin.Context) { + var detail system.SysDictionaryDetail + err := c.ShouldBindJSON(&detail) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = dictionaryDetailService.DeleteSysDictionaryDetail(detail) + if err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage("删除失败", c) + return + } + response.OkWithMessage("删除成功", c) +} + +// UpdateSysDictionaryDetail +// @Tags SysDictionaryDetail +// @Summary 更新SysDictionaryDetail +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysDictionaryDetail true "更新SysDictionaryDetail" +// @Success 200 {object} response.Response{msg=string} "更新SysDictionaryDetail" +// @Router /sysDictionaryDetail/updateSysDictionaryDetail [put] +func (s *DictionaryDetailApi) UpdateSysDictionaryDetail(c *gin.Context) { + var detail system.SysDictionaryDetail + err := c.ShouldBindJSON(&detail) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = dictionaryDetailService.UpdateSysDictionaryDetail(&detail) + if err != nil { + global.GVA_LOG.Error("更新失败!", zap.Error(err)) + response.FailWithMessage("更新失败", c) + return + } + response.OkWithMessage("更新成功", c) +} + +// FindSysDictionaryDetail +// @Tags SysDictionaryDetail +// @Summary 用id查询SysDictionaryDetail +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query system.SysDictionaryDetail true "用id查询SysDictionaryDetail" +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "用id查询SysDictionaryDetail" +// @Router /sysDictionaryDetail/findSysDictionaryDetail [get] +func (s *DictionaryDetailApi) FindSysDictionaryDetail(c *gin.Context) { + var detail system.SysDictionaryDetail + err := c.ShouldBindQuery(&detail) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(detail, utils.IdVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + reSysDictionaryDetail, err := dictionaryDetailService.GetSysDictionaryDetail(detail.ID) + if err != nil { + global.GVA_LOG.Error("查询失败!", zap.Error(err)) + response.FailWithMessage("查询失败", c) + return + } + response.OkWithDetailed(gin.H{"reSysDictionaryDetail": reSysDictionaryDetail}, "查询成功", c) +} + +// GetSysDictionaryDetailList +// @Tags SysDictionaryDetail +// @Summary 分页获取SysDictionaryDetail列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query request.SysDictionaryDetailSearch true "页码, 每页大小, 搜索条件" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "分页获取SysDictionaryDetail列表,返回包括列表,总数,页码,每页数量" +// @Router /sysDictionaryDetail/getSysDictionaryDetailList [get] +func (s *DictionaryDetailApi) GetSysDictionaryDetailList(c *gin.Context) { + var pageInfo request.SysDictionaryDetailSearch + err := c.ShouldBindQuery(&pageInfo) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + list, total, err := dictionaryDetailService.GetSysDictionaryDetailInfoList(pageInfo) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(response.PageResult{ + List: list, + Total: total, + Page: pageInfo.Page, + PageSize: pageInfo.PageSize, + }, "获取成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_export_template.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_export_template.go new file mode 100644 index 000000000..38b22965b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_export_template.go @@ -0,0 +1,258 @@ +package system + +import ( + "fmt" + "net/http" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + systemReq "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/flipped-aurora/gin-vue-admin/server/service" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type SysExportTemplateApi struct { +} + +var sysExportTemplateService = service.ServiceGroupApp.SystemServiceGroup.SysExportTemplateService + +// CreateSysExportTemplate 创建导出模板 +// @Tags SysExportTemplate +// @Summary 创建导出模板 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysExportTemplate true "创建导出模板" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}" +// @Router /sysExportTemplate/createSysExportTemplate [post] +func (sysExportTemplateApi *SysExportTemplateApi) CreateSysExportTemplate(c *gin.Context) { + var sysExportTemplate system.SysExportTemplate + err := c.ShouldBindJSON(&sysExportTemplate) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + verify := utils.Rules{ + "Name": {utils.NotEmpty()}, + } + if err := utils.Verify(sysExportTemplate, verify); err != nil { + response.FailWithMessage(err.Error(), c) + return + } + if err := sysExportTemplateService.CreateSysExportTemplate(&sysExportTemplate); err != nil { + global.GVA_LOG.Error("创建失败!", zap.Error(err)) + response.FailWithMessage("创建失败", c) + } else { + response.OkWithMessage("创建成功", c) + } +} + +// DeleteSysExportTemplate 删除导出模板 +// @Tags SysExportTemplate +// @Summary 删除导出模板 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysExportTemplate true "删除导出模板" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /sysExportTemplate/deleteSysExportTemplate [delete] +func (sysExportTemplateApi *SysExportTemplateApi) DeleteSysExportTemplate(c *gin.Context) { + var sysExportTemplate system.SysExportTemplate + err := c.ShouldBindJSON(&sysExportTemplate) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + if err := sysExportTemplateService.DeleteSysExportTemplate(sysExportTemplate); err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage("删除失败", c) + } else { + response.OkWithMessage("删除成功", c) + } +} + +// DeleteSysExportTemplateByIds 批量删除导出模板 +// @Tags SysExportTemplate +// @Summary 批量删除导出模板 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.IdsReq true "批量删除导出模板" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"批量删除成功"}" +// @Router /sysExportTemplate/deleteSysExportTemplateByIds [delete] +func (sysExportTemplateApi *SysExportTemplateApi) DeleteSysExportTemplateByIds(c *gin.Context) { + var IDS request.IdsReq + err := c.ShouldBindJSON(&IDS) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + if err := sysExportTemplateService.DeleteSysExportTemplateByIds(IDS); err != nil { + global.GVA_LOG.Error("批量删除失败!", zap.Error(err)) + response.FailWithMessage("批量删除失败", c) + } else { + response.OkWithMessage("批量删除成功", c) + } +} + +// UpdateSysExportTemplate 更新导出模板 +// @Tags SysExportTemplate +// @Summary 更新导出模板 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysExportTemplate true "更新导出模板" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}" +// @Router /sysExportTemplate/updateSysExportTemplate [put] +func (sysExportTemplateApi *SysExportTemplateApi) UpdateSysExportTemplate(c *gin.Context) { + var sysExportTemplate system.SysExportTemplate + err := c.ShouldBindJSON(&sysExportTemplate) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + verify := utils.Rules{ + "Name": {utils.NotEmpty()}, + } + if err := utils.Verify(sysExportTemplate, verify); err != nil { + response.FailWithMessage(err.Error(), c) + return + } + if err := sysExportTemplateService.UpdateSysExportTemplate(sysExportTemplate); err != nil { + global.GVA_LOG.Error("更新失败!", zap.Error(err)) + response.FailWithMessage("更新失败", c) + } else { + response.OkWithMessage("更新成功", c) + } +} + +// FindSysExportTemplate 用id查询导出模板 +// @Tags SysExportTemplate +// @Summary 用id查询导出模板 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query system.SysExportTemplate true "用id查询导出模板" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" +// @Router /sysExportTemplate/findSysExportTemplate [get] +func (sysExportTemplateApi *SysExportTemplateApi) FindSysExportTemplate(c *gin.Context) { + var sysExportTemplate system.SysExportTemplate + err := c.ShouldBindQuery(&sysExportTemplate) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + if resysExportTemplate, err := sysExportTemplateService.GetSysExportTemplate(sysExportTemplate.ID); err != nil { + global.GVA_LOG.Error("查询失败!", zap.Error(err)) + response.FailWithMessage("查询失败", c) + } else { + response.OkWithData(gin.H{"resysExportTemplate": resysExportTemplate}, c) + } +} + +// GetSysExportTemplateList 分页获取导出模板列表 +// @Tags SysExportTemplate +// @Summary 分页获取导出模板列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query systemReq.SysExportTemplateSearch true "分页获取导出模板列表" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /sysExportTemplate/getSysExportTemplateList [get] +func (sysExportTemplateApi *SysExportTemplateApi) GetSysExportTemplateList(c *gin.Context) { + var pageInfo systemReq.SysExportTemplateSearch + err := c.ShouldBindQuery(&pageInfo) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + if list, total, err := sysExportTemplateService.GetSysExportTemplateInfoList(pageInfo); err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + } else { + response.OkWithDetailed(response.PageResult{ + List: list, + Total: total, + Page: pageInfo.Page, + PageSize: pageInfo.PageSize, + }, "获取成功", c) + } +} + +// ExportExcel 导出表格 +// @Tags SysExportTemplate +// @Summary 导出表格 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Router /sysExportTemplate/exportExcel [get] +func (sysExportTemplateApi *SysExportTemplateApi) ExportExcel(c *gin.Context) { + templateID := c.Query("templateID") + queryParams := c.Request.URL.Query() + if templateID == "" { + response.FailWithMessage("模板ID不能为空", c) + return + } + if file, name, err := sysExportTemplateService.ExportExcel(templateID, queryParams); err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + } else { + c.Header("Content-Disposition", fmt.Sprintf("attachment; filename=%s", name+utils.RandomString(6)+".xlsx")) // 对下载的文件重命名 + c.Header("success", "true") + c.Data(http.StatusOK, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", file.Bytes()) + } +} + +// ExportTemplate 导出表格模板 +// @Tags SysExportTemplate +// @Summary 导出表格模板 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Router /sysExportTemplate/exportExcel [get] +func (sysExportTemplateApi *SysExportTemplateApi) ExportTemplate(c *gin.Context) { + templateID := c.Query("templateID") + if templateID == "" { + response.FailWithMessage("模板ID不能为空", c) + return + } + if file, name, err := sysExportTemplateService.ExportTemplate(templateID); err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + } else { + c.Header("Content-Disposition", fmt.Sprintf("attachment; filename=%s", name+"模板.xlsx")) // 对下载的文件重命名 + c.Header("success", "true") + c.Data(http.StatusOK, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", file.Bytes()) + } +} + +// ImportExcel 导入表格 +// @Tags SysImportTemplate +// @Summary 导入表格 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Router /sysExportTemplate/importExcel [post] +func (sysExportTemplateApi *SysExportTemplateApi) ImportExcel(c *gin.Context) { + templateID := c.Query("templateID") + if templateID == "" { + response.FailWithMessage("模板ID不能为空", c) + return + } + file, err := c.FormFile("file") + if err != nil { + global.GVA_LOG.Error("文件获取失败!", zap.Error(err)) + response.FailWithMessage("文件获取失败", c) + return + } + if err := sysExportTemplateService.ImportExcel(templateID, file); err != nil { + global.GVA_LOG.Error(err.Error(), zap.Error(err)) + response.FailWithMessage(err.Error(), c) + } else { + response.OkWithMessage("导入成功", c) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_initdb.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_initdb.go new file mode 100644 index 000000000..684de2680 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_initdb.go @@ -0,0 +1,64 @@ +package system + +import ( + "log" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "go.uber.org/zap" + + "github.com/gin-gonic/gin" +) + +type DBApi struct{} + +// InitDB +// @Tags InitDB +// @Summary 初始化用户数据库 +// @Produce application/json +// @Param data body request.InitDB true "初始化数据库参数" +// @Success 200 {object} response.Response{data=string} "初始化用户数据库" +// @Router /init/initdb [post] +func (i *DBApi) InitDB(c *gin.Context) { + if global.GVA_DB != nil { + global.GVA_LOG.Error("已存在数据库配置!") + response.FailWithMessage("已存在数据库配置", c) + return + } + var dbInfo request.InitDB + dbInfo.AdminPassword = "123456" + log.Println("dbInfo:", dbInfo) + if err := c.ShouldBindJSON(&dbInfo); err != nil { + global.GVA_LOG.Error("参数校验不通过!", zap.Error(err)) + response.FailWithMessage("参数校验不通过", c) + return + } + if err := initDBService.InitDB(dbInfo); err != nil { + log.Println("err:", err) + global.GVA_LOG.Error("自动创建数据库失败!", zap.Error(err)) + response.FailWithMessage("自动创建数据库失败,请查看后台日志,检查后在进行初始化", c) + return + } + response.OkWithMessage("自动创建数据库成功", c) +} + +// CheckDB +// @Tags CheckDB +// @Summary 初始化用户数据库 +// @Produce application/json +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "初始化用户数据库" +// @Router /init/checkdb [post] +func (i *DBApi) CheckDB(c *gin.Context) { + var ( + message = "前往初始化数据库" + needInit = true + ) + + if global.GVA_DB != nil { + message = "数据库无需初始化" + needInit = false + } + global.GVA_LOG.Info(message) + response.OkWithDetailed(gin.H{"needInit": needInit}, message, c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_jwt_blacklist.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_jwt_blacklist.go new file mode 100644 index 000000000..f66c155c7 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_jwt_blacklist.go @@ -0,0 +1,33 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type JwtApi struct{} + +// JsonInBlacklist +// @Tags Jwt +// @Summary jwt加入黑名单 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{msg=string} "jwt加入黑名单" +// @Router /jwt/jsonInBlacklist [post] +func (j *JwtApi) JsonInBlacklist(c *gin.Context) { + token := utils.GetToken(c) + jwt := system.JwtBlacklist{Jwt: token} + err := jwtService.JsonInBlacklist(jwt) + if err != nil { + global.GVA_LOG.Error("jwt作废失败!", zap.Error(err)) + response.FailWithMessage("jwt作废失败", c) + return + } + utils.ClearToken(c) + response.OkWithMessage("jwt作废成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_menu.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_menu.go new file mode 100644 index 000000000..864b61f38 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_menu.go @@ -0,0 +1,265 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + systemReq "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + systemRes "github.com/flipped-aurora/gin-vue-admin/server/model/system/response" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type AuthorityMenuApi struct{} + +// GetMenu +// @Tags AuthorityMenu +// @Summary 获取用户动态路由 +// @Security ApiKeyAuth +// @Produce application/json +// @Param data body request.Empty true "空" +// @Success 200 {object} response.Response{data=systemRes.SysMenusResponse,msg=string} "获取用户动态路由,返回包括系统菜单详情列表" +// @Router /menu/getMenu [post] +func (a *AuthorityMenuApi) GetMenu(c *gin.Context) { + menus, err := menuService.GetMenuTree(utils.GetUserAuthorityId(c)) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + if menus == nil { + menus = []system.SysMenu{} + } + response.OkWithDetailed(systemRes.SysMenusResponse{Menus: menus}, "获取成功", c) +} + +// GetBaseMenuTree +// @Tags AuthorityMenu +// @Summary 获取用户动态路由 +// @Security ApiKeyAuth +// @Produce application/json +// @Param data body request.Empty true "空" +// @Success 200 {object} response.Response{data=systemRes.SysBaseMenusResponse,msg=string} "获取用户动态路由,返回包括系统菜单列表" +// @Router /menu/getBaseMenuTree [post] +func (a *AuthorityMenuApi) GetBaseMenuTree(c *gin.Context) { + authority := utils.GetUserAuthorityId(c) + menus, err := menuService.GetBaseMenuTree(authority) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(systemRes.SysBaseMenusResponse{Menus: menus}, "获取成功", c) +} + +// AddMenuAuthority +// @Tags AuthorityMenu +// @Summary 增加menu和角色关联关系 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body systemReq.AddMenuAuthorityInfo true "角色ID" +// @Success 200 {object} response.Response{msg=string} "增加menu和角色关联关系" +// @Router /menu/addMenuAuthority [post] +func (a *AuthorityMenuApi) AddMenuAuthority(c *gin.Context) { + var authorityMenu systemReq.AddMenuAuthorityInfo + err := c.ShouldBindJSON(&authorityMenu) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + if err := utils.Verify(authorityMenu, utils.AuthorityIdVerify); err != nil { + response.FailWithMessage(err.Error(), c) + return + } + adminAuthorityID := utils.GetUserAuthorityId(c) + if err := menuService.AddMenuAuthority(authorityMenu.Menus, adminAuthorityID, authorityMenu.AuthorityId); err != nil { + global.GVA_LOG.Error("添加失败!", zap.Error(err)) + response.FailWithMessage("添加失败", c) + } else { + response.OkWithMessage("添加成功", c) + } +} + +// GetMenuAuthority +// @Tags AuthorityMenu +// @Summary 获取指定角色menu +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.GetAuthorityId true "角色ID" +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "获取指定角色menu" +// @Router /menu/getMenuAuthority [post] +func (a *AuthorityMenuApi) GetMenuAuthority(c *gin.Context) { + var param request.GetAuthorityId + err := c.ShouldBindJSON(¶m) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(param, utils.AuthorityIdVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + menus, err := menuService.GetMenuAuthority(¶m) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithDetailed(systemRes.SysMenusResponse{Menus: menus}, "获取失败", c) + return + } + response.OkWithDetailed(gin.H{"menus": menus}, "获取成功", c) +} + +// AddBaseMenu +// @Tags Menu +// @Summary 新增菜单 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysBaseMenu true "路由path, 父菜单ID, 路由name, 对应前端文件路径, 排序标记" +// @Success 200 {object} response.Response{msg=string} "新增菜单" +// @Router /menu/addBaseMenu [post] +func (a *AuthorityMenuApi) AddBaseMenu(c *gin.Context) { + var menu system.SysBaseMenu + err := c.ShouldBindJSON(&menu) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(menu, utils.MenuVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(menu.Meta, utils.MenuMetaVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = menuService.AddBaseMenu(menu) + if err != nil { + global.GVA_LOG.Error("添加失败!", zap.Error(err)) + response.FailWithMessage("添加失败", c) + return + } + response.OkWithMessage("添加成功", c) +} + +// DeleteBaseMenu +// @Tags Menu +// @Summary 删除菜单 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.GetById true "菜单id" +// @Success 200 {object} response.Response{msg=string} "删除菜单" +// @Router /menu/deleteBaseMenu [post] +func (a *AuthorityMenuApi) DeleteBaseMenu(c *gin.Context) { + var menu request.GetById + err := c.ShouldBindJSON(&menu) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(menu, utils.IdVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = baseMenuService.DeleteBaseMenu(menu.ID) + if err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage("删除失败:"+err.Error(), c) + return + } + response.OkWithMessage("删除成功", c) +} + +// UpdateBaseMenu +// @Tags Menu +// @Summary 更新菜单 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysBaseMenu true "路由path, 父菜单ID, 路由name, 对应前端文件路径, 排序标记" +// @Success 200 {object} response.Response{msg=string} "更新菜单" +// @Router /menu/updateBaseMenu [post] +func (a *AuthorityMenuApi) UpdateBaseMenu(c *gin.Context) { + var menu system.SysBaseMenu + err := c.ShouldBindJSON(&menu) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(menu, utils.MenuVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(menu.Meta, utils.MenuMetaVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = baseMenuService.UpdateBaseMenu(menu) + if err != nil { + global.GVA_LOG.Error("更新失败!", zap.Error(err)) + response.FailWithMessage("更新失败", c) + return + } + response.OkWithMessage("更新成功", c) +} + +// GetBaseMenuById +// @Tags Menu +// @Summary 根据id获取菜单 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.GetById true "菜单id" +// @Success 200 {object} response.Response{data=systemRes.SysBaseMenuResponse,msg=string} "根据id获取菜单,返回包括系统菜单列表" +// @Router /menu/getBaseMenuById [post] +func (a *AuthorityMenuApi) GetBaseMenuById(c *gin.Context) { + var idInfo request.GetById + err := c.ShouldBindJSON(&idInfo) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(idInfo, utils.IdVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + menu, err := baseMenuService.GetBaseMenuById(idInfo.ID) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(systemRes.SysBaseMenuResponse{Menu: menu}, "获取成功", c) +} + +// GetMenuList +// @Tags Menu +// @Summary 分页获取基础menu列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.PageInfo true "页码, 每页大小" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "分页获取基础menu列表,返回包括列表,总数,页码,每页数量" +// @Router /menu/getMenuList [post] +func (a *AuthorityMenuApi) GetMenuList(c *gin.Context) { + authorityID := utils.GetUserAuthorityId(c) + menuList, err := menuService.GetInfoList(authorityID) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(menuList, "获取成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_operation_record.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_operation_record.go new file mode 100644 index 000000000..40daeb98d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_operation_record.go @@ -0,0 +1,149 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + systemReq "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type OperationRecordApi struct{} + +// CreateSysOperationRecord +// @Tags SysOperationRecord +// @Summary 创建SysOperationRecord +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysOperationRecord true "创建SysOperationRecord" +// @Success 200 {object} response.Response{msg=string} "创建SysOperationRecord" +// @Router /sysOperationRecord/createSysOperationRecord [post] +func (s *OperationRecordApi) CreateSysOperationRecord(c *gin.Context) { + var sysOperationRecord system.SysOperationRecord + err := c.ShouldBindJSON(&sysOperationRecord) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = operationRecordService.CreateSysOperationRecord(sysOperationRecord) + if err != nil { + global.GVA_LOG.Error("创建失败!", zap.Error(err)) + response.FailWithMessage("创建失败", c) + return + } + response.OkWithMessage("创建成功", c) +} + +// DeleteSysOperationRecord +// @Tags SysOperationRecord +// @Summary 删除SysOperationRecord +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysOperationRecord true "SysOperationRecord模型" +// @Success 200 {object} response.Response{msg=string} "删除SysOperationRecord" +// @Router /sysOperationRecord/deleteSysOperationRecord [delete] +func (s *OperationRecordApi) DeleteSysOperationRecord(c *gin.Context) { + var sysOperationRecord system.SysOperationRecord + err := c.ShouldBindJSON(&sysOperationRecord) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = operationRecordService.DeleteSysOperationRecord(sysOperationRecord) + if err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage("删除失败", c) + return + } + response.OkWithMessage("删除成功", c) +} + +// DeleteSysOperationRecordByIds +// @Tags SysOperationRecord +// @Summary 批量删除SysOperationRecord +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.IdsReq true "批量删除SysOperationRecord" +// @Success 200 {object} response.Response{msg=string} "批量删除SysOperationRecord" +// @Router /sysOperationRecord/deleteSysOperationRecordByIds [delete] +func (s *OperationRecordApi) DeleteSysOperationRecordByIds(c *gin.Context) { + var IDS request.IdsReq + err := c.ShouldBindJSON(&IDS) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = operationRecordService.DeleteSysOperationRecordByIds(IDS) + if err != nil { + global.GVA_LOG.Error("批量删除失败!", zap.Error(err)) + response.FailWithMessage("批量删除失败", c) + return + } + response.OkWithMessage("批量删除成功", c) +} + +// FindSysOperationRecord +// @Tags SysOperationRecord +// @Summary 用id查询SysOperationRecord +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query system.SysOperationRecord true "Id" +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "用id查询SysOperationRecord" +// @Router /sysOperationRecord/findSysOperationRecord [get] +func (s *OperationRecordApi) FindSysOperationRecord(c *gin.Context) { + var sysOperationRecord system.SysOperationRecord + err := c.ShouldBindQuery(&sysOperationRecord) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(sysOperationRecord, utils.IdVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + reSysOperationRecord, err := operationRecordService.GetSysOperationRecord(sysOperationRecord.ID) + if err != nil { + global.GVA_LOG.Error("查询失败!", zap.Error(err)) + response.FailWithMessage("查询失败", c) + return + } + response.OkWithDetailed(gin.H{"reSysOperationRecord": reSysOperationRecord}, "查询成功", c) +} + +// GetSysOperationRecordList +// @Tags SysOperationRecord +// @Summary 分页获取SysOperationRecord列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query request.SysOperationRecordSearch true "页码, 每页大小, 搜索条件" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "分页获取SysOperationRecord列表,返回包括列表,总数,页码,每页数量" +// @Router /sysOperationRecord/getSysOperationRecordList [get] +func (s *OperationRecordApi) GetSysOperationRecordList(c *gin.Context) { + var pageInfo systemReq.SysOperationRecordSearch + err := c.ShouldBindQuery(&pageInfo) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + list, total, err := operationRecordService.GetSysOperationRecordInfoList(pageInfo) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(response.PageResult{ + List: list, + Total: total, + Page: pageInfo.Page, + PageSize: pageInfo.PageSize, + }, "获取成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_params.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_params.go new file mode 100644 index 000000000..45fb1dfb8 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_params.go @@ -0,0 +1,171 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + systemReq "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type SysParamsApi struct{} + +// CreateSysParams 创建参数 +// @Tags SysParams +// @Summary 创建参数 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysParams true "创建参数" +// @Success 200 {object} response.Response{msg=string} "创建成功" +// @Router /sysParams/createSysParams [post] +func (sysParamsApi *SysParamsApi) CreateSysParams(c *gin.Context) { + var sysParams system.SysParams + err := c.ShouldBindJSON(&sysParams) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = sysParamsService.CreateSysParams(&sysParams) + if err != nil { + global.GVA_LOG.Error("创建失败!", zap.Error(err)) + response.FailWithMessage("创建失败:"+err.Error(), c) + return + } + response.OkWithMessage("创建成功", c) +} + +// DeleteSysParams 删除参数 +// @Tags SysParams +// @Summary 删除参数 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysParams true "删除参数" +// @Success 200 {object} response.Response{msg=string} "删除成功" +// @Router /sysParams/deleteSysParams [delete] +func (sysParamsApi *SysParamsApi) DeleteSysParams(c *gin.Context) { + ID := c.Query("ID") + err := sysParamsService.DeleteSysParams(ID) + if err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage("删除失败:"+err.Error(), c) + return + } + response.OkWithMessage("删除成功", c) +} + +// DeleteSysParamsByIds 批量删除参数 +// @Tags SysParams +// @Summary 批量删除参数 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{msg=string} "批量删除成功" +// @Router /sysParams/deleteSysParamsByIds [delete] +func (sysParamsApi *SysParamsApi) DeleteSysParamsByIds(c *gin.Context) { + IDs := c.QueryArray("IDs[]") + err := sysParamsService.DeleteSysParamsByIds(IDs) + if err != nil { + global.GVA_LOG.Error("批量删除失败!", zap.Error(err)) + response.FailWithMessage("批量删除失败:"+err.Error(), c) + return + } + response.OkWithMessage("批量删除成功", c) +} + +// UpdateSysParams 更新参数 +// @Tags SysParams +// @Summary 更新参数 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysParams true "更新参数" +// @Success 200 {object} response.Response{msg=string} "更新成功" +// @Router /sysParams/updateSysParams [put] +func (sysParamsApi *SysParamsApi) UpdateSysParams(c *gin.Context) { + var sysParams system.SysParams + err := c.ShouldBindJSON(&sysParams) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = sysParamsService.UpdateSysParams(sysParams) + if err != nil { + global.GVA_LOG.Error("更新失败!", zap.Error(err)) + response.FailWithMessage("更新失败:"+err.Error(), c) + return + } + response.OkWithMessage("更新成功", c) +} + +// FindSysParams 用id查询参数 +// @Tags SysParams +// @Summary 用id查询参数 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query system.SysParams true "用id查询参数" +// @Success 200 {object} response.Response{data=system.SysParams,msg=string} "查询成功" +// @Router /sysParams/findSysParams [get] +func (sysParamsApi *SysParamsApi) FindSysParams(c *gin.Context) { + ID := c.Query("ID") + resysParams, err := sysParamsService.GetSysParams(ID) + if err != nil { + global.GVA_LOG.Error("查询失败!", zap.Error(err)) + response.FailWithMessage("查询失败:"+err.Error(), c) + return + } + response.OkWithData(resysParams, c) +} + +// GetSysParamsList 分页获取参数列表 +// @Tags SysParams +// @Summary 分页获取参数列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query systemReq.SysParamsSearch true "分页获取参数列表" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "获取成功" +// @Router /sysParams/getSysParamsList [get] +func (sysParamsApi *SysParamsApi) GetSysParamsList(c *gin.Context) { + var pageInfo systemReq.SysParamsSearch + err := c.ShouldBindQuery(&pageInfo) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + list, total, err := sysParamsService.GetSysParamsInfoList(pageInfo) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败:"+err.Error(), c) + return + } + response.OkWithDetailed(response.PageResult{ + List: list, + Total: total, + Page: pageInfo.Page, + PageSize: pageInfo.PageSize, + }, "获取成功", c) +} + +// GetSysParam 根据key获取参数value +// @Tags SysParams +// @Summary 根据key获取参数value +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param key query string true "key" +// @Success 200 {object} response.Response{data=system.SysParams,msg=string} "获取成功" +// @Router /sysParams/getSysParam [get] +func (sysParamsApi *SysParamsApi) GetSysParam(c *gin.Context) { + k := c.Query("key") + params, err := sysParamsService.GetSysParam(k) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败:"+err.Error(), c) + return + } + response.OkWithDetailed(params, "获取成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_system.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_system.go new file mode 100644 index 000000000..aa41c2f46 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_system.go @@ -0,0 +1,88 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + systemRes "github.com/flipped-aurora/gin-vue-admin/server/model/system/response" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type SystemApi struct{} + +// GetSystemConfig +// @Tags System +// @Summary 获取配置文件内容 +// @Security ApiKeyAuth +// @Produce application/json +// @Success 200 {object} response.Response{data=systemRes.SysConfigResponse,msg=string} "获取配置文件内容,返回包括系统配置" +// @Router /system/getSystemConfig [post] +func (s *SystemApi) GetSystemConfig(c *gin.Context) { + config, err := systemConfigService.GetSystemConfig() + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(systemRes.SysConfigResponse{Config: config}, "获取成功", c) +} + +// SetSystemConfig +// @Tags System +// @Summary 设置配置文件内容 +// @Security ApiKeyAuth +// @Produce application/json +// @Param data body system.System true "设置配置文件内容" +// @Success 200 {object} response.Response{data=string} "设置配置文件内容" +// @Router /system/setSystemConfig [post] +func (s *SystemApi) SetSystemConfig(c *gin.Context) { + var sys system.System + err := c.ShouldBindJSON(&sys) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = systemConfigService.SetSystemConfig(sys) + if err != nil { + global.GVA_LOG.Error("设置失败!", zap.Error(err)) + response.FailWithMessage("设置失败", c) + return + } + response.OkWithMessage("设置成功", c) +} + +// ReloadSystem +// @Tags System +// @Summary 重启系统 +// @Security ApiKeyAuth +// @Produce application/json +// @Success 200 {object} response.Response{msg=string} "重启系统" +// @Router /system/reloadSystem [post] +func (s *SystemApi) ReloadSystem(c *gin.Context) { + err := utils.Reload() + if err != nil { + global.GVA_LOG.Error("重启系统失败!", zap.Error(err)) + response.FailWithMessage("重启系统失败", c) + return + } + response.OkWithMessage("重启系统成功", c) +} + +// GetServerInfo +// @Tags System +// @Summary 获取服务器信息 +// @Security ApiKeyAuth +// @Produce application/json +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "获取服务器信息" +// @Router /system/getServerInfo [post] +func (s *SystemApi) GetServerInfo(c *gin.Context) { + server, err := systemConfigService.GetServerInfo() + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(gin.H{"server": server}, "获取成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_user.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_user.go new file mode 100644 index 000000000..117b8d063 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/api/v1/system/sys_user.go @@ -0,0 +1,484 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/model/common" + "strconv" + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + systemReq "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + systemRes "github.com/flipped-aurora/gin-vue-admin/server/model/system/response" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + + "github.com/gin-gonic/gin" + "github.com/redis/go-redis/v9" + "go.uber.org/zap" +) + +// Login +// @Tags Base +// @Summary 用户登录 +// @Produce application/json +// @Param data body systemReq.Login true "用户名, 密码, 验证码" +// @Success 200 {object} response.Response{data=systemRes.LoginResponse,msg=string} "返回包括用户信息,token,过期时间" +// @Router /base/login [post] +func (b *BaseApi) Login(c *gin.Context) { + var l systemReq.Login + err := c.ShouldBindJSON(&l) + key := c.ClientIP() + + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(l, utils.LoginVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + + // 判断验证码是否开启 + openCaptcha := global.GVA_CONFIG.Captcha.OpenCaptcha // 是否开启防爆次数 + openCaptchaTimeOut := global.GVA_CONFIG.Captcha.OpenCaptchaTimeOut // 缓存超时时间 + v, ok := global.BlackCache.Get(key) + if !ok { + global.BlackCache.Set(key, 1, time.Second*time.Duration(openCaptchaTimeOut)) + } + + var oc bool = openCaptcha == 0 || openCaptcha < interfaceToInt(v) + + if !oc || (l.CaptchaId != "" && l.Captcha != "" && store.Verify(l.CaptchaId, l.Captcha, true)) { + u := &system.SysUser{Username: l.Username, Password: l.Password} + user, err := userService.Login(u) + if err != nil { + global.GVA_LOG.Error("登陆失败! 用户名不存在或者密码错误!", zap.Error(err)) + // 验证码次数+1 + global.BlackCache.Increment(key, 1) + response.FailWithMessage("用户名不存在或者密码错误", c) + return + } + if user.Enable != 1 { + global.GVA_LOG.Error("登陆失败! 用户被禁止登录!") + // 验证码次数+1 + global.BlackCache.Increment(key, 1) + response.FailWithMessage("用户被禁止登录", c) + return + } + b.TokenNext(c, *user) + return + } + // 验证码次数+1 + global.BlackCache.Increment(key, 1) + response.FailWithMessage("验证码错误", c) +} + +// TokenNext 登录以后签发jwt +func (b *BaseApi) TokenNext(c *gin.Context, user system.SysUser) { + token, claims, err := utils.LoginToken(&user) + if err != nil { + global.GVA_LOG.Error("获取token失败!", zap.Error(err)) + response.FailWithMessage("获取token失败", c) + return + } + if !global.GVA_CONFIG.System.UseMultipoint { + utils.SetToken(c, token, int(claims.RegisteredClaims.ExpiresAt.Unix()-time.Now().Unix())) + response.OkWithDetailed(systemRes.LoginResponse{ + User: user, + Token: token, + ExpiresAt: claims.RegisteredClaims.ExpiresAt.Unix() * 1000, + }, "登录成功", c) + return + } + + if jwtStr, err := jwtService.GetRedisJWT(user.Username); err == redis.Nil { + if err := jwtService.SetRedisJWT(token, user.Username); err != nil { + global.GVA_LOG.Error("设置登录状态失败!", zap.Error(err)) + response.FailWithMessage("设置登录状态失败", c) + return + } + utils.SetToken(c, token, int(claims.RegisteredClaims.ExpiresAt.Unix()-time.Now().Unix())) + response.OkWithDetailed(systemRes.LoginResponse{ + User: user, + Token: token, + ExpiresAt: claims.RegisteredClaims.ExpiresAt.Unix() * 1000, + }, "登录成功", c) + } else if err != nil { + global.GVA_LOG.Error("设置登录状态失败!", zap.Error(err)) + response.FailWithMessage("设置登录状态失败", c) + } else { + var blackJWT system.JwtBlacklist + blackJWT.Jwt = jwtStr + if err := jwtService.JsonInBlacklist(blackJWT); err != nil { + response.FailWithMessage("jwt作废失败", c) + return + } + if err := jwtService.SetRedisJWT(token, user.GetUsername()); err != nil { + response.FailWithMessage("设置登录状态失败", c) + return + } + utils.SetToken(c, token, int(claims.RegisteredClaims.ExpiresAt.Unix()-time.Now().Unix())) + response.OkWithDetailed(systemRes.LoginResponse{ + User: user, + Token: token, + ExpiresAt: claims.RegisteredClaims.ExpiresAt.Unix() * 1000, + }, "登录成功", c) + } +} + +// Register +// @Tags SysUser +// @Summary 用户注册账号 +// @Produce application/json +// @Param data body systemReq.Register true "用户名, 昵称, 密码, 角色ID" +// @Success 200 {object} response.Response{data=systemRes.SysUserResponse,msg=string} "用户注册账号,返回包括用户信息" +// @Router /user/admin_register [post] +func (b *BaseApi) Register(c *gin.Context) { + var r systemReq.Register + err := c.ShouldBindJSON(&r) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(r, utils.RegisterVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + var authorities []system.SysAuthority + for _, v := range r.AuthorityIds { + authorities = append(authorities, system.SysAuthority{ + AuthorityId: v, + }) + } + user := &system.SysUser{Username: r.Username, NickName: r.NickName, Password: r.Password, HeaderImg: r.HeaderImg, AuthorityId: r.AuthorityId, Authorities: authorities, Enable: r.Enable, Phone: r.Phone, Email: r.Email} + userReturn, err := userService.Register(*user) + if err != nil { + global.GVA_LOG.Error("注册失败!", zap.Error(err)) + response.FailWithDetailed(systemRes.SysUserResponse{User: userReturn}, "注册失败", c) + return + } + response.OkWithDetailed(systemRes.SysUserResponse{User: userReturn}, "注册成功", c) +} + +// ChangePassword +// @Tags SysUser +// @Summary 用户修改密码 +// @Security ApiKeyAuth +// @Produce application/json +// @Param data body systemReq.ChangePasswordReq true "用户名, 原密码, 新密码" +// @Success 200 {object} response.Response{msg=string} "用户修改密码" +// @Router /user/changePassword [post] +func (b *BaseApi) ChangePassword(c *gin.Context) { + var req systemReq.ChangePasswordReq + err := c.ShouldBindJSON(&req) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(req, utils.ChangePasswordVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + uid := utils.GetUserID(c) + u := &system.SysUser{GVA_MODEL: global.GVA_MODEL{ID: uid}, Password: req.Password} + _, err = userService.ChangePassword(u, req.NewPassword) + if err != nil { + global.GVA_LOG.Error("修改失败!", zap.Error(err)) + response.FailWithMessage("修改失败,原密码与当前账户不符", c) + return + } + response.OkWithMessage("修改成功", c) +} + +// GetUserList +// @Tags SysUser +// @Summary 分页获取用户列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body systemReq.GetUserList true "页码, 每页大小" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "分页获取用户列表,返回包括列表,总数,页码,每页数量" +// @Router /user/getUserList [post] +func (b *BaseApi) GetUserList(c *gin.Context) { + var pageInfo systemReq.GetUserList + err := c.ShouldBindJSON(&pageInfo) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(pageInfo, utils.PageInfoVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + list, total, err := userService.GetUserInfoList(pageInfo) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(response.PageResult{ + List: list, + Total: total, + Page: pageInfo.Page, + PageSize: pageInfo.PageSize, + }, "获取成功", c) +} + +// SetUserAuthority +// @Tags SysUser +// @Summary 更改用户权限 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body systemReq.SetUserAuth true "用户UUID, 角色ID" +// @Success 200 {object} response.Response{msg=string} "设置用户权限" +// @Router /user/setUserAuthority [post] +func (b *BaseApi) SetUserAuthority(c *gin.Context) { + var sua systemReq.SetUserAuth + err := c.ShouldBindJSON(&sua) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + if UserVerifyErr := utils.Verify(sua, utils.SetUserAuthorityVerify); UserVerifyErr != nil { + response.FailWithMessage(UserVerifyErr.Error(), c) + return + } + userID := utils.GetUserID(c) + err = userService.SetUserAuthority(userID, sua.AuthorityId) + if err != nil { + global.GVA_LOG.Error("修改失败!", zap.Error(err)) + response.FailWithMessage(err.Error(), c) + return + } + claims := utils.GetUserInfo(c) + j := &utils.JWT{SigningKey: []byte(global.GVA_CONFIG.JWT.SigningKey)} // 唯一签名 + claims.AuthorityId = sua.AuthorityId + if token, err := j.CreateToken(*claims); err != nil { + global.GVA_LOG.Error("修改失败!", zap.Error(err)) + response.FailWithMessage(err.Error(), c) + } else { + c.Header("new-token", token) + c.Header("new-expires-at", strconv.FormatInt(claims.ExpiresAt.Unix(), 10)) + utils.SetToken(c, token, int((claims.ExpiresAt.Unix()-time.Now().Unix())/60)) + response.OkWithMessage("修改成功", c) + } +} + +// SetUserAuthorities +// @Tags SysUser +// @Summary 设置用户权限 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body systemReq.SetUserAuthorities true "用户UUID, 角色ID" +// @Success 200 {object} response.Response{msg=string} "设置用户权限" +// @Router /user/setUserAuthorities [post] +func (b *BaseApi) SetUserAuthorities(c *gin.Context) { + var sua systemReq.SetUserAuthorities + err := c.ShouldBindJSON(&sua) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + authorityID := utils.GetUserAuthorityId(c) + err = userService.SetUserAuthorities(authorityID, sua.ID, sua.AuthorityIds) + if err != nil { + global.GVA_LOG.Error("修改失败!", zap.Error(err)) + response.FailWithMessage("修改失败", c) + return + } + response.OkWithMessage("修改成功", c) +} + +// DeleteUser +// @Tags SysUser +// @Summary 删除用户 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.GetById true "用户ID" +// @Success 200 {object} response.Response{msg=string} "删除用户" +// @Router /user/deleteUser [delete] +func (b *BaseApi) DeleteUser(c *gin.Context) { + var reqId request.GetById + err := c.ShouldBindJSON(&reqId) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(reqId, utils.IdVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + jwtId := utils.GetUserID(c) + if jwtId == uint(reqId.ID) { + response.FailWithMessage("删除失败, 无法删除自己。", c) + return + } + err = userService.DeleteUser(reqId.ID) + if err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage("删除失败", c) + return + } + response.OkWithMessage("删除成功", c) +} + +// SetUserInfo +// @Tags SysUser +// @Summary 设置用户信息 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysUser true "ID, 用户名, 昵称, 头像链接" +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "设置用户信息" +// @Router /user/setUserInfo [put] +func (b *BaseApi) SetUserInfo(c *gin.Context) { + var user systemReq.ChangeUserInfo + err := c.ShouldBindJSON(&user) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = utils.Verify(user, utils.IdVerify) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + if len(user.AuthorityIds) != 0 { + authorityID := utils.GetUserAuthorityId(c) + err = userService.SetUserAuthorities(authorityID, user.ID, user.AuthorityIds) + if err != nil { + global.GVA_LOG.Error("设置失败!", zap.Error(err)) + response.FailWithMessage("设置失败", c) + return + } + } + err = userService.SetUserInfo(system.SysUser{ + GVA_MODEL: global.GVA_MODEL{ + ID: user.ID, + }, + NickName: user.NickName, + HeaderImg: user.HeaderImg, + Phone: user.Phone, + Email: user.Email, + Enable: user.Enable, + }) + if err != nil { + global.GVA_LOG.Error("设置失败!", zap.Error(err)) + response.FailWithMessage("设置失败", c) + return + } + response.OkWithMessage("设置成功", c) +} + +// SetSelfInfo +// @Tags SysUser +// @Summary 设置用户信息 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body system.SysUser true "ID, 用户名, 昵称, 头像链接" +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "设置用户信息" +// @Router /user/SetSelfInfo [put] +func (b *BaseApi) SetSelfInfo(c *gin.Context) { + var user systemReq.ChangeUserInfo + err := c.ShouldBindJSON(&user) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + user.ID = utils.GetUserID(c) + err = userService.SetSelfInfo(system.SysUser{ + GVA_MODEL: global.GVA_MODEL{ + ID: user.ID, + }, + NickName: user.NickName, + HeaderImg: user.HeaderImg, + Phone: user.Phone, + Email: user.Email, + Enable: user.Enable, + }) + if err != nil { + global.GVA_LOG.Error("设置失败!", zap.Error(err)) + response.FailWithMessage("设置失败", c) + return + } + response.OkWithMessage("设置成功", c) +} + +// SetSelfSetting +// @Tags SysUser +// @Summary 设置用户配置 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body map[string]interface{} true "用户配置数据" +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "设置用户配置" +// @Router /user/SetSelfSetting [put] +func (b *BaseApi) SetSelfSetting(c *gin.Context) { + var req common.JSONMap + err := c.ShouldBindJSON(&req) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + + err = userService.SetSelfSetting(req, utils.GetUserID(c)) + if err != nil { + global.GVA_LOG.Error("设置失败!", zap.Error(err)) + response.FailWithMessage("设置失败", c) + return + } + response.OkWithMessage("设置成功", c) +} + +// GetUserInfo +// @Tags SysUser +// @Summary 获取用户信息 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "获取用户信息" +// @Router /user/getUserInfo [get] +func (b *BaseApi) GetUserInfo(c *gin.Context) { + uuid := utils.GetUserUuid(c) + ReqUser, err := userService.GetUserInfo(uuid) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(gin.H{"userInfo": ReqUser}, "获取成功", c) +} + +// ResetPassword +// @Tags SysUser +// @Summary 重置用户密码 +// @Security ApiKeyAuth +// @Produce application/json +// @Param data body system.SysUser true "ID" +// @Success 200 {object} response.Response{msg=string} "重置用户密码" +// @Router /user/resetPassword [post] +func (b *BaseApi) ResetPassword(c *gin.Context) { + var user system.SysUser + err := c.ShouldBindJSON(&user) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = userService.ResetPassword(user.ID) + if err != nil { + global.GVA_LOG.Error("重置失败!", zap.Error(err)) + response.FailWithMessage("重置失败"+err.Error(), c) + return + } + response.OkWithMessage("重置成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config.docker.yaml b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config.docker.yaml new file mode 100644 index 000000000..a7783716f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config.docker.yaml @@ -0,0 +1,220 @@ +# github.com/flipped-aurora/gin-vue-admin/server Global Configuration + +# jwt configuration +jwt: + signing-key: qmPlus + expires-time: 7d + buffer-time: 1d + issuer: qmPlus +# zap logger configuration +zap: + level: info + format: console + prefix: "[github.com/flipped-aurora/gin-vue-admin/server]" + director: log + show-line: true + encode-level: LowercaseColorLevelEncoder + stacktrace-key: stacktrace + log-in-console: true + +# redis configuration +redis: + db: 0 + addr: 177.7.0.14:6379 + password: "" + +# mongo configuration +mongo: + coll: '' + options: '' + database: '' + username: '' + password: '' + min-pool-size: 0 + max-pool-size: 100 + socket-timeout-ms: 0 + connect-timeout-ms: 0 + is-zap: false + hosts: + - host: '' + port: '' + +# email configuration +email: + to: xxx@qq.com + port: 465 + from: xxx@163.com + host: smtp.163.com + is-ssl: true + secret: xxx + nickname: test + +# system configuration +system: + env: public # Change to "develop" to skip authentication for development mode + addr: 8888 + db-type: mysql + oss-type: local # 控制oss选择走本地还是 七牛等其他仓 自行增加其他oss仓可以在 server/utils/upload/upload.go 中 NewOss函数配置 + use-redis: false # 使用redis + use-mongo: false # 使用mongo + use-multipoint: false + # IP限制次数 一个小时15000次 + iplimit-count: 15000 + # IP限制一个小时 + iplimit-time: 3600 + +# captcha configuration +captcha: + key-long: 6 + img-width: 240 + img-height: 80 + open-captcha: 0 # 0代表一直开启,大于0代表限制次数 + open-captcha-timeout: 3600 # open-captcha大于0时才生效 + +# mysql connect configuration +# 未初始化之前请勿手动修改数据库信息!!!如果一定要手动初始化请看(https://gin-vue-admin.com/docs/first_master) +mysql: + path: "" + port: "" + config: "" + db-name: "" + username: "" + password: "" + max-idle-conns: 10 + max-open-conns: 100 + log-mode: "" + log-zap: false + +# pgsql connect configuration +# 未初始化之前请勿手动修改数据库信息!!!如果一定要手动初始化请看(https://gin-vue-admin.com/docs/first_master) +pgsql: + path: "" + port: "" + config: "" + db-name: "" + username: "" + password: "" + max-idle-conns: 10 + max-open-conns: 100 + log-mode: "" + log-zap: false + +db-list: + - disable: true # 是否禁用 + type: "" # 数据库的类型,目前支持mysql、pgsql + alias-name: "" # 数据库的名称,注意: alias-name 需要在db-list中唯一 + path: "" + port: "" + config: "" + db-name: "" + username: "" + password: "" + max-idle-conns: 10 + max-open-conns: 100 + log-mode: "" + log-zap: false + + +# local configuration +local: + path: uploads/file + store-path: uploads/file + +# autocode configuration +autocode: + transfer-restart: true + # root 自动适配项目根目录 + # 请不要手动配置,他会在项目加载的时候识别出根路径 + root: "" + server: /server + server-plug: /plugin/%s + server-api: /api/v1/%s + server-initialize: /initialize + server-model: /model/%s + server-request: /model/%s/request/ + server-router: /router/%s + server-service: /service/%s + web: /web/src + web-api: /api + web-form: /view + web-table: /view + +# qiniu configuration (请自行七牛申请对应的 公钥 私钥 bucket 和 域名地址) +qiniu: + zone: ZoneHuaDong + bucket: "" + img-path: "" + use-https: false + access-key: "" + secret-key: "" + use-cdn-domains: false + +# aliyun oss configuration +aliyun-oss: + endpoint: yourEndpoint + access-key-id: yourAccessKeyId + access-key-secret: yourAccessKeySecret + bucket-name: yourBucketName + bucket-url: yourBucketUrl + base-path: yourBasePath + +# tencent cos configuration +tencent-cos: + bucket: xxxxx-10005608 + region: ap-shanghai + secret-id: your-secret-id + secret-key: your-secret-key + base-url: https://gin.vue.admin + path-prefix: github.com/flipped-aurora/gin-vue-admin/server + +# aws s3 configuration (minio compatible) +aws-s3: + bucket: xxxxx-10005608 + region: ap-shanghai + endpoint: "" + s3-force-path-style: false + disable-ssl: false + secret-id: your-secret-id + secret-key: your-secret-key + base-url: https://gin.vue.admin + path-prefix: github.com/flipped-aurora/gin-vue-admin/server + +# huawei obs configuration +hua-wei-obs: + path: you-path + bucket: you-bucket + endpoint: you-endpoint + access-key: you-access-key + secret-key: you-secret-key + +# excel configuration +excel: + dir: ./resource/excel/ + +# timer task db clear table +Timer: + start: true + spec: "@daily" # 定时任务详细配置参考 https://pkg.go.dev/github.com/robfig/cron/v3 + detail: + - tableName: sys_operation_records + compareField: created_at + interval: 2160h + - tableName: jwt_blacklists + compareField: created_at + interval: 168h + +# 跨域配置 +# 需要配合 server/initialize/router.go -> `Router.Use(middleware.CorsByRules())` 使用 +cors: + mode: whitelist # 放行模式: allow-all, 放行全部; whitelist, 白名单模式, 来自白名单内域名的请求添加 cors 头; strict-whitelist 严格白名单模式, 白名单外的请求一律拒绝 + whitelist: + - allow-origin: example1.com + allow-headers: content-type + allow-methods: GET, POST + expose-headers: Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type + allow-credentials: true # 布尔值 + - allow-origin: example2.com + allow-headers: content-type + allow-methods: GET, POST + expose-headers: Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type + allow-credentials: true # 布尔值 \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config.yaml b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config.yaml new file mode 100644 index 000000000..84283b8a5 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config.yaml @@ -0,0 +1,233 @@ +aliyun-oss: + endpoint: yourEndpoint + access-key-id: yourAccessKeyId + access-key-secret: yourAccessKeySecret + bucket-name: yourBucketName + bucket-url: yourBucketUrl + base-path: yourBasePath +autocode: + web: web/src + root: /Users/archer/project/gin-vue-admin + server: server + module: github.com/flipped-aurora/gin-vue-admin/server + ai-path: "" +aws-s3: + bucket: xxxxx-10005608 + region: ap-shanghai + endpoint: "" + secret-id: your-secret-id + secret-key: your-secret-key + base-url: https://gin.vue.admin + path-prefix: github.com/flipped-aurora/gin-vue-admin/server + s3-force-path-style: false + disable-ssl: false +captcha: + key-long: 2 + img-width: 240 + img-height: 80 + open-captcha: 0 + open-captcha-timeout: 3600 +cloudflare-r2: + bucket: xxxx0bucket + base-url: https://gin.vue.admin.com + path: uploads + account-id: xxx_account_id + access-key-id: xxx_key_id + secret-access-key: xxx_secret_key +cors: + mode: strict-whitelist + whitelist: + - allow-origin: example1.com + allow-methods: POST, GET + allow-headers: Content-Type,AccessToken,X-CSRF-Token, Authorization, Token,X-Token,X-User-Id + expose-headers: Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type + allow-credentials: true + - allow-origin: example2.com + allow-methods: GET, POST + allow-headers: content-type + expose-headers: Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type + allow-credentials: true +db-list: + - type: "" + alias-name: "" + prefix: "" + port: "" + config: "" + db-name: "" + username: "" + password: "" + path: "" + engine: "" + log-mode: "" + max-idle-conns: 10 + max-open-conns: 100 + singular: false + log-zap: false + disable: true +disk-list: + - mount-point: / +email: + to: xxx@qq.com + from: xxx@163.com + host: smtp.163.com + secret: xxx + nickname: test + port: 465 + is-ssl: true +excel: + dir: ./resource/excel/ +hua-wei-obs: + path: you-path + bucket: you-bucket + endpoint: you-endpoint + access-key: you-access-key + secret-key: you-secret-key +jwt: + signing-key: 19bda1a3-df54-480c-b7bf-4d533e48d03e + expires-time: 7d + buffer-time: 1d + issuer: qmPlus +local: + path: uploads/file + store-path: uploads/file +mongo: + coll: "" + options: "" + database: "" + username: "" + password: "" + auth-source: "" + min-pool-size: 0 + max-pool-size: 100 + socket-timeout-ms: 0 + connect-timeout-ms: 0 + is-zap: false + hosts: + - host: "" + port: "" +mssql: + prefix: "" + port: "" + config: "" + db-name: "" + username: "" + password: "" + path: "" + engine: "" + log-mode: "" + max-idle-conns: 10 + max-open-conns: 100 + singular: false + log-zap: false +mysql: + prefix: "" + port: "3306" + config: charset=utf8mb4&parseTime=True&loc=Local + db-name: gva + username: root + password: "123456" + path: 127.0.0.1 + engine: "" + log-mode: error + max-idle-conns: 10 + max-open-conns: 100 + singular: false + log-zap: false +oracle: + prefix: "" + port: "" + config: "" + db-name: "" + username: "" + password: "" + path: "" + engine: "" + log-mode: "" + max-idle-conns: 10 + max-open-conns: 100 + singular: false + log-zap: false +pgsql: + prefix: "" + port: "" + config: "" + db-name: "" + username: "" + password: "" + path: "" + engine: "" + log-mode: "" + max-idle-conns: 10 + max-open-conns: 100 + singular: false + log-zap: false +qiniu: + zone: ZoneHuaDong + bucket: "" + img-path: "" + access-key: "" + secret-key: "" + use-https: false + use-cdn-domains: false +redis: + name: "" + addr: 127.0.0.1:6379 + password: "" + db: 0 + useCluster: false + clusterAddrs: + - 172.21.0.3:7000 + - 172.21.0.4:7001 + - 172.21.0.2:7002 +redis-list: + - name: cache + addr: 127.0.0.1:6379 + password: "" + db: 0 + useCluster: false + clusterAddrs: + - 172.21.0.3:7000 + - 172.21.0.4:7001 + - 172.21.0.2:7002 +sqlite: + prefix: "" + port: "" + config: "" + db-name: "" + username: "" + password: "" + path: "" + engine: "" + log-mode: "" + max-idle-conns: 10 + max-open-conns: 100 + singular: false + log-zap: false +system: + db-type: mysql + oss-type: local + router-prefix: "" + addr: 4000 + iplimit-count: 15000 + iplimit-time: 3600 + use-multipoint: false + use-redis: false + use-mongo: false + use-strict-auth: false +tencent-cos: + bucket: xxxxx-10005608 + region: ap-shanghai + secret-id: your-secret-id + secret-key: your-secret-key + base-url: https://gin.vue.admin + path-prefix: github.com/flipped-aurora/gin-vue-admin/server +zap: + level: info + prefix: '[github.com/flipped-aurora/gin-vue-admin/server]' + format: console + director: log + encode-level: LowercaseColorLevelEncoder + stacktrace-key: stacktrace + show-line: true + log-in-console: true + retention-day: -1 diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/auto_code.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/auto_code.go new file mode 100644 index 000000000..ade79a023 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/auto_code.go @@ -0,0 +1,22 @@ +package config + +import ( + "path/filepath" + "strings" +) + +type Autocode struct { + Web string `mapstructure:"web" json:"web" yaml:"web"` + Root string `mapstructure:"root" json:"root" yaml:"root"` + Server string `mapstructure:"server" json:"server" yaml:"server"` + Module string `mapstructure:"module" json:"module" yaml:"module"` + AiPath string `mapstructure:"ai-path" json:"ai-path" yaml:"ai-path"` +} + +func (a *Autocode) WebRoot() string { + webs := strings.Split(a.Web, "/") + if len(webs) == 0 { + webs = strings.Split(a.Web, "\\") + } + return filepath.Join(webs...) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/captcha.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/captcha.go new file mode 100644 index 000000000..074a9bfad --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/captcha.go @@ -0,0 +1,9 @@ +package config + +type Captcha struct { + KeyLong int `mapstructure:"key-long" json:"key-long" yaml:"key-long"` // 验证码长度 + ImgWidth int `mapstructure:"img-width" json:"img-width" yaml:"img-width"` // 验证码宽度 + ImgHeight int `mapstructure:"img-height" json:"img-height" yaml:"img-height"` // 验证码高度 + OpenCaptcha int `mapstructure:"open-captcha" json:"open-captcha" yaml:"open-captcha"` // 防爆破验证码开启此数,0代表每次登录都需要验证码,其他数字代表错误密码此数,如3代表错误三次后出现验证码 + OpenCaptchaTimeOut int `mapstructure:"open-captcha-timeout" json:"open-captcha-timeout" yaml:"open-captcha-timeout"` // 防爆破验证码超时时间,单位:s(秒) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/config.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/config.go new file mode 100644 index 000000000..6519333cb --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/config.go @@ -0,0 +1,36 @@ +package config + +type Server struct { + JWT JWT `mapstructure:"jwt" json:"jwt" yaml:"jwt"` + Zap Zap `mapstructure:"zap" json:"zap" yaml:"zap"` + Redis Redis `mapstructure:"redis" json:"redis" yaml:"redis"` + RedisList []Redis `mapstructure:"redis-list" json:"redis-list" yaml:"redis-list"` + Mongo Mongo `mapstructure:"mongo" json:"mongo" yaml:"mongo"` + Email Email `mapstructure:"email" json:"email" yaml:"email"` + System System `mapstructure:"system" json:"system" yaml:"system"` + Captcha Captcha `mapstructure:"captcha" json:"captcha" yaml:"captcha"` + // auto + AutoCode Autocode `mapstructure:"autocode" json:"autocode" yaml:"autocode"` + // gorm + Mysql Mysql `mapstructure:"mysql" json:"mysql" yaml:"mysql"` + Mssql Mssql `mapstructure:"mssql" json:"mssql" yaml:"mssql"` + Pgsql Pgsql `mapstructure:"pgsql" json:"pgsql" yaml:"pgsql"` + Oracle Oracle `mapstructure:"oracle" json:"oracle" yaml:"oracle"` + Sqlite Sqlite `mapstructure:"sqlite" json:"sqlite" yaml:"sqlite"` + DBList []SpecializedDB `mapstructure:"db-list" json:"db-list" yaml:"db-list"` + // oss + Local Local `mapstructure:"local" json:"local" yaml:"local"` + Qiniu Qiniu `mapstructure:"qiniu" json:"qiniu" yaml:"qiniu"` + AliyunOSS AliyunOSS `mapstructure:"aliyun-oss" json:"aliyun-oss" yaml:"aliyun-oss"` + HuaWeiObs HuaWeiObs `mapstructure:"hua-wei-obs" json:"hua-wei-obs" yaml:"hua-wei-obs"` + TencentCOS TencentCOS `mapstructure:"tencent-cos" json:"tencent-cos" yaml:"tencent-cos"` + AwsS3 AwsS3 `mapstructure:"aws-s3" json:"aws-s3" yaml:"aws-s3"` + CloudflareR2 CloudflareR2 `mapstructure:"cloudflare-r2" json:"cloudflare-r2" yaml:"cloudflare-r2"` + + Excel Excel `mapstructure:"excel" json:"excel" yaml:"excel"` + + DiskList []DiskList `mapstructure:"disk-list" json:"disk-list" yaml:"disk-list"` + + // 跨域配置 + Cors CORS `mapstructure:"cors" json:"cors" yaml:"cors"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/cors.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/cors.go new file mode 100644 index 000000000..7fba99346 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/cors.go @@ -0,0 +1,14 @@ +package config + +type CORS struct { + Mode string `mapstructure:"mode" json:"mode" yaml:"mode"` + Whitelist []CORSWhitelist `mapstructure:"whitelist" json:"whitelist" yaml:"whitelist"` +} + +type CORSWhitelist struct { + AllowOrigin string `mapstructure:"allow-origin" json:"allow-origin" yaml:"allow-origin"` + AllowMethods string `mapstructure:"allow-methods" json:"allow-methods" yaml:"allow-methods"` + AllowHeaders string `mapstructure:"allow-headers" json:"allow-headers" yaml:"allow-headers"` + ExposeHeaders string `mapstructure:"expose-headers" json:"expose-headers" yaml:"expose-headers"` + AllowCredentials bool `mapstructure:"allow-credentials" json:"allow-credentials" yaml:"allow-credentials"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/db_list.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/db_list.go new file mode 100644 index 000000000..39767f53b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/db_list.go @@ -0,0 +1,52 @@ +package config + +import ( + "gorm.io/gorm/logger" + "strings" +) + +type DsnProvider interface { + Dsn() string +} + +// Embeded 结构体可以压平到上一层,从而保持 config 文件的结构和原来一样 +// 见 playground: https://go.dev/play/p/KIcuhqEoxmY + +// GeneralDB 也被 Pgsql 和 Mysql 原样使用 +type GeneralDB struct { + Prefix string `mapstructure:"prefix" json:"prefix" yaml:"prefix"` // 数据库前缀 + Port string `mapstructure:"port" json:"port" yaml:"port"` // 数据库端口 + Config string `mapstructure:"config" json:"config" yaml:"config"` // 高级配置 + Dbname string `mapstructure:"db-name" json:"db-name" yaml:"db-name"` // 数据库名 + Username string `mapstructure:"username" json:"username" yaml:"username"` // 数据库账号 + Password string `mapstructure:"password" json:"password" yaml:"password"` // 数据库密码 + Path string `mapstructure:"path" json:"path" yaml:"path"` // 数据库地址 + Engine string `mapstructure:"engine" json:"engine" yaml:"engine" default:"InnoDB"` // 数据库引擎,默认InnoDB + LogMode string `mapstructure:"log-mode" json:"log-mode" yaml:"log-mode"` // 是否开启Gorm全局日志 + MaxIdleConns int `mapstructure:"max-idle-conns" json:"max-idle-conns" yaml:"max-idle-conns"` // 空闲中的最大连接数 + MaxOpenConns int `mapstructure:"max-open-conns" json:"max-open-conns" yaml:"max-open-conns"` // 打开到数据库的最大连接数 + Singular bool `mapstructure:"singular" json:"singular" yaml:"singular"` // 是否开启全局禁用复数,true表示开启 + LogZap bool `mapstructure:"log-zap" json:"log-zap" yaml:"log-zap"` // 是否通过zap写入日志文件 +} + +func (c GeneralDB) LogLevel() logger.LogLevel { + switch strings.ToLower(c.LogMode) { + case "silent", "Silent": + return logger.Silent + case "error", "Error": + return logger.Error + case "warn", "Warn": + return logger.Warn + case "info", "Info": + return logger.Info + default: + return logger.Info + } +} + +type SpecializedDB struct { + Type string `mapstructure:"type" json:"type" yaml:"type"` + AliasName string `mapstructure:"alias-name" json:"alias-name" yaml:"alias-name"` + GeneralDB `yaml:",inline" mapstructure:",squash"` + Disable bool `mapstructure:"disable" json:"disable" yaml:"disable"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/disk.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/disk.go new file mode 100644 index 000000000..59a633259 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/disk.go @@ -0,0 +1,9 @@ +package config + +type Disk struct { + MountPoint string `mapstructure:"mount-point" json:"mount-point" yaml:"mount-point"` +} + +type DiskList struct { + Disk `yaml:",inline" mapstructure:",squash"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/email.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/email.go new file mode 100644 index 000000000..0984616b2 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/email.go @@ -0,0 +1,11 @@ +package config + +type Email struct { + To string `mapstructure:"to" json:"to" yaml:"to"` // 收件人:多个以英文逗号分隔 例:a@qq.com b@qq.com 正式开发中请把此项目作为参数使用 + From string `mapstructure:"from" json:"from" yaml:"from"` // 发件人 你自己要发邮件的邮箱 + Host string `mapstructure:"host" json:"host" yaml:"host"` // 服务器地址 例如 smtp.qq.com 请前往QQ或者你要发邮件的邮箱查看其smtp协议 + Secret string `mapstructure:"secret" json:"secret" yaml:"secret"` // 密钥 用于登录的密钥 最好不要用邮箱密码 去邮箱smtp申请一个用于登录的密钥 + Nickname string `mapstructure:"nickname" json:"nickname" yaml:"nickname"` // 昵称 发件人昵称 通常为自己的邮箱 + Port int `mapstructure:"port" json:"port" yaml:"port"` // 端口 请前往QQ或者你要发邮件的邮箱查看其smtp协议 大多为 465 + IsSSL bool `mapstructure:"is-ssl" json:"is-ssl" yaml:"is-ssl"` // 是否SSL 是否开启SSL +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/excel.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/excel.go new file mode 100644 index 000000000..13caab7f5 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/excel.go @@ -0,0 +1,5 @@ +package config + +type Excel struct { + Dir string `mapstructure:"dir" json:"dir" yaml:"dir"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_mssql.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_mssql.go new file mode 100644 index 000000000..d18711948 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_mssql.go @@ -0,0 +1,10 @@ +package config + +type Mssql struct { + GeneralDB `yaml:",inline" mapstructure:",squash"` +} + +// Dsn "sqlserver://gorm:LoremIpsum86@localhost:9930?database=gorm" +func (m *Mssql) Dsn() string { + return "sqlserver://" + m.Username + ":" + m.Password + "@" + m.Path + ":" + m.Port + "?database=" + m.Dbname + "&encrypt=disable" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_mysql.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_mysql.go new file mode 100644 index 000000000..77e024539 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_mysql.go @@ -0,0 +1,9 @@ +package config + +type Mysql struct { + GeneralDB `yaml:",inline" mapstructure:",squash"` +} + +func (m *Mysql) Dsn() string { + return m.Username + ":" + m.Password + "@tcp(" + m.Path + ":" + m.Port + ")/" + m.Dbname + "?" + m.Config +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_oracle.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_oracle.go new file mode 100644 index 000000000..1bbeb46ab --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_oracle.go @@ -0,0 +1,10 @@ +package config + +type Oracle struct { + GeneralDB `yaml:",inline" mapstructure:",squash"` +} + +func (m *Oracle) Dsn() string { + return "oracle://" + m.Username + ":" + m.Password + "@" + m.Path + ":" + m.Port + "/" + m.Dbname + "?" + m.Config + +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_pgsql.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_pgsql.go new file mode 100644 index 000000000..29fe03f43 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_pgsql.go @@ -0,0 +1,17 @@ +package config + +type Pgsql struct { + GeneralDB `yaml:",inline" mapstructure:",squash"` +} + +// Dsn 基于配置文件获取 dsn +// Author [SliverHorn](https://github.com/SliverHorn) +func (p *Pgsql) Dsn() string { + return "host=" + p.Path + " user=" + p.Username + " password=" + p.Password + " dbname=" + p.Dbname + " port=" + p.Port + " " + p.Config +} + +// LinkDsn 根据 dbname 生成 dsn +// Author [SliverHorn](https://github.com/SliverHorn) +func (p *Pgsql) LinkDsn(dbname string) string { + return "host=" + p.Path + " user=" + p.Username + " password=" + p.Password + " dbname=" + dbname + " port=" + p.Port + " " + p.Config +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_sqlite.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_sqlite.go new file mode 100644 index 000000000..46f2e19a5 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/gorm_sqlite.go @@ -0,0 +1,13 @@ +package config + +import ( + "path/filepath" +) + +type Sqlite struct { + GeneralDB `yaml:",inline" mapstructure:",squash"` +} + +func (s *Sqlite) Dsn() string { + return filepath.Join(s.Path, s.Dbname+".db") +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/jwt.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/jwt.go new file mode 100644 index 000000000..c95d30dc1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/jwt.go @@ -0,0 +1,8 @@ +package config + +type JWT struct { + SigningKey string `mapstructure:"signing-key" json:"signing-key" yaml:"signing-key"` // jwt签名 + ExpiresTime string `mapstructure:"expires-time" json:"expires-time" yaml:"expires-time"` // 过期时间 + BufferTime string `mapstructure:"buffer-time" json:"buffer-time" yaml:"buffer-time"` // 缓冲时间 + Issuer string `mapstructure:"issuer" json:"issuer" yaml:"issuer"` // 签发者 +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/mongo.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/mongo.go new file mode 100644 index 000000000..2034a3fb4 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/mongo.go @@ -0,0 +1,41 @@ +package config + +import ( + "fmt" + "strings" +) + +type Mongo struct { + Coll string `json:"coll" yaml:"coll" mapstructure:"coll"` // collection name + Options string `json:"options" yaml:"options" mapstructure:"options"` // mongodb options + Database string `json:"database" yaml:"database" mapstructure:"database"` // database name + Username string `json:"username" yaml:"username" mapstructure:"username"` // 用户名 + Password string `json:"password" yaml:"password" mapstructure:"password"` // 密码 + AuthSource string `json:"auth-source" yaml:"auth-source" mapstructure:"auth-source"` // 验证数据库 + MinPoolSize uint64 `json:"min-pool-size" yaml:"min-pool-size" mapstructure:"min-pool-size"` // 最小连接池 + MaxPoolSize uint64 `json:"max-pool-size" yaml:"max-pool-size" mapstructure:"max-pool-size"` // 最大连接池 + SocketTimeoutMs int64 `json:"socket-timeout-ms" yaml:"socket-timeout-ms" mapstructure:"socket-timeout-ms"` // socket超时时间 + ConnectTimeoutMs int64 `json:"connect-timeout-ms" yaml:"connect-timeout-ms" mapstructure:"connect-timeout-ms"` // 连接超时时间 + IsZap bool `json:"is-zap" yaml:"is-zap" mapstructure:"is-zap"` // 是否开启zap日志 + Hosts []*MongoHost `json:"hosts" yaml:"hosts" mapstructure:"hosts"` // 主机列表 +} + +type MongoHost struct { + Host string `json:"host" yaml:"host" mapstructure:"host"` // ip地址 + Port string `json:"port" yaml:"port" mapstructure:"port"` // 端口 +} + +// Uri . +func (x *Mongo) Uri() string { + length := len(x.Hosts) + hosts := make([]string, 0, length) + for i := 0; i < length; i++ { + if x.Hosts[i].Host != "" && x.Hosts[i].Port != "" { + hosts = append(hosts, x.Hosts[i].Host+":"+x.Hosts[i].Port) + } + } + if x.Options != "" { + return fmt.Sprintf("mongodb://%s/%s?%s", strings.Join(hosts, ","), x.Database, x.Options) + } + return fmt.Sprintf("mongodb://%s/%s", strings.Join(hosts, ","), x.Database) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_aliyun.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_aliyun.go new file mode 100644 index 000000000..934bd782a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_aliyun.go @@ -0,0 +1,10 @@ +package config + +type AliyunOSS struct { + Endpoint string `mapstructure:"endpoint" json:"endpoint" yaml:"endpoint"` + AccessKeyId string `mapstructure:"access-key-id" json:"access-key-id" yaml:"access-key-id"` + AccessKeySecret string `mapstructure:"access-key-secret" json:"access-key-secret" yaml:"access-key-secret"` + BucketName string `mapstructure:"bucket-name" json:"bucket-name" yaml:"bucket-name"` + BucketUrl string `mapstructure:"bucket-url" json:"bucket-url" yaml:"bucket-url"` + BasePath string `mapstructure:"base-path" json:"base-path" yaml:"base-path"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_aws.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_aws.go new file mode 100644 index 000000000..7ec6acc54 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_aws.go @@ -0,0 +1,13 @@ +package config + +type AwsS3 struct { + Bucket string `mapstructure:"bucket" json:"bucket" yaml:"bucket"` + Region string `mapstructure:"region" json:"region" yaml:"region"` + Endpoint string `mapstructure:"endpoint" json:"endpoint" yaml:"endpoint"` + SecretID string `mapstructure:"secret-id" json:"secret-id" yaml:"secret-id"` + SecretKey string `mapstructure:"secret-key" json:"secret-key" yaml:"secret-key"` + BaseURL string `mapstructure:"base-url" json:"base-url" yaml:"base-url"` + PathPrefix string `mapstructure:"path-prefix" json:"path-prefix" yaml:"path-prefix"` + S3ForcePathStyle bool `mapstructure:"s3-force-path-style" json:"s3-force-path-style" yaml:"s3-force-path-style"` + DisableSSL bool `mapstructure:"disable-ssl" json:"disable-ssl" yaml:"disable-ssl"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_cloudflare.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_cloudflare.go new file mode 100644 index 000000000..ab7a393dd --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_cloudflare.go @@ -0,0 +1,10 @@ +package config + +type CloudflareR2 struct { + Bucket string `mapstructure:"bucket" json:"bucket" yaml:"bucket"` + BaseURL string `mapstructure:"base-url" json:"base-url" yaml:"base-url"` + Path string `mapstructure:"path" json:"path" yaml:"path"` + AccountID string `mapstructure:"account-id" json:"account-id" yaml:"account-id"` + AccessKeyID string `mapstructure:"access-key-id" json:"access-key-id" yaml:"access-key-id"` + SecretAccessKey string `mapstructure:"secret-access-key" json:"secret-access-key" yaml:"secret-access-key"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_huawei.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_huawei.go new file mode 100644 index 000000000..45dfbcdb0 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_huawei.go @@ -0,0 +1,9 @@ +package config + +type HuaWeiObs struct { + Path string `mapstructure:"path" json:"path" yaml:"path"` + Bucket string `mapstructure:"bucket" json:"bucket" yaml:"bucket"` + Endpoint string `mapstructure:"endpoint" json:"endpoint" yaml:"endpoint"` + AccessKey string `mapstructure:"access-key" json:"access-key" yaml:"access-key"` + SecretKey string `mapstructure:"secret-key" json:"secret-key" yaml:"secret-key"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_local.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_local.go new file mode 100644 index 000000000..7038d4ad9 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_local.go @@ -0,0 +1,6 @@ +package config + +type Local struct { + Path string `mapstructure:"path" json:"path" yaml:"path"` // 本地文件访问路径 + StorePath string `mapstructure:"store-path" json:"store-path" yaml:"store-path"` // 本地文件存储路径 +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_qiniu.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_qiniu.go new file mode 100644 index 000000000..298fe2d3c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_qiniu.go @@ -0,0 +1,11 @@ +package config + +type Qiniu struct { + Zone string `mapstructure:"zone" json:"zone" yaml:"zone"` // 存储区域 + Bucket string `mapstructure:"bucket" json:"bucket" yaml:"bucket"` // 空间名称 + ImgPath string `mapstructure:"img-path" json:"img-path" yaml:"img-path"` // CDN加速域名 + AccessKey string `mapstructure:"access-key" json:"access-key" yaml:"access-key"` // 秘钥AK + SecretKey string `mapstructure:"secret-key" json:"secret-key" yaml:"secret-key"` // 秘钥SK + UseHTTPS bool `mapstructure:"use-https" json:"use-https" yaml:"use-https"` // 是否使用https + UseCdnDomains bool `mapstructure:"use-cdn-domains" json:"use-cdn-domains" yaml:"use-cdn-domains"` // 上传是否使用CDN上传加速 +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_tencent.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_tencent.go new file mode 100644 index 000000000..39a29d116 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/oss_tencent.go @@ -0,0 +1,10 @@ +package config + +type TencentCOS struct { + Bucket string `mapstructure:"bucket" json:"bucket" yaml:"bucket"` + Region string `mapstructure:"region" json:"region" yaml:"region"` + SecretID string `mapstructure:"secret-id" json:"secret-id" yaml:"secret-id"` + SecretKey string `mapstructure:"secret-key" json:"secret-key" yaml:"secret-key"` + BaseURL string `mapstructure:"base-url" json:"base-url" yaml:"base-url"` + PathPrefix string `mapstructure:"path-prefix" json:"path-prefix" yaml:"path-prefix"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/redis.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/redis.go new file mode 100644 index 000000000..94b5bf6b5 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/redis.go @@ -0,0 +1,10 @@ +package config + +type Redis struct { + Name string `mapstructure:"name" json:"name" yaml:"name"` // 代表当前实例的名字 + Addr string `mapstructure:"addr" json:"addr" yaml:"addr"` // 服务器地址:端口 + Password string `mapstructure:"password" json:"password" yaml:"password"` // 密码 + DB int `mapstructure:"db" json:"db" yaml:"db"` // 单实例模式下redis的哪个数据库 + UseCluster bool `mapstructure:"useCluster" json:"useCluster" yaml:"useCluster"` // 是否使用集群模式 + ClusterAddrs []string `mapstructure:"clusterAddrs" json:"clusterAddrs" yaml:"clusterAddrs"` // 集群模式下的节点地址列表 +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/system.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/system.go new file mode 100644 index 000000000..b47dbf64e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/system.go @@ -0,0 +1,14 @@ +package config + +type System struct { + DbType string `mapstructure:"db-type" json:"db-type" yaml:"db-type"` // 数据库类型:mysql(默认)|sqlite|sqlserver|postgresql + OssType string `mapstructure:"oss-type" json:"oss-type" yaml:"oss-type"` // Oss类型 + RouterPrefix string `mapstructure:"router-prefix" json:"router-prefix" yaml:"router-prefix"` + Addr int `mapstructure:"addr" json:"addr" yaml:"addr"` // 端口值 + LimitCountIP int `mapstructure:"iplimit-count" json:"iplimit-count" yaml:"iplimit-count"` + LimitTimeIP int `mapstructure:"iplimit-time" json:"iplimit-time" yaml:"iplimit-time"` + UseMultipoint bool `mapstructure:"use-multipoint" json:"use-multipoint" yaml:"use-multipoint"` // 多点登录拦截 + UseRedis bool `mapstructure:"use-redis" json:"use-redis" yaml:"use-redis"` // 使用redis + UseMongo bool `mapstructure:"use-mongo" json:"use-mongo" yaml:"use-mongo"` // 使用mongo + UseStrictAuth bool `mapstructure:"use-strict-auth" json:"use-strict-auth" yaml:"use-strict-auth"` // 使用树形角色分配模式 +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/zap.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/zap.go new file mode 100644 index 000000000..0e8ae2b29 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/config/zap.go @@ -0,0 +1,71 @@ +package config + +import ( + "go.uber.org/zap/zapcore" + "time" +) + +type Zap struct { + Level string `mapstructure:"level" json:"level" yaml:"level"` // 级别 + Prefix string `mapstructure:"prefix" json:"prefix" yaml:"prefix"` // 日志前缀 + Format string `mapstructure:"format" json:"format" yaml:"format"` // 输出 + Director string `mapstructure:"director" json:"director" yaml:"director"` // 日志文件夹 + EncodeLevel string `mapstructure:"encode-level" json:"encode-level" yaml:"encode-level"` // 编码级 + StacktraceKey string `mapstructure:"stacktrace-key" json:"stacktrace-key" yaml:"stacktrace-key"` // 栈名 + ShowLine bool `mapstructure:"show-line" json:"show-line" yaml:"show-line"` // 显示行 + LogInConsole bool `mapstructure:"log-in-console" json:"log-in-console" yaml:"log-in-console"` // 输出控制台 + RetentionDay int `mapstructure:"retention-day" json:"retention-day" yaml:"retention-day"` // 日志保留天数 +} + +// Levels 根据字符串转化为 zapcore.Levels +func (c *Zap) Levels() []zapcore.Level { + levels := make([]zapcore.Level, 0, 7) + level, err := zapcore.ParseLevel(c.Level) + if err != nil { + level = zapcore.DebugLevel + } + for ; level <= zapcore.FatalLevel; level++ { + levels = append(levels, level) + } + return levels +} + +func (c *Zap) Encoder() zapcore.Encoder { + config := zapcore.EncoderConfig{ + TimeKey: "time", + NameKey: "name", + LevelKey: "level", + CallerKey: "caller", + MessageKey: "message", + StacktraceKey: c.StacktraceKey, + LineEnding: zapcore.DefaultLineEnding, + EncodeTime: func(t time.Time, encoder zapcore.PrimitiveArrayEncoder) { + encoder.AppendString(c.Prefix + t.Format("2006-01-02 15:04:05.000")) + }, + EncodeLevel: c.LevelEncoder(), + EncodeCaller: zapcore.FullCallerEncoder, + EncodeDuration: zapcore.SecondsDurationEncoder, + } + if c.Format == "json" { + return zapcore.NewJSONEncoder(config) + } + return zapcore.NewConsoleEncoder(config) + +} + +// LevelEncoder 根据 EncodeLevel 返回 zapcore.LevelEncoder +// Author [SliverHorn](https://github.com/SliverHorn) +func (c *Zap) LevelEncoder() zapcore.LevelEncoder { + switch { + case c.EncodeLevel == "LowercaseLevelEncoder": // 小写编码器(默认) + return zapcore.LowercaseLevelEncoder + case c.EncodeLevel == "LowercaseColorLevelEncoder": // 小写编码器带颜色 + return zapcore.LowercaseColorLevelEncoder + case c.EncodeLevel == "CapitalLevelEncoder": // 大写编码器 + return zapcore.CapitalLevelEncoder + case c.EncodeLevel == "CapitalColorLevelEncoder": // 大写编码器带颜色 + return zapcore.CapitalColorLevelEncoder + default: + return zapcore.LowercaseLevelEncoder + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/internal/constant.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/internal/constant.go new file mode 100644 index 000000000..b22362cc7 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/internal/constant.go @@ -0,0 +1,9 @@ +package internal + +const ( + ConfigEnv = "GVA_CONFIG" + ConfigDefaultFile = "config.yaml" + ConfigTestFile = "config.test.yaml" + ConfigDebugFile = "config.debug.yaml" + ConfigReleaseFile = "config.release.yaml" +) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/internal/cutter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/internal/cutter.go new file mode 100644 index 000000000..e053af6e5 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/internal/cutter.go @@ -0,0 +1,121 @@ +package internal + +import ( + "os" + "path/filepath" + "sync" + "time" +) + +// Cutter 实现 io.Writer 接口 +// 用于日志切割, strings.Join([]string{director,layout, formats..., level+".log"}, os.PathSeparator) +type Cutter struct { + level string // 日志级别(debug, info, warn, error, dpanic, panic, fatal) + layout string // 时间格式 2006-01-02 15:04:05 + formats []string // 自定义参数([]string{Director,"2006-01-02", "business"(此参数可不写), level+".log"} + director string // 日志文件夹 + retentionDay int //日志保留天数 + file *os.File // 文件句柄 + mutex *sync.RWMutex // 读写锁 +} + +type CutterOption func(*Cutter) + +// CutterWithLayout 时间格式 +func CutterWithLayout(layout string) CutterOption { + return func(c *Cutter) { + c.layout = layout + } +} + +// CutterWithFormats 格式化参数 +func CutterWithFormats(format ...string) CutterOption { + return func(c *Cutter) { + if len(format) > 0 { + c.formats = format + } + } +} + +func NewCutter(director string, level string, retentionDay int, options ...CutterOption) *Cutter { + rotate := &Cutter{ + level: level, + director: director, + retentionDay: retentionDay, + mutex: new(sync.RWMutex), + } + for i := 0; i < len(options); i++ { + options[i](rotate) + } + return rotate +} + +// Write satisfies the io.Writer interface. It writes to the +// appropriate file handle that is currently being used. +// If we have reached rotation time, the target file gets +// automatically rotated, and also purged if necessary. +func (c *Cutter) Write(bytes []byte) (n int, err error) { + c.mutex.Lock() + defer func() { + if c.file != nil { + _ = c.file.Close() + c.file = nil + } + c.mutex.Unlock() + }() + length := len(c.formats) + values := make([]string, 0, 3+length) + values = append(values, c.director) + if c.layout != "" { + values = append(values, time.Now().Format(c.layout)) + } + for i := 0; i < length; i++ { + values = append(values, c.formats[i]) + } + values = append(values, c.level+".log") + filename := filepath.Join(values...) + director := filepath.Dir(filename) + err = os.MkdirAll(director, os.ModePerm) + if err != nil { + return 0, err + } + err = removeNDaysFolders(c.director, c.retentionDay) + if err != nil { + return 0, err + } + c.file, err = os.OpenFile(filename, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644) + if err != nil { + return 0, err + } + return c.file.Write(bytes) +} + +func (c *Cutter) Sync() error { + c.mutex.Lock() + defer c.mutex.Unlock() + + if c.file != nil { + return c.file.Sync() + } + return nil +} + +// 增加日志目录文件清理 小于等于零的值默认忽略不再处理 +func removeNDaysFolders(dir string, days int) error { + if days <= 0 { + return nil + } + cutoff := time.Now().AddDate(0, 0, -days) + return filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + if info.IsDir() && info.ModTime().Before(cutoff) && path != dir { + err = os.RemoveAll(path) + if err != nil { + return err + } + } + return nil + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/internal/zap_core.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/internal/zap_core.go new file mode 100644 index 000000000..4648e60cb --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/internal/zap_core.go @@ -0,0 +1,68 @@ +package internal + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" + "os" + "time" +) + +type ZapCore struct { + level zapcore.Level + zapcore.Core +} + +func NewZapCore(level zapcore.Level) *ZapCore { + entity := &ZapCore{level: level} + syncer := entity.WriteSyncer() + levelEnabler := zap.LevelEnablerFunc(func(l zapcore.Level) bool { + return l == level + }) + entity.Core = zapcore.NewCore(global.GVA_CONFIG.Zap.Encoder(), syncer, levelEnabler) + return entity +} + +func (z *ZapCore) WriteSyncer(formats ...string) zapcore.WriteSyncer { + cutter := NewCutter( + global.GVA_CONFIG.Zap.Director, + z.level.String(), + global.GVA_CONFIG.Zap.RetentionDay, + CutterWithLayout(time.DateOnly), + CutterWithFormats(formats...), + ) + if global.GVA_CONFIG.Zap.LogInConsole { + multiSyncer := zapcore.NewMultiWriteSyncer(os.Stdout, cutter) + return zapcore.AddSync(multiSyncer) + } + return zapcore.AddSync(cutter) +} + +func (z *ZapCore) Enabled(level zapcore.Level) bool { + return z.level == level +} + +func (z *ZapCore) With(fields []zapcore.Field) zapcore.Core { + return z.Core.With(fields) +} + +func (z *ZapCore) Check(entry zapcore.Entry, check *zapcore.CheckedEntry) *zapcore.CheckedEntry { + if z.Enabled(entry.Level) { + return check.AddCore(entry, z) + } + return check +} + +func (z *ZapCore) Write(entry zapcore.Entry, fields []zapcore.Field) error { + for i := 0; i < len(fields); i++ { + if fields[i].Key == "business" || fields[i].Key == "folder" || fields[i].Key == "directory" { + syncer := z.WriteSyncer(fields[i].String) + z.Core = zapcore.NewCore(global.GVA_CONFIG.Zap.Encoder(), syncer, z.level) + } + } + return z.Core.Write(entry, fields) +} + +func (z *ZapCore) Sync() error { + return z.Core.Sync() +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/server.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/server.go new file mode 100644 index 000000000..13bebf4e3 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/server.go @@ -0,0 +1,45 @@ +package core + +import ( + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/initialize" + "github.com/flipped-aurora/gin-vue-admin/server/service/system" + "go.uber.org/zap" +) + +type server interface { + ListenAndServe() error +} + +func RunWindowsServer() { + if global.GVA_CONFIG.System.UseMultipoint || global.GVA_CONFIG.System.UseRedis { + // 初始化redis服务 + initialize.Redis() + initialize.RedisList() + } + + if global.GVA_CONFIG.System.UseMongo { + err := initialize.Mongo.Initialization() + if err != nil { + zap.L().Error(fmt.Sprintf("%+v", err)) + } + } + // 从db加载jwt数据 + if global.GVA_DB != nil { + system.LoadAll() + } + + Router := initialize.Routers() + + address := fmt.Sprintf(":%d", global.GVA_CONFIG.System.Addr) + s := initServer(address, Router) + + global.GVA_LOG.Info("server run success on ", zap.String("address", address)) + + fmt.Printf(` + 默认自动化文档地址:http://127.0.0.1%s/swagger/index.html + 默认前端文件运行地址:http://127.0.0.1:8080 +`, address) + global.GVA_LOG.Error(s.ListenAndServe().Error()) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/server_other.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/server_other.go new file mode 100644 index 000000000..83645fced --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/server_other.go @@ -0,0 +1,19 @@ +//go:build !windows +// +build !windows + +package core + +import ( + "time" + + "github.com/fvbock/endless" + "github.com/gin-gonic/gin" +) + +func initServer(address string, router *gin.Engine) server { + s := endless.NewServer(address, router) + s.ReadHeaderTimeout = 10 * time.Minute + s.WriteTimeout = 10 * time.Minute + s.MaxHeaderBytes = 1 << 20 + return s +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/server_win.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/server_win.go new file mode 100644 index 000000000..20cf44b9f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/server_win.go @@ -0,0 +1,21 @@ +//go:build windows +// +build windows + +package core + +import ( + "net/http" + "time" + + "github.com/gin-gonic/gin" +) + +func initServer(address string, router *gin.Engine) server { + return &http.Server{ + Addr: address, + Handler: router, + ReadTimeout: 10 * time.Minute, + WriteTimeout: 10 * time.Minute, + MaxHeaderBytes: 1 << 20, + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/viper.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/viper.go new file mode 100644 index 000000000..0f3c23afa --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/viper.go @@ -0,0 +1,71 @@ +package core + +import ( + "flag" + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/core/internal" + "github.com/gin-gonic/gin" + "os" + "path/filepath" + + "github.com/fsnotify/fsnotify" + "github.com/spf13/viper" + + "github.com/flipped-aurora/gin-vue-admin/server/global" +) + +// Viper // +// 优先级: 命令行 > 环境变量 > 默认值 +// Author [SliverHorn](https://github.com/SliverHorn) +func Viper(path ...string) *viper.Viper { + var config string + + if len(path) == 0 { + flag.StringVar(&config, "c", "", "choose config file.") + flag.Parse() + if config == "" { // 判断命令行参数是否为空 + if configEnv := os.Getenv(internal.ConfigEnv); configEnv == "" { // 判断 internal.ConfigEnv 常量存储的环境变量是否为空 + switch gin.Mode() { + case gin.DebugMode: + config = internal.ConfigDefaultFile + case gin.ReleaseMode: + config = internal.ConfigReleaseFile + case gin.TestMode: + config = internal.ConfigTestFile + } + fmt.Printf("您正在使用gin模式的%s环境名称,config的路径为%s\n", gin.Mode(), config) + } else { // internal.ConfigEnv 常量存储的环境变量不为空 将值赋值于config + config = configEnv + fmt.Printf("您正在使用%s环境变量,config的路径为%s\n", internal.ConfigEnv, config) + } + } else { // 命令行参数不为空 将值赋值于config + fmt.Printf("您正在使用命令行的-c参数传递的值,config的路径为%s\n", config) + } + } else { // 函数传递的可变参数的第一个值赋值于config + config = path[0] + fmt.Printf("您正在使用func Viper()传递的值,config的路径为%s\n", config) + } + + v := viper.New() + v.SetConfigFile(config) + v.SetConfigType("yaml") + err := v.ReadInConfig() + if err != nil { + panic(fmt.Errorf("Fatal error config file: %s \n", err)) + } + v.WatchConfig() + + v.OnConfigChange(func(e fsnotify.Event) { + fmt.Println("config file changed:", e.Name) + if err = v.Unmarshal(&global.GVA_CONFIG); err != nil { + fmt.Println(err) + } + }) + if err = v.Unmarshal(&global.GVA_CONFIG); err != nil { + panic(err) + } + + // root 适配性 根据root位置去找到对应迁移位置,保证root路径有效 + global.GVA_CONFIG.AutoCode.Root, _ = filepath.Abs("..") + return v +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/zap.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/zap.go new file mode 100644 index 000000000..d7e08a44a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/core/zap.go @@ -0,0 +1,32 @@ +package core + +import ( + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/core/internal" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" + "os" +) + +// Zap 获取 zap.Logger +// Author [SliverHorn](https://github.com/SliverHorn) +func Zap() (logger *zap.Logger) { + if ok, _ := utils.PathExists(global.GVA_CONFIG.Zap.Director); !ok { // 判断是否有Director文件夹 + fmt.Printf("create %v directory\n", global.GVA_CONFIG.Zap.Director) + _ = os.Mkdir(global.GVA_CONFIG.Zap.Director, os.ModePerm) + } + levels := global.GVA_CONFIG.Zap.Levels() + length := len(levels) + cores := make([]zapcore.Core, 0, length) + for i := 0; i < length; i++ { + core := internal.NewZapCore(levels[i]) + cores = append(cores, core) + } + logger = zap.New(zapcore.NewTee(cores...)) + if global.GVA_CONFIG.Zap.ShowLine { + logger = logger.WithOptions(zap.AddCaller()) + } + return logger +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/docs/docs.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/docs/docs.go new file mode 100644 index 000000000..09c1dc1db --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/docs/docs.go @@ -0,0 +1,8104 @@ +// Package docs Code generated by swaggo/swag. DO NOT EDIT +package docs + +import "github.com/swaggo/swag" + +const docTemplate = `{ + "schemes": {{ marshal .Schemes }}, + "swagger": "2.0", + "info": { + "description": "{{escape .Description}}", + "title": "{{.Title}}", + "contact": {}, + "version": "{{.Version}}" + }, + "host": "{{.Host}}", + "basePath": "{{.BasePath}}", + "paths": { + "/api/createApi": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "创建基础api", + "parameters": [ + { + "description": "api路径, api中文描述, api组, 方法", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysApi" + } + } + ], + "responses": { + "200": { + "description": "创建基础api", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/deleteApi": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "删除api", + "parameters": [ + { + "description": "ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysApi" + } + } + ], + "responses": { + "200": { + "description": "删除api", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/deleteApisByIds": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "删除选中Api", + "parameters": [ + { + "description": "ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.IdsReq" + } + } + ], + "responses": { + "200": { + "description": "删除选中Api", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/enterSyncApi": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "确认同步API", + "responses": { + "200": { + "description": "确认同步API", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/freshCasbin": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "刷新casbin缓存", + "responses": { + "200": { + "description": "刷新成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/getAllApis": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "获取所有的Api 不分页", + "responses": { + "200": { + "description": "获取所有的Api 不分页,返回包括api列表", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysAPIListResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/getApiById": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "根据id获取api", + "parameters": [ + { + "description": "根据id获取api", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetById" + } + } + ], + "responses": { + "200": { + "description": "根据id获取api,返回包括api详情", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysAPIResponse" + } + } + } + ] + } + } + } + } + }, + "/api/getApiGroups": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "获取API分组", + "responses": { + "200": { + "description": "获取API分组", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/getApiList": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "分页获取API列表", + "parameters": [ + { + "description": "分页获取API列表", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.SearchApiParams" + } + } + ], + "responses": { + "200": { + "description": "分页获取API列表,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/ignoreApi": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "IgnoreApi" + ], + "summary": "忽略API", + "responses": { + "200": { + "description": "同步API", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/syncApi": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "同步API", + "responses": { + "200": { + "description": "同步API", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/updateApi": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "修改基础api", + "parameters": [ + { + "description": "api路径, api中文描述, api组, 方法", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysApi" + } + } + ], + "responses": { + "200": { + "description": "修改基础api", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/authority/copyAuthority": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authority" + ], + "summary": "拷贝角色", + "parameters": [ + { + "description": "旧角色id, 新权限id, 新权限名, 新父角色id", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/response.SysAuthorityCopyResponse" + } + } + ], + "responses": { + "200": { + "description": "拷贝角色,返回包括系统角色详情", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysAuthorityResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/authority/createAuthority": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authority" + ], + "summary": "创建角色", + "parameters": [ + { + "description": "权限id, 权限名, 父角色id", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysAuthority" + } + } + ], + "responses": { + "200": { + "description": "创建角色,返回包括系统角色详情", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysAuthorityResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/authority/deleteAuthority": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authority" + ], + "summary": "删除角色", + "parameters": [ + { + "description": "删除角色", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysAuthority" + } + } + ], + "responses": { + "200": { + "description": "删除角色", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/authority/getAuthorityList": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authority" + ], + "summary": "分页获取角色列表", + "parameters": [ + { + "description": "页码, 每页大小", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.PageInfo" + } + } + ], + "responses": { + "200": { + "description": "分页获取角色列表,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/authority/setDataAuthority": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authority" + ], + "summary": "设置角色资源权限", + "parameters": [ + { + "description": "设置角色资源权限", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysAuthority" + } + } + ], + "responses": { + "200": { + "description": "设置角色资源权限", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/authority/updateAuthority": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authority" + ], + "summary": "更新角色信息", + "parameters": [ + { + "description": "权限id, 权限名, 父角色id", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysAuthority" + } + } + ], + "responses": { + "200": { + "description": "更新角色信息,返回包括系统角色详情", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysAuthorityResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/authorityBtn/canRemoveAuthorityBtn": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AuthorityBtn" + ], + "summary": "设置权限按钮", + "responses": { + "200": { + "description": "删除成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/authorityBtn/getAuthorityBtn": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AuthorityBtn" + ], + "summary": "获取权限按钮", + "parameters": [ + { + "description": "菜单id, 角色id, 选中的按钮id", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.SysAuthorityBtnReq" + } + } + ], + "responses": { + "200": { + "description": "返回列表成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysAuthorityBtnRes" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/authorityBtn/setAuthorityBtn": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AuthorityBtn" + ], + "summary": "设置权限按钮", + "parameters": [ + { + "description": "菜单id, 角色id, 选中的按钮id", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.SysAuthorityBtnReq" + } + } + ], + "responses": { + "200": { + "description": "返回列表成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/addFunc": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AddFunc" + ], + "summary": "增加方法", + "parameters": [ + { + "description": "增加方法", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AutoCode" + } + } + ], + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"创建成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/autoCode/createPackage": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCodePackage" + ], + "summary": "创建package", + "parameters": [ + { + "description": "创建package", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.SysAutoCodePackageCreate" + } + } + ], + "responses": { + "200": { + "description": "创建package成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/createTemp": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCodeTemplate" + ], + "summary": "自动代码模板", + "parameters": [ + { + "description": "创建自动代码", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AutoCode" + } + } + ], + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"创建成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/autoCode/delPackage": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCode" + ], + "summary": "删除package", + "parameters": [ + { + "description": "创建package", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetById" + } + } + ], + "responses": { + "200": { + "description": "删除package成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/delSysHistory": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCode" + ], + "summary": "删除回滚记录", + "parameters": [ + { + "description": "请求参数", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetById" + } + } + ], + "responses": { + "200": { + "description": "删除回滚记录", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/getColumn": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCode" + ], + "summary": "获取当前表所有字段", + "responses": { + "200": { + "description": "获取当前表所有字段", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/getDatabase": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCode" + ], + "summary": "获取当前所有数据库", + "responses": { + "200": { + "description": "获取当前所有数据库", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/getMeta": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCode" + ], + "summary": "获取meta信息", + "parameters": [ + { + "description": "请求参数", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetById" + } + } + ], + "responses": { + "200": { + "description": "获取meta信息", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/getPackage": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCodePackage" + ], + "summary": "获取package", + "responses": { + "200": { + "description": "创建package成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/getSysHistory": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCode" + ], + "summary": "查询回滚记录", + "parameters": [ + { + "description": "请求参数", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.PageInfo" + } + } + ], + "responses": { + "200": { + "description": "查询回滚记录,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/getTables": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCode" + ], + "summary": "获取当前数据库所有表", + "responses": { + "200": { + "description": "获取当前数据库所有表", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/getTemplates": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCodePackage" + ], + "summary": "获取package", + "responses": { + "200": { + "description": "创建package成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/installPlugin": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCodePlugin" + ], + "summary": "安装插件", + "parameters": [ + { + "type": "file", + "description": "this is a test file", + "name": "plug", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "安装插件成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object" + } + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/preview": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCodeTemplate" + ], + "summary": "预览创建后的代码", + "parameters": [ + { + "description": "预览创建代码", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AutoCode" + } + } + ], + "responses": { + "200": { + "description": "预览创建后的代码", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/pubPlug": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCodePlugin" + ], + "summary": "打包插件", + "parameters": [ + { + "type": "string", + "description": "插件名称", + "name": "plugName", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "打包插件成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/rollback": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCode" + ], + "summary": "回滚自动生成代码", + "parameters": [ + { + "description": "请求参数", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.SysAutoHistoryRollBack" + } + } + ], + "responses": { + "200": { + "description": "回滚自动生成代码", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/base/captcha": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Base" + ], + "summary": "生成验证码", + "responses": { + "200": { + "description": "生成验证码,返回包括随机数id,base64,验证码长度,是否开启验证码", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysCaptchaResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/base/login": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Base" + ], + "summary": "用户登录", + "parameters": [ + { + "description": "用户名, 密码, 验证码", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.Login" + } + } + ], + "responses": { + "200": { + "description": "返回包括用户信息,token,过期时间", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.LoginResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/casbin/UpdateCasbin": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Casbin" + ], + "summary": "更新角色api权限", + "parameters": [ + { + "description": "权限id, 权限模型列表", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.CasbinInReceive" + } + } + ], + "responses": { + "200": { + "description": "更新角色api权限", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/casbin/getPolicyPathByAuthorityId": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Casbin" + ], + "summary": "获取权限列表", + "parameters": [ + { + "description": "权限id, 权限模型列表", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.CasbinInReceive" + } + } + ], + "responses": { + "200": { + "description": "获取权限列表,返回包括casbin详情列表", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PolicyPathResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/customer/customer": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaCustomer" + ], + "summary": "获取单一客户信息", + "parameters": [ + { + "type": "integer", + "description": "主键ID", + "name": "ID", + "in": "query" + }, + { + "type": "string", + "description": "创建时间", + "name": "createdAt", + "in": "query" + }, + { + "type": "string", + "description": "客户名", + "name": "customerName", + "in": "query" + }, + { + "type": "string", + "description": "客户手机号", + "name": "customerPhoneData", + "in": "query" + }, + { + "type": "integer", + "description": "管理角色ID", + "name": "sysUserAuthorityID", + "in": "query" + }, + { + "type": "integer", + "description": "管理ID", + "name": "sysUserId", + "in": "query" + }, + { + "type": "string", + "description": "更新时间", + "name": "updatedAt", + "in": "query" + } + ], + "responses": { + "200": { + "description": "获取单一客户信息,返回包括客户详情", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.ExaCustomerResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + }, + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaCustomer" + ], + "summary": "更新客户信息", + "parameters": [ + { + "description": "客户ID, 客户信息", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/example.ExaCustomer" + } + } + ], + "responses": { + "200": { + "description": "更新客户信息", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + }, + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaCustomer" + ], + "summary": "创建客户", + "parameters": [ + { + "description": "客户用户名, 客户手机号码", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/example.ExaCustomer" + } + } + ], + "responses": { + "200": { + "description": "创建客户", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + }, + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaCustomer" + ], + "summary": "删除客户", + "parameters": [ + { + "description": "客户ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/example.ExaCustomer" + } + } + ], + "responses": { + "200": { + "description": "删除客户", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/customer/customerList": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaCustomer" + ], + "summary": "分页获取权限客户列表", + "parameters": [ + { + "type": "string", + "description": "关键字", + "name": "keyword", + "in": "query" + }, + { + "type": "integer", + "description": "页码", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "每页大小", + "name": "pageSize", + "in": "query" + } + ], + "responses": { + "200": { + "description": "分页获取权限客户列表,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/email/emailTest": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "System" + ], + "summary": "发送测试邮件", + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"发送成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/email/sendEmail": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "System" + ], + "summary": "发送邮件", + "parameters": [ + { + "description": "发送邮件必须的参数", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/response.Email" + } + } + ], + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"发送成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/fileUploadAndDownload/breakpointContinue": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaFileUploadAndDownload" + ], + "summary": "断点续传到服务器", + "parameters": [ + { + "type": "file", + "description": "an example for breakpoint resume, 断点续传示例", + "name": "file", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "断点续传到服务器", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/fileUploadAndDownload/deleteFile": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaFileUploadAndDownload" + ], + "summary": "删除文件", + "parameters": [ + { + "description": "传入文件里面id即可", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/example.ExaFileUploadAndDownload" + } + } + ], + "responses": { + "200": { + "description": "删除文件", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/fileUploadAndDownload/findFile": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaFileUploadAndDownload" + ], + "summary": "创建文件", + "parameters": [ + { + "type": "file", + "description": "上传文件完成", + "name": "file", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "创建文件,返回包括文件路径", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.FilePathResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/fileUploadAndDownload/getFileList": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaFileUploadAndDownload" + ], + "summary": "分页文件列表", + "parameters": [ + { + "description": "页码, 每页大小", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.PageInfo" + } + } + ], + "responses": { + "200": { + "description": "分页文件列表,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/fileUploadAndDownload/removeChunk": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaFileUploadAndDownload" + ], + "summary": "删除切片", + "parameters": [ + { + "type": "file", + "description": "删除缓存切片", + "name": "file", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "删除切片", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/fileUploadAndDownload/upload": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaFileUploadAndDownload" + ], + "summary": "上传文件示例", + "parameters": [ + { + "type": "file", + "description": "上传文件示例", + "name": "file", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "上传文件示例,返回包括文件详情", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.ExaFileResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/info/createInfo": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Info" + ], + "summary": "创建公告", + "parameters": [ + { + "description": "创建公告", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/model.Info" + } + } + ], + "responses": { + "200": { + "description": "创建成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/info/deleteInfo": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Info" + ], + "summary": "删除公告", + "parameters": [ + { + "description": "删除公告", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/model.Info" + } + } + ], + "responses": { + "200": { + "description": "删除成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/info/deleteInfoByIds": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Info" + ], + "summary": "批量删除公告", + "responses": { + "200": { + "description": "批量删除成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/info/findInfo": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Info" + ], + "summary": "用id查询公告", + "parameters": [ + { + "type": "integer", + "description": "主键ID", + "name": "ID", + "in": "query" + }, + { + "type": "string", + "description": "内容", + "name": "content", + "in": "query" + }, + { + "type": "string", + "description": "创建时间", + "name": "createdAt", + "in": "query" + }, + { + "type": "string", + "description": "标题", + "name": "title", + "in": "query" + }, + { + "type": "string", + "description": "更新时间", + "name": "updatedAt", + "in": "query" + }, + { + "type": "integer", + "description": "作者", + "name": "userID", + "in": "query" + } + ], + "responses": { + "200": { + "description": "查询成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/model.Info" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/info/getInfoDataSource": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Info" + ], + "summary": "获取Info的数据源", + "responses": { + "200": { + "description": "查询成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/info/getInfoList": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Info" + ], + "summary": "分页获取公告列表", + "parameters": [ + { + "type": "string", + "name": "endCreatedAt", + "in": "query" + }, + { + "type": "string", + "description": "关键字", + "name": "keyword", + "in": "query" + }, + { + "type": "integer", + "description": "页码", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "每页大小", + "name": "pageSize", + "in": "query" + }, + { + "type": "string", + "name": "startCreatedAt", + "in": "query" + } + ], + "responses": { + "200": { + "description": "获取成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/info/getInfoPublic": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Info" + ], + "summary": "不需要鉴权的公告接口", + "parameters": [ + { + "type": "string", + "name": "endCreatedAt", + "in": "query" + }, + { + "type": "string", + "description": "关键字", + "name": "keyword", + "in": "query" + }, + { + "type": "integer", + "description": "页码", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "每页大小", + "name": "pageSize", + "in": "query" + }, + { + "type": "string", + "name": "startCreatedAt", + "in": "query" + } + ], + "responses": { + "200": { + "description": "获取成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/info/updateInfo": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Info" + ], + "summary": "更新公告", + "parameters": [ + { + "description": "更新公告", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/model.Info" + } + } + ], + "responses": { + "200": { + "description": "更新成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/init/checkdb": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "CheckDB" + ], + "summary": "初始化用户数据库", + "responses": { + "200": { + "description": "初始化用户数据库", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/init/initdb": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "InitDB" + ], + "summary": "初始化用户数据库", + "parameters": [ + { + "description": "初始化数据库参数", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.InitDB" + } + } + ], + "responses": { + "200": { + "description": "初始化用户数据库", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/jwt/jsonInBlacklist": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Jwt" + ], + "summary": "jwt加入黑名单", + "responses": { + "200": { + "description": "jwt加入黑名单", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/menu/addBaseMenu": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Menu" + ], + "summary": "新增菜单", + "parameters": [ + { + "description": "路由path, 父菜单ID, 路由name, 对应前端文件路径, 排序标记", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysBaseMenu" + } + } + ], + "responses": { + "200": { + "description": "新增菜单", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/menu/addMenuAuthority": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AuthorityMenu" + ], + "summary": "增加menu和角色关联关系", + "parameters": [ + { + "description": "角色ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AddMenuAuthorityInfo" + } + } + ], + "responses": { + "200": { + "description": "增加menu和角色关联关系", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/menu/deleteBaseMenu": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Menu" + ], + "summary": "删除菜单", + "parameters": [ + { + "description": "菜单id", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetById" + } + } + ], + "responses": { + "200": { + "description": "删除菜单", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/menu/getBaseMenuById": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Menu" + ], + "summary": "根据id获取菜单", + "parameters": [ + { + "description": "菜单id", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetById" + } + } + ], + "responses": { + "200": { + "description": "根据id获取菜单,返回包括系统菜单列表", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysBaseMenuResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/menu/getBaseMenuTree": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "AuthorityMenu" + ], + "summary": "获取用户动态路由", + "parameters": [ + { + "description": "空", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.Empty" + } + } + ], + "responses": { + "200": { + "description": "获取用户动态路由,返回包括系统菜单列表", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysBaseMenusResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/menu/getMenu": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "AuthorityMenu" + ], + "summary": "获取用户动态路由", + "parameters": [ + { + "description": "空", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.Empty" + } + } + ], + "responses": { + "200": { + "description": "获取用户动态路由,返回包括系统菜单详情列表", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysMenusResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/menu/getMenuAuthority": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AuthorityMenu" + ], + "summary": "获取指定角色menu", + "parameters": [ + { + "description": "角色ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetAuthorityId" + } + } + ], + "responses": { + "200": { + "description": "获取指定角色menu", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/menu/getMenuList": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Menu" + ], + "summary": "分页获取基础menu列表", + "parameters": [ + { + "description": "页码, 每页大小", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.PageInfo" + } + } + ], + "responses": { + "200": { + "description": "分页获取基础menu列表,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/menu/updateBaseMenu": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Menu" + ], + "summary": "更新菜单", + "parameters": [ + { + "description": "路由path, 父菜单ID, 路由name, 对应前端文件路径, 排序标记", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysBaseMenu" + } + } + ], + "responses": { + "200": { + "description": "更新菜单", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionary/createSysDictionary": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionary" + ], + "summary": "创建SysDictionary", + "parameters": [ + { + "description": "SysDictionary模型", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysDictionary" + } + } + ], + "responses": { + "200": { + "description": "创建SysDictionary", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionary/deleteSysDictionary": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionary" + ], + "summary": "删除SysDictionary", + "parameters": [ + { + "description": "SysDictionary模型", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysDictionary" + } + } + ], + "responses": { + "200": { + "description": "删除SysDictionary", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionary/findSysDictionary": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionary" + ], + "summary": "用id查询SysDictionary", + "parameters": [ + { + "type": "integer", + "description": "主键ID", + "name": "ID", + "in": "query" + }, + { + "type": "string", + "description": "创建时间", + "name": "createdAt", + "in": "query" + }, + { + "type": "string", + "description": "描述", + "name": "desc", + "in": "query" + }, + { + "type": "string", + "description": "字典名(中)", + "name": "name", + "in": "query" + }, + { + "type": "boolean", + "description": "状态", + "name": "status", + "in": "query" + }, + { + "type": "string", + "description": "字典名(英)", + "name": "type", + "in": "query" + }, + { + "type": "string", + "description": "更新时间", + "name": "updatedAt", + "in": "query" + } + ], + "responses": { + "200": { + "description": "用id查询SysDictionary", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionary/getSysDictionaryList": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionary" + ], + "summary": "分页获取SysDictionary列表", + "responses": { + "200": { + "description": "分页获取SysDictionary列表,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionary/updateSysDictionary": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionary" + ], + "summary": "更新SysDictionary", + "parameters": [ + { + "description": "SysDictionary模型", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysDictionary" + } + } + ], + "responses": { + "200": { + "description": "更新SysDictionary", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionaryDetail/createSysDictionaryDetail": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionaryDetail" + ], + "summary": "创建SysDictionaryDetail", + "parameters": [ + { + "description": "SysDictionaryDetail模型", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysDictionaryDetail" + } + } + ], + "responses": { + "200": { + "description": "创建SysDictionaryDetail", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionaryDetail/deleteSysDictionaryDetail": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionaryDetail" + ], + "summary": "删除SysDictionaryDetail", + "parameters": [ + { + "description": "SysDictionaryDetail模型", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysDictionaryDetail" + } + } + ], + "responses": { + "200": { + "description": "删除SysDictionaryDetail", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionaryDetail/findSysDictionaryDetail": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionaryDetail" + ], + "summary": "用id查询SysDictionaryDetail", + "parameters": [ + { + "type": "integer", + "description": "主键ID", + "name": "ID", + "in": "query" + }, + { + "type": "string", + "description": "创建时间", + "name": "createdAt", + "in": "query" + }, + { + "type": "string", + "description": "扩展值", + "name": "extend", + "in": "query" + }, + { + "type": "string", + "description": "展示值", + "name": "label", + "in": "query" + }, + { + "type": "integer", + "description": "排序标记", + "name": "sort", + "in": "query" + }, + { + "type": "boolean", + "description": "启用状态", + "name": "status", + "in": "query" + }, + { + "type": "integer", + "description": "关联标记", + "name": "sysDictionaryID", + "in": "query" + }, + { + "type": "string", + "description": "更新时间", + "name": "updatedAt", + "in": "query" + }, + { + "type": "string", + "description": "字典值", + "name": "value", + "in": "query" + } + ], + "responses": { + "200": { + "description": "用id查询SysDictionaryDetail", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionaryDetail/getSysDictionaryDetailList": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionaryDetail" + ], + "summary": "分页获取SysDictionaryDetail列表", + "parameters": [ + { + "type": "integer", + "description": "主键ID", + "name": "ID", + "in": "query" + }, + { + "type": "string", + "description": "创建时间", + "name": "createdAt", + "in": "query" + }, + { + "type": "string", + "description": "扩展值", + "name": "extend", + "in": "query" + }, + { + "type": "string", + "description": "关键字", + "name": "keyword", + "in": "query" + }, + { + "type": "string", + "description": "展示值", + "name": "label", + "in": "query" + }, + { + "type": "integer", + "description": "页码", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "每页大小", + "name": "pageSize", + "in": "query" + }, + { + "type": "integer", + "description": "排序标记", + "name": "sort", + "in": "query" + }, + { + "type": "boolean", + "description": "启用状态", + "name": "status", + "in": "query" + }, + { + "type": "integer", + "description": "关联标记", + "name": "sysDictionaryID", + "in": "query" + }, + { + "type": "string", + "description": "更新时间", + "name": "updatedAt", + "in": "query" + }, + { + "type": "string", + "description": "字典值", + "name": "value", + "in": "query" + } + ], + "responses": { + "200": { + "description": "分页获取SysDictionaryDetail列表,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionaryDetail/updateSysDictionaryDetail": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionaryDetail" + ], + "summary": "更新SysDictionaryDetail", + "parameters": [ + { + "description": "更新SysDictionaryDetail", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysDictionaryDetail" + } + } + ], + "responses": { + "200": { + "description": "更新SysDictionaryDetail", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysExportTemplate/createSysExportTemplate": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysExportTemplate" + ], + "summary": "创建导出模板", + "parameters": [ + { + "description": "创建导出模板", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysExportTemplate" + } + } + ], + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"创建成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/sysExportTemplate/deleteSysExportTemplate": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysExportTemplate" + ], + "summary": "删除导出模板", + "parameters": [ + { + "description": "删除导出模板", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysExportTemplate" + } + } + ], + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"删除成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/sysExportTemplate/deleteSysExportTemplateByIds": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysExportTemplate" + ], + "summary": "批量删除导出模板", + "parameters": [ + { + "description": "批量删除导出模板", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.IdsReq" + } + } + ], + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"批量删除成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/sysExportTemplate/exportExcel": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysExportTemplate" + ], + "summary": "导出表格模板", + "responses": {} + } + }, + "/sysExportTemplate/findSysExportTemplate": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysExportTemplate" + ], + "summary": "用id查询导出模板", + "parameters": [ + { + "type": "integer", + "description": "主键ID", + "name": "ID", + "in": "query" + }, + { + "type": "string", + "description": "创建时间", + "name": "createdAt", + "in": "query" + }, + { + "type": "string", + "description": "数据库名称", + "name": "dbName", + "in": "query" + }, + { + "type": "integer", + "name": "limit", + "in": "query" + }, + { + "type": "string", + "description": "模板名称", + "name": "name", + "in": "query" + }, + { + "type": "string", + "name": "order", + "in": "query" + }, + { + "type": "string", + "description": "表名称", + "name": "tableName", + "in": "query" + }, + { + "type": "string", + "description": "模板标识", + "name": "templateID", + "in": "query" + }, + { + "type": "string", + "description": "模板信息", + "name": "templateInfo", + "in": "query" + }, + { + "type": "string", + "description": "更新时间", + "name": "updatedAt", + "in": "query" + } + ], + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"查询成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/sysExportTemplate/getSysExportTemplateList": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysExportTemplate" + ], + "summary": "分页获取导出模板列表", + "parameters": [ + { + "type": "integer", + "description": "主键ID", + "name": "ID", + "in": "query" + }, + { + "type": "string", + "description": "创建时间", + "name": "createdAt", + "in": "query" + }, + { + "type": "string", + "description": "数据库名称", + "name": "dbName", + "in": "query" + }, + { + "type": "string", + "name": "endCreatedAt", + "in": "query" + }, + { + "type": "string", + "description": "关键字", + "name": "keyword", + "in": "query" + }, + { + "type": "integer", + "name": "limit", + "in": "query" + }, + { + "type": "string", + "description": "模板名称", + "name": "name", + "in": "query" + }, + { + "type": "string", + "name": "order", + "in": "query" + }, + { + "type": "integer", + "description": "页码", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "每页大小", + "name": "pageSize", + "in": "query" + }, + { + "type": "string", + "name": "startCreatedAt", + "in": "query" + }, + { + "type": "string", + "description": "表名称", + "name": "tableName", + "in": "query" + }, + { + "type": "string", + "description": "模板标识", + "name": "templateID", + "in": "query" + }, + { + "type": "string", + "description": "模板信息", + "name": "templateInfo", + "in": "query" + }, + { + "type": "string", + "description": "更新时间", + "name": "updatedAt", + "in": "query" + } + ], + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"获取成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/sysExportTemplate/importExcel": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysImportTemplate" + ], + "summary": "导入表格", + "responses": {} + } + }, + "/sysExportTemplate/updateSysExportTemplate": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysExportTemplate" + ], + "summary": "更新导出模板", + "parameters": [ + { + "description": "更新导出模板", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysExportTemplate" + } + } + ], + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"更新成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/sysOperationRecord/createSysOperationRecord": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysOperationRecord" + ], + "summary": "创建SysOperationRecord", + "parameters": [ + { + "description": "创建SysOperationRecord", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysOperationRecord" + } + } + ], + "responses": { + "200": { + "description": "创建SysOperationRecord", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysOperationRecord/deleteSysOperationRecord": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysOperationRecord" + ], + "summary": "删除SysOperationRecord", + "parameters": [ + { + "description": "SysOperationRecord模型", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysOperationRecord" + } + } + ], + "responses": { + "200": { + "description": "删除SysOperationRecord", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysOperationRecord/deleteSysOperationRecordByIds": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysOperationRecord" + ], + "summary": "批量删除SysOperationRecord", + "parameters": [ + { + "description": "批量删除SysOperationRecord", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.IdsReq" + } + } + ], + "responses": { + "200": { + "description": "批量删除SysOperationRecord", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysOperationRecord/findSysOperationRecord": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysOperationRecord" + ], + "summary": "用id查询SysOperationRecord", + "parameters": [ + { + "type": "integer", + "description": "主键ID", + "name": "ID", + "in": "query" + }, + { + "type": "string", + "description": "代理", + "name": "agent", + "in": "query" + }, + { + "type": "string", + "description": "请求Body", + "name": "body", + "in": "query" + }, + { + "type": "string", + "description": "创建时间", + "name": "createdAt", + "in": "query" + }, + { + "type": "string", + "description": "错误信息", + "name": "error_message", + "in": "query" + }, + { + "type": "string", + "description": "请求ip", + "name": "ip", + "in": "query" + }, + { + "type": "string", + "description": "延迟", + "name": "latency", + "in": "query" + }, + { + "type": "string", + "description": "请求方法", + "name": "method", + "in": "query" + }, + { + "type": "string", + "description": "请求路径", + "name": "path", + "in": "query" + }, + { + "type": "string", + "description": "响应Body", + "name": "resp", + "in": "query" + }, + { + "type": "integer", + "description": "请求状态", + "name": "status", + "in": "query" + }, + { + "type": "string", + "description": "更新时间", + "name": "updatedAt", + "in": "query" + }, + { + "type": "integer", + "description": "用户id", + "name": "user_id", + "in": "query" + } + ], + "responses": { + "200": { + "description": "用id查询SysOperationRecord", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysOperationRecord/getSysOperationRecordList": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysOperationRecord" + ], + "summary": "分页获取SysOperationRecord列表", + "parameters": [ + { + "type": "integer", + "description": "主键ID", + "name": "ID", + "in": "query" + }, + { + "type": "string", + "description": "代理", + "name": "agent", + "in": "query" + }, + { + "type": "string", + "description": "请求Body", + "name": "body", + "in": "query" + }, + { + "type": "string", + "description": "创建时间", + "name": "createdAt", + "in": "query" + }, + { + "type": "string", + "description": "错误信息", + "name": "error_message", + "in": "query" + }, + { + "type": "string", + "description": "请求ip", + "name": "ip", + "in": "query" + }, + { + "type": "string", + "description": "关键字", + "name": "keyword", + "in": "query" + }, + { + "type": "string", + "description": "延迟", + "name": "latency", + "in": "query" + }, + { + "type": "string", + "description": "请求方法", + "name": "method", + "in": "query" + }, + { + "type": "integer", + "description": "页码", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "每页大小", + "name": "pageSize", + "in": "query" + }, + { + "type": "string", + "description": "请求路径", + "name": "path", + "in": "query" + }, + { + "type": "string", + "description": "响应Body", + "name": "resp", + "in": "query" + }, + { + "type": "integer", + "description": "请求状态", + "name": "status", + "in": "query" + }, + { + "type": "string", + "description": "更新时间", + "name": "updatedAt", + "in": "query" + }, + { + "type": "integer", + "description": "用户id", + "name": "user_id", + "in": "query" + } + ], + "responses": { + "200": { + "description": "分页获取SysOperationRecord列表,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/system/getServerInfo": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "System" + ], + "summary": "获取服务器信息", + "responses": { + "200": { + "description": "获取服务器信息", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/system/getSystemConfig": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "System" + ], + "summary": "获取配置文件内容", + "responses": { + "200": { + "description": "获取配置文件内容,返回包括系统配置", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysConfigResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/system/reloadSystem": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "System" + ], + "summary": "重启系统", + "responses": { + "200": { + "description": "重启系统", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/system/setSystemConfig": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "System" + ], + "summary": "设置配置文件内容", + "parameters": [ + { + "description": "设置配置文件内容", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.System" + } + } + ], + "responses": { + "200": { + "description": "设置配置文件内容", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/SetSelfInfo": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "设置用户信息", + "parameters": [ + { + "description": "ID, 用户名, 昵称, 头像链接", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysUser" + } + } + ], + "responses": { + "200": { + "description": "设置用户信息", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/admin_register": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "用户注册账号", + "parameters": [ + { + "description": "用户名, 昵称, 密码, 角色ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.Register" + } + } + ], + "responses": { + "200": { + "description": "用户注册账号,返回包括用户信息", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysUserResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/changePassword": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "用户修改密码", + "parameters": [ + { + "description": "用户名, 原密码, 新密码", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.ChangePasswordReq" + } + } + ], + "responses": { + "200": { + "description": "用户修改密码", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/deleteUser": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "删除用户", + "parameters": [ + { + "description": "用户ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetById" + } + } + ], + "responses": { + "200": { + "description": "删除用户", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/getUserInfo": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "获取用户信息", + "responses": { + "200": { + "description": "获取用户信息", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/getUserList": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "分页获取用户列表", + "parameters": [ + { + "description": "页码, 每页大小", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.PageInfo" + } + } + ], + "responses": { + "200": { + "description": "分页获取用户列表,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/resetPassword": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "重置用户密码", + "parameters": [ + { + "description": "ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysUser" + } + } + ], + "responses": { + "200": { + "description": "重置用户密码", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/setUserAuthorities": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "设置用户权限", + "parameters": [ + { + "description": "用户UUID, 角色ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.SetUserAuthorities" + } + } + ], + "responses": { + "200": { + "description": "设置用户权限", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/setUserAuthority": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "更改用户权限", + "parameters": [ + { + "description": "用户UUID, 角色ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.SetUserAuth" + } + } + ], + "responses": { + "200": { + "description": "设置用户权限", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/setUserInfo": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "设置用户信息", + "parameters": [ + { + "description": "ID, 用户名, 昵称, 头像链接", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysUser" + } + } + ], + "responses": { + "200": { + "description": "设置用户信息", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + } + }, + "definitions": { + "config.AliyunOSS": { + "type": "object", + "properties": { + "access-key-id": { + "type": "string" + }, + "access-key-secret": { + "type": "string" + }, + "base-path": { + "type": "string" + }, + "bucket-name": { + "type": "string" + }, + "bucket-url": { + "type": "string" + }, + "endpoint": { + "type": "string" + } + } + }, + "config.Autocode": { + "type": "object", + "properties": { + "ai-path": { + "type": "string" + }, + "module": { + "type": "string" + }, + "root": { + "type": "string" + }, + "server": { + "type": "string" + }, + "web": { + "type": "string" + } + } + }, + "config.AwsS3": { + "type": "object", + "properties": { + "base-url": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "disable-ssl": { + "type": "boolean" + }, + "endpoint": { + "type": "string" + }, + "path-prefix": { + "type": "string" + }, + "region": { + "type": "string" + }, + "s3-force-path-style": { + "type": "boolean" + }, + "secret-id": { + "type": "string" + }, + "secret-key": { + "type": "string" + } + } + }, + "config.CORS": { + "type": "object", + "properties": { + "mode": { + "type": "string" + }, + "whitelist": { + "type": "array", + "items": { + "$ref": "#/definitions/config.CORSWhitelist" + } + } + } + }, + "config.CORSWhitelist": { + "type": "object", + "properties": { + "allow-credentials": { + "type": "boolean" + }, + "allow-headers": { + "type": "string" + }, + "allow-methods": { + "type": "string" + }, + "allow-origin": { + "type": "string" + }, + "expose-headers": { + "type": "string" + } + } + }, + "config.Captcha": { + "type": "object", + "properties": { + "img-height": { + "description": "验证码高度", + "type": "integer" + }, + "img-width": { + "description": "验证码宽度", + "type": "integer" + }, + "key-long": { + "description": "验证码长度", + "type": "integer" + }, + "open-captcha": { + "description": "防爆破验证码开启此数,0代表每次登录都需要验证码,其他数字代表错误密码此数,如3代表错误三次后出现验证码", + "type": "integer" + }, + "open-captcha-timeout": { + "description": "防爆破验证码超时时间,单位:s(秒)", + "type": "integer" + } + } + }, + "config.CloudflareR2": { + "type": "object", + "properties": { + "access-key-id": { + "type": "string" + }, + "account-id": { + "type": "string" + }, + "base-url": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "path": { + "type": "string" + }, + "secret-access-key": { + "type": "string" + } + } + }, + "config.DiskList": { + "type": "object", + "properties": { + "mount-point": { + "type": "string" + } + } + }, + "config.Excel": { + "type": "object", + "properties": { + "dir": { + "type": "string" + } + } + }, + "config.HuaWeiObs": { + "type": "object", + "properties": { + "access-key": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "path": { + "type": "string" + }, + "secret-key": { + "type": "string" + } + } + }, + "config.JWT": { + "type": "object", + "properties": { + "buffer-time": { + "description": "缓冲时间", + "type": "string" + }, + "expires-time": { + "description": "过期时间", + "type": "string" + }, + "issuer": { + "description": "签发者", + "type": "string" + }, + "signing-key": { + "description": "jwt签名", + "type": "string" + } + } + }, + "config.Local": { + "type": "object", + "properties": { + "path": { + "description": "本地文件访问路径", + "type": "string" + }, + "store-path": { + "description": "本地文件存储路径", + "type": "string" + } + } + }, + "config.Mongo": { + "type": "object", + "properties": { + "auth-source": { + "description": "验证数据库", + "type": "string" + }, + "coll": { + "description": "collection name", + "type": "string" + }, + "connect-timeout-ms": { + "description": "连接超时时间", + "type": "integer" + }, + "database": { + "description": "database name", + "type": "string" + }, + "hosts": { + "description": "主机列表", + "type": "array", + "items": { + "$ref": "#/definitions/config.MongoHost" + } + }, + "is-zap": { + "description": "是否开启zap日志", + "type": "boolean" + }, + "max-pool-size": { + "description": "最大连接池", + "type": "integer" + }, + "min-pool-size": { + "description": "最小连接池", + "type": "integer" + }, + "options": { + "description": "mongodb options", + "type": "string" + }, + "password": { + "description": "密码", + "type": "string" + }, + "socket-timeout-ms": { + "description": "socket超时时间", + "type": "integer" + }, + "username": { + "description": "用户名", + "type": "string" + } + } + }, + "config.MongoHost": { + "type": "object", + "properties": { + "host": { + "description": "ip地址", + "type": "string" + }, + "port": { + "description": "端口", + "type": "string" + } + } + }, + "config.Mssql": { + "type": "object", + "properties": { + "config": { + "description": "高级配置", + "type": "string" + }, + "db-name": { + "description": "数据库名", + "type": "string" + }, + "engine": { + "description": "数据库引擎,默认InnoDB", + "type": "string", + "default": "InnoDB" + }, + "log-mode": { + "description": "是否开启Gorm全局日志", + "type": "string" + }, + "log-zap": { + "description": "是否通过zap写入日志文件", + "type": "boolean" + }, + "max-idle-conns": { + "description": "空闲中的最大连接数", + "type": "integer" + }, + "max-open-conns": { + "description": "打开到数据库的最大连接数", + "type": "integer" + }, + "password": { + "description": "数据库密码", + "type": "string" + }, + "path": { + "description": "数据库地址", + "type": "string" + }, + "port": { + "description": "数据库端口", + "type": "string" + }, + "prefix": { + "description": "数据库前缀", + "type": "string" + }, + "singular": { + "description": "是否开启全局禁用复数,true表示开启", + "type": "boolean" + }, + "username": { + "description": "数据库账号", + "type": "string" + } + } + }, + "config.Mysql": { + "type": "object", + "properties": { + "config": { + "description": "高级配置", + "type": "string" + }, + "db-name": { + "description": "数据库名", + "type": "string" + }, + "engine": { + "description": "数据库引擎,默认InnoDB", + "type": "string", + "default": "InnoDB" + }, + "log-mode": { + "description": "是否开启Gorm全局日志", + "type": "string" + }, + "log-zap": { + "description": "是否通过zap写入日志文件", + "type": "boolean" + }, + "max-idle-conns": { + "description": "空闲中的最大连接数", + "type": "integer" + }, + "max-open-conns": { + "description": "打开到数据库的最大连接数", + "type": "integer" + }, + "password": { + "description": "数据库密码", + "type": "string" + }, + "path": { + "description": "数据库地址", + "type": "string" + }, + "port": { + "description": "数据库端口", + "type": "string" + }, + "prefix": { + "description": "数据库前缀", + "type": "string" + }, + "singular": { + "description": "是否开启全局禁用复数,true表示开启", + "type": "boolean" + }, + "username": { + "description": "数据库账号", + "type": "string" + } + } + }, + "config.Oracle": { + "type": "object", + "properties": { + "config": { + "description": "高级配置", + "type": "string" + }, + "db-name": { + "description": "数据库名", + "type": "string" + }, + "engine": { + "description": "数据库引擎,默认InnoDB", + "type": "string", + "default": "InnoDB" + }, + "log-mode": { + "description": "是否开启Gorm全局日志", + "type": "string" + }, + "log-zap": { + "description": "是否通过zap写入日志文件", + "type": "boolean" + }, + "max-idle-conns": { + "description": "空闲中的最大连接数", + "type": "integer" + }, + "max-open-conns": { + "description": "打开到数据库的最大连接数", + "type": "integer" + }, + "password": { + "description": "数据库密码", + "type": "string" + }, + "path": { + "description": "数据库地址", + "type": "string" + }, + "port": { + "description": "数据库端口", + "type": "string" + }, + "prefix": { + "description": "数据库前缀", + "type": "string" + }, + "singular": { + "description": "是否开启全局禁用复数,true表示开启", + "type": "boolean" + }, + "username": { + "description": "数据库账号", + "type": "string" + } + } + }, + "config.Pgsql": { + "type": "object", + "properties": { + "config": { + "description": "高级配置", + "type": "string" + }, + "db-name": { + "description": "数据库名", + "type": "string" + }, + "engine": { + "description": "数据库引擎,默认InnoDB", + "type": "string", + "default": "InnoDB" + }, + "log-mode": { + "description": "是否开启Gorm全局日志", + "type": "string" + }, + "log-zap": { + "description": "是否通过zap写入日志文件", + "type": "boolean" + }, + "max-idle-conns": { + "description": "空闲中的最大连接数", + "type": "integer" + }, + "max-open-conns": { + "description": "打开到数据库的最大连接数", + "type": "integer" + }, + "password": { + "description": "数据库密码", + "type": "string" + }, + "path": { + "description": "数据库地址", + "type": "string" + }, + "port": { + "description": "数据库端口", + "type": "string" + }, + "prefix": { + "description": "数据库前缀", + "type": "string" + }, + "singular": { + "description": "是否开启全局禁用复数,true表示开启", + "type": "boolean" + }, + "username": { + "description": "数据库账号", + "type": "string" + } + } + }, + "config.Qiniu": { + "type": "object", + "properties": { + "access-key": { + "description": "秘钥AK", + "type": "string" + }, + "bucket": { + "description": "空间名称", + "type": "string" + }, + "img-path": { + "description": "CDN加速域名", + "type": "string" + }, + "secret-key": { + "description": "秘钥SK", + "type": "string" + }, + "use-cdn-domains": { + "description": "上传是否使用CDN上传加速", + "type": "boolean" + }, + "use-https": { + "description": "是否使用https", + "type": "boolean" + }, + "zone": { + "description": "存储区域", + "type": "string" + } + } + }, + "config.Redis": { + "type": "object", + "properties": { + "addr": { + "description": "服务器地址:端口", + "type": "string" + }, + "clusterAddrs": { + "description": "集群模式下的节点地址列表", + "type": "array", + "items": { + "type": "string" + } + }, + "db": { + "description": "单实例模式下redis的哪个数据库", + "type": "integer" + }, + "password": { + "description": "密码", + "type": "string" + }, + "useCluster": { + "description": "是否使用集群模式", + "type": "boolean" + } + } + }, + "config.Server": { + "type": "object", + "properties": { + "aliyun-oss": { + "$ref": "#/definitions/config.AliyunOSS" + }, + "autocode": { + "description": "auto", + "allOf": [ + { + "$ref": "#/definitions/config.Autocode" + } + ] + }, + "aws-s3": { + "$ref": "#/definitions/config.AwsS3" + }, + "captcha": { + "$ref": "#/definitions/config.Captcha" + }, + "cloudflare-r2": { + "$ref": "#/definitions/config.CloudflareR2" + }, + "cors": { + "description": "跨域配置", + "allOf": [ + { + "$ref": "#/definitions/config.CORS" + } + ] + }, + "db-list": { + "type": "array", + "items": { + "$ref": "#/definitions/config.SpecializedDB" + } + }, + "disk-list": { + "type": "array", + "items": { + "$ref": "#/definitions/config.DiskList" + } + }, + "email": { + "$ref": "#/definitions/github_com_flipped-aurora_gin-vue-admin_server_config.Email" + }, + "excel": { + "$ref": "#/definitions/config.Excel" + }, + "hua-wei-obs": { + "$ref": "#/definitions/config.HuaWeiObs" + }, + "jwt": { + "$ref": "#/definitions/config.JWT" + }, + "local": { + "description": "oss", + "allOf": [ + { + "$ref": "#/definitions/config.Local" + } + ] + }, + "mongo": { + "$ref": "#/definitions/config.Mongo" + }, + "mssql": { + "$ref": "#/definitions/config.Mssql" + }, + "mysql": { + "description": "gorm", + "allOf": [ + { + "$ref": "#/definitions/config.Mysql" + } + ] + }, + "oracle": { + "$ref": "#/definitions/config.Oracle" + }, + "pgsql": { + "$ref": "#/definitions/config.Pgsql" + }, + "qiniu": { + "$ref": "#/definitions/config.Qiniu" + }, + "redis": { + "$ref": "#/definitions/config.Redis" + }, + "sqlite": { + "$ref": "#/definitions/config.Sqlite" + }, + "system": { + "$ref": "#/definitions/config.System" + }, + "tencent-cos": { + "$ref": "#/definitions/config.TencentCOS" + }, + "zap": { + "$ref": "#/definitions/config.Zap" + } + } + }, + "config.SpecializedDB": { + "type": "object", + "properties": { + "alias-name": { + "type": "string" + }, + "config": { + "description": "高级配置", + "type": "string" + }, + "db-name": { + "description": "数据库名", + "type": "string" + }, + "disable": { + "type": "boolean" + }, + "engine": { + "description": "数据库引擎,默认InnoDB", + "type": "string", + "default": "InnoDB" + }, + "log-mode": { + "description": "是否开启Gorm全局日志", + "type": "string" + }, + "log-zap": { + "description": "是否通过zap写入日志文件", + "type": "boolean" + }, + "max-idle-conns": { + "description": "空闲中的最大连接数", + "type": "integer" + }, + "max-open-conns": { + "description": "打开到数据库的最大连接数", + "type": "integer" + }, + "password": { + "description": "数据库密码", + "type": "string" + }, + "path": { + "description": "数据库地址", + "type": "string" + }, + "port": { + "description": "数据库端口", + "type": "string" + }, + "prefix": { + "description": "数据库前缀", + "type": "string" + }, + "singular": { + "description": "是否开启全局禁用复数,true表示开启", + "type": "boolean" + }, + "type": { + "type": "string" + }, + "username": { + "description": "数据库账号", + "type": "string" + } + } + }, + "config.Sqlite": { + "type": "object", + "properties": { + "config": { + "description": "高级配置", + "type": "string" + }, + "db-name": { + "description": "数据库名", + "type": "string" + }, + "engine": { + "description": "数据库引擎,默认InnoDB", + "type": "string", + "default": "InnoDB" + }, + "log-mode": { + "description": "是否开启Gorm全局日志", + "type": "string" + }, + "log-zap": { + "description": "是否通过zap写入日志文件", + "type": "boolean" + }, + "max-idle-conns": { + "description": "空闲中的最大连接数", + "type": "integer" + }, + "max-open-conns": { + "description": "打开到数据库的最大连接数", + "type": "integer" + }, + "password": { + "description": "数据库密码", + "type": "string" + }, + "path": { + "description": "数据库地址", + "type": "string" + }, + "port": { + "description": "数据库端口", + "type": "string" + }, + "prefix": { + "description": "数据库前缀", + "type": "string" + }, + "singular": { + "description": "是否开启全局禁用复数,true表示开启", + "type": "boolean" + }, + "username": { + "description": "数据库账号", + "type": "string" + } + } + }, + "config.System": { + "type": "object", + "properties": { + "addr": { + "description": "端口值", + "type": "integer" + }, + "db-type": { + "description": "数据库类型:mysql(默认)|sqlite|sqlserver|postgresql", + "type": "string" + }, + "iplimit-count": { + "type": "integer" + }, + "iplimit-time": { + "type": "integer" + }, + "oss-type": { + "description": "Oss类型", + "type": "string" + }, + "router-prefix": { + "type": "string" + }, + "use-mongo": { + "description": "使用mongo", + "type": "boolean" + }, + "use-multipoint": { + "description": "多点登录拦截", + "type": "boolean" + }, + "use-redis": { + "description": "使用redis", + "type": "boolean" + } + } + }, + "config.TencentCOS": { + "type": "object", + "properties": { + "base-url": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "path-prefix": { + "type": "string" + }, + "region": { + "type": "string" + }, + "secret-id": { + "type": "string" + }, + "secret-key": { + "type": "string" + } + } + }, + "config.Zap": { + "type": "object", + "properties": { + "director": { + "description": "日志文件夹", + "type": "string" + }, + "encode-level": { + "description": "编码级", + "type": "string" + }, + "format": { + "description": "输出", + "type": "string" + }, + "level": { + "description": "级别", + "type": "string" + }, + "log-in-console": { + "description": "输出控制台", + "type": "boolean" + }, + "prefix": { + "description": "日志前缀", + "type": "string" + }, + "retention-day": { + "description": "日志保留天数", + "type": "integer" + }, + "show-line": { + "description": "显示行", + "type": "boolean" + }, + "stacktrace-key": { + "description": "栈名", + "type": "string" + } + } + }, + "example.ExaCustomer": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "customerName": { + "description": "客户名", + "type": "string" + }, + "customerPhoneData": { + "description": "客户手机号", + "type": "string" + }, + "sysUser": { + "description": "管理详情", + "allOf": [ + { + "$ref": "#/definitions/system.SysUser" + } + ] + }, + "sysUserAuthorityID": { + "description": "管理角色ID", + "type": "integer" + }, + "sysUserId": { + "description": "管理ID", + "type": "integer" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "example.ExaFile": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "chunkTotal": { + "type": "integer" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "exaFileChunk": { + "type": "array", + "items": { + "$ref": "#/definitions/example.ExaFileChunk" + } + }, + "fileMd5": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "filePath": { + "type": "string" + }, + "isFinish": { + "type": "boolean" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "example.ExaFileChunk": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "exaFileID": { + "type": "integer" + }, + "fileChunkNumber": { + "type": "integer" + }, + "fileChunkPath": { + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "example.ExaFileUploadAndDownload": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "key": { + "description": "编号", + "type": "string" + }, + "name": { + "description": "文件名", + "type": "string" + }, + "tag": { + "description": "文件标签", + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + }, + "url": { + "description": "文件地址", + "type": "string" + } + } + }, + "github_com_flipped-aurora_gin-vue-admin_server_config.Email": { + "type": "object", + "properties": { + "from": { + "description": "发件人 你自己要发邮件的邮箱", + "type": "string" + }, + "host": { + "description": "服务器地址 例如 smtp.qq.com 请前往QQ或者你要发邮件的邮箱查看其smtp协议", + "type": "string" + }, + "is-ssl": { + "description": "是否SSL 是否开启SSL", + "type": "boolean" + }, + "nickname": { + "description": "昵称 发件人昵称 通常为自己的邮箱", + "type": "string" + }, + "port": { + "description": "端口 请前往QQ或者你要发邮件的邮箱查看其smtp协议 大多为 465", + "type": "integer" + }, + "secret": { + "description": "密钥 用于登录的密钥 最好不要用邮箱密码 去邮箱smtp申请一个用于登录的密钥", + "type": "string" + }, + "to": { + "description": "收件人:多个以英文逗号分隔 例:a@qq.com b@qq.com 正式开发中请把此项目作为参数使用", + "type": "string" + } + } + }, + "model.Info": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "attachments": { + "description": "附件", + "type": "array", + "items": { + "type": "object" + } + }, + "content": { + "description": "内容", + "type": "string" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "title": { + "description": "标题", + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + }, + "userID": { + "description": "作者", + "type": "integer" + } + } + }, + "request.AddMenuAuthorityInfo": { + "type": "object", + "properties": { + "authorityId": { + "description": "角色ID", + "type": "integer" + }, + "menus": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysBaseMenu" + } + } + } + }, + "request.AutoCode": { + "type": "object" + }, + "request.CasbinInReceive": { + "type": "object", + "properties": { + "authorityId": { + "description": "权限id", + "type": "integer" + }, + "casbinInfos": { + "type": "array", + "items": { + "$ref": "#/definitions/request.CasbinInfo" + } + } + } + }, + "request.CasbinInfo": { + "type": "object", + "properties": { + "method": { + "description": "方法", + "type": "string" + }, + "path": { + "description": "路径", + "type": "string" + } + } + }, + "request.ChangePasswordReq": { + "type": "object", + "properties": { + "newPassword": { + "description": "新密码", + "type": "string" + }, + "password": { + "description": "密码", + "type": "string" + } + } + }, + "request.Empty": { + "type": "object" + }, + "request.GetAuthorityId": { + "type": "object", + "properties": { + "authorityId": { + "description": "角色ID", + "type": "integer" + } + } + }, + "request.GetById": { + "type": "object", + "properties": { + "id": { + "description": "主键ID", + "type": "integer" + } + } + }, + "request.IdsReq": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "type": "integer" + } + } + } + }, + "request.InitDB": { + "type": "object", + "required": [ + "adminPassword", + "dbName" + ], + "properties": { + "adminPassword": { + "type": "string" + }, + "dbName": { + "description": "数据库名", + "type": "string" + }, + "dbPath": { + "description": "sqlite数据库文件路径", + "type": "string" + }, + "dbType": { + "description": "数据库类型", + "type": "string" + }, + "host": { + "description": "服务器地址", + "type": "string" + }, + "password": { + "description": "数据库密码", + "type": "string" + }, + "port": { + "description": "数据库连接端口", + "type": "string" + }, + "userName": { + "description": "数据库用户名", + "type": "string" + } + } + }, + "request.Login": { + "type": "object", + "properties": { + "captcha": { + "description": "验证码", + "type": "string" + }, + "captchaId": { + "description": "验证码ID", + "type": "string" + }, + "password": { + "description": "密码", + "type": "string" + }, + "username": { + "description": "用户名", + "type": "string" + } + } + }, + "request.PageInfo": { + "type": "object", + "properties": { + "keyword": { + "description": "关键字", + "type": "string" + }, + "page": { + "description": "页码", + "type": "integer" + }, + "pageSize": { + "description": "每页大小", + "type": "integer" + } + } + }, + "request.Register": { + "type": "object", + "properties": { + "authorityId": { + "type": "string", + "example": "int 角色id" + }, + "authorityIds": { + "type": "string", + "example": "[]uint 角色id" + }, + "email": { + "type": "string", + "example": "电子邮箱" + }, + "enable": { + "type": "string", + "example": "int 是否启用" + }, + "headerImg": { + "type": "string", + "example": "头像链接" + }, + "nickName": { + "type": "string", + "example": "昵称" + }, + "passWord": { + "type": "string", + "example": "密码" + }, + "phone": { + "type": "string", + "example": "电话号码" + }, + "userName": { + "type": "string", + "example": "用户名" + } + } + }, + "request.SearchApiParams": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "apiGroup": { + "description": "api组", + "type": "string" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "desc": { + "description": "排序方式:升序false(默认)|降序true", + "type": "boolean" + }, + "description": { + "description": "api中文描述", + "type": "string" + }, + "keyword": { + "description": "关键字", + "type": "string" + }, + "method": { + "description": "方法:创建POST(默认)|查看GET|更新PUT|删除DELETE", + "type": "string" + }, + "orderKey": { + "description": "排序", + "type": "string" + }, + "page": { + "description": "页码", + "type": "integer" + }, + "pageSize": { + "description": "每页大小", + "type": "integer" + }, + "path": { + "description": "api路径", + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "request.SetUserAuth": { + "type": "object", + "properties": { + "authorityId": { + "description": "角色ID", + "type": "integer" + } + } + }, + "request.SetUserAuthorities": { + "type": "object", + "properties": { + "authorityIds": { + "description": "角色ID", + "type": "array", + "items": { + "type": "integer" + } + }, + "id": { + "type": "integer" + } + } + }, + "request.SysAuthorityBtnReq": { + "type": "object", + "properties": { + "authorityId": { + "type": "integer" + }, + "menuID": { + "type": "integer" + }, + "selected": { + "type": "array", + "items": { + "type": "integer" + } + } + } + }, + "request.SysAutoCodePackageCreate": { + "type": "object", + "properties": { + "desc": { + "type": "string", + "example": "描述" + }, + "label": { + "type": "string", + "example": "展示名" + }, + "packageName": { + "type": "string", + "example": "包名" + }, + "template": { + "type": "string", + "example": "模版" + } + } + }, + "request.SysAutoHistoryRollBack": { + "type": "object", + "properties": { + "deleteApi": { + "description": "是否删除接口", + "type": "boolean" + }, + "deleteMenu": { + "description": "是否删除菜单", + "type": "boolean" + }, + "deleteTable": { + "description": "是否删除表", + "type": "boolean" + }, + "id": { + "description": "主键ID", + "type": "integer" + } + } + }, + "response.Email": { + "type": "object", + "properties": { + "body": { + "description": "邮件内容", + "type": "string" + }, + "subject": { + "description": "邮件标题", + "type": "string" + }, + "to": { + "description": "邮件发送给谁", + "type": "string" + } + } + }, + "response.ExaCustomerResponse": { + "type": "object", + "properties": { + "customer": { + "$ref": "#/definitions/example.ExaCustomer" + } + } + }, + "response.ExaFileResponse": { + "type": "object", + "properties": { + "file": { + "$ref": "#/definitions/example.ExaFileUploadAndDownload" + } + } + }, + "response.FilePathResponse": { + "type": "object", + "properties": { + "filePath": { + "type": "string" + } + } + }, + "response.FileResponse": { + "type": "object", + "properties": { + "file": { + "$ref": "#/definitions/example.ExaFile" + } + } + }, + "response.LoginResponse": { + "type": "object", + "properties": { + "expiresAt": { + "type": "integer" + }, + "token": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/system.SysUser" + } + } + }, + "response.PageResult": { + "type": "object", + "properties": { + "list": {}, + "page": { + "type": "integer" + }, + "pageSize": { + "type": "integer" + }, + "total": { + "type": "integer" + } + } + }, + "response.PolicyPathResponse": { + "type": "object", + "properties": { + "paths": { + "type": "array", + "items": { + "$ref": "#/definitions/request.CasbinInfo" + } + } + } + }, + "response.Response": { + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "data": {}, + "msg": { + "type": "string" + } + } + }, + "response.SysAPIListResponse": { + "type": "object", + "properties": { + "apis": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysApi" + } + } + } + }, + "response.SysAPIResponse": { + "type": "object", + "properties": { + "api": { + "$ref": "#/definitions/system.SysApi" + } + } + }, + "response.SysAuthorityBtnRes": { + "type": "object", + "properties": { + "selected": { + "type": "array", + "items": { + "type": "integer" + } + } + } + }, + "response.SysAuthorityCopyResponse": { + "type": "object", + "properties": { + "authority": { + "$ref": "#/definitions/system.SysAuthority" + }, + "oldAuthorityId": { + "description": "旧角色ID", + "type": "integer" + } + } + }, + "response.SysAuthorityResponse": { + "type": "object", + "properties": { + "authority": { + "$ref": "#/definitions/system.SysAuthority" + } + } + }, + "response.SysBaseMenuResponse": { + "type": "object", + "properties": { + "menu": { + "$ref": "#/definitions/system.SysBaseMenu" + } + } + }, + "response.SysBaseMenusResponse": { + "type": "object", + "properties": { + "menus": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysBaseMenu" + } + } + } + }, + "response.SysCaptchaResponse": { + "type": "object", + "properties": { + "captchaId": { + "type": "string" + }, + "captchaLength": { + "type": "integer" + }, + "openCaptcha": { + "type": "boolean" + }, + "picPath": { + "type": "string" + } + } + }, + "response.SysConfigResponse": { + "type": "object", + "properties": { + "config": { + "$ref": "#/definitions/config.Server" + } + } + }, + "response.SysMenusResponse": { + "type": "object", + "properties": { + "menus": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysMenu" + } + } + } + }, + "response.SysUserResponse": { + "type": "object", + "properties": { + "user": { + "$ref": "#/definitions/system.SysUser" + } + } + }, + "system.Condition": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "column": { + "type": "string" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "from": { + "type": "string" + }, + "operator": { + "type": "string" + }, + "templateID": { + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "system.JoinTemplate": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "joins": { + "type": "string" + }, + "on": { + "type": "string" + }, + "table": { + "type": "string" + }, + "templateID": { + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "system.Meta": { + "type": "object", + "properties": { + "activeName": { + "type": "string" + }, + "closeTab": { + "description": "自动关闭tab", + "type": "boolean" + }, + "defaultMenu": { + "description": "是否是基础路由(开发中)", + "type": "boolean" + }, + "icon": { + "description": "菜单图标", + "type": "string" + }, + "keepAlive": { + "description": "是否缓存", + "type": "boolean" + }, + "title": { + "description": "菜单名", + "type": "string" + } + } + }, + "system.SysApi": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "apiGroup": { + "description": "api组", + "type": "string" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "description": { + "description": "api中文描述", + "type": "string" + }, + "method": { + "description": "方法:创建POST(默认)|查看GET|更新PUT|删除DELETE", + "type": "string" + }, + "path": { + "description": "api路径", + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "system.SysAuthority": { + "type": "object", + "properties": { + "authorityId": { + "description": "角色ID", + "type": "integer" + }, + "authorityName": { + "description": "角色名", + "type": "string" + }, + "children": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysAuthority" + } + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "dataAuthorityId": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysAuthority" + } + }, + "defaultRouter": { + "description": "默认菜单(默认dashboard)", + "type": "string" + }, + "deletedAt": { + "type": "string" + }, + "menus": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysBaseMenu" + } + }, + "parentId": { + "description": "父角色ID", + "type": "integer" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "system.SysBaseMenu": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "authoritys": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysAuthority" + } + }, + "children": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysBaseMenu" + } + }, + "component": { + "description": "对应前端文件路径", + "type": "string" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "hidden": { + "description": "是否在列表隐藏", + "type": "boolean" + }, + "menuBtn": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysBaseMenuBtn" + } + }, + "meta": { + "description": "附加属性", + "allOf": [ + { + "$ref": "#/definitions/system.Meta" + } + ] + }, + "name": { + "description": "路由name", + "type": "string" + }, + "parameters": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysBaseMenuParameter" + } + }, + "parentId": { + "description": "父菜单ID", + "type": "integer" + }, + "path": { + "description": "路由path", + "type": "string" + }, + "sort": { + "description": "排序标记", + "type": "integer" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "system.SysBaseMenuBtn": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "desc": { + "type": "string" + }, + "name": { + "type": "string" + }, + "sysBaseMenuID": { + "type": "integer" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "system.SysBaseMenuParameter": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "key": { + "description": "地址栏携带参数的key", + "type": "string" + }, + "sysBaseMenuID": { + "type": "integer" + }, + "type": { + "description": "地址栏携带参数为params还是query", + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + }, + "value": { + "description": "地址栏携带参数的值", + "type": "string" + } + } + }, + "system.SysDictionary": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "desc": { + "description": "描述", + "type": "string" + }, + "name": { + "description": "字典名(中)", + "type": "string" + }, + "status": { + "description": "状态", + "type": "boolean" + }, + "sysDictionaryDetails": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysDictionaryDetail" + } + }, + "type": { + "description": "字典名(英)", + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "system.SysDictionaryDetail": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "extend": { + "description": "扩展值", + "type": "string" + }, + "label": { + "description": "展示值", + "type": "string" + }, + "sort": { + "description": "排序标记", + "type": "integer" + }, + "status": { + "description": "启用状态", + "type": "boolean" + }, + "sysDictionaryID": { + "description": "关联标记", + "type": "integer" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + }, + "value": { + "description": "字典值", + "type": "string" + } + } + }, + "system.SysExportTemplate": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "conditions": { + "type": "array", + "items": { + "$ref": "#/definitions/system.Condition" + } + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "dbName": { + "description": "数据库名称", + "type": "string" + }, + "joinTemplate": { + "type": "array", + "items": { + "$ref": "#/definitions/system.JoinTemplate" + } + }, + "limit": { + "type": "integer" + }, + "name": { + "description": "模板名称", + "type": "string" + }, + "order": { + "type": "string" + }, + "tableName": { + "description": "表名称", + "type": "string" + }, + "templateID": { + "description": "模板标识", + "type": "string" + }, + "templateInfo": { + "description": "模板信息", + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "system.SysMenu": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "authoritys": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysAuthority" + } + }, + "btns": { + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "children": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysMenu" + } + }, + "component": { + "description": "对应前端文件路径", + "type": "string" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "hidden": { + "description": "是否在列表隐藏", + "type": "boolean" + }, + "menuBtn": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysBaseMenuBtn" + } + }, + "menuId": { + "type": "integer" + }, + "meta": { + "description": "附加属性", + "allOf": [ + { + "$ref": "#/definitions/system.Meta" + } + ] + }, + "name": { + "description": "路由name", + "type": "string" + }, + "parameters": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysBaseMenuParameter" + } + }, + "parentId": { + "description": "父菜单ID", + "type": "integer" + }, + "path": { + "description": "路由path", + "type": "string" + }, + "sort": { + "description": "排序标记", + "type": "integer" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "system.SysOperationRecord": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "agent": { + "description": "代理", + "type": "string" + }, + "body": { + "description": "请求Body", + "type": "string" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "error_message": { + "description": "错误信息", + "type": "string" + }, + "ip": { + "description": "请求ip", + "type": "string" + }, + "latency": { + "description": "延迟", + "type": "string" + }, + "method": { + "description": "请求方法", + "type": "string" + }, + "path": { + "description": "请求路径", + "type": "string" + }, + "resp": { + "description": "响应Body", + "type": "string" + }, + "status": { + "description": "请求状态", + "type": "integer" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + }, + "user": { + "$ref": "#/definitions/system.SysUser" + }, + "user_id": { + "description": "用户id", + "type": "integer" + } + } + }, + "system.SysUser": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "authorities": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysAuthority" + } + }, + "authority": { + "$ref": "#/definitions/system.SysAuthority" + }, + "authorityId": { + "description": "用户角色ID", + "type": "integer" + }, + "baseColor": { + "description": "基础颜色", + "type": "string" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "email": { + "description": "用户邮箱", + "type": "string" + }, + "enable": { + "description": "用户是否被冻结 1正常 2冻结", + "type": "integer" + }, + "headerImg": { + "description": "用户头像", + "type": "string" + }, + "nickName": { + "description": "用户昵称", + "type": "string" + }, + "phone": { + "description": "用户手机号", + "type": "string" + }, + "sideMode": { + "description": "用户侧边主题", + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + }, + "userName": { + "description": "用户登录名", + "type": "string" + }, + "uuid": { + "description": "用户UUID", + "type": "string" + } + } + }, + "system.System": { + "type": "object", + "properties": { + "config": { + "$ref": "#/definitions/config.Server" + } + } + } + }, + "securityDefinitions": { + "ApiKeyAuth": { + "type": "apiKey", + "name": "x-token", + "in": "header" + } + } +}` + +// SwaggerInfo holds exported Swagger Info so clients can modify it +var SwaggerInfo = &swag.Spec{ + Version: "v2.7.6", + Host: "", + BasePath: "", + Schemes: []string{}, + Title: "Gin-Vue-Admin Swagger API接口文档", + Description: "使用gin+vue进行极速开发的全栈开发基础平台", + InfoInstanceName: "swagger", + SwaggerTemplate: docTemplate, + LeftDelim: "{{", + RightDelim: "}}", +} + +func init() { + swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/docs/swagger.json b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/docs/swagger.json new file mode 100644 index 000000000..4cbbd6002 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/docs/swagger.json @@ -0,0 +1,8078 @@ +{ + "swagger": "2.0", + "info": { + "description": "使用gin+vue进行极速开发的全栈开发基础平台", + "title": "Gin-Vue-Admin Swagger API接口文档", + "contact": {}, + "version": "v2.7.6" + }, + "paths": { + "/api/createApi": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "创建基础api", + "parameters": [ + { + "description": "api路径, api中文描述, api组, 方法", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysApi" + } + } + ], + "responses": { + "200": { + "description": "创建基础api", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/deleteApi": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "删除api", + "parameters": [ + { + "description": "ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysApi" + } + } + ], + "responses": { + "200": { + "description": "删除api", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/deleteApisByIds": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "删除选中Api", + "parameters": [ + { + "description": "ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.IdsReq" + } + } + ], + "responses": { + "200": { + "description": "删除选中Api", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/enterSyncApi": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "确认同步API", + "responses": { + "200": { + "description": "确认同步API", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/freshCasbin": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "刷新casbin缓存", + "responses": { + "200": { + "description": "刷新成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/getAllApis": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "获取所有的Api 不分页", + "responses": { + "200": { + "description": "获取所有的Api 不分页,返回包括api列表", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysAPIListResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/getApiById": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "根据id获取api", + "parameters": [ + { + "description": "根据id获取api", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetById" + } + } + ], + "responses": { + "200": { + "description": "根据id获取api,返回包括api详情", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysAPIResponse" + } + } + } + ] + } + } + } + } + }, + "/api/getApiGroups": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "获取API分组", + "responses": { + "200": { + "description": "获取API分组", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/getApiList": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "分页获取API列表", + "parameters": [ + { + "description": "分页获取API列表", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.SearchApiParams" + } + } + ], + "responses": { + "200": { + "description": "分页获取API列表,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/ignoreApi": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "IgnoreApi" + ], + "summary": "忽略API", + "responses": { + "200": { + "description": "同步API", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/syncApi": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "同步API", + "responses": { + "200": { + "description": "同步API", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/api/updateApi": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysApi" + ], + "summary": "修改基础api", + "parameters": [ + { + "description": "api路径, api中文描述, api组, 方法", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysApi" + } + } + ], + "responses": { + "200": { + "description": "修改基础api", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/authority/copyAuthority": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authority" + ], + "summary": "拷贝角色", + "parameters": [ + { + "description": "旧角色id, 新权限id, 新权限名, 新父角色id", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/response.SysAuthorityCopyResponse" + } + } + ], + "responses": { + "200": { + "description": "拷贝角色,返回包括系统角色详情", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysAuthorityResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/authority/createAuthority": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authority" + ], + "summary": "创建角色", + "parameters": [ + { + "description": "权限id, 权限名, 父角色id", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysAuthority" + } + } + ], + "responses": { + "200": { + "description": "创建角色,返回包括系统角色详情", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysAuthorityResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/authority/deleteAuthority": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authority" + ], + "summary": "删除角色", + "parameters": [ + { + "description": "删除角色", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysAuthority" + } + } + ], + "responses": { + "200": { + "description": "删除角色", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/authority/getAuthorityList": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authority" + ], + "summary": "分页获取角色列表", + "parameters": [ + { + "description": "页码, 每页大小", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.PageInfo" + } + } + ], + "responses": { + "200": { + "description": "分页获取角色列表,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/authority/setDataAuthority": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authority" + ], + "summary": "设置角色资源权限", + "parameters": [ + { + "description": "设置角色资源权限", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysAuthority" + } + } + ], + "responses": { + "200": { + "description": "设置角色资源权限", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/authority/updateAuthority": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Authority" + ], + "summary": "更新角色信息", + "parameters": [ + { + "description": "权限id, 权限名, 父角色id", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysAuthority" + } + } + ], + "responses": { + "200": { + "description": "更新角色信息,返回包括系统角色详情", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysAuthorityResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/authorityBtn/canRemoveAuthorityBtn": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AuthorityBtn" + ], + "summary": "设置权限按钮", + "responses": { + "200": { + "description": "删除成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/authorityBtn/getAuthorityBtn": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AuthorityBtn" + ], + "summary": "获取权限按钮", + "parameters": [ + { + "description": "菜单id, 角色id, 选中的按钮id", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.SysAuthorityBtnReq" + } + } + ], + "responses": { + "200": { + "description": "返回列表成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysAuthorityBtnRes" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/authorityBtn/setAuthorityBtn": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AuthorityBtn" + ], + "summary": "设置权限按钮", + "parameters": [ + { + "description": "菜单id, 角色id, 选中的按钮id", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.SysAuthorityBtnReq" + } + } + ], + "responses": { + "200": { + "description": "返回列表成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/addFunc": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AddFunc" + ], + "summary": "增加方法", + "parameters": [ + { + "description": "增加方法", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AutoCode" + } + } + ], + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"创建成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/autoCode/createPackage": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCodePackage" + ], + "summary": "创建package", + "parameters": [ + { + "description": "创建package", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.SysAutoCodePackageCreate" + } + } + ], + "responses": { + "200": { + "description": "创建package成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/createTemp": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCodeTemplate" + ], + "summary": "自动代码模板", + "parameters": [ + { + "description": "创建自动代码", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AutoCode" + } + } + ], + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"创建成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/autoCode/delPackage": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCode" + ], + "summary": "删除package", + "parameters": [ + { + "description": "创建package", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetById" + } + } + ], + "responses": { + "200": { + "description": "删除package成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/delSysHistory": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCode" + ], + "summary": "删除回滚记录", + "parameters": [ + { + "description": "请求参数", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetById" + } + } + ], + "responses": { + "200": { + "description": "删除回滚记录", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/getColumn": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCode" + ], + "summary": "获取当前表所有字段", + "responses": { + "200": { + "description": "获取当前表所有字段", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/getDatabase": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCode" + ], + "summary": "获取当前所有数据库", + "responses": { + "200": { + "description": "获取当前所有数据库", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/getMeta": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCode" + ], + "summary": "获取meta信息", + "parameters": [ + { + "description": "请求参数", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetById" + } + } + ], + "responses": { + "200": { + "description": "获取meta信息", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/getPackage": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCodePackage" + ], + "summary": "获取package", + "responses": { + "200": { + "description": "创建package成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/getSysHistory": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCode" + ], + "summary": "查询回滚记录", + "parameters": [ + { + "description": "请求参数", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.PageInfo" + } + } + ], + "responses": { + "200": { + "description": "查询回滚记录,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/getTables": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCode" + ], + "summary": "获取当前数据库所有表", + "responses": { + "200": { + "description": "获取当前数据库所有表", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/getTemplates": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCodePackage" + ], + "summary": "获取package", + "responses": { + "200": { + "description": "创建package成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/installPlugin": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCodePlugin" + ], + "summary": "安装插件", + "parameters": [ + { + "type": "file", + "description": "this is a test file", + "name": "plug", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "安装插件成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object" + } + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/preview": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCodeTemplate" + ], + "summary": "预览创建后的代码", + "parameters": [ + { + "description": "预览创建代码", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AutoCode" + } + } + ], + "responses": { + "200": { + "description": "预览创建后的代码", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/pubPlug": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCodePlugin" + ], + "summary": "打包插件", + "parameters": [ + { + "type": "string", + "description": "插件名称", + "name": "plugName", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "打包插件成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/autoCode/rollback": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AutoCode" + ], + "summary": "回滚自动生成代码", + "parameters": [ + { + "description": "请求参数", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.SysAutoHistoryRollBack" + } + } + ], + "responses": { + "200": { + "description": "回滚自动生成代码", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/base/captcha": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Base" + ], + "summary": "生成验证码", + "responses": { + "200": { + "description": "生成验证码,返回包括随机数id,base64,验证码长度,是否开启验证码", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysCaptchaResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/base/login": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "Base" + ], + "summary": "用户登录", + "parameters": [ + { + "description": "用户名, 密码, 验证码", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.Login" + } + } + ], + "responses": { + "200": { + "description": "返回包括用户信息,token,过期时间", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.LoginResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/casbin/UpdateCasbin": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Casbin" + ], + "summary": "更新角色api权限", + "parameters": [ + { + "description": "权限id, 权限模型列表", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.CasbinInReceive" + } + } + ], + "responses": { + "200": { + "description": "更新角色api权限", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/casbin/getPolicyPathByAuthorityId": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Casbin" + ], + "summary": "获取权限列表", + "parameters": [ + { + "description": "权限id, 权限模型列表", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.CasbinInReceive" + } + } + ], + "responses": { + "200": { + "description": "获取权限列表,返回包括casbin详情列表", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PolicyPathResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/customer/customer": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaCustomer" + ], + "summary": "获取单一客户信息", + "parameters": [ + { + "type": "integer", + "description": "主键ID", + "name": "ID", + "in": "query" + }, + { + "type": "string", + "description": "创建时间", + "name": "createdAt", + "in": "query" + }, + { + "type": "string", + "description": "客户名", + "name": "customerName", + "in": "query" + }, + { + "type": "string", + "description": "客户手机号", + "name": "customerPhoneData", + "in": "query" + }, + { + "type": "integer", + "description": "管理角色ID", + "name": "sysUserAuthorityID", + "in": "query" + }, + { + "type": "integer", + "description": "管理ID", + "name": "sysUserId", + "in": "query" + }, + { + "type": "string", + "description": "更新时间", + "name": "updatedAt", + "in": "query" + } + ], + "responses": { + "200": { + "description": "获取单一客户信息,返回包括客户详情", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.ExaCustomerResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + }, + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaCustomer" + ], + "summary": "更新客户信息", + "parameters": [ + { + "description": "客户ID, 客户信息", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/example.ExaCustomer" + } + } + ], + "responses": { + "200": { + "description": "更新客户信息", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + }, + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaCustomer" + ], + "summary": "创建客户", + "parameters": [ + { + "description": "客户用户名, 客户手机号码", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/example.ExaCustomer" + } + } + ], + "responses": { + "200": { + "description": "创建客户", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + }, + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaCustomer" + ], + "summary": "删除客户", + "parameters": [ + { + "description": "客户ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/example.ExaCustomer" + } + } + ], + "responses": { + "200": { + "description": "删除客户", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/customer/customerList": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaCustomer" + ], + "summary": "分页获取权限客户列表", + "parameters": [ + { + "type": "string", + "description": "关键字", + "name": "keyword", + "in": "query" + }, + { + "type": "integer", + "description": "页码", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "每页大小", + "name": "pageSize", + "in": "query" + } + ], + "responses": { + "200": { + "description": "分页获取权限客户列表,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/email/emailTest": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "System" + ], + "summary": "发送测试邮件", + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"发送成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/email/sendEmail": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "System" + ], + "summary": "发送邮件", + "parameters": [ + { + "description": "发送邮件必须的参数", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/response.Email" + } + } + ], + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"发送成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/fileUploadAndDownload/breakpointContinue": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaFileUploadAndDownload" + ], + "summary": "断点续传到服务器", + "parameters": [ + { + "type": "file", + "description": "an example for breakpoint resume, 断点续传示例", + "name": "file", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "断点续传到服务器", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/fileUploadAndDownload/deleteFile": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaFileUploadAndDownload" + ], + "summary": "删除文件", + "parameters": [ + { + "description": "传入文件里面id即可", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/example.ExaFileUploadAndDownload" + } + } + ], + "responses": { + "200": { + "description": "删除文件", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/fileUploadAndDownload/findFile": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaFileUploadAndDownload" + ], + "summary": "创建文件", + "parameters": [ + { + "type": "file", + "description": "上传文件完成", + "name": "file", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "创建文件,返回包括文件路径", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.FilePathResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/fileUploadAndDownload/getFileList": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaFileUploadAndDownload" + ], + "summary": "分页文件列表", + "parameters": [ + { + "description": "页码, 每页大小", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.PageInfo" + } + } + ], + "responses": { + "200": { + "description": "分页文件列表,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/fileUploadAndDownload/removeChunk": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaFileUploadAndDownload" + ], + "summary": "删除切片", + "parameters": [ + { + "type": "file", + "description": "删除缓存切片", + "name": "file", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "删除切片", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/fileUploadAndDownload/upload": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "ExaFileUploadAndDownload" + ], + "summary": "上传文件示例", + "parameters": [ + { + "type": "file", + "description": "上传文件示例", + "name": "file", + "in": "formData", + "required": true + } + ], + "responses": { + "200": { + "description": "上传文件示例,返回包括文件详情", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.ExaFileResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/info/createInfo": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Info" + ], + "summary": "创建公告", + "parameters": [ + { + "description": "创建公告", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/model.Info" + } + } + ], + "responses": { + "200": { + "description": "创建成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/info/deleteInfo": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Info" + ], + "summary": "删除公告", + "parameters": [ + { + "description": "删除公告", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/model.Info" + } + } + ], + "responses": { + "200": { + "description": "删除成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/info/deleteInfoByIds": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Info" + ], + "summary": "批量删除公告", + "responses": { + "200": { + "description": "批量删除成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/info/findInfo": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Info" + ], + "summary": "用id查询公告", + "parameters": [ + { + "type": "integer", + "description": "主键ID", + "name": "ID", + "in": "query" + }, + { + "type": "string", + "description": "内容", + "name": "content", + "in": "query" + }, + { + "type": "string", + "description": "创建时间", + "name": "createdAt", + "in": "query" + }, + { + "type": "string", + "description": "标题", + "name": "title", + "in": "query" + }, + { + "type": "string", + "description": "更新时间", + "name": "updatedAt", + "in": "query" + }, + { + "type": "integer", + "description": "作者", + "name": "userID", + "in": "query" + } + ], + "responses": { + "200": { + "description": "查询成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/model.Info" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/info/getInfoDataSource": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Info" + ], + "summary": "获取Info的数据源", + "responses": { + "200": { + "description": "查询成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/info/getInfoList": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Info" + ], + "summary": "分页获取公告列表", + "parameters": [ + { + "type": "string", + "name": "endCreatedAt", + "in": "query" + }, + { + "type": "string", + "description": "关键字", + "name": "keyword", + "in": "query" + }, + { + "type": "integer", + "description": "页码", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "每页大小", + "name": "pageSize", + "in": "query" + }, + { + "type": "string", + "name": "startCreatedAt", + "in": "query" + } + ], + "responses": { + "200": { + "description": "获取成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/info/getInfoPublic": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Info" + ], + "summary": "不需要鉴权的公告接口", + "parameters": [ + { + "type": "string", + "name": "endCreatedAt", + "in": "query" + }, + { + "type": "string", + "description": "关键字", + "name": "keyword", + "in": "query" + }, + { + "type": "integer", + "description": "页码", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "每页大小", + "name": "pageSize", + "in": "query" + }, + { + "type": "string", + "name": "startCreatedAt", + "in": "query" + } + ], + "responses": { + "200": { + "description": "获取成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/info/updateInfo": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Info" + ], + "summary": "更新公告", + "parameters": [ + { + "description": "更新公告", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/model.Info" + } + } + ], + "responses": { + "200": { + "description": "更新成功", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/init/checkdb": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "CheckDB" + ], + "summary": "初始化用户数据库", + "responses": { + "200": { + "description": "初始化用户数据库", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/init/initdb": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "InitDB" + ], + "summary": "初始化用户数据库", + "parameters": [ + { + "description": "初始化数据库参数", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.InitDB" + } + } + ], + "responses": { + "200": { + "description": "初始化用户数据库", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/jwt/jsonInBlacklist": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Jwt" + ], + "summary": "jwt加入黑名单", + "responses": { + "200": { + "description": "jwt加入黑名单", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/menu/addBaseMenu": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Menu" + ], + "summary": "新增菜单", + "parameters": [ + { + "description": "路由path, 父菜单ID, 路由name, 对应前端文件路径, 排序标记", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysBaseMenu" + } + } + ], + "responses": { + "200": { + "description": "新增菜单", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/menu/addMenuAuthority": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AuthorityMenu" + ], + "summary": "增加menu和角色关联关系", + "parameters": [ + { + "description": "角色ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.AddMenuAuthorityInfo" + } + } + ], + "responses": { + "200": { + "description": "增加menu和角色关联关系", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/menu/deleteBaseMenu": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Menu" + ], + "summary": "删除菜单", + "parameters": [ + { + "description": "菜单id", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetById" + } + } + ], + "responses": { + "200": { + "description": "删除菜单", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/menu/getBaseMenuById": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Menu" + ], + "summary": "根据id获取菜单", + "parameters": [ + { + "description": "菜单id", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetById" + } + } + ], + "responses": { + "200": { + "description": "根据id获取菜单,返回包括系统菜单列表", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysBaseMenuResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/menu/getBaseMenuTree": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "AuthorityMenu" + ], + "summary": "获取用户动态路由", + "parameters": [ + { + "description": "空", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.Empty" + } + } + ], + "responses": { + "200": { + "description": "获取用户动态路由,返回包括系统菜单列表", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysBaseMenusResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/menu/getMenu": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "AuthorityMenu" + ], + "summary": "获取用户动态路由", + "parameters": [ + { + "description": "空", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.Empty" + } + } + ], + "responses": { + "200": { + "description": "获取用户动态路由,返回包括系统菜单详情列表", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysMenusResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/menu/getMenuAuthority": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "AuthorityMenu" + ], + "summary": "获取指定角色menu", + "parameters": [ + { + "description": "角色ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetAuthorityId" + } + } + ], + "responses": { + "200": { + "description": "获取指定角色menu", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/menu/getMenuList": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Menu" + ], + "summary": "分页获取基础menu列表", + "parameters": [ + { + "description": "页码, 每页大小", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.PageInfo" + } + } + ], + "responses": { + "200": { + "description": "分页获取基础menu列表,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/menu/updateBaseMenu": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Menu" + ], + "summary": "更新菜单", + "parameters": [ + { + "description": "路由path, 父菜单ID, 路由name, 对应前端文件路径, 排序标记", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysBaseMenu" + } + } + ], + "responses": { + "200": { + "description": "更新菜单", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionary/createSysDictionary": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionary" + ], + "summary": "创建SysDictionary", + "parameters": [ + { + "description": "SysDictionary模型", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysDictionary" + } + } + ], + "responses": { + "200": { + "description": "创建SysDictionary", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionary/deleteSysDictionary": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionary" + ], + "summary": "删除SysDictionary", + "parameters": [ + { + "description": "SysDictionary模型", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysDictionary" + } + } + ], + "responses": { + "200": { + "description": "删除SysDictionary", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionary/findSysDictionary": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionary" + ], + "summary": "用id查询SysDictionary", + "parameters": [ + { + "type": "integer", + "description": "主键ID", + "name": "ID", + "in": "query" + }, + { + "type": "string", + "description": "创建时间", + "name": "createdAt", + "in": "query" + }, + { + "type": "string", + "description": "描述", + "name": "desc", + "in": "query" + }, + { + "type": "string", + "description": "字典名(中)", + "name": "name", + "in": "query" + }, + { + "type": "boolean", + "description": "状态", + "name": "status", + "in": "query" + }, + { + "type": "string", + "description": "字典名(英)", + "name": "type", + "in": "query" + }, + { + "type": "string", + "description": "更新时间", + "name": "updatedAt", + "in": "query" + } + ], + "responses": { + "200": { + "description": "用id查询SysDictionary", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionary/getSysDictionaryList": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionary" + ], + "summary": "分页获取SysDictionary列表", + "responses": { + "200": { + "description": "分页获取SysDictionary列表,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionary/updateSysDictionary": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionary" + ], + "summary": "更新SysDictionary", + "parameters": [ + { + "description": "SysDictionary模型", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysDictionary" + } + } + ], + "responses": { + "200": { + "description": "更新SysDictionary", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionaryDetail/createSysDictionaryDetail": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionaryDetail" + ], + "summary": "创建SysDictionaryDetail", + "parameters": [ + { + "description": "SysDictionaryDetail模型", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysDictionaryDetail" + } + } + ], + "responses": { + "200": { + "description": "创建SysDictionaryDetail", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionaryDetail/deleteSysDictionaryDetail": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionaryDetail" + ], + "summary": "删除SysDictionaryDetail", + "parameters": [ + { + "description": "SysDictionaryDetail模型", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysDictionaryDetail" + } + } + ], + "responses": { + "200": { + "description": "删除SysDictionaryDetail", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionaryDetail/findSysDictionaryDetail": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionaryDetail" + ], + "summary": "用id查询SysDictionaryDetail", + "parameters": [ + { + "type": "integer", + "description": "主键ID", + "name": "ID", + "in": "query" + }, + { + "type": "string", + "description": "创建时间", + "name": "createdAt", + "in": "query" + }, + { + "type": "string", + "description": "扩展值", + "name": "extend", + "in": "query" + }, + { + "type": "string", + "description": "展示值", + "name": "label", + "in": "query" + }, + { + "type": "integer", + "description": "排序标记", + "name": "sort", + "in": "query" + }, + { + "type": "boolean", + "description": "启用状态", + "name": "status", + "in": "query" + }, + { + "type": "integer", + "description": "关联标记", + "name": "sysDictionaryID", + "in": "query" + }, + { + "type": "string", + "description": "更新时间", + "name": "updatedAt", + "in": "query" + }, + { + "type": "string", + "description": "字典值", + "name": "value", + "in": "query" + } + ], + "responses": { + "200": { + "description": "用id查询SysDictionaryDetail", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionaryDetail/getSysDictionaryDetailList": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionaryDetail" + ], + "summary": "分页获取SysDictionaryDetail列表", + "parameters": [ + { + "type": "integer", + "description": "主键ID", + "name": "ID", + "in": "query" + }, + { + "type": "string", + "description": "创建时间", + "name": "createdAt", + "in": "query" + }, + { + "type": "string", + "description": "扩展值", + "name": "extend", + "in": "query" + }, + { + "type": "string", + "description": "关键字", + "name": "keyword", + "in": "query" + }, + { + "type": "string", + "description": "展示值", + "name": "label", + "in": "query" + }, + { + "type": "integer", + "description": "页码", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "每页大小", + "name": "pageSize", + "in": "query" + }, + { + "type": "integer", + "description": "排序标记", + "name": "sort", + "in": "query" + }, + { + "type": "boolean", + "description": "启用状态", + "name": "status", + "in": "query" + }, + { + "type": "integer", + "description": "关联标记", + "name": "sysDictionaryID", + "in": "query" + }, + { + "type": "string", + "description": "更新时间", + "name": "updatedAt", + "in": "query" + }, + { + "type": "string", + "description": "字典值", + "name": "value", + "in": "query" + } + ], + "responses": { + "200": { + "description": "分页获取SysDictionaryDetail列表,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysDictionaryDetail/updateSysDictionaryDetail": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysDictionaryDetail" + ], + "summary": "更新SysDictionaryDetail", + "parameters": [ + { + "description": "更新SysDictionaryDetail", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysDictionaryDetail" + } + } + ], + "responses": { + "200": { + "description": "更新SysDictionaryDetail", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysExportTemplate/createSysExportTemplate": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysExportTemplate" + ], + "summary": "创建导出模板", + "parameters": [ + { + "description": "创建导出模板", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysExportTemplate" + } + } + ], + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"创建成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/sysExportTemplate/deleteSysExportTemplate": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysExportTemplate" + ], + "summary": "删除导出模板", + "parameters": [ + { + "description": "删除导出模板", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysExportTemplate" + } + } + ], + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"删除成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/sysExportTemplate/deleteSysExportTemplateByIds": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysExportTemplate" + ], + "summary": "批量删除导出模板", + "parameters": [ + { + "description": "批量删除导出模板", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.IdsReq" + } + } + ], + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"批量删除成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/sysExportTemplate/exportExcel": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysExportTemplate" + ], + "summary": "导出表格模板", + "responses": {} + } + }, + "/sysExportTemplate/findSysExportTemplate": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysExportTemplate" + ], + "summary": "用id查询导出模板", + "parameters": [ + { + "type": "integer", + "description": "主键ID", + "name": "ID", + "in": "query" + }, + { + "type": "string", + "description": "创建时间", + "name": "createdAt", + "in": "query" + }, + { + "type": "string", + "description": "数据库名称", + "name": "dbName", + "in": "query" + }, + { + "type": "integer", + "name": "limit", + "in": "query" + }, + { + "type": "string", + "description": "模板名称", + "name": "name", + "in": "query" + }, + { + "type": "string", + "name": "order", + "in": "query" + }, + { + "type": "string", + "description": "表名称", + "name": "tableName", + "in": "query" + }, + { + "type": "string", + "description": "模板标识", + "name": "templateID", + "in": "query" + }, + { + "type": "string", + "description": "模板信息", + "name": "templateInfo", + "in": "query" + }, + { + "type": "string", + "description": "更新时间", + "name": "updatedAt", + "in": "query" + } + ], + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"查询成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/sysExportTemplate/getSysExportTemplateList": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysExportTemplate" + ], + "summary": "分页获取导出模板列表", + "parameters": [ + { + "type": "integer", + "description": "主键ID", + "name": "ID", + "in": "query" + }, + { + "type": "string", + "description": "创建时间", + "name": "createdAt", + "in": "query" + }, + { + "type": "string", + "description": "数据库名称", + "name": "dbName", + "in": "query" + }, + { + "type": "string", + "name": "endCreatedAt", + "in": "query" + }, + { + "type": "string", + "description": "关键字", + "name": "keyword", + "in": "query" + }, + { + "type": "integer", + "name": "limit", + "in": "query" + }, + { + "type": "string", + "description": "模板名称", + "name": "name", + "in": "query" + }, + { + "type": "string", + "name": "order", + "in": "query" + }, + { + "type": "integer", + "description": "页码", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "每页大小", + "name": "pageSize", + "in": "query" + }, + { + "type": "string", + "name": "startCreatedAt", + "in": "query" + }, + { + "type": "string", + "description": "表名称", + "name": "tableName", + "in": "query" + }, + { + "type": "string", + "description": "模板标识", + "name": "templateID", + "in": "query" + }, + { + "type": "string", + "description": "模板信息", + "name": "templateInfo", + "in": "query" + }, + { + "type": "string", + "description": "更新时间", + "name": "updatedAt", + "in": "query" + } + ], + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"获取成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/sysExportTemplate/importExcel": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysImportTemplate" + ], + "summary": "导入表格", + "responses": {} + } + }, + "/sysExportTemplate/updateSysExportTemplate": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysExportTemplate" + ], + "summary": "更新导出模板", + "parameters": [ + { + "description": "更新导出模板", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysExportTemplate" + } + } + ], + "responses": { + "200": { + "description": "{\"success\":true,\"data\":{},\"msg\":\"更新成功\"}", + "schema": { + "type": "string" + } + } + } + } + }, + "/sysOperationRecord/createSysOperationRecord": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysOperationRecord" + ], + "summary": "创建SysOperationRecord", + "parameters": [ + { + "description": "创建SysOperationRecord", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysOperationRecord" + } + } + ], + "responses": { + "200": { + "description": "创建SysOperationRecord", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysOperationRecord/deleteSysOperationRecord": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysOperationRecord" + ], + "summary": "删除SysOperationRecord", + "parameters": [ + { + "description": "SysOperationRecord模型", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysOperationRecord" + } + } + ], + "responses": { + "200": { + "description": "删除SysOperationRecord", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysOperationRecord/deleteSysOperationRecordByIds": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysOperationRecord" + ], + "summary": "批量删除SysOperationRecord", + "parameters": [ + { + "description": "批量删除SysOperationRecord", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.IdsReq" + } + } + ], + "responses": { + "200": { + "description": "批量删除SysOperationRecord", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysOperationRecord/findSysOperationRecord": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysOperationRecord" + ], + "summary": "用id查询SysOperationRecord", + "parameters": [ + { + "type": "integer", + "description": "主键ID", + "name": "ID", + "in": "query" + }, + { + "type": "string", + "description": "代理", + "name": "agent", + "in": "query" + }, + { + "type": "string", + "description": "请求Body", + "name": "body", + "in": "query" + }, + { + "type": "string", + "description": "创建时间", + "name": "createdAt", + "in": "query" + }, + { + "type": "string", + "description": "错误信息", + "name": "error_message", + "in": "query" + }, + { + "type": "string", + "description": "请求ip", + "name": "ip", + "in": "query" + }, + { + "type": "string", + "description": "延迟", + "name": "latency", + "in": "query" + }, + { + "type": "string", + "description": "请求方法", + "name": "method", + "in": "query" + }, + { + "type": "string", + "description": "请求路径", + "name": "path", + "in": "query" + }, + { + "type": "string", + "description": "响应Body", + "name": "resp", + "in": "query" + }, + { + "type": "integer", + "description": "请求状态", + "name": "status", + "in": "query" + }, + { + "type": "string", + "description": "更新时间", + "name": "updatedAt", + "in": "query" + }, + { + "type": "integer", + "description": "用户id", + "name": "user_id", + "in": "query" + } + ], + "responses": { + "200": { + "description": "用id查询SysOperationRecord", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/sysOperationRecord/getSysOperationRecordList": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysOperationRecord" + ], + "summary": "分页获取SysOperationRecord列表", + "parameters": [ + { + "type": "integer", + "description": "主键ID", + "name": "ID", + "in": "query" + }, + { + "type": "string", + "description": "代理", + "name": "agent", + "in": "query" + }, + { + "type": "string", + "description": "请求Body", + "name": "body", + "in": "query" + }, + { + "type": "string", + "description": "创建时间", + "name": "createdAt", + "in": "query" + }, + { + "type": "string", + "description": "错误信息", + "name": "error_message", + "in": "query" + }, + { + "type": "string", + "description": "请求ip", + "name": "ip", + "in": "query" + }, + { + "type": "string", + "description": "关键字", + "name": "keyword", + "in": "query" + }, + { + "type": "string", + "description": "延迟", + "name": "latency", + "in": "query" + }, + { + "type": "string", + "description": "请求方法", + "name": "method", + "in": "query" + }, + { + "type": "integer", + "description": "页码", + "name": "page", + "in": "query" + }, + { + "type": "integer", + "description": "每页大小", + "name": "pageSize", + "in": "query" + }, + { + "type": "string", + "description": "请求路径", + "name": "path", + "in": "query" + }, + { + "type": "string", + "description": "响应Body", + "name": "resp", + "in": "query" + }, + { + "type": "integer", + "description": "请求状态", + "name": "status", + "in": "query" + }, + { + "type": "string", + "description": "更新时间", + "name": "updatedAt", + "in": "query" + }, + { + "type": "integer", + "description": "用户id", + "name": "user_id", + "in": "query" + } + ], + "responses": { + "200": { + "description": "分页获取SysOperationRecord列表,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/system/getServerInfo": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "System" + ], + "summary": "获取服务器信息", + "responses": { + "200": { + "description": "获取服务器信息", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/system/getSystemConfig": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "System" + ], + "summary": "获取配置文件内容", + "responses": { + "200": { + "description": "获取配置文件内容,返回包括系统配置", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysConfigResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/system/reloadSystem": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "System" + ], + "summary": "重启系统", + "responses": { + "200": { + "description": "重启系统", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/system/setSystemConfig": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "System" + ], + "summary": "设置配置文件内容", + "parameters": [ + { + "description": "设置配置文件内容", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.System" + } + } + ], + "responses": { + "200": { + "description": "设置配置文件内容", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/SetSelfInfo": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "设置用户信息", + "parameters": [ + { + "description": "ID, 用户名, 昵称, 头像链接", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysUser" + } + } + ], + "responses": { + "200": { + "description": "设置用户信息", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/admin_register": { + "post": { + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "用户注册账号", + "parameters": [ + { + "description": "用户名, 昵称, 密码, 角色ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.Register" + } + } + ], + "responses": { + "200": { + "description": "用户注册账号,返回包括用户信息", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.SysUserResponse" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/changePassword": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "用户修改密码", + "parameters": [ + { + "description": "用户名, 原密码, 新密码", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.ChangePasswordReq" + } + } + ], + "responses": { + "200": { + "description": "用户修改密码", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/deleteUser": { + "delete": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "删除用户", + "parameters": [ + { + "description": "用户ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.GetById" + } + } + ], + "responses": { + "200": { + "description": "删除用户", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/getUserInfo": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "获取用户信息", + "responses": { + "200": { + "description": "获取用户信息", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/getUserList": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "分页获取用户列表", + "parameters": [ + { + "description": "页码, 每页大小", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.PageInfo" + } + } + ], + "responses": { + "200": { + "description": "分页获取用户列表,返回包括列表,总数,页码,每页数量", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/response.PageResult" + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/resetPassword": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "重置用户密码", + "parameters": [ + { + "description": "ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysUser" + } + } + ], + "responses": { + "200": { + "description": "重置用户密码", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/setUserAuthorities": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "设置用户权限", + "parameters": [ + { + "description": "用户UUID, 角色ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.SetUserAuthorities" + } + } + ], + "responses": { + "200": { + "description": "设置用户权限", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/setUserAuthority": { + "post": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "更改用户权限", + "parameters": [ + { + "description": "用户UUID, 角色ID", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/request.SetUserAuth" + } + } + ], + "responses": { + "200": { + "description": "设置用户权限", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "/user/setUserInfo": { + "put": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "SysUser" + ], + "summary": "设置用户信息", + "parameters": [ + { + "description": "ID, 用户名, 昵称, 头像链接", + "name": "data", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/system.SysUser" + } + } + ], + "responses": { + "200": { + "description": "设置用户信息", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/response.Response" + }, + { + "type": "object", + "properties": { + "data": { + "type": "object", + "additionalProperties": true + }, + "msg": { + "type": "string" + } + } + } + ] + } + } + } + } + } + }, + "definitions": { + "config.AliyunOSS": { + "type": "object", + "properties": { + "access-key-id": { + "type": "string" + }, + "access-key-secret": { + "type": "string" + }, + "base-path": { + "type": "string" + }, + "bucket-name": { + "type": "string" + }, + "bucket-url": { + "type": "string" + }, + "endpoint": { + "type": "string" + } + } + }, + "config.Autocode": { + "type": "object", + "properties": { + "ai-path": { + "type": "string" + }, + "module": { + "type": "string" + }, + "root": { + "type": "string" + }, + "server": { + "type": "string" + }, + "web": { + "type": "string" + } + } + }, + "config.AwsS3": { + "type": "object", + "properties": { + "base-url": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "disable-ssl": { + "type": "boolean" + }, + "endpoint": { + "type": "string" + }, + "path-prefix": { + "type": "string" + }, + "region": { + "type": "string" + }, + "s3-force-path-style": { + "type": "boolean" + }, + "secret-id": { + "type": "string" + }, + "secret-key": { + "type": "string" + } + } + }, + "config.CORS": { + "type": "object", + "properties": { + "mode": { + "type": "string" + }, + "whitelist": { + "type": "array", + "items": { + "$ref": "#/definitions/config.CORSWhitelist" + } + } + } + }, + "config.CORSWhitelist": { + "type": "object", + "properties": { + "allow-credentials": { + "type": "boolean" + }, + "allow-headers": { + "type": "string" + }, + "allow-methods": { + "type": "string" + }, + "allow-origin": { + "type": "string" + }, + "expose-headers": { + "type": "string" + } + } + }, + "config.Captcha": { + "type": "object", + "properties": { + "img-height": { + "description": "验证码高度", + "type": "integer" + }, + "img-width": { + "description": "验证码宽度", + "type": "integer" + }, + "key-long": { + "description": "验证码长度", + "type": "integer" + }, + "open-captcha": { + "description": "防爆破验证码开启此数,0代表每次登录都需要验证码,其他数字代表错误密码此数,如3代表错误三次后出现验证码", + "type": "integer" + }, + "open-captcha-timeout": { + "description": "防爆破验证码超时时间,单位:s(秒)", + "type": "integer" + } + } + }, + "config.CloudflareR2": { + "type": "object", + "properties": { + "access-key-id": { + "type": "string" + }, + "account-id": { + "type": "string" + }, + "base-url": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "path": { + "type": "string" + }, + "secret-access-key": { + "type": "string" + } + } + }, + "config.DiskList": { + "type": "object", + "properties": { + "mount-point": { + "type": "string" + } + } + }, + "config.Excel": { + "type": "object", + "properties": { + "dir": { + "type": "string" + } + } + }, + "config.HuaWeiObs": { + "type": "object", + "properties": { + "access-key": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "endpoint": { + "type": "string" + }, + "path": { + "type": "string" + }, + "secret-key": { + "type": "string" + } + } + }, + "config.JWT": { + "type": "object", + "properties": { + "buffer-time": { + "description": "缓冲时间", + "type": "string" + }, + "expires-time": { + "description": "过期时间", + "type": "string" + }, + "issuer": { + "description": "签发者", + "type": "string" + }, + "signing-key": { + "description": "jwt签名", + "type": "string" + } + } + }, + "config.Local": { + "type": "object", + "properties": { + "path": { + "description": "本地文件访问路径", + "type": "string" + }, + "store-path": { + "description": "本地文件存储路径", + "type": "string" + } + } + }, + "config.Mongo": { + "type": "object", + "properties": { + "auth-source": { + "description": "验证数据库", + "type": "string" + }, + "coll": { + "description": "collection name", + "type": "string" + }, + "connect-timeout-ms": { + "description": "连接超时时间", + "type": "integer" + }, + "database": { + "description": "database name", + "type": "string" + }, + "hosts": { + "description": "主机列表", + "type": "array", + "items": { + "$ref": "#/definitions/config.MongoHost" + } + }, + "is-zap": { + "description": "是否开启zap日志", + "type": "boolean" + }, + "max-pool-size": { + "description": "最大连接池", + "type": "integer" + }, + "min-pool-size": { + "description": "最小连接池", + "type": "integer" + }, + "options": { + "description": "mongodb options", + "type": "string" + }, + "password": { + "description": "密码", + "type": "string" + }, + "socket-timeout-ms": { + "description": "socket超时时间", + "type": "integer" + }, + "username": { + "description": "用户名", + "type": "string" + } + } + }, + "config.MongoHost": { + "type": "object", + "properties": { + "host": { + "description": "ip地址", + "type": "string" + }, + "port": { + "description": "端口", + "type": "string" + } + } + }, + "config.Mssql": { + "type": "object", + "properties": { + "config": { + "description": "高级配置", + "type": "string" + }, + "db-name": { + "description": "数据库名", + "type": "string" + }, + "engine": { + "description": "数据库引擎,默认InnoDB", + "type": "string", + "default": "InnoDB" + }, + "log-mode": { + "description": "是否开启Gorm全局日志", + "type": "string" + }, + "log-zap": { + "description": "是否通过zap写入日志文件", + "type": "boolean" + }, + "max-idle-conns": { + "description": "空闲中的最大连接数", + "type": "integer" + }, + "max-open-conns": { + "description": "打开到数据库的最大连接数", + "type": "integer" + }, + "password": { + "description": "数据库密码", + "type": "string" + }, + "path": { + "description": "数据库地址", + "type": "string" + }, + "port": { + "description": "数据库端口", + "type": "string" + }, + "prefix": { + "description": "数据库前缀", + "type": "string" + }, + "singular": { + "description": "是否开启全局禁用复数,true表示开启", + "type": "boolean" + }, + "username": { + "description": "数据库账号", + "type": "string" + } + } + }, + "config.Mysql": { + "type": "object", + "properties": { + "config": { + "description": "高级配置", + "type": "string" + }, + "db-name": { + "description": "数据库名", + "type": "string" + }, + "engine": { + "description": "数据库引擎,默认InnoDB", + "type": "string", + "default": "InnoDB" + }, + "log-mode": { + "description": "是否开启Gorm全局日志", + "type": "string" + }, + "log-zap": { + "description": "是否通过zap写入日志文件", + "type": "boolean" + }, + "max-idle-conns": { + "description": "空闲中的最大连接数", + "type": "integer" + }, + "max-open-conns": { + "description": "打开到数据库的最大连接数", + "type": "integer" + }, + "password": { + "description": "数据库密码", + "type": "string" + }, + "path": { + "description": "数据库地址", + "type": "string" + }, + "port": { + "description": "数据库端口", + "type": "string" + }, + "prefix": { + "description": "数据库前缀", + "type": "string" + }, + "singular": { + "description": "是否开启全局禁用复数,true表示开启", + "type": "boolean" + }, + "username": { + "description": "数据库账号", + "type": "string" + } + } + }, + "config.Oracle": { + "type": "object", + "properties": { + "config": { + "description": "高级配置", + "type": "string" + }, + "db-name": { + "description": "数据库名", + "type": "string" + }, + "engine": { + "description": "数据库引擎,默认InnoDB", + "type": "string", + "default": "InnoDB" + }, + "log-mode": { + "description": "是否开启Gorm全局日志", + "type": "string" + }, + "log-zap": { + "description": "是否通过zap写入日志文件", + "type": "boolean" + }, + "max-idle-conns": { + "description": "空闲中的最大连接数", + "type": "integer" + }, + "max-open-conns": { + "description": "打开到数据库的最大连接数", + "type": "integer" + }, + "password": { + "description": "数据库密码", + "type": "string" + }, + "path": { + "description": "数据库地址", + "type": "string" + }, + "port": { + "description": "数据库端口", + "type": "string" + }, + "prefix": { + "description": "数据库前缀", + "type": "string" + }, + "singular": { + "description": "是否开启全局禁用复数,true表示开启", + "type": "boolean" + }, + "username": { + "description": "数据库账号", + "type": "string" + } + } + }, + "config.Pgsql": { + "type": "object", + "properties": { + "config": { + "description": "高级配置", + "type": "string" + }, + "db-name": { + "description": "数据库名", + "type": "string" + }, + "engine": { + "description": "数据库引擎,默认InnoDB", + "type": "string", + "default": "InnoDB" + }, + "log-mode": { + "description": "是否开启Gorm全局日志", + "type": "string" + }, + "log-zap": { + "description": "是否通过zap写入日志文件", + "type": "boolean" + }, + "max-idle-conns": { + "description": "空闲中的最大连接数", + "type": "integer" + }, + "max-open-conns": { + "description": "打开到数据库的最大连接数", + "type": "integer" + }, + "password": { + "description": "数据库密码", + "type": "string" + }, + "path": { + "description": "数据库地址", + "type": "string" + }, + "port": { + "description": "数据库端口", + "type": "string" + }, + "prefix": { + "description": "数据库前缀", + "type": "string" + }, + "singular": { + "description": "是否开启全局禁用复数,true表示开启", + "type": "boolean" + }, + "username": { + "description": "数据库账号", + "type": "string" + } + } + }, + "config.Qiniu": { + "type": "object", + "properties": { + "access-key": { + "description": "秘钥AK", + "type": "string" + }, + "bucket": { + "description": "空间名称", + "type": "string" + }, + "img-path": { + "description": "CDN加速域名", + "type": "string" + }, + "secret-key": { + "description": "秘钥SK", + "type": "string" + }, + "use-cdn-domains": { + "description": "上传是否使用CDN上传加速", + "type": "boolean" + }, + "use-https": { + "description": "是否使用https", + "type": "boolean" + }, + "zone": { + "description": "存储区域", + "type": "string" + } + } + }, + "config.Redis": { + "type": "object", + "properties": { + "addr": { + "description": "服务器地址:端口", + "type": "string" + }, + "clusterAddrs": { + "description": "集群模式下的节点地址列表", + "type": "array", + "items": { + "type": "string" + } + }, + "db": { + "description": "单实例模式下redis的哪个数据库", + "type": "integer" + }, + "password": { + "description": "密码", + "type": "string" + }, + "useCluster": { + "description": "是否使用集群模式", + "type": "boolean" + } + } + }, + "config.Server": { + "type": "object", + "properties": { + "aliyun-oss": { + "$ref": "#/definitions/config.AliyunOSS" + }, + "autocode": { + "description": "auto", + "allOf": [ + { + "$ref": "#/definitions/config.Autocode" + } + ] + }, + "aws-s3": { + "$ref": "#/definitions/config.AwsS3" + }, + "captcha": { + "$ref": "#/definitions/config.Captcha" + }, + "cloudflare-r2": { + "$ref": "#/definitions/config.CloudflareR2" + }, + "cors": { + "description": "跨域配置", + "allOf": [ + { + "$ref": "#/definitions/config.CORS" + } + ] + }, + "db-list": { + "type": "array", + "items": { + "$ref": "#/definitions/config.SpecializedDB" + } + }, + "disk-list": { + "type": "array", + "items": { + "$ref": "#/definitions/config.DiskList" + } + }, + "email": { + "$ref": "#/definitions/github_com_flipped-aurora_gin-vue-admin_server_config.Email" + }, + "excel": { + "$ref": "#/definitions/config.Excel" + }, + "hua-wei-obs": { + "$ref": "#/definitions/config.HuaWeiObs" + }, + "jwt": { + "$ref": "#/definitions/config.JWT" + }, + "local": { + "description": "oss", + "allOf": [ + { + "$ref": "#/definitions/config.Local" + } + ] + }, + "mongo": { + "$ref": "#/definitions/config.Mongo" + }, + "mssql": { + "$ref": "#/definitions/config.Mssql" + }, + "mysql": { + "description": "gorm", + "allOf": [ + { + "$ref": "#/definitions/config.Mysql" + } + ] + }, + "oracle": { + "$ref": "#/definitions/config.Oracle" + }, + "pgsql": { + "$ref": "#/definitions/config.Pgsql" + }, + "qiniu": { + "$ref": "#/definitions/config.Qiniu" + }, + "redis": { + "$ref": "#/definitions/config.Redis" + }, + "sqlite": { + "$ref": "#/definitions/config.Sqlite" + }, + "system": { + "$ref": "#/definitions/config.System" + }, + "tencent-cos": { + "$ref": "#/definitions/config.TencentCOS" + }, + "zap": { + "$ref": "#/definitions/config.Zap" + } + } + }, + "config.SpecializedDB": { + "type": "object", + "properties": { + "alias-name": { + "type": "string" + }, + "config": { + "description": "高级配置", + "type": "string" + }, + "db-name": { + "description": "数据库名", + "type": "string" + }, + "disable": { + "type": "boolean" + }, + "engine": { + "description": "数据库引擎,默认InnoDB", + "type": "string", + "default": "InnoDB" + }, + "log-mode": { + "description": "是否开启Gorm全局日志", + "type": "string" + }, + "log-zap": { + "description": "是否通过zap写入日志文件", + "type": "boolean" + }, + "max-idle-conns": { + "description": "空闲中的最大连接数", + "type": "integer" + }, + "max-open-conns": { + "description": "打开到数据库的最大连接数", + "type": "integer" + }, + "password": { + "description": "数据库密码", + "type": "string" + }, + "path": { + "description": "数据库地址", + "type": "string" + }, + "port": { + "description": "数据库端口", + "type": "string" + }, + "prefix": { + "description": "数据库前缀", + "type": "string" + }, + "singular": { + "description": "是否开启全局禁用复数,true表示开启", + "type": "boolean" + }, + "type": { + "type": "string" + }, + "username": { + "description": "数据库账号", + "type": "string" + } + } + }, + "config.Sqlite": { + "type": "object", + "properties": { + "config": { + "description": "高级配置", + "type": "string" + }, + "db-name": { + "description": "数据库名", + "type": "string" + }, + "engine": { + "description": "数据库引擎,默认InnoDB", + "type": "string", + "default": "InnoDB" + }, + "log-mode": { + "description": "是否开启Gorm全局日志", + "type": "string" + }, + "log-zap": { + "description": "是否通过zap写入日志文件", + "type": "boolean" + }, + "max-idle-conns": { + "description": "空闲中的最大连接数", + "type": "integer" + }, + "max-open-conns": { + "description": "打开到数据库的最大连接数", + "type": "integer" + }, + "password": { + "description": "数据库密码", + "type": "string" + }, + "path": { + "description": "数据库地址", + "type": "string" + }, + "port": { + "description": "数据库端口", + "type": "string" + }, + "prefix": { + "description": "数据库前缀", + "type": "string" + }, + "singular": { + "description": "是否开启全局禁用复数,true表示开启", + "type": "boolean" + }, + "username": { + "description": "数据库账号", + "type": "string" + } + } + }, + "config.System": { + "type": "object", + "properties": { + "addr": { + "description": "端口值", + "type": "integer" + }, + "db-type": { + "description": "数据库类型:mysql(默认)|sqlite|sqlserver|postgresql", + "type": "string" + }, + "iplimit-count": { + "type": "integer" + }, + "iplimit-time": { + "type": "integer" + }, + "oss-type": { + "description": "Oss类型", + "type": "string" + }, + "router-prefix": { + "type": "string" + }, + "use-mongo": { + "description": "使用mongo", + "type": "boolean" + }, + "use-multipoint": { + "description": "多点登录拦截", + "type": "boolean" + }, + "use-redis": { + "description": "使用redis", + "type": "boolean" + } + } + }, + "config.TencentCOS": { + "type": "object", + "properties": { + "base-url": { + "type": "string" + }, + "bucket": { + "type": "string" + }, + "path-prefix": { + "type": "string" + }, + "region": { + "type": "string" + }, + "secret-id": { + "type": "string" + }, + "secret-key": { + "type": "string" + } + } + }, + "config.Zap": { + "type": "object", + "properties": { + "director": { + "description": "日志文件夹", + "type": "string" + }, + "encode-level": { + "description": "编码级", + "type": "string" + }, + "format": { + "description": "输出", + "type": "string" + }, + "level": { + "description": "级别", + "type": "string" + }, + "log-in-console": { + "description": "输出控制台", + "type": "boolean" + }, + "prefix": { + "description": "日志前缀", + "type": "string" + }, + "retention-day": { + "description": "日志保留天数", + "type": "integer" + }, + "show-line": { + "description": "显示行", + "type": "boolean" + }, + "stacktrace-key": { + "description": "栈名", + "type": "string" + } + } + }, + "example.ExaCustomer": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "customerName": { + "description": "客户名", + "type": "string" + }, + "customerPhoneData": { + "description": "客户手机号", + "type": "string" + }, + "sysUser": { + "description": "管理详情", + "allOf": [ + { + "$ref": "#/definitions/system.SysUser" + } + ] + }, + "sysUserAuthorityID": { + "description": "管理角色ID", + "type": "integer" + }, + "sysUserId": { + "description": "管理ID", + "type": "integer" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "example.ExaFile": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "chunkTotal": { + "type": "integer" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "exaFileChunk": { + "type": "array", + "items": { + "$ref": "#/definitions/example.ExaFileChunk" + } + }, + "fileMd5": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "filePath": { + "type": "string" + }, + "isFinish": { + "type": "boolean" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "example.ExaFileChunk": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "exaFileID": { + "type": "integer" + }, + "fileChunkNumber": { + "type": "integer" + }, + "fileChunkPath": { + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "example.ExaFileUploadAndDownload": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "key": { + "description": "编号", + "type": "string" + }, + "name": { + "description": "文件名", + "type": "string" + }, + "tag": { + "description": "文件标签", + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + }, + "url": { + "description": "文件地址", + "type": "string" + } + } + }, + "github_com_flipped-aurora_gin-vue-admin_server_config.Email": { + "type": "object", + "properties": { + "from": { + "description": "发件人 你自己要发邮件的邮箱", + "type": "string" + }, + "host": { + "description": "服务器地址 例如 smtp.qq.com 请前往QQ或者你要发邮件的邮箱查看其smtp协议", + "type": "string" + }, + "is-ssl": { + "description": "是否SSL 是否开启SSL", + "type": "boolean" + }, + "nickname": { + "description": "昵称 发件人昵称 通常为自己的邮箱", + "type": "string" + }, + "port": { + "description": "端口 请前往QQ或者你要发邮件的邮箱查看其smtp协议 大多为 465", + "type": "integer" + }, + "secret": { + "description": "密钥 用于登录的密钥 最好不要用邮箱密码 去邮箱smtp申请一个用于登录的密钥", + "type": "string" + }, + "to": { + "description": "收件人:多个以英文逗号分隔 例:a@qq.com b@qq.com 正式开发中请把此项目作为参数使用", + "type": "string" + } + } + }, + "model.Info": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "attachments": { + "description": "附件", + "type": "array", + "items": { + "type": "object" + } + }, + "content": { + "description": "内容", + "type": "string" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "title": { + "description": "标题", + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + }, + "userID": { + "description": "作者", + "type": "integer" + } + } + }, + "request.AddMenuAuthorityInfo": { + "type": "object", + "properties": { + "authorityId": { + "description": "角色ID", + "type": "integer" + }, + "menus": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysBaseMenu" + } + } + } + }, + "request.AutoCode": { + "type": "object" + }, + "request.CasbinInReceive": { + "type": "object", + "properties": { + "authorityId": { + "description": "权限id", + "type": "integer" + }, + "casbinInfos": { + "type": "array", + "items": { + "$ref": "#/definitions/request.CasbinInfo" + } + } + } + }, + "request.CasbinInfo": { + "type": "object", + "properties": { + "method": { + "description": "方法", + "type": "string" + }, + "path": { + "description": "路径", + "type": "string" + } + } + }, + "request.ChangePasswordReq": { + "type": "object", + "properties": { + "newPassword": { + "description": "新密码", + "type": "string" + }, + "password": { + "description": "密码", + "type": "string" + } + } + }, + "request.Empty": { + "type": "object" + }, + "request.GetAuthorityId": { + "type": "object", + "properties": { + "authorityId": { + "description": "角色ID", + "type": "integer" + } + } + }, + "request.GetById": { + "type": "object", + "properties": { + "id": { + "description": "主键ID", + "type": "integer" + } + } + }, + "request.IdsReq": { + "type": "object", + "properties": { + "ids": { + "type": "array", + "items": { + "type": "integer" + } + } + } + }, + "request.InitDB": { + "type": "object", + "required": [ + "adminPassword", + "dbName" + ], + "properties": { + "adminPassword": { + "type": "string" + }, + "dbName": { + "description": "数据库名", + "type": "string" + }, + "dbPath": { + "description": "sqlite数据库文件路径", + "type": "string" + }, + "dbType": { + "description": "数据库类型", + "type": "string" + }, + "host": { + "description": "服务器地址", + "type": "string" + }, + "password": { + "description": "数据库密码", + "type": "string" + }, + "port": { + "description": "数据库连接端口", + "type": "string" + }, + "userName": { + "description": "数据库用户名", + "type": "string" + } + } + }, + "request.Login": { + "type": "object", + "properties": { + "captcha": { + "description": "验证码", + "type": "string" + }, + "captchaId": { + "description": "验证码ID", + "type": "string" + }, + "password": { + "description": "密码", + "type": "string" + }, + "username": { + "description": "用户名", + "type": "string" + } + } + }, + "request.PageInfo": { + "type": "object", + "properties": { + "keyword": { + "description": "关键字", + "type": "string" + }, + "page": { + "description": "页码", + "type": "integer" + }, + "pageSize": { + "description": "每页大小", + "type": "integer" + } + } + }, + "request.Register": { + "type": "object", + "properties": { + "authorityId": { + "type": "string", + "example": "int 角色id" + }, + "authorityIds": { + "type": "string", + "example": "[]uint 角色id" + }, + "email": { + "type": "string", + "example": "电子邮箱" + }, + "enable": { + "type": "string", + "example": "int 是否启用" + }, + "headerImg": { + "type": "string", + "example": "头像链接" + }, + "nickName": { + "type": "string", + "example": "昵称" + }, + "passWord": { + "type": "string", + "example": "密码" + }, + "phone": { + "type": "string", + "example": "电话号码" + }, + "userName": { + "type": "string", + "example": "用户名" + } + } + }, + "request.SearchApiParams": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "apiGroup": { + "description": "api组", + "type": "string" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "desc": { + "description": "排序方式:升序false(默认)|降序true", + "type": "boolean" + }, + "description": { + "description": "api中文描述", + "type": "string" + }, + "keyword": { + "description": "关键字", + "type": "string" + }, + "method": { + "description": "方法:创建POST(默认)|查看GET|更新PUT|删除DELETE", + "type": "string" + }, + "orderKey": { + "description": "排序", + "type": "string" + }, + "page": { + "description": "页码", + "type": "integer" + }, + "pageSize": { + "description": "每页大小", + "type": "integer" + }, + "path": { + "description": "api路径", + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "request.SetUserAuth": { + "type": "object", + "properties": { + "authorityId": { + "description": "角色ID", + "type": "integer" + } + } + }, + "request.SetUserAuthorities": { + "type": "object", + "properties": { + "authorityIds": { + "description": "角色ID", + "type": "array", + "items": { + "type": "integer" + } + }, + "id": { + "type": "integer" + } + } + }, + "request.SysAuthorityBtnReq": { + "type": "object", + "properties": { + "authorityId": { + "type": "integer" + }, + "menuID": { + "type": "integer" + }, + "selected": { + "type": "array", + "items": { + "type": "integer" + } + } + } + }, + "request.SysAutoCodePackageCreate": { + "type": "object", + "properties": { + "desc": { + "type": "string", + "example": "描述" + }, + "label": { + "type": "string", + "example": "展示名" + }, + "packageName": { + "type": "string", + "example": "包名" + }, + "template": { + "type": "string", + "example": "模版" + } + } + }, + "request.SysAutoHistoryRollBack": { + "type": "object", + "properties": { + "deleteApi": { + "description": "是否删除接口", + "type": "boolean" + }, + "deleteMenu": { + "description": "是否删除菜单", + "type": "boolean" + }, + "deleteTable": { + "description": "是否删除表", + "type": "boolean" + }, + "id": { + "description": "主键ID", + "type": "integer" + } + } + }, + "response.Email": { + "type": "object", + "properties": { + "body": { + "description": "邮件内容", + "type": "string" + }, + "subject": { + "description": "邮件标题", + "type": "string" + }, + "to": { + "description": "邮件发送给谁", + "type": "string" + } + } + }, + "response.ExaCustomerResponse": { + "type": "object", + "properties": { + "customer": { + "$ref": "#/definitions/example.ExaCustomer" + } + } + }, + "response.ExaFileResponse": { + "type": "object", + "properties": { + "file": { + "$ref": "#/definitions/example.ExaFileUploadAndDownload" + } + } + }, + "response.FilePathResponse": { + "type": "object", + "properties": { + "filePath": { + "type": "string" + } + } + }, + "response.FileResponse": { + "type": "object", + "properties": { + "file": { + "$ref": "#/definitions/example.ExaFile" + } + } + }, + "response.LoginResponse": { + "type": "object", + "properties": { + "expiresAt": { + "type": "integer" + }, + "token": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/system.SysUser" + } + } + }, + "response.PageResult": { + "type": "object", + "properties": { + "list": {}, + "page": { + "type": "integer" + }, + "pageSize": { + "type": "integer" + }, + "total": { + "type": "integer" + } + } + }, + "response.PolicyPathResponse": { + "type": "object", + "properties": { + "paths": { + "type": "array", + "items": { + "$ref": "#/definitions/request.CasbinInfo" + } + } + } + }, + "response.Response": { + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "data": {}, + "msg": { + "type": "string" + } + } + }, + "response.SysAPIListResponse": { + "type": "object", + "properties": { + "apis": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysApi" + } + } + } + }, + "response.SysAPIResponse": { + "type": "object", + "properties": { + "api": { + "$ref": "#/definitions/system.SysApi" + } + } + }, + "response.SysAuthorityBtnRes": { + "type": "object", + "properties": { + "selected": { + "type": "array", + "items": { + "type": "integer" + } + } + } + }, + "response.SysAuthorityCopyResponse": { + "type": "object", + "properties": { + "authority": { + "$ref": "#/definitions/system.SysAuthority" + }, + "oldAuthorityId": { + "description": "旧角色ID", + "type": "integer" + } + } + }, + "response.SysAuthorityResponse": { + "type": "object", + "properties": { + "authority": { + "$ref": "#/definitions/system.SysAuthority" + } + } + }, + "response.SysBaseMenuResponse": { + "type": "object", + "properties": { + "menu": { + "$ref": "#/definitions/system.SysBaseMenu" + } + } + }, + "response.SysBaseMenusResponse": { + "type": "object", + "properties": { + "menus": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysBaseMenu" + } + } + } + }, + "response.SysCaptchaResponse": { + "type": "object", + "properties": { + "captchaId": { + "type": "string" + }, + "captchaLength": { + "type": "integer" + }, + "openCaptcha": { + "type": "boolean" + }, + "picPath": { + "type": "string" + } + } + }, + "response.SysConfigResponse": { + "type": "object", + "properties": { + "config": { + "$ref": "#/definitions/config.Server" + } + } + }, + "response.SysMenusResponse": { + "type": "object", + "properties": { + "menus": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysMenu" + } + } + } + }, + "response.SysUserResponse": { + "type": "object", + "properties": { + "user": { + "$ref": "#/definitions/system.SysUser" + } + } + }, + "system.Condition": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "column": { + "type": "string" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "from": { + "type": "string" + }, + "operator": { + "type": "string" + }, + "templateID": { + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "system.JoinTemplate": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "joins": { + "type": "string" + }, + "on": { + "type": "string" + }, + "table": { + "type": "string" + }, + "templateID": { + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "system.Meta": { + "type": "object", + "properties": { + "activeName": { + "type": "string" + }, + "closeTab": { + "description": "自动关闭tab", + "type": "boolean" + }, + "defaultMenu": { + "description": "是否是基础路由(开发中)", + "type": "boolean" + }, + "icon": { + "description": "菜单图标", + "type": "string" + }, + "keepAlive": { + "description": "是否缓存", + "type": "boolean" + }, + "title": { + "description": "菜单名", + "type": "string" + } + } + }, + "system.SysApi": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "apiGroup": { + "description": "api组", + "type": "string" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "description": { + "description": "api中文描述", + "type": "string" + }, + "method": { + "description": "方法:创建POST(默认)|查看GET|更新PUT|删除DELETE", + "type": "string" + }, + "path": { + "description": "api路径", + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "system.SysAuthority": { + "type": "object", + "properties": { + "authorityId": { + "description": "角色ID", + "type": "integer" + }, + "authorityName": { + "description": "角色名", + "type": "string" + }, + "children": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysAuthority" + } + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "dataAuthorityId": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysAuthority" + } + }, + "defaultRouter": { + "description": "默认菜单(默认dashboard)", + "type": "string" + }, + "deletedAt": { + "type": "string" + }, + "menus": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysBaseMenu" + } + }, + "parentId": { + "description": "父角色ID", + "type": "integer" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "system.SysBaseMenu": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "authoritys": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysAuthority" + } + }, + "children": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysBaseMenu" + } + }, + "component": { + "description": "对应前端文件路径", + "type": "string" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "hidden": { + "description": "是否在列表隐藏", + "type": "boolean" + }, + "menuBtn": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysBaseMenuBtn" + } + }, + "meta": { + "description": "附加属性", + "allOf": [ + { + "$ref": "#/definitions/system.Meta" + } + ] + }, + "name": { + "description": "路由name", + "type": "string" + }, + "parameters": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysBaseMenuParameter" + } + }, + "parentId": { + "description": "父菜单ID", + "type": "integer" + }, + "path": { + "description": "路由path", + "type": "string" + }, + "sort": { + "description": "排序标记", + "type": "integer" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "system.SysBaseMenuBtn": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "desc": { + "type": "string" + }, + "name": { + "type": "string" + }, + "sysBaseMenuID": { + "type": "integer" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "system.SysBaseMenuParameter": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "key": { + "description": "地址栏携带参数的key", + "type": "string" + }, + "sysBaseMenuID": { + "type": "integer" + }, + "type": { + "description": "地址栏携带参数为params还是query", + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + }, + "value": { + "description": "地址栏携带参数的值", + "type": "string" + } + } + }, + "system.SysDictionary": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "desc": { + "description": "描述", + "type": "string" + }, + "name": { + "description": "字典名(中)", + "type": "string" + }, + "status": { + "description": "状态", + "type": "boolean" + }, + "sysDictionaryDetails": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysDictionaryDetail" + } + }, + "type": { + "description": "字典名(英)", + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "system.SysDictionaryDetail": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "extend": { + "description": "扩展值", + "type": "string" + }, + "label": { + "description": "展示值", + "type": "string" + }, + "sort": { + "description": "排序标记", + "type": "integer" + }, + "status": { + "description": "启用状态", + "type": "boolean" + }, + "sysDictionaryID": { + "description": "关联标记", + "type": "integer" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + }, + "value": { + "description": "字典值", + "type": "string" + } + } + }, + "system.SysExportTemplate": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "conditions": { + "type": "array", + "items": { + "$ref": "#/definitions/system.Condition" + } + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "dbName": { + "description": "数据库名称", + "type": "string" + }, + "joinTemplate": { + "type": "array", + "items": { + "$ref": "#/definitions/system.JoinTemplate" + } + }, + "limit": { + "type": "integer" + }, + "name": { + "description": "模板名称", + "type": "string" + }, + "order": { + "type": "string" + }, + "tableName": { + "description": "表名称", + "type": "string" + }, + "templateID": { + "description": "模板标识", + "type": "string" + }, + "templateInfo": { + "description": "模板信息", + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "system.SysMenu": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "authoritys": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysAuthority" + } + }, + "btns": { + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "children": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysMenu" + } + }, + "component": { + "description": "对应前端文件路径", + "type": "string" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "hidden": { + "description": "是否在列表隐藏", + "type": "boolean" + }, + "menuBtn": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysBaseMenuBtn" + } + }, + "menuId": { + "type": "integer" + }, + "meta": { + "description": "附加属性", + "allOf": [ + { + "$ref": "#/definitions/system.Meta" + } + ] + }, + "name": { + "description": "路由name", + "type": "string" + }, + "parameters": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysBaseMenuParameter" + } + }, + "parentId": { + "description": "父菜单ID", + "type": "integer" + }, + "path": { + "description": "路由path", + "type": "string" + }, + "sort": { + "description": "排序标记", + "type": "integer" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + } + } + }, + "system.SysOperationRecord": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "agent": { + "description": "代理", + "type": "string" + }, + "body": { + "description": "请求Body", + "type": "string" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "error_message": { + "description": "错误信息", + "type": "string" + }, + "ip": { + "description": "请求ip", + "type": "string" + }, + "latency": { + "description": "延迟", + "type": "string" + }, + "method": { + "description": "请求方法", + "type": "string" + }, + "path": { + "description": "请求路径", + "type": "string" + }, + "resp": { + "description": "响应Body", + "type": "string" + }, + "status": { + "description": "请求状态", + "type": "integer" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + }, + "user": { + "$ref": "#/definitions/system.SysUser" + }, + "user_id": { + "description": "用户id", + "type": "integer" + } + } + }, + "system.SysUser": { + "type": "object", + "properties": { + "ID": { + "description": "主键ID", + "type": "integer" + }, + "authorities": { + "type": "array", + "items": { + "$ref": "#/definitions/system.SysAuthority" + } + }, + "authority": { + "$ref": "#/definitions/system.SysAuthority" + }, + "authorityId": { + "description": "用户角色ID", + "type": "integer" + }, + "baseColor": { + "description": "基础颜色", + "type": "string" + }, + "createdAt": { + "description": "创建时间", + "type": "string" + }, + "email": { + "description": "用户邮箱", + "type": "string" + }, + "enable": { + "description": "用户是否被冻结 1正常 2冻结", + "type": "integer" + }, + "headerImg": { + "description": "用户头像", + "type": "string" + }, + "nickName": { + "description": "用户昵称", + "type": "string" + }, + "phone": { + "description": "用户手机号", + "type": "string" + }, + "sideMode": { + "description": "用户侧边主题", + "type": "string" + }, + "updatedAt": { + "description": "更新时间", + "type": "string" + }, + "userName": { + "description": "用户登录名", + "type": "string" + }, + "uuid": { + "description": "用户UUID", + "type": "string" + } + } + }, + "system.System": { + "type": "object", + "properties": { + "config": { + "$ref": "#/definitions/config.Server" + } + } + } + }, + "securityDefinitions": { + "ApiKeyAuth": { + "type": "apiKey", + "name": "x-token", + "in": "header" + } + } +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/docs/swagger.yaml b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/docs/swagger.yaml new file mode 100644 index 000000000..2a75c7df1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/docs/swagger.yaml @@ -0,0 +1,4927 @@ +definitions: + config.AliyunOSS: + properties: + access-key-id: + type: string + access-key-secret: + type: string + base-path: + type: string + bucket-name: + type: string + bucket-url: + type: string + endpoint: + type: string + type: object + config.Autocode: + properties: + ai-path: + type: string + module: + type: string + root: + type: string + server: + type: string + web: + type: string + type: object + config.AwsS3: + properties: + base-url: + type: string + bucket: + type: string + disable-ssl: + type: boolean + endpoint: + type: string + path-prefix: + type: string + region: + type: string + s3-force-path-style: + type: boolean + secret-id: + type: string + secret-key: + type: string + type: object + config.CORS: + properties: + mode: + type: string + whitelist: + items: + $ref: '#/definitions/config.CORSWhitelist' + type: array + type: object + config.CORSWhitelist: + properties: + allow-credentials: + type: boolean + allow-headers: + type: string + allow-methods: + type: string + allow-origin: + type: string + expose-headers: + type: string + type: object + config.Captcha: + properties: + img-height: + description: 验证码高度 + type: integer + img-width: + description: 验证码宽度 + type: integer + key-long: + description: 验证码长度 + type: integer + open-captcha: + description: 防爆破验证码开启此数,0代表每次登录都需要验证码,其他数字代表错误密码此数,如3代表错误三次后出现验证码 + type: integer + open-captcha-timeout: + description: 防爆破验证码超时时间,单位:s(秒) + type: integer + type: object + config.CloudflareR2: + properties: + access-key-id: + type: string + account-id: + type: string + base-url: + type: string + bucket: + type: string + path: + type: string + secret-access-key: + type: string + type: object + config.DiskList: + properties: + mount-point: + type: string + type: object + config.Excel: + properties: + dir: + type: string + type: object + config.HuaWeiObs: + properties: + access-key: + type: string + bucket: + type: string + endpoint: + type: string + path: + type: string + secret-key: + type: string + type: object + config.JWT: + properties: + buffer-time: + description: 缓冲时间 + type: string + expires-time: + description: 过期时间 + type: string + issuer: + description: 签发者 + type: string + signing-key: + description: jwt签名 + type: string + type: object + config.Local: + properties: + path: + description: 本地文件访问路径 + type: string + store-path: + description: 本地文件存储路径 + type: string + type: object + config.Mongo: + properties: + auth-source: + description: 验证数据库 + type: string + coll: + description: collection name + type: string + connect-timeout-ms: + description: 连接超时时间 + type: integer + database: + description: database name + type: string + hosts: + description: 主机列表 + items: + $ref: '#/definitions/config.MongoHost' + type: array + is-zap: + description: 是否开启zap日志 + type: boolean + max-pool-size: + description: 最大连接池 + type: integer + min-pool-size: + description: 最小连接池 + type: integer + options: + description: mongodb options + type: string + password: + description: 密码 + type: string + socket-timeout-ms: + description: socket超时时间 + type: integer + username: + description: 用户名 + type: string + type: object + config.MongoHost: + properties: + host: + description: ip地址 + type: string + port: + description: 端口 + type: string + type: object + config.Mssql: + properties: + config: + description: 高级配置 + type: string + db-name: + description: 数据库名 + type: string + engine: + default: InnoDB + description: 数据库引擎,默认InnoDB + type: string + log-mode: + description: 是否开启Gorm全局日志 + type: string + log-zap: + description: 是否通过zap写入日志文件 + type: boolean + max-idle-conns: + description: 空闲中的最大连接数 + type: integer + max-open-conns: + description: 打开到数据库的最大连接数 + type: integer + password: + description: 数据库密码 + type: string + path: + description: 数据库地址 + type: string + port: + description: 数据库端口 + type: string + prefix: + description: 数据库前缀 + type: string + singular: + description: 是否开启全局禁用复数,true表示开启 + type: boolean + username: + description: 数据库账号 + type: string + type: object + config.Mysql: + properties: + config: + description: 高级配置 + type: string + db-name: + description: 数据库名 + type: string + engine: + default: InnoDB + description: 数据库引擎,默认InnoDB + type: string + log-mode: + description: 是否开启Gorm全局日志 + type: string + log-zap: + description: 是否通过zap写入日志文件 + type: boolean + max-idle-conns: + description: 空闲中的最大连接数 + type: integer + max-open-conns: + description: 打开到数据库的最大连接数 + type: integer + password: + description: 数据库密码 + type: string + path: + description: 数据库地址 + type: string + port: + description: 数据库端口 + type: string + prefix: + description: 数据库前缀 + type: string + singular: + description: 是否开启全局禁用复数,true表示开启 + type: boolean + username: + description: 数据库账号 + type: string + type: object + config.Oracle: + properties: + config: + description: 高级配置 + type: string + db-name: + description: 数据库名 + type: string + engine: + default: InnoDB + description: 数据库引擎,默认InnoDB + type: string + log-mode: + description: 是否开启Gorm全局日志 + type: string + log-zap: + description: 是否通过zap写入日志文件 + type: boolean + max-idle-conns: + description: 空闲中的最大连接数 + type: integer + max-open-conns: + description: 打开到数据库的最大连接数 + type: integer + password: + description: 数据库密码 + type: string + path: + description: 数据库地址 + type: string + port: + description: 数据库端口 + type: string + prefix: + description: 数据库前缀 + type: string + singular: + description: 是否开启全局禁用复数,true表示开启 + type: boolean + username: + description: 数据库账号 + type: string + type: object + config.Pgsql: + properties: + config: + description: 高级配置 + type: string + db-name: + description: 数据库名 + type: string + engine: + default: InnoDB + description: 数据库引擎,默认InnoDB + type: string + log-mode: + description: 是否开启Gorm全局日志 + type: string + log-zap: + description: 是否通过zap写入日志文件 + type: boolean + max-idle-conns: + description: 空闲中的最大连接数 + type: integer + max-open-conns: + description: 打开到数据库的最大连接数 + type: integer + password: + description: 数据库密码 + type: string + path: + description: 数据库地址 + type: string + port: + description: 数据库端口 + type: string + prefix: + description: 数据库前缀 + type: string + singular: + description: 是否开启全局禁用复数,true表示开启 + type: boolean + username: + description: 数据库账号 + type: string + type: object + config.Qiniu: + properties: + access-key: + description: 秘钥AK + type: string + bucket: + description: 空间名称 + type: string + img-path: + description: CDN加速域名 + type: string + secret-key: + description: 秘钥SK + type: string + use-cdn-domains: + description: 上传是否使用CDN上传加速 + type: boolean + use-https: + description: 是否使用https + type: boolean + zone: + description: 存储区域 + type: string + type: object + config.Redis: + properties: + addr: + description: 服务器地址:端口 + type: string + clusterAddrs: + description: 集群模式下的节点地址列表 + items: + type: string + type: array + db: + description: 单实例模式下redis的哪个数据库 + type: integer + password: + description: 密码 + type: string + useCluster: + description: 是否使用集群模式 + type: boolean + type: object + config.Server: + properties: + aliyun-oss: + $ref: '#/definitions/config.AliyunOSS' + autocode: + allOf: + - $ref: '#/definitions/config.Autocode' + description: auto + aws-s3: + $ref: '#/definitions/config.AwsS3' + captcha: + $ref: '#/definitions/config.Captcha' + cloudflare-r2: + $ref: '#/definitions/config.CloudflareR2' + cors: + allOf: + - $ref: '#/definitions/config.CORS' + description: 跨域配置 + db-list: + items: + $ref: '#/definitions/config.SpecializedDB' + type: array + disk-list: + items: + $ref: '#/definitions/config.DiskList' + type: array + email: + $ref: '#/definitions/github_com_flipped-aurora_gin-vue-admin_server_config.Email' + excel: + $ref: '#/definitions/config.Excel' + hua-wei-obs: + $ref: '#/definitions/config.HuaWeiObs' + jwt: + $ref: '#/definitions/config.JWT' + local: + allOf: + - $ref: '#/definitions/config.Local' + description: oss + mongo: + $ref: '#/definitions/config.Mongo' + mssql: + $ref: '#/definitions/config.Mssql' + mysql: + allOf: + - $ref: '#/definitions/config.Mysql' + description: gorm + oracle: + $ref: '#/definitions/config.Oracle' + pgsql: + $ref: '#/definitions/config.Pgsql' + qiniu: + $ref: '#/definitions/config.Qiniu' + redis: + $ref: '#/definitions/config.Redis' + sqlite: + $ref: '#/definitions/config.Sqlite' + system: + $ref: '#/definitions/config.System' + tencent-cos: + $ref: '#/definitions/config.TencentCOS' + zap: + $ref: '#/definitions/config.Zap' + type: object + config.SpecializedDB: + properties: + alias-name: + type: string + config: + description: 高级配置 + type: string + db-name: + description: 数据库名 + type: string + disable: + type: boolean + engine: + default: InnoDB + description: 数据库引擎,默认InnoDB + type: string + log-mode: + description: 是否开启Gorm全局日志 + type: string + log-zap: + description: 是否通过zap写入日志文件 + type: boolean + max-idle-conns: + description: 空闲中的最大连接数 + type: integer + max-open-conns: + description: 打开到数据库的最大连接数 + type: integer + password: + description: 数据库密码 + type: string + path: + description: 数据库地址 + type: string + port: + description: 数据库端口 + type: string + prefix: + description: 数据库前缀 + type: string + singular: + description: 是否开启全局禁用复数,true表示开启 + type: boolean + type: + type: string + username: + description: 数据库账号 + type: string + type: object + config.Sqlite: + properties: + config: + description: 高级配置 + type: string + db-name: + description: 数据库名 + type: string + engine: + default: InnoDB + description: 数据库引擎,默认InnoDB + type: string + log-mode: + description: 是否开启Gorm全局日志 + type: string + log-zap: + description: 是否通过zap写入日志文件 + type: boolean + max-idle-conns: + description: 空闲中的最大连接数 + type: integer + max-open-conns: + description: 打开到数据库的最大连接数 + type: integer + password: + description: 数据库密码 + type: string + path: + description: 数据库地址 + type: string + port: + description: 数据库端口 + type: string + prefix: + description: 数据库前缀 + type: string + singular: + description: 是否开启全局禁用复数,true表示开启 + type: boolean + username: + description: 数据库账号 + type: string + type: object + config.System: + properties: + addr: + description: 端口值 + type: integer + db-type: + description: 数据库类型:mysql(默认)|sqlite|sqlserver|postgresql + type: string + iplimit-count: + type: integer + iplimit-time: + type: integer + oss-type: + description: Oss类型 + type: string + router-prefix: + type: string + use-mongo: + description: 使用mongo + type: boolean + use-multipoint: + description: 多点登录拦截 + type: boolean + use-redis: + description: 使用redis + type: boolean + type: object + config.TencentCOS: + properties: + base-url: + type: string + bucket: + type: string + path-prefix: + type: string + region: + type: string + secret-id: + type: string + secret-key: + type: string + type: object + config.Zap: + properties: + director: + description: 日志文件夹 + type: string + encode-level: + description: 编码级 + type: string + format: + description: 输出 + type: string + level: + description: 级别 + type: string + log-in-console: + description: 输出控制台 + type: boolean + prefix: + description: 日志前缀 + type: string + retention-day: + description: 日志保留天数 + type: integer + show-line: + description: 显示行 + type: boolean + stacktrace-key: + description: 栈名 + type: string + type: object + example.ExaCustomer: + properties: + ID: + description: 主键ID + type: integer + createdAt: + description: 创建时间 + type: string + customerName: + description: 客户名 + type: string + customerPhoneData: + description: 客户手机号 + type: string + sysUser: + allOf: + - $ref: '#/definitions/system.SysUser' + description: 管理详情 + sysUserAuthorityID: + description: 管理角色ID + type: integer + sysUserId: + description: 管理ID + type: integer + updatedAt: + description: 更新时间 + type: string + type: object + example.ExaFile: + properties: + ID: + description: 主键ID + type: integer + chunkTotal: + type: integer + createdAt: + description: 创建时间 + type: string + exaFileChunk: + items: + $ref: '#/definitions/example.ExaFileChunk' + type: array + fileMd5: + type: string + fileName: + type: string + filePath: + type: string + isFinish: + type: boolean + updatedAt: + description: 更新时间 + type: string + type: object + example.ExaFileChunk: + properties: + ID: + description: 主键ID + type: integer + createdAt: + description: 创建时间 + type: string + exaFileID: + type: integer + fileChunkNumber: + type: integer + fileChunkPath: + type: string + updatedAt: + description: 更新时间 + type: string + type: object + example.ExaFileUploadAndDownload: + properties: + ID: + description: 主键ID + type: integer + createdAt: + description: 创建时间 + type: string + key: + description: 编号 + type: string + name: + description: 文件名 + type: string + tag: + description: 文件标签 + type: string + updatedAt: + description: 更新时间 + type: string + url: + description: 文件地址 + type: string + type: object + github_com_flipped-aurora_gin-vue-admin_server_config.Email: + properties: + from: + description: 发件人 你自己要发邮件的邮箱 + type: string + host: + description: 服务器地址 例如 smtp.qq.com 请前往QQ或者你要发邮件的邮箱查看其smtp协议 + type: string + is-ssl: + description: 是否SSL 是否开启SSL + type: boolean + nickname: + description: 昵称 发件人昵称 通常为自己的邮箱 + type: string + port: + description: 端口 请前往QQ或者你要发邮件的邮箱查看其smtp协议 大多为 465 + type: integer + secret: + description: 密钥 用于登录的密钥 最好不要用邮箱密码 去邮箱smtp申请一个用于登录的密钥 + type: string + to: + description: 收件人:多个以英文逗号分隔 例:a@qq.com b@qq.com 正式开发中请把此项目作为参数使用 + type: string + type: object + model.Info: + properties: + ID: + description: 主键ID + type: integer + attachments: + description: 附件 + items: + type: object + type: array + content: + description: 内容 + type: string + createdAt: + description: 创建时间 + type: string + title: + description: 标题 + type: string + updatedAt: + description: 更新时间 + type: string + userID: + description: 作者 + type: integer + type: object + request.AddMenuAuthorityInfo: + properties: + authorityId: + description: 角色ID + type: integer + menus: + items: + $ref: '#/definitions/system.SysBaseMenu' + type: array + type: object + request.AutoCode: + type: object + request.CasbinInReceive: + properties: + authorityId: + description: 权限id + type: integer + casbinInfos: + items: + $ref: '#/definitions/request.CasbinInfo' + type: array + type: object + request.CasbinInfo: + properties: + method: + description: 方法 + type: string + path: + description: 路径 + type: string + type: object + request.ChangePasswordReq: + properties: + newPassword: + description: 新密码 + type: string + password: + description: 密码 + type: string + type: object + request.Empty: + type: object + request.GetAuthorityId: + properties: + authorityId: + description: 角色ID + type: integer + type: object + request.GetById: + properties: + id: + description: 主键ID + type: integer + type: object + request.IdsReq: + properties: + ids: + items: + type: integer + type: array + type: object + request.InitDB: + properties: + adminPassword: + type: string + dbName: + description: 数据库名 + type: string + dbPath: + description: sqlite数据库文件路径 + type: string + dbType: + description: 数据库类型 + type: string + host: + description: 服务器地址 + type: string + password: + description: 数据库密码 + type: string + port: + description: 数据库连接端口 + type: string + userName: + description: 数据库用户名 + type: string + required: + - adminPassword + - dbName + type: object + request.Login: + properties: + captcha: + description: 验证码 + type: string + captchaId: + description: 验证码ID + type: string + password: + description: 密码 + type: string + username: + description: 用户名 + type: string + type: object + request.PageInfo: + properties: + keyword: + description: 关键字 + type: string + page: + description: 页码 + type: integer + pageSize: + description: 每页大小 + type: integer + type: object + request.Register: + properties: + authorityId: + example: int 角色id + type: string + authorityIds: + example: '[]uint 角色id' + type: string + email: + example: 电子邮箱 + type: string + enable: + example: int 是否启用 + type: string + headerImg: + example: 头像链接 + type: string + nickName: + example: 昵称 + type: string + passWord: + example: 密码 + type: string + phone: + example: 电话号码 + type: string + userName: + example: 用户名 + type: string + type: object + request.SearchApiParams: + properties: + ID: + description: 主键ID + type: integer + apiGroup: + description: api组 + type: string + createdAt: + description: 创建时间 + type: string + desc: + description: 排序方式:升序false(默认)|降序true + type: boolean + description: + description: api中文描述 + type: string + keyword: + description: 关键字 + type: string + method: + description: 方法:创建POST(默认)|查看GET|更新PUT|删除DELETE + type: string + orderKey: + description: 排序 + type: string + page: + description: 页码 + type: integer + pageSize: + description: 每页大小 + type: integer + path: + description: api路径 + type: string + updatedAt: + description: 更新时间 + type: string + type: object + request.SetUserAuth: + properties: + authorityId: + description: 角色ID + type: integer + type: object + request.SetUserAuthorities: + properties: + authorityIds: + description: 角色ID + items: + type: integer + type: array + id: + type: integer + type: object + request.SysAuthorityBtnReq: + properties: + authorityId: + type: integer + menuID: + type: integer + selected: + items: + type: integer + type: array + type: object + request.SysAutoCodePackageCreate: + properties: + desc: + example: 描述 + type: string + label: + example: 展示名 + type: string + packageName: + example: 包名 + type: string + template: + example: 模版 + type: string + type: object + request.SysAutoHistoryRollBack: + properties: + deleteApi: + description: 是否删除接口 + type: boolean + deleteMenu: + description: 是否删除菜单 + type: boolean + deleteTable: + description: 是否删除表 + type: boolean + id: + description: 主键ID + type: integer + type: object + response.Email: + properties: + body: + description: 邮件内容 + type: string + subject: + description: 邮件标题 + type: string + to: + description: 邮件发送给谁 + type: string + type: object + response.ExaCustomerResponse: + properties: + customer: + $ref: '#/definitions/example.ExaCustomer' + type: object + response.ExaFileResponse: + properties: + file: + $ref: '#/definitions/example.ExaFileUploadAndDownload' + type: object + response.FilePathResponse: + properties: + filePath: + type: string + type: object + response.FileResponse: + properties: + file: + $ref: '#/definitions/example.ExaFile' + type: object + response.LoginResponse: + properties: + expiresAt: + type: integer + token: + type: string + user: + $ref: '#/definitions/system.SysUser' + type: object + response.PageResult: + properties: + list: {} + page: + type: integer + pageSize: + type: integer + total: + type: integer + type: object + response.PolicyPathResponse: + properties: + paths: + items: + $ref: '#/definitions/request.CasbinInfo' + type: array + type: object + response.Response: + properties: + code: + type: integer + data: {} + msg: + type: string + type: object + response.SysAPIListResponse: + properties: + apis: + items: + $ref: '#/definitions/system.SysApi' + type: array + type: object + response.SysAPIResponse: + properties: + api: + $ref: '#/definitions/system.SysApi' + type: object + response.SysAuthorityBtnRes: + properties: + selected: + items: + type: integer + type: array + type: object + response.SysAuthorityCopyResponse: + properties: + authority: + $ref: '#/definitions/system.SysAuthority' + oldAuthorityId: + description: 旧角色ID + type: integer + type: object + response.SysAuthorityResponse: + properties: + authority: + $ref: '#/definitions/system.SysAuthority' + type: object + response.SysBaseMenuResponse: + properties: + menu: + $ref: '#/definitions/system.SysBaseMenu' + type: object + response.SysBaseMenusResponse: + properties: + menus: + items: + $ref: '#/definitions/system.SysBaseMenu' + type: array + type: object + response.SysCaptchaResponse: + properties: + captchaId: + type: string + captchaLength: + type: integer + openCaptcha: + type: boolean + picPath: + type: string + type: object + response.SysConfigResponse: + properties: + config: + $ref: '#/definitions/config.Server' + type: object + response.SysMenusResponse: + properties: + menus: + items: + $ref: '#/definitions/system.SysMenu' + type: array + type: object + response.SysUserResponse: + properties: + user: + $ref: '#/definitions/system.SysUser' + type: object + system.Condition: + properties: + ID: + description: 主键ID + type: integer + column: + type: string + createdAt: + description: 创建时间 + type: string + from: + type: string + operator: + type: string + templateID: + type: string + updatedAt: + description: 更新时间 + type: string + type: object + system.JoinTemplate: + properties: + ID: + description: 主键ID + type: integer + createdAt: + description: 创建时间 + type: string + joins: + type: string + "on": + type: string + table: + type: string + templateID: + type: string + updatedAt: + description: 更新时间 + type: string + type: object + system.Meta: + properties: + activeName: + type: string + closeTab: + description: 自动关闭tab + type: boolean + defaultMenu: + description: 是否是基础路由(开发中) + type: boolean + icon: + description: 菜单图标 + type: string + keepAlive: + description: 是否缓存 + type: boolean + title: + description: 菜单名 + type: string + type: object + system.SysApi: + properties: + ID: + description: 主键ID + type: integer + apiGroup: + description: api组 + type: string + createdAt: + description: 创建时间 + type: string + description: + description: api中文描述 + type: string + method: + description: 方法:创建POST(默认)|查看GET|更新PUT|删除DELETE + type: string + path: + description: api路径 + type: string + updatedAt: + description: 更新时间 + type: string + type: object + system.SysAuthority: + properties: + authorityId: + description: 角色ID + type: integer + authorityName: + description: 角色名 + type: string + children: + items: + $ref: '#/definitions/system.SysAuthority' + type: array + createdAt: + description: 创建时间 + type: string + dataAuthorityId: + items: + $ref: '#/definitions/system.SysAuthority' + type: array + defaultRouter: + description: 默认菜单(默认dashboard) + type: string + deletedAt: + type: string + menus: + items: + $ref: '#/definitions/system.SysBaseMenu' + type: array + parentId: + description: 父角色ID + type: integer + updatedAt: + description: 更新时间 + type: string + type: object + system.SysBaseMenu: + properties: + ID: + description: 主键ID + type: integer + authoritys: + items: + $ref: '#/definitions/system.SysAuthority' + type: array + children: + items: + $ref: '#/definitions/system.SysBaseMenu' + type: array + component: + description: 对应前端文件路径 + type: string + createdAt: + description: 创建时间 + type: string + hidden: + description: 是否在列表隐藏 + type: boolean + menuBtn: + items: + $ref: '#/definitions/system.SysBaseMenuBtn' + type: array + meta: + allOf: + - $ref: '#/definitions/system.Meta' + description: 附加属性 + name: + description: 路由name + type: string + parameters: + items: + $ref: '#/definitions/system.SysBaseMenuParameter' + type: array + parentId: + description: 父菜单ID + type: integer + path: + description: 路由path + type: string + sort: + description: 排序标记 + type: integer + updatedAt: + description: 更新时间 + type: string + type: object + system.SysBaseMenuBtn: + properties: + ID: + description: 主键ID + type: integer + createdAt: + description: 创建时间 + type: string + desc: + type: string + name: + type: string + sysBaseMenuID: + type: integer + updatedAt: + description: 更新时间 + type: string + type: object + system.SysBaseMenuParameter: + properties: + ID: + description: 主键ID + type: integer + createdAt: + description: 创建时间 + type: string + key: + description: 地址栏携带参数的key + type: string + sysBaseMenuID: + type: integer + type: + description: 地址栏携带参数为params还是query + type: string + updatedAt: + description: 更新时间 + type: string + value: + description: 地址栏携带参数的值 + type: string + type: object + system.SysDictionary: + properties: + ID: + description: 主键ID + type: integer + createdAt: + description: 创建时间 + type: string + desc: + description: 描述 + type: string + name: + description: 字典名(中) + type: string + status: + description: 状态 + type: boolean + sysDictionaryDetails: + items: + $ref: '#/definitions/system.SysDictionaryDetail' + type: array + type: + description: 字典名(英) + type: string + updatedAt: + description: 更新时间 + type: string + type: object + system.SysDictionaryDetail: + properties: + ID: + description: 主键ID + type: integer + createdAt: + description: 创建时间 + type: string + extend: + description: 扩展值 + type: string + label: + description: 展示值 + type: string + sort: + description: 排序标记 + type: integer + status: + description: 启用状态 + type: boolean + sysDictionaryID: + description: 关联标记 + type: integer + updatedAt: + description: 更新时间 + type: string + value: + description: 字典值 + type: string + type: object + system.SysExportTemplate: + properties: + ID: + description: 主键ID + type: integer + conditions: + items: + $ref: '#/definitions/system.Condition' + type: array + createdAt: + description: 创建时间 + type: string + dbName: + description: 数据库名称 + type: string + joinTemplate: + items: + $ref: '#/definitions/system.JoinTemplate' + type: array + limit: + type: integer + name: + description: 模板名称 + type: string + order: + type: string + tableName: + description: 表名称 + type: string + templateID: + description: 模板标识 + type: string + templateInfo: + description: 模板信息 + type: string + updatedAt: + description: 更新时间 + type: string + type: object + system.SysMenu: + properties: + ID: + description: 主键ID + type: integer + authoritys: + items: + $ref: '#/definitions/system.SysAuthority' + type: array + btns: + additionalProperties: + type: integer + type: object + children: + items: + $ref: '#/definitions/system.SysMenu' + type: array + component: + description: 对应前端文件路径 + type: string + createdAt: + description: 创建时间 + type: string + hidden: + description: 是否在列表隐藏 + type: boolean + menuBtn: + items: + $ref: '#/definitions/system.SysBaseMenuBtn' + type: array + menuId: + type: integer + meta: + allOf: + - $ref: '#/definitions/system.Meta' + description: 附加属性 + name: + description: 路由name + type: string + parameters: + items: + $ref: '#/definitions/system.SysBaseMenuParameter' + type: array + parentId: + description: 父菜单ID + type: integer + path: + description: 路由path + type: string + sort: + description: 排序标记 + type: integer + updatedAt: + description: 更新时间 + type: string + type: object + system.SysOperationRecord: + properties: + ID: + description: 主键ID + type: integer + agent: + description: 代理 + type: string + body: + description: 请求Body + type: string + createdAt: + description: 创建时间 + type: string + error_message: + description: 错误信息 + type: string + ip: + description: 请求ip + type: string + latency: + description: 延迟 + type: string + method: + description: 请求方法 + type: string + path: + description: 请求路径 + type: string + resp: + description: 响应Body + type: string + status: + description: 请求状态 + type: integer + updatedAt: + description: 更新时间 + type: string + user: + $ref: '#/definitions/system.SysUser' + user_id: + description: 用户id + type: integer + type: object + system.SysUser: + properties: + ID: + description: 主键ID + type: integer + authorities: + items: + $ref: '#/definitions/system.SysAuthority' + type: array + authority: + $ref: '#/definitions/system.SysAuthority' + authorityId: + description: 用户角色ID + type: integer + baseColor: + description: 基础颜色 + type: string + createdAt: + description: 创建时间 + type: string + email: + description: 用户邮箱 + type: string + enable: + description: 用户是否被冻结 1正常 2冻结 + type: integer + headerImg: + description: 用户头像 + type: string + nickName: + description: 用户昵称 + type: string + phone: + description: 用户手机号 + type: string + sideMode: + description: 用户侧边主题 + type: string + updatedAt: + description: 更新时间 + type: string + userName: + description: 用户登录名 + type: string + uuid: + description: 用户UUID + type: string + type: object + system.System: + properties: + config: + $ref: '#/definitions/config.Server' + type: object +info: + contact: {} + description: 使用gin+vue进行极速开发的全栈开发基础平台 + title: Gin-Vue-Admin Swagger API接口文档 + version: v2.7.6 +paths: + /api/createApi: + post: + consumes: + - application/json + parameters: + - description: api路径, api中文描述, api组, 方法 + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysApi' + produces: + - application/json + responses: + "200": + description: 创建基础api + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 创建基础api + tags: + - SysApi + /api/deleteApi: + post: + consumes: + - application/json + parameters: + - description: ID + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysApi' + produces: + - application/json + responses: + "200": + description: 删除api + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 删除api + tags: + - SysApi + /api/deleteApisByIds: + delete: + consumes: + - application/json + parameters: + - description: ID + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.IdsReq' + produces: + - application/json + responses: + "200": + description: 删除选中Api + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 删除选中Api + tags: + - SysApi + /api/enterSyncApi: + post: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: 确认同步API + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 确认同步API + tags: + - SysApi + /api/freshCasbin: + get: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: 刷新成功 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + summary: 刷新casbin缓存 + tags: + - SysApi + /api/getAllApis: + post: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: 获取所有的Api 不分页,返回包括api列表 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.SysAPIListResponse' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 获取所有的Api 不分页 + tags: + - SysApi + /api/getApiById: + post: + consumes: + - application/json + parameters: + - description: 根据id获取api + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.GetById' + produces: + - application/json + responses: + "200": + description: 根据id获取api,返回包括api详情 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.SysAPIResponse' + type: object + security: + - ApiKeyAuth: [] + summary: 根据id获取api + tags: + - SysApi + /api/getApiGroups: + post: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: 获取API分组 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 获取API分组 + tags: + - SysApi + /api/getApiList: + post: + consumes: + - application/json + parameters: + - description: 分页获取API列表 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.SearchApiParams' + produces: + - application/json + responses: + "200": + description: 分页获取API列表,返回包括列表,总数,页码,每页数量 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.PageResult' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 分页获取API列表 + tags: + - SysApi + /api/ignoreApi: + post: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: 同步API + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 忽略API + tags: + - IgnoreApi + /api/syncApi: + get: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: 同步API + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 同步API + tags: + - SysApi + /api/updateApi: + post: + consumes: + - application/json + parameters: + - description: api路径, api中文描述, api组, 方法 + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysApi' + produces: + - application/json + responses: + "200": + description: 修改基础api + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 修改基础api + tags: + - SysApi + /authority/copyAuthority: + post: + consumes: + - application/json + parameters: + - description: 旧角色id, 新权限id, 新权限名, 新父角色id + in: body + name: data + required: true + schema: + $ref: '#/definitions/response.SysAuthorityCopyResponse' + produces: + - application/json + responses: + "200": + description: 拷贝角色,返回包括系统角色详情 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.SysAuthorityResponse' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 拷贝角色 + tags: + - Authority + /authority/createAuthority: + post: + consumes: + - application/json + parameters: + - description: 权限id, 权限名, 父角色id + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysAuthority' + produces: + - application/json + responses: + "200": + description: 创建角色,返回包括系统角色详情 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.SysAuthorityResponse' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 创建角色 + tags: + - Authority + /authority/deleteAuthority: + post: + consumes: + - application/json + parameters: + - description: 删除角色 + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysAuthority' + produces: + - application/json + responses: + "200": + description: 删除角色 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 删除角色 + tags: + - Authority + /authority/getAuthorityList: + post: + consumes: + - application/json + parameters: + - description: 页码, 每页大小 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.PageInfo' + produces: + - application/json + responses: + "200": + description: 分页获取角色列表,返回包括列表,总数,页码,每页数量 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.PageResult' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 分页获取角色列表 + tags: + - Authority + /authority/setDataAuthority: + post: + consumes: + - application/json + parameters: + - description: 设置角色资源权限 + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysAuthority' + produces: + - application/json + responses: + "200": + description: 设置角色资源权限 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 设置角色资源权限 + tags: + - Authority + /authority/updateAuthority: + post: + consumes: + - application/json + parameters: + - description: 权限id, 权限名, 父角色id + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysAuthority' + produces: + - application/json + responses: + "200": + description: 更新角色信息,返回包括系统角色详情 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.SysAuthorityResponse' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 更新角色信息 + tags: + - Authority + /authorityBtn/canRemoveAuthorityBtn: + post: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: 删除成功 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 设置权限按钮 + tags: + - AuthorityBtn + /authorityBtn/getAuthorityBtn: + post: + consumes: + - application/json + parameters: + - description: 菜单id, 角色id, 选中的按钮id + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.SysAuthorityBtnReq' + produces: + - application/json + responses: + "200": + description: 返回列表成功 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.SysAuthorityBtnRes' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 获取权限按钮 + tags: + - AuthorityBtn + /authorityBtn/setAuthorityBtn: + post: + consumes: + - application/json + parameters: + - description: 菜单id, 角色id, 选中的按钮id + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.SysAuthorityBtnReq' + produces: + - application/json + responses: + "200": + description: 返回列表成功 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 设置权限按钮 + tags: + - AuthorityBtn + /autoCode/addFunc: + post: + consumes: + - application/json + parameters: + - description: 增加方法 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.AutoCode' + produces: + - application/json + responses: + "200": + description: '{"success":true,"data":{},"msg":"创建成功"}' + schema: + type: string + security: + - ApiKeyAuth: [] + summary: 增加方法 + tags: + - AddFunc + /autoCode/createPackage: + post: + consumes: + - application/json + parameters: + - description: 创建package + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.SysAutoCodePackageCreate' + produces: + - application/json + responses: + "200": + description: 创建package成功 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 创建package + tags: + - AutoCodePackage + /autoCode/createTemp: + post: + consumes: + - application/json + parameters: + - description: 创建自动代码 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.AutoCode' + produces: + - application/json + responses: + "200": + description: '{"success":true,"data":{},"msg":"创建成功"}' + schema: + type: string + security: + - ApiKeyAuth: [] + summary: 自动代码模板 + tags: + - AutoCodeTemplate + /autoCode/delPackage: + post: + consumes: + - application/json + parameters: + - description: 创建package + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.GetById' + produces: + - application/json + responses: + "200": + description: 删除package成功 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 删除package + tags: + - AutoCode + /autoCode/delSysHistory: + post: + consumes: + - application/json + parameters: + - description: 请求参数 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.GetById' + produces: + - application/json + responses: + "200": + description: 删除回滚记录 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 删除回滚记录 + tags: + - AutoCode + /autoCode/getColumn: + get: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: 获取当前表所有字段 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 获取当前表所有字段 + tags: + - AutoCode + /autoCode/getDatabase: + get: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: 获取当前所有数据库 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 获取当前所有数据库 + tags: + - AutoCode + /autoCode/getMeta: + post: + consumes: + - application/json + parameters: + - description: 请求参数 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.GetById' + produces: + - application/json + responses: + "200": + description: 获取meta信息 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 获取meta信息 + tags: + - AutoCode + /autoCode/getPackage: + post: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: 创建package成功 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 获取package + tags: + - AutoCodePackage + /autoCode/getSysHistory: + post: + consumes: + - application/json + parameters: + - description: 请求参数 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.PageInfo' + produces: + - application/json + responses: + "200": + description: 查询回滚记录,返回包括列表,总数,页码,每页数量 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.PageResult' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 查询回滚记录 + tags: + - AutoCode + /autoCode/getTables: + get: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: 获取当前数据库所有表 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 获取当前数据库所有表 + tags: + - AutoCode + /autoCode/getTemplates: + get: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: 创建package成功 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 获取package + tags: + - AutoCodePackage + /autoCode/installPlugin: + post: + consumes: + - multipart/form-data + parameters: + - description: this is a test file + in: formData + name: plug + required: true + type: file + produces: + - application/json + responses: + "200": + description: 安装插件成功 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + items: + type: object + type: array + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 安装插件 + tags: + - AutoCodePlugin + /autoCode/preview: + post: + consumes: + - application/json + parameters: + - description: 预览创建代码 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.AutoCode' + produces: + - application/json + responses: + "200": + description: 预览创建后的代码 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 预览创建后的代码 + tags: + - AutoCodeTemplate + /autoCode/pubPlug: + get: + consumes: + - application/json + parameters: + - description: 插件名称 + in: query + name: plugName + required: true + type: string + produces: + - application/json + responses: + "200": + description: 打包插件成功 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 打包插件 + tags: + - AutoCodePlugin + /autoCode/rollback: + post: + consumes: + - application/json + parameters: + - description: 请求参数 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.SysAutoHistoryRollBack' + produces: + - application/json + responses: + "200": + description: 回滚自动生成代码 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 回滚自动生成代码 + tags: + - AutoCode + /base/captcha: + post: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: 生成验证码,返回包括随机数id,base64,验证码长度,是否开启验证码 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.SysCaptchaResponse' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 生成验证码 + tags: + - Base + /base/login: + post: + parameters: + - description: 用户名, 密码, 验证码 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.Login' + produces: + - application/json + responses: + "200": + description: 返回包括用户信息,token,过期时间 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.LoginResponse' + msg: + type: string + type: object + summary: 用户登录 + tags: + - Base + /casbin/UpdateCasbin: + post: + consumes: + - application/json + parameters: + - description: 权限id, 权限模型列表 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.CasbinInReceive' + produces: + - application/json + responses: + "200": + description: 更新角色api权限 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 更新角色api权限 + tags: + - Casbin + /casbin/getPolicyPathByAuthorityId: + post: + consumes: + - application/json + parameters: + - description: 权限id, 权限模型列表 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.CasbinInReceive' + produces: + - application/json + responses: + "200": + description: 获取权限列表,返回包括casbin详情列表 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.PolicyPathResponse' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 获取权限列表 + tags: + - Casbin + /customer/customer: + delete: + consumes: + - application/json + parameters: + - description: 客户ID + in: body + name: data + required: true + schema: + $ref: '#/definitions/example.ExaCustomer' + produces: + - application/json + responses: + "200": + description: 删除客户 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 删除客户 + tags: + - ExaCustomer + get: + consumes: + - application/json + parameters: + - description: 主键ID + in: query + name: ID + type: integer + - description: 创建时间 + in: query + name: createdAt + type: string + - description: 客户名 + in: query + name: customerName + type: string + - description: 客户手机号 + in: query + name: customerPhoneData + type: string + - description: 管理角色ID + in: query + name: sysUserAuthorityID + type: integer + - description: 管理ID + in: query + name: sysUserId + type: integer + - description: 更新时间 + in: query + name: updatedAt + type: string + produces: + - application/json + responses: + "200": + description: 获取单一客户信息,返回包括客户详情 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.ExaCustomerResponse' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 获取单一客户信息 + tags: + - ExaCustomer + post: + consumes: + - application/json + parameters: + - description: 客户用户名, 客户手机号码 + in: body + name: data + required: true + schema: + $ref: '#/definitions/example.ExaCustomer' + produces: + - application/json + responses: + "200": + description: 创建客户 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 创建客户 + tags: + - ExaCustomer + put: + consumes: + - application/json + parameters: + - description: 客户ID, 客户信息 + in: body + name: data + required: true + schema: + $ref: '#/definitions/example.ExaCustomer' + produces: + - application/json + responses: + "200": + description: 更新客户信息 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 更新客户信息 + tags: + - ExaCustomer + /customer/customerList: + get: + consumes: + - application/json + parameters: + - description: 关键字 + in: query + name: keyword + type: string + - description: 页码 + in: query + name: page + type: integer + - description: 每页大小 + in: query + name: pageSize + type: integer + produces: + - application/json + responses: + "200": + description: 分页获取权限客户列表,返回包括列表,总数,页码,每页数量 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.PageResult' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 分页获取权限客户列表 + tags: + - ExaCustomer + /email/emailTest: + post: + produces: + - application/json + responses: + "200": + description: '{"success":true,"data":{},"msg":"发送成功"}' + schema: + type: string + security: + - ApiKeyAuth: [] + summary: 发送测试邮件 + tags: + - System + /email/sendEmail: + post: + parameters: + - description: 发送邮件必须的参数 + in: body + name: data + required: true + schema: + $ref: '#/definitions/response.Email' + produces: + - application/json + responses: + "200": + description: '{"success":true,"data":{},"msg":"发送成功"}' + schema: + type: string + security: + - ApiKeyAuth: [] + summary: 发送邮件 + tags: + - System + /fileUploadAndDownload/breakpointContinue: + post: + consumes: + - multipart/form-data + parameters: + - description: an example for breakpoint resume, 断点续传示例 + in: formData + name: file + required: true + type: file + produces: + - application/json + responses: + "200": + description: 断点续传到服务器 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 断点续传到服务器 + tags: + - ExaFileUploadAndDownload + /fileUploadAndDownload/deleteFile: + post: + parameters: + - description: 传入文件里面id即可 + in: body + name: data + required: true + schema: + $ref: '#/definitions/example.ExaFileUploadAndDownload' + produces: + - application/json + responses: + "200": + description: 删除文件 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 删除文件 + tags: + - ExaFileUploadAndDownload + /fileUploadAndDownload/findFile: + post: + consumes: + - multipart/form-data + parameters: + - description: 上传文件完成 + in: formData + name: file + required: true + type: file + produces: + - application/json + responses: + "200": + description: 创建文件,返回包括文件路径 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.FilePathResponse' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 创建文件 + tags: + - ExaFileUploadAndDownload + /fileUploadAndDownload/getFileList: + post: + consumes: + - application/json + parameters: + - description: 页码, 每页大小 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.PageInfo' + produces: + - application/json + responses: + "200": + description: 分页文件列表,返回包括列表,总数,页码,每页数量 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.PageResult' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 分页文件列表 + tags: + - ExaFileUploadAndDownload + /fileUploadAndDownload/removeChunk: + post: + consumes: + - multipart/form-data + parameters: + - description: 删除缓存切片 + in: formData + name: file + required: true + type: file + produces: + - application/json + responses: + "200": + description: 删除切片 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 删除切片 + tags: + - ExaFileUploadAndDownload + /fileUploadAndDownload/upload: + post: + consumes: + - multipart/form-data + parameters: + - description: 上传文件示例 + in: formData + name: file + required: true + type: file + produces: + - application/json + responses: + "200": + description: 上传文件示例,返回包括文件详情 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.ExaFileResponse' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 上传文件示例 + tags: + - ExaFileUploadAndDownload + /info/createInfo: + post: + consumes: + - application/json + parameters: + - description: 创建公告 + in: body + name: data + required: true + schema: + $ref: '#/definitions/model.Info' + produces: + - application/json + responses: + "200": + description: 创建成功 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 创建公告 + tags: + - Info + /info/deleteInfo: + delete: + consumes: + - application/json + parameters: + - description: 删除公告 + in: body + name: data + required: true + schema: + $ref: '#/definitions/model.Info' + produces: + - application/json + responses: + "200": + description: 删除成功 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 删除公告 + tags: + - Info + /info/deleteInfoByIds: + delete: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: 批量删除成功 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 批量删除公告 + tags: + - Info + /info/findInfo: + get: + consumes: + - application/json + parameters: + - description: 主键ID + in: query + name: ID + type: integer + - description: 内容 + in: query + name: content + type: string + - description: 创建时间 + in: query + name: createdAt + type: string + - description: 标题 + in: query + name: title + type: string + - description: 更新时间 + in: query + name: updatedAt + type: string + - description: 作者 + in: query + name: userID + type: integer + produces: + - application/json + responses: + "200": + description: 查询成功 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/model.Info' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 用id查询公告 + tags: + - Info + /info/getInfoDataSource: + get: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: 查询成功 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + type: object + msg: + type: string + type: object + summary: 获取Info的数据源 + tags: + - Info + /info/getInfoList: + get: + consumes: + - application/json + parameters: + - in: query + name: endCreatedAt + type: string + - description: 关键字 + in: query + name: keyword + type: string + - description: 页码 + in: query + name: page + type: integer + - description: 每页大小 + in: query + name: pageSize + type: integer + - in: query + name: startCreatedAt + type: string + produces: + - application/json + responses: + "200": + description: 获取成功 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.PageResult' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 分页获取公告列表 + tags: + - Info + /info/getInfoPublic: + get: + consumes: + - application/json + parameters: + - in: query + name: endCreatedAt + type: string + - description: 关键字 + in: query + name: keyword + type: string + - description: 页码 + in: query + name: page + type: integer + - description: 每页大小 + in: query + name: pageSize + type: integer + - in: query + name: startCreatedAt + type: string + produces: + - application/json + responses: + "200": + description: 获取成功 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + type: object + msg: + type: string + type: object + summary: 不需要鉴权的公告接口 + tags: + - Info + /info/updateInfo: + put: + consumes: + - application/json + parameters: + - description: 更新公告 + in: body + name: data + required: true + schema: + $ref: '#/definitions/model.Info' + produces: + - application/json + responses: + "200": + description: 更新成功 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 更新公告 + tags: + - Info + /init/checkdb: + post: + produces: + - application/json + responses: + "200": + description: 初始化用户数据库 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + summary: 初始化用户数据库 + tags: + - CheckDB + /init/initdb: + post: + parameters: + - description: 初始化数据库参数 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.InitDB' + produces: + - application/json + responses: + "200": + description: 初始化用户数据库 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + type: string + type: object + summary: 初始化用户数据库 + tags: + - InitDB + /jwt/jsonInBlacklist: + post: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: jwt加入黑名单 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: jwt加入黑名单 + tags: + - Jwt + /menu/addBaseMenu: + post: + consumes: + - application/json + parameters: + - description: 路由path, 父菜单ID, 路由name, 对应前端文件路径, 排序标记 + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysBaseMenu' + produces: + - application/json + responses: + "200": + description: 新增菜单 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 新增菜单 + tags: + - Menu + /menu/addMenuAuthority: + post: + consumes: + - application/json + parameters: + - description: 角色ID + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.AddMenuAuthorityInfo' + produces: + - application/json + responses: + "200": + description: 增加menu和角色关联关系 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 增加menu和角色关联关系 + tags: + - AuthorityMenu + /menu/deleteBaseMenu: + post: + consumes: + - application/json + parameters: + - description: 菜单id + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.GetById' + produces: + - application/json + responses: + "200": + description: 删除菜单 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 删除菜单 + tags: + - Menu + /menu/getBaseMenuById: + post: + consumes: + - application/json + parameters: + - description: 菜单id + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.GetById' + produces: + - application/json + responses: + "200": + description: 根据id获取菜单,返回包括系统菜单列表 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.SysBaseMenuResponse' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 根据id获取菜单 + tags: + - Menu + /menu/getBaseMenuTree: + post: + parameters: + - description: 空 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.Empty' + produces: + - application/json + responses: + "200": + description: 获取用户动态路由,返回包括系统菜单列表 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.SysBaseMenusResponse' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 获取用户动态路由 + tags: + - AuthorityMenu + /menu/getMenu: + post: + parameters: + - description: 空 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.Empty' + produces: + - application/json + responses: + "200": + description: 获取用户动态路由,返回包括系统菜单详情列表 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.SysMenusResponse' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 获取用户动态路由 + tags: + - AuthorityMenu + /menu/getMenuAuthority: + post: + consumes: + - application/json + parameters: + - description: 角色ID + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.GetAuthorityId' + produces: + - application/json + responses: + "200": + description: 获取指定角色menu + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 获取指定角色menu + tags: + - AuthorityMenu + /menu/getMenuList: + post: + consumes: + - application/json + parameters: + - description: 页码, 每页大小 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.PageInfo' + produces: + - application/json + responses: + "200": + description: 分页获取基础menu列表,返回包括列表,总数,页码,每页数量 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.PageResult' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 分页获取基础menu列表 + tags: + - Menu + /menu/updateBaseMenu: + post: + consumes: + - application/json + parameters: + - description: 路由path, 父菜单ID, 路由name, 对应前端文件路径, 排序标记 + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysBaseMenu' + produces: + - application/json + responses: + "200": + description: 更新菜单 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 更新菜单 + tags: + - Menu + /sysDictionary/createSysDictionary: + post: + consumes: + - application/json + parameters: + - description: SysDictionary模型 + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysDictionary' + produces: + - application/json + responses: + "200": + description: 创建SysDictionary + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 创建SysDictionary + tags: + - SysDictionary + /sysDictionary/deleteSysDictionary: + delete: + consumes: + - application/json + parameters: + - description: SysDictionary模型 + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysDictionary' + produces: + - application/json + responses: + "200": + description: 删除SysDictionary + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 删除SysDictionary + tags: + - SysDictionary + /sysDictionary/findSysDictionary: + get: + consumes: + - application/json + parameters: + - description: 主键ID + in: query + name: ID + type: integer + - description: 创建时间 + in: query + name: createdAt + type: string + - description: 描述 + in: query + name: desc + type: string + - description: 字典名(中) + in: query + name: name + type: string + - description: 状态 + in: query + name: status + type: boolean + - description: 字典名(英) + in: query + name: type + type: string + - description: 更新时间 + in: query + name: updatedAt + type: string + produces: + - application/json + responses: + "200": + description: 用id查询SysDictionary + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 用id查询SysDictionary + tags: + - SysDictionary + /sysDictionary/getSysDictionaryList: + get: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: 分页获取SysDictionary列表,返回包括列表,总数,页码,每页数量 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.PageResult' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 分页获取SysDictionary列表 + tags: + - SysDictionary + /sysDictionary/updateSysDictionary: + put: + consumes: + - application/json + parameters: + - description: SysDictionary模型 + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysDictionary' + produces: + - application/json + responses: + "200": + description: 更新SysDictionary + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 更新SysDictionary + tags: + - SysDictionary + /sysDictionaryDetail/createSysDictionaryDetail: + post: + consumes: + - application/json + parameters: + - description: SysDictionaryDetail模型 + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysDictionaryDetail' + produces: + - application/json + responses: + "200": + description: 创建SysDictionaryDetail + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 创建SysDictionaryDetail + tags: + - SysDictionaryDetail + /sysDictionaryDetail/deleteSysDictionaryDetail: + delete: + consumes: + - application/json + parameters: + - description: SysDictionaryDetail模型 + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysDictionaryDetail' + produces: + - application/json + responses: + "200": + description: 删除SysDictionaryDetail + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 删除SysDictionaryDetail + tags: + - SysDictionaryDetail + /sysDictionaryDetail/findSysDictionaryDetail: + get: + consumes: + - application/json + parameters: + - description: 主键ID + in: query + name: ID + type: integer + - description: 创建时间 + in: query + name: createdAt + type: string + - description: 扩展值 + in: query + name: extend + type: string + - description: 展示值 + in: query + name: label + type: string + - description: 排序标记 + in: query + name: sort + type: integer + - description: 启用状态 + in: query + name: status + type: boolean + - description: 关联标记 + in: query + name: sysDictionaryID + type: integer + - description: 更新时间 + in: query + name: updatedAt + type: string + - description: 字典值 + in: query + name: value + type: string + produces: + - application/json + responses: + "200": + description: 用id查询SysDictionaryDetail + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 用id查询SysDictionaryDetail + tags: + - SysDictionaryDetail + /sysDictionaryDetail/getSysDictionaryDetailList: + get: + consumes: + - application/json + parameters: + - description: 主键ID + in: query + name: ID + type: integer + - description: 创建时间 + in: query + name: createdAt + type: string + - description: 扩展值 + in: query + name: extend + type: string + - description: 关键字 + in: query + name: keyword + type: string + - description: 展示值 + in: query + name: label + type: string + - description: 页码 + in: query + name: page + type: integer + - description: 每页大小 + in: query + name: pageSize + type: integer + - description: 排序标记 + in: query + name: sort + type: integer + - description: 启用状态 + in: query + name: status + type: boolean + - description: 关联标记 + in: query + name: sysDictionaryID + type: integer + - description: 更新时间 + in: query + name: updatedAt + type: string + - description: 字典值 + in: query + name: value + type: string + produces: + - application/json + responses: + "200": + description: 分页获取SysDictionaryDetail列表,返回包括列表,总数,页码,每页数量 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.PageResult' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 分页获取SysDictionaryDetail列表 + tags: + - SysDictionaryDetail + /sysDictionaryDetail/updateSysDictionaryDetail: + put: + consumes: + - application/json + parameters: + - description: 更新SysDictionaryDetail + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysDictionaryDetail' + produces: + - application/json + responses: + "200": + description: 更新SysDictionaryDetail + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 更新SysDictionaryDetail + tags: + - SysDictionaryDetail + /sysExportTemplate/createSysExportTemplate: + post: + consumes: + - application/json + parameters: + - description: 创建导出模板 + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysExportTemplate' + produces: + - application/json + responses: + "200": + description: '{"success":true,"data":{},"msg":"创建成功"}' + schema: + type: string + security: + - ApiKeyAuth: [] + summary: 创建导出模板 + tags: + - SysExportTemplate + /sysExportTemplate/deleteSysExportTemplate: + delete: + consumes: + - application/json + parameters: + - description: 删除导出模板 + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysExportTemplate' + produces: + - application/json + responses: + "200": + description: '{"success":true,"data":{},"msg":"删除成功"}' + schema: + type: string + security: + - ApiKeyAuth: [] + summary: 删除导出模板 + tags: + - SysExportTemplate + /sysExportTemplate/deleteSysExportTemplateByIds: + delete: + consumes: + - application/json + parameters: + - description: 批量删除导出模板 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.IdsReq' + produces: + - application/json + responses: + "200": + description: '{"success":true,"data":{},"msg":"批量删除成功"}' + schema: + type: string + security: + - ApiKeyAuth: [] + summary: 批量删除导出模板 + tags: + - SysExportTemplate + /sysExportTemplate/exportExcel: + get: + consumes: + - application/json + produces: + - application/json + responses: {} + security: + - ApiKeyAuth: [] + summary: 导出表格模板 + tags: + - SysExportTemplate + /sysExportTemplate/findSysExportTemplate: + get: + consumes: + - application/json + parameters: + - description: 主键ID + in: query + name: ID + type: integer + - description: 创建时间 + in: query + name: createdAt + type: string + - description: 数据库名称 + in: query + name: dbName + type: string + - in: query + name: limit + type: integer + - description: 模板名称 + in: query + name: name + type: string + - in: query + name: order + type: string + - description: 表名称 + in: query + name: tableName + type: string + - description: 模板标识 + in: query + name: templateID + type: string + - description: 模板信息 + in: query + name: templateInfo + type: string + - description: 更新时间 + in: query + name: updatedAt + type: string + produces: + - application/json + responses: + "200": + description: '{"success":true,"data":{},"msg":"查询成功"}' + schema: + type: string + security: + - ApiKeyAuth: [] + summary: 用id查询导出模板 + tags: + - SysExportTemplate + /sysExportTemplate/getSysExportTemplateList: + get: + consumes: + - application/json + parameters: + - description: 主键ID + in: query + name: ID + type: integer + - description: 创建时间 + in: query + name: createdAt + type: string + - description: 数据库名称 + in: query + name: dbName + type: string + - in: query + name: endCreatedAt + type: string + - description: 关键字 + in: query + name: keyword + type: string + - in: query + name: limit + type: integer + - description: 模板名称 + in: query + name: name + type: string + - in: query + name: order + type: string + - description: 页码 + in: query + name: page + type: integer + - description: 每页大小 + in: query + name: pageSize + type: integer + - in: query + name: startCreatedAt + type: string + - description: 表名称 + in: query + name: tableName + type: string + - description: 模板标识 + in: query + name: templateID + type: string + - description: 模板信息 + in: query + name: templateInfo + type: string + - description: 更新时间 + in: query + name: updatedAt + type: string + produces: + - application/json + responses: + "200": + description: '{"success":true,"data":{},"msg":"获取成功"}' + schema: + type: string + security: + - ApiKeyAuth: [] + summary: 分页获取导出模板列表 + tags: + - SysExportTemplate + /sysExportTemplate/importExcel: + post: + consumes: + - application/json + produces: + - application/json + responses: {} + security: + - ApiKeyAuth: [] + summary: 导入表格 + tags: + - SysImportTemplate + /sysExportTemplate/updateSysExportTemplate: + put: + consumes: + - application/json + parameters: + - description: 更新导出模板 + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysExportTemplate' + produces: + - application/json + responses: + "200": + description: '{"success":true,"data":{},"msg":"更新成功"}' + schema: + type: string + security: + - ApiKeyAuth: [] + summary: 更新导出模板 + tags: + - SysExportTemplate + /sysOperationRecord/createSysOperationRecord: + post: + consumes: + - application/json + parameters: + - description: 创建SysOperationRecord + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysOperationRecord' + produces: + - application/json + responses: + "200": + description: 创建SysOperationRecord + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 创建SysOperationRecord + tags: + - SysOperationRecord + /sysOperationRecord/deleteSysOperationRecord: + delete: + consumes: + - application/json + parameters: + - description: SysOperationRecord模型 + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysOperationRecord' + produces: + - application/json + responses: + "200": + description: 删除SysOperationRecord + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 删除SysOperationRecord + tags: + - SysOperationRecord + /sysOperationRecord/deleteSysOperationRecordByIds: + delete: + consumes: + - application/json + parameters: + - description: 批量删除SysOperationRecord + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.IdsReq' + produces: + - application/json + responses: + "200": + description: 批量删除SysOperationRecord + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 批量删除SysOperationRecord + tags: + - SysOperationRecord + /sysOperationRecord/findSysOperationRecord: + get: + consumes: + - application/json + parameters: + - description: 主键ID + in: query + name: ID + type: integer + - description: 代理 + in: query + name: agent + type: string + - description: 请求Body + in: query + name: body + type: string + - description: 创建时间 + in: query + name: createdAt + type: string + - description: 错误信息 + in: query + name: error_message + type: string + - description: 请求ip + in: query + name: ip + type: string + - description: 延迟 + in: query + name: latency + type: string + - description: 请求方法 + in: query + name: method + type: string + - description: 请求路径 + in: query + name: path + type: string + - description: 响应Body + in: query + name: resp + type: string + - description: 请求状态 + in: query + name: status + type: integer + - description: 更新时间 + in: query + name: updatedAt + type: string + - description: 用户id + in: query + name: user_id + type: integer + produces: + - application/json + responses: + "200": + description: 用id查询SysOperationRecord + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 用id查询SysOperationRecord + tags: + - SysOperationRecord + /sysOperationRecord/getSysOperationRecordList: + get: + consumes: + - application/json + parameters: + - description: 主键ID + in: query + name: ID + type: integer + - description: 代理 + in: query + name: agent + type: string + - description: 请求Body + in: query + name: body + type: string + - description: 创建时间 + in: query + name: createdAt + type: string + - description: 错误信息 + in: query + name: error_message + type: string + - description: 请求ip + in: query + name: ip + type: string + - description: 关键字 + in: query + name: keyword + type: string + - description: 延迟 + in: query + name: latency + type: string + - description: 请求方法 + in: query + name: method + type: string + - description: 页码 + in: query + name: page + type: integer + - description: 每页大小 + in: query + name: pageSize + type: integer + - description: 请求路径 + in: query + name: path + type: string + - description: 响应Body + in: query + name: resp + type: string + - description: 请求状态 + in: query + name: status + type: integer + - description: 更新时间 + in: query + name: updatedAt + type: string + - description: 用户id + in: query + name: user_id + type: integer + produces: + - application/json + responses: + "200": + description: 分页获取SysOperationRecord列表,返回包括列表,总数,页码,每页数量 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.PageResult' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 分页获取SysOperationRecord列表 + tags: + - SysOperationRecord + /system/getServerInfo: + post: + produces: + - application/json + responses: + "200": + description: 获取服务器信息 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 获取服务器信息 + tags: + - System + /system/getSystemConfig: + post: + produces: + - application/json + responses: + "200": + description: 获取配置文件内容,返回包括系统配置 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.SysConfigResponse' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 获取配置文件内容 + tags: + - System + /system/reloadSystem: + post: + produces: + - application/json + responses: + "200": + description: 重启系统 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 重启系统 + tags: + - System + /system/setSystemConfig: + post: + parameters: + - description: 设置配置文件内容 + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.System' + produces: + - application/json + responses: + "200": + description: 设置配置文件内容 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 设置配置文件内容 + tags: + - System + /user/SetSelfInfo: + put: + consumes: + - application/json + parameters: + - description: ID, 用户名, 昵称, 头像链接 + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysUser' + produces: + - application/json + responses: + "200": + description: 设置用户信息 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 设置用户信息 + tags: + - SysUser + /user/admin_register: + post: + parameters: + - description: 用户名, 昵称, 密码, 角色ID + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.Register' + produces: + - application/json + responses: + "200": + description: 用户注册账号,返回包括用户信息 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.SysUserResponse' + msg: + type: string + type: object + summary: 用户注册账号 + tags: + - SysUser + /user/changePassword: + post: + parameters: + - description: 用户名, 原密码, 新密码 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.ChangePasswordReq' + produces: + - application/json + responses: + "200": + description: 用户修改密码 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 用户修改密码 + tags: + - SysUser + /user/deleteUser: + delete: + consumes: + - application/json + parameters: + - description: 用户ID + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.GetById' + produces: + - application/json + responses: + "200": + description: 删除用户 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 删除用户 + tags: + - SysUser + /user/getUserInfo: + get: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: 获取用户信息 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 获取用户信息 + tags: + - SysUser + /user/getUserList: + post: + consumes: + - application/json + parameters: + - description: 页码, 每页大小 + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.PageInfo' + produces: + - application/json + responses: + "200": + description: 分页获取用户列表,返回包括列表,总数,页码,每页数量 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + $ref: '#/definitions/response.PageResult' + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 分页获取用户列表 + tags: + - SysUser + /user/resetPassword: + post: + parameters: + - description: ID + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysUser' + produces: + - application/json + responses: + "200": + description: 重置用户密码 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 重置用户密码 + tags: + - SysUser + /user/setUserAuthorities: + post: + consumes: + - application/json + parameters: + - description: 用户UUID, 角色ID + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.SetUserAuthorities' + produces: + - application/json + responses: + "200": + description: 设置用户权限 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 设置用户权限 + tags: + - SysUser + /user/setUserAuthority: + post: + consumes: + - application/json + parameters: + - description: 用户UUID, 角色ID + in: body + name: data + required: true + schema: + $ref: '#/definitions/request.SetUserAuth' + produces: + - application/json + responses: + "200": + description: 设置用户权限 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 更改用户权限 + tags: + - SysUser + /user/setUserInfo: + put: + consumes: + - application/json + parameters: + - description: ID, 用户名, 昵称, 头像链接 + in: body + name: data + required: true + schema: + $ref: '#/definitions/system.SysUser' + produces: + - application/json + responses: + "200": + description: 设置用户信息 + schema: + allOf: + - $ref: '#/definitions/response.Response' + - properties: + data: + additionalProperties: true + type: object + msg: + type: string + type: object + security: + - ApiKeyAuth: [] + summary: 设置用户信息 + tags: + - SysUser +securityDefinitions: + ApiKeyAuth: + in: header + name: x-token + type: apiKey +swagger: "2.0" diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/global/global.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/global/global.go new file mode 100644 index 000000000..7291d2a30 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/global/global.go @@ -0,0 +1,66 @@ +package global + +import ( + "fmt" + "sync" + + "github.com/gin-gonic/gin" + "github.com/qiniu/qmgo" + + "github.com/flipped-aurora/gin-vue-admin/server/utils/timer" + "github.com/songzhibin97/gkit/cache/local_cache" + + "golang.org/x/sync/singleflight" + + "go.uber.org/zap" + + "github.com/flipped-aurora/gin-vue-admin/server/config" + + "github.com/redis/go-redis/v9" + "github.com/spf13/viper" + "gorm.io/gorm" +) + +var ( + GVA_DB *gorm.DB + GVA_DBList map[string]*gorm.DB + GVA_REDIS redis.UniversalClient + GVA_REDISList map[string]redis.UniversalClient + GVA_MONGO *qmgo.QmgoClient + GVA_CONFIG config.Server + GVA_VP *viper.Viper + // GVA_LOG *oplogging.Logger + GVA_LOG *zap.Logger + GVA_Timer timer.Timer = timer.NewTimerTask() + GVA_Concurrency_Control = &singleflight.Group{} + GVA_ROUTERS gin.RoutesInfo + GVA_ACTIVE_DBNAME *string + BlackCache local_cache.Cache + lock sync.RWMutex +) + +// GetGlobalDBByDBName 通过名称获取db list中的db +func GetGlobalDBByDBName(dbname string) *gorm.DB { + lock.RLock() + defer lock.RUnlock() + return GVA_DBList[dbname] +} + +// MustGetGlobalDBByDBName 通过名称获取db 如果不存在则panic +func MustGetGlobalDBByDBName(dbname string) *gorm.DB { + lock.RLock() + defer lock.RUnlock() + db, ok := GVA_DBList[dbname] + if !ok || db == nil { + panic("db no init") + } + return db +} + +func GetRedis(name string) redis.UniversalClient { + redis, ok := GVA_REDISList[name] + if !ok || redis == nil { + panic(fmt.Sprintf("redis `%s` no init", name)) + } + return redis +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/global/model.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/global/model.go new file mode 100644 index 000000000..9772eb312 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/global/model.go @@ -0,0 +1,14 @@ +package global + +import ( + "time" + + "gorm.io/gorm" +) + +type GVA_MODEL struct { + ID uint `gorm:"primarykey" json:"ID"` // 主键ID + CreatedAt time.Time // 创建时间 + UpdatedAt time.Time // 更新时间 + DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` // 删除时间 +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/go.mod b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/go.mod new file mode 100644 index 000000000..51b4c660d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/go.mod @@ -0,0 +1,180 @@ +module github.com/flipped-aurora/gin-vue-admin/server + +go 1.22.0 + +toolchain go1.22.2 + +require ( + github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible + github.com/aws/aws-sdk-go v1.55.5 + github.com/casbin/casbin/v2 v2.100.0 + github.com/casbin/gorm-adapter/v3 v3.28.0 + github.com/fsnotify/fsnotify v1.7.0 + github.com/fvbock/endless v0.0.0-20170109170031-447134032cb6 + github.com/gin-gonic/gin v1.10.0 + github.com/glebarez/sqlite v1.11.0 + github.com/go-sql-driver/mysql v1.8.1 + github.com/goccy/go-json v0.10.3 + github.com/gofrs/uuid/v5 v5.3.0 + github.com/golang-jwt/jwt/v4 v4.5.0 + github.com/gookit/color v1.5.4 + github.com/huaweicloud/huaweicloud-sdk-go-obs v3.24.9+incompatible + github.com/jordan-wright/email v4.0.1-0.20210109023952-943e75fe5223+incompatible + github.com/mholt/archiver/v4 v4.0.0-alpha.8 + github.com/mojocn/base64Captcha v1.3.6 + github.com/otiai10/copy v1.14.0 + github.com/pkg/errors v0.9.1 + github.com/qiniu/go-sdk/v7 v7.23.0 + github.com/qiniu/qmgo v1.1.8 + github.com/redis/go-redis/v9 v9.6.2 + github.com/robfig/cron/v3 v3.0.1 + github.com/shirou/gopsutil/v3 v3.24.5 + github.com/songzhibin97/gkit v1.2.13 + github.com/spf13/viper v1.19.0 + github.com/stretchr/testify v1.9.0 + github.com/swaggo/files v1.0.1 + github.com/swaggo/gin-swagger v1.6.0 + github.com/swaggo/swag v1.16.3 + github.com/tencentyun/cos-go-sdk-v5 v0.7.55 + github.com/unrolled/secure v1.16.0 + github.com/xuri/excelize/v2 v2.9.0 + go.mongodb.org/mongo-driver v1.17.1 + go.uber.org/automaxprocs v1.6.0 + go.uber.org/zap v1.27.0 + golang.org/x/crypto v0.28.0 + golang.org/x/sync v0.8.0 + golang.org/x/text v0.19.0 + gorm.io/datatypes v1.2.3 + gorm.io/driver/mysql v1.5.7 + gorm.io/driver/postgres v1.5.9 + gorm.io/driver/sqlserver v1.5.3 + gorm.io/gen v0.3.26 + gorm.io/gorm v1.25.12 +) + +require ( + filippo.io/edwards25519 v1.1.0 // indirect + github.com/BurntSushi/toml v1.4.0 // indirect + github.com/KyleBanks/depth v1.2.1 // indirect + github.com/alex-ant/gomath v0.0.0-20160516115720-89013a210a82 // indirect + github.com/andybalholm/brotli v1.1.1 // indirect + github.com/bmatcuk/doublestar/v4 v4.7.1 // indirect + github.com/bodgit/plumbing v1.3.0 // indirect + github.com/bodgit/sevenzip v1.5.2 // indirect + github.com/bodgit/windows v1.0.1 // indirect + github.com/bytedance/sonic v1.12.3 // indirect + github.com/bytedance/sonic/loader v0.2.0 // indirect + github.com/casbin/govaluate v1.2.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/clbanning/mxj v1.8.4 // indirect + github.com/cloudwego/base64x v0.1.4 // indirect + github.com/cloudwego/iasm v0.2.0 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect + github.com/dsnet/compress v0.0.1 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/elastic/go-sysinfo v1.14.2 // indirect + github.com/elastic/go-windows v1.0.2 // indirect + github.com/gabriel-vasile/mimetype v1.4.6 // indirect + github.com/gammazero/toposort v0.1.1 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/glebarez/go-sqlite v1.22.0 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect + github.com/go-openapi/jsonreference v0.21.0 // indirect + github.com/go-openapi/spec v0.21.0 // indirect + github.com/go-openapi/swag v0.23.0 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.22.1 // indirect + github.com/gofrs/flock v0.12.1 // indirect + github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect + github.com/golang-sql/sqlexp v0.1.0 // indirect + github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/google/go-querystring v1.1.0 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/gorilla/websocket v1.5.3 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect + github.com/jackc/pgx/v5 v5.7.1 // indirect + github.com/jackc/puddle/v2 v2.2.2 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.17.11 // indirect + github.com/klauspost/cpuid/v2 v2.2.8 // indirect + github.com/klauspost/pgzip v1.2.6 // indirect + github.com/leodido/go-urn v1.4.0 // indirect + github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/microsoft/go-mssqldb v1.7.2 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect + github.com/montanaflynn/stats v0.7.1 // indirect + github.com/mozillazg/go-httpheader v0.4.0 // indirect + github.com/ncruces/go-strftime v0.1.9 // indirect + github.com/nwaples/rardecode/v2 v2.0.0-beta.3 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect + github.com/pierrec/lz4/v4 v4.1.21 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect + github.com/prometheus/procfs v0.15.1 // indirect + github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect + github.com/richardlehane/mscfb v1.0.4 // indirect + github.com/richardlehane/msoleps v1.0.4 // indirect + github.com/sagikazarmark/locafero v0.6.0 // indirect + github.com/sagikazarmark/slog-shim v0.1.0 // indirect + github.com/shoenig/go-m1cpu v0.1.6 // indirect + github.com/sourcegraph/conc v0.3.0 // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/cast v1.7.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/subosito/gotenv v1.6.0 // indirect + github.com/therootcompany/xz v1.0.1 // indirect + github.com/tklauser/go-sysconf v0.3.14 // indirect + github.com/tklauser/numcpus v0.9.0 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.2.12 // indirect + github.com/ulikunitz/xz v0.5.12 // indirect + github.com/xdg-go/pbkdf2 v1.0.0 // indirect + github.com/xdg-go/scram v1.1.2 // indirect + github.com/xdg-go/stringprep v1.0.4 // indirect + github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect + github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d // indirect + github.com/xuri/nfp v0.0.0-20240318013403-ab9948c2c4a7 // indirect + github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect + github.com/yusufpapurcu/wmi v1.2.4 // indirect + go.uber.org/multierr v1.11.0 // indirect + go4.org v0.0.0-20230225012048-214862532bf5 // indirect + golang.org/x/arch v0.11.0 // indirect + golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect + golang.org/x/image v0.21.0 // indirect + golang.org/x/mod v0.21.0 // indirect + golang.org/x/net v0.30.0 // indirect + golang.org/x/sys v0.26.0 // indirect + golang.org/x/time v0.7.0 // indirect + golang.org/x/tools v0.26.0 // indirect + google.golang.org/protobuf v1.35.1 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + gorm.io/hints v1.1.2 // indirect + gorm.io/plugin/dbresolver v1.5.3 // indirect + howett.net/plist v1.0.1 // indirect + modernc.org/fileutil v1.3.0 // indirect + modernc.org/libc v1.61.0 // indirect + modernc.org/mathutil v1.6.0 // indirect + modernc.org/memory v1.8.0 // indirect + modernc.org/sqlite v1.33.1 // indirect +) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/go.sum b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/go.sum new file mode 100644 index 000000000..5cb43179e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/go.sum @@ -0,0 +1,882 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0/go.mod h1:ON4tFdPTwRcgWEaVDrN3584Ef+b7GgSJaXxe5fW9t4M= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.1/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.1/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.1 h1:lGlwhPtrX6EVml1hO0ivjkUxsSyl4dsiw9qcA1k/3IQ= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.1/go.mod h1:RKUqNu35KJYcVG/fqTRqmuXJZYNhYkBrnC/hX7yGbTA= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1 h1:sO0/P7g68FrryJzljemN+6GTssUXdANk6aJ7T1ZxnsQ= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.5.1/go.mod h1:h8hyGFDsU5HMivxiS2iYFZsgDbU9OnnJ163x5UGVKYo= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.1 h1:6oNBlSdi1QqM1PNW7FPA6xOGA5UNsXnkaYZz9vdPGhA= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.1/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.0/go.mod h1:Q28U+75mpCaSCDowNEmhIo/rmgdkqmkmzI7N6TGR4UY= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1 h1:MyVTgWR8qd/Jw1Le0NZebGBUCLbtak3bJ3z1OlqZBpw= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1/go.mod h1:GpPjLhVR9dnUoJMyHWSPy71xY9/lcmpzIPZXmF0FCVY= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v0.8.0/go.mod h1:cw4zVQgBby0Z5f2v0itn6se2dDP17nTjbZFXW5uPyHA= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0 h1:D3occbWoio4EBLkbkevetNMAVX197GkzbUMtqjGWn80= +github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0/go.mod h1:bTSOgj05NGRuHHhQwAdPnYr9TOdNmKlZTgGLL6nyAdI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.0/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.2.1 h1:DzHpqpoJVaCgOUdVHxE8QB52S6NiVdDQvGlny1qvPqA= +github.com/AzureAD/microsoft-authentication-library-for-go v1.2.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= +github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= +github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= +github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM= +github.com/alex-ant/gomath v0.0.0-20160516115720-89013a210a82 h1:7dONQ3WNZ1zy960TmkxJPuwoolZwL7xKtpcM04MBnt4= +github.com/alex-ant/gomath v0.0.0-20160516115720-89013a210a82/go.mod h1:nLnM0KdK1CmygvjpDUO6m1TjSsiQtL61juhNsvV/JVI= +github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible h1:8psS8a+wKfiLt1iVDX79F7Y6wUM49Lcha2FMXt4UM8g= +github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= +github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= +github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA= +github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= +github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU= +github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= +github.com/bmatcuk/doublestar/v4 v4.6.1 h1:FH9SifrbvJhnlQpztAx++wlkk70QBf0iBWDwNy7PA4I= +github.com/bmatcuk/doublestar/v4 v4.6.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= +github.com/bmatcuk/doublestar/v4 v4.7.1 h1:fdDeAqgT47acgwd9bd9HxJRDmc9UAmPpc+2m0CXv75Q= +github.com/bmatcuk/doublestar/v4 v4.7.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= +github.com/bodgit/plumbing v1.3.0 h1:pf9Itz1JOQgn7vEOE7v7nlEfBykYqvUYioC61TwWCFU= +github.com/bodgit/plumbing v1.3.0/go.mod h1:JOTb4XiRu5xfnmdnDJo6GmSbSbtSyufrsyZFByMtKEs= +github.com/bodgit/sevenzip v1.5.2 h1:acMIYRaqoHAdeu9LhEGGjL9UzBD4RNf9z7+kWDNignI= +github.com/bodgit/sevenzip v1.5.2/go.mod h1:gTGzXA67Yko6/HLSD0iK4kWaWzPlPmLfDO73jTjSRqc= +github.com/bodgit/windows v1.0.1 h1:tF7K6KOluPYygXa3Z2594zxlkbKPAOvqr97etrGNIz4= +github.com/bodgit/windows v1.0.1/go.mod h1:a6JLwrB4KrTR5hBpp8FI9/9W9jJfeQ2h4XDXU74ZCdM= +github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= +github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= +github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= +github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= +github.com/bytedance/sonic v1.12.2 h1:oaMFuRTpMHYLpCntGca65YWt5ny+wAceDERTkT2L9lg= +github.com/bytedance/sonic v1.12.2/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk= +github.com/bytedance/sonic v1.12.3 h1:W2MGa7RCU1QTeYRTPE3+88mVC0yXmsRQRChiyVocVjU= +github.com/bytedance/sonic v1.12.3/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM= +github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/casbin/casbin/v2 v2.100.0 h1:aeugSNjjHfCrgA22nHkVvw2xsscboHv5r0a13ljQKGQ= +github.com/casbin/casbin/v2 v2.100.0/go.mod h1:LO7YPez4dX3LgoTCqSQAleQDo0S0BeZBDxYnPUl95Ng= +github.com/casbin/gorm-adapter/v3 v3.28.0 h1:ORF8prF6SfaipdgT1fud+r1Tp5J0uul8QaKJHqCPY/o= +github.com/casbin/gorm-adapter/v3 v3.28.0/go.mod h1:aftWi0cla0CC1bHQVrSFzBcX/98IFK28AvuPppCQgTs= +github.com/casbin/govaluate v1.2.0 h1:wXCXFmqyY+1RwiKfYo3jMKyrtZmOL3kHwaqDyCPOYak= +github.com/casbin/govaluate v1.2.0/go.mod h1:G/UnbIjZk/0uMNaLwZZmFQrR72tYRZWQkO70si/iR7A= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/clbanning/mxj v1.8.4 h1:HuhwZtbyvyOw+3Z1AowPkU87JkJUSv751ELWaiTpj8I= +github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= +github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/dave/jennifer v1.6.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/dsnet/compress v0.0.1 h1:PlZu0n3Tuv04TzpfPbrnI0HW/YwodEXDS+oPKahKF0Q= +github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5JflhBbQEHo= +github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/elastic/go-sysinfo v1.0.2 h1:Wq1bOgnSz7Obl7DbMjbn0tzx1bE5G8Cfy3MVFa6C1Cc= +github.com/elastic/go-sysinfo v1.0.2/go.mod h1:O/D5m1VpYLwGjCYzEt63g3Z1uO3jXfwyzzjiW90t8cY= +github.com/elastic/go-sysinfo v1.14.2 h1:DeIy+pVfdRsd08Nx2Xjh+dUS+jrEEI7LGc29U/BKVWo= +github.com/elastic/go-sysinfo v1.14.2/go.mod h1:jPSuTgXG+dhhh0GKIyI2Cso+w5lPJ5PvVqKlL8LV/Hk= +github.com/elastic/go-windows v1.0.0 h1:qLURgZFkkrYyTTkvYpsZIgf83AUsdIHfvlJaqaZ7aSY= +github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6CcloAxnPgU= +github.com/elastic/go-windows v1.0.2 h1:yoLLsAsV5cfg9FLhZ9EXZ2n2sQFKeDYrHenkcivY4vI= +github.com/elastic/go-windows v1.0.2/go.mod h1:bGcDpBzXgYSqM0Gx3DM4+UxFj300SZLixie9u9ixLM8= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/flipped-aurora/ws v1.0.2 h1:oEUz7sgrbPENvgli7Q4QpC0NIEbJucgR4yjcDMg/AjY= +github.com/flipped-aurora/ws v1.0.2/go.mod h1:RdyM2Fnvxx7f7A6WSmU1aAhDrQIAVW7LS/0LsAUE5mE= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/fvbock/endless v0.0.0-20170109170031-447134032cb6 h1:6VSn3hB5U5GeA6kQw4TwWIWbOhtvR2hmbBJnTOtqTWc= +github.com/fvbock/endless v0.0.0-20170109170031-447134032cb6/go.mod h1:YxOVT5+yHzKvwhsiSIWmbAYM3Dr9AEEbER2dVayfBkg= +github.com/gabriel-vasile/mimetype v1.4.5 h1:J7wGKdGu33ocBOhGy0z653k/lFKLFDPJMG8Gql0kxn4= +github.com/gabriel-vasile/mimetype v1.4.5/go.mod h1:ibHel+/kbxn9x2407k1izTA1S81ku1z/DlgOW2QE0M4= +github.com/gabriel-vasile/mimetype v1.4.6 h1:3+PzJTKLkvgjeTbts6msPJt4DixhT4YtFNf1gtGe3zc= +github.com/gabriel-vasile/mimetype v1.4.6/go.mod h1:JX1qVKqZd40hUPpAfiNTe0Sne7hdfKSbOqqmkq8GCXc= +github.com/gammazero/toposort v0.1.1 h1:OivGxsWxF3U3+U80VoLJ+f50HcPU1MIqE1JlKzoJ2Eg= +github.com/gammazero/toposort v0.1.1/go.mod h1:H2cozTnNpMw0hg2VHAYsAxmkHXBYroNangj2NTBQDvw= +github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4= +github.com/gin-contrib/gzip v0.0.6/go.mod h1:QOJlmV2xmayAjkNS2Y8NQsMneuRShOU/kjovCXNuzzk= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU= +github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/glebarez/go-sqlite v1.22.0 h1:uAcMJhaA6r3LHMTFgP0SifzgXg46yJkgxqyuyec+ruQ= +github.com/glebarez/go-sqlite v1.22.0/go.mod h1:PlBIdHe0+aUEFn+r2/uthrWq4FxbzugL0L8Li6yQJbc= +github.com/glebarez/sqlite v1.11.0 h1:wSG0irqzP6VurnMEpFGer5Li19RpIRi2qvQz++w0GMw= +github.com/glebarez/sqlite v1.11.0/go.mod h1:h8/o8j5wiAsqSPoWELDUdJXhjAhsVliSn7bWZjOhrgQ= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= +github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= +github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= +github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9ZY= +github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= +github.com/go-playground/validator/v10 v10.7.0/go.mod h1:xm76BBt941f7yWdGnI2DVPFFg1UK3YY04qifoXU3lOk= +github.com/go-playground/validator/v10 v10.22.1 h1:40JcKH+bBNGFczGuoBYgX4I6m/i27HYW8P9FDk5PbgA= +github.com/go-playground/validator/v10 v10.22.1/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= +github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= +github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA= +github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= +github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= +github.com/gofrs/uuid/v5 v5.3.0 h1:m0mUMr+oVYUdxpMLgSYCZiXe7PuVPnI94+OMeVBNedk= +github.com/gofrs/uuid/v5 v5.3.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= +github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= +github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= +github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd h1:gbpYu9NMq8jhDVbvlGkMFWCjLFlqqEZjEmObmhUy6Vo= +github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0= +github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= +github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/huaweicloud/huaweicloud-sdk-go-obs v3.24.6+incompatible h1:/2MdLc7zHJqzV7J2uVGaoGymVobB/OHC8wmEyWRaK68= +github.com/huaweicloud/huaweicloud-sdk-go-obs v3.24.6+incompatible/go.mod h1:l7VUhRbTKCzdOacdT4oWCwATKyvZqUOlOqr0Ous3k4s= +github.com/huaweicloud/huaweicloud-sdk-go-obs v3.24.9+incompatible h1:XQVXdk+WAJ4fSNB6mMRuYNvFWou7BZs6SZB925hPrnk= +github.com/huaweicloud/huaweicloud-sdk-go-obs v3.24.9+incompatible/go.mod h1:l7VUhRbTKCzdOacdT4oWCwATKyvZqUOlOqr0Ous3k4s= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.7.1 h1:x7SYsPBYDkHDksogeSmZZ5xzThcTgRz++I5E+ePFUcs= +github.com/jackc/pgx/v5 v5.7.1/go.mod h1:e7O26IywZZ+naJtWWos6i6fvWK+29etgITqrqHLfoZA= +github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= +github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= +github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= +github.com/jcmturner/gofork v1.7.6/go.mod h1:1622LH6i/EZqLloHfE7IeZ0uEJwMSUyQ/nDd82IeqRo= +github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= +github.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP+F6aCACiMrs= +github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 h1:rp+c0RAYOWj8l6qbCUTSiRLG/iKnW3K3/QfPPuSsBt4= +github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak= +github.com/jordan-wright/email v4.0.1-0.20210109023952-943e75fe5223+incompatible h1:jdpOPRN1zP63Td1hDQbZW73xKmzDvZHzVdNYxhnTMDA= +github.com/jordan-wright/email v4.0.1-0.20210109023952-943e75fe5223+incompatible/go.mod h1:1c7szIrayyPPB/987hsnvNzLushdWf4o/79s3P08L8A= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= +github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM= +github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= +github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/lib/pq v1.10.2 h1:AqzbZs4ZoCBp+GtejcpCpcxM3zlSMx29dXbUSeVtJb8= +github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 h1:7UMa6KCCMjZEMDtTVdcGu0B1GmmC7QJKiCCjyTAWQy0= +github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/matishsiao/goInfo v0.0.0-20210923090445-da2e3fa8d45f/go.mod h1:aEt7p9Rvh67BYApmZwNDPpgircTO2kgdmDUoF/1QmwA= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= +github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= +github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= +github.com/mholt/archiver/v4 v4.0.0-alpha.8 h1:tRGQuDVPh66WCOelqe6LIGh0gwmfwxUrSSDunscGsRM= +github.com/mholt/archiver/v4 v4.0.0-alpha.8/go.mod h1:5f7FUYGXdJWUjESffJaYR4R60VhnHxb2X3T1teMyv5A= +github.com/microsoft/go-mssqldb v1.6.0/go.mod h1:00mDtPbeQCRGC1HwOOR5K/gr30P1NcEG0vx6Kbv2aJU= +github.com/microsoft/go-mssqldb v1.7.2 h1:CHkFJiObW7ItKTJfHo1QX7QBBD1iV+mn1eOyRP3b/PA= +github.com/microsoft/go-mssqldb v1.7.2/go.mod h1:kOvZKUdrhhFQmxLZqbwUV0rHkNkZpthMITIb2Ko1IoA= +github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/mojocn/base64Captcha v1.3.6 h1:gZEKu1nsKpttuIAQgWHO+4Mhhls8cAKyiV2Ew03H+Tw= +github.com/mojocn/base64Captcha v1.3.6/go.mod h1:i5CtHvm+oMbj1UzEPXaA8IH/xHFZ3DGY3Wh3dBpZ28E= +github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= +github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8eaE= +github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= +github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60= +github.com/mozillazg/go-httpheader v0.4.0 h1:aBn6aRXtFzyDLZ4VIRLsZbbJloagQfMnCiYgOq6hK4w= +github.com/mozillazg/go-httpheader v0.4.0/go.mod h1:PuT8h0pw6efvp8ZeUec1Rs7dwjK08bt6gKSReGMqtdA= +github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= +github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= +github.com/nwaples/rardecode/v2 v2.0.0-beta.2 h1:e3mzJFJs4k83GXBEiTaQ5HgSc/kOK8q0rDaRO0MPaOk= +github.com/nwaples/rardecode/v2 v2.0.0-beta.2/go.mod h1:yntwv/HfMc/Hbvtq9I19D1n58te3h6KsqCf3GxyfBGY= +github.com/nwaples/rardecode/v2 v2.0.0-beta.3 h1:evQTW0IjM2GAL5AaPHiQrT+laWohkt5zHKA3yCsGQGU= +github.com/nwaples/rardecode/v2 v2.0.0-beta.3/go.mod h1:yntwv/HfMc/Hbvtq9I19D1n58te3h6KsqCf3GxyfBGY= +github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= +github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= +github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= +github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= +github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= +github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= +github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= +github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= +github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0 h1:c8R11WC8m7KNMkTv/0+Be8vvwo4I3/Ut9AC2FW8fX3U= +github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/qiniu/dyn v1.3.0/go.mod h1:E8oERcm8TtwJiZvkQPbcAh0RL8jO1G0VXJMW3FAWdkk= +github.com/qiniu/go-sdk/v7 v7.23.0 h1:4wYB4EGE6MBhvjtE/FZH/mIUt/VH6WjzBucU3VfPwhg= +github.com/qiniu/go-sdk/v7 v7.23.0/go.mod h1:OXsAVU5YrLLtVi4iPFpP80jzb3SRBAczrGkcqQmWhcY= +github.com/qiniu/qmgo v1.1.8 h1:E64M+P59aqQpXKI24ClVtluYkLaJLkkeD2hTVhrdMks= +github.com/qiniu/qmgo v1.1.8/go.mod h1:QvZkzWNEv0buWPx0kdZsSs6URhESVubacxFPlITmvB8= +github.com/qiniu/x v1.10.5/go.mod h1:03Ni9tj+N2h2aKnAz+6N0Xfl8FwMEDRC2PAlxekASDs= +github.com/redis/go-redis/v9 v9.6.1 h1:HHDteefn6ZkTtY5fGUE8tj8uy85AHk6zP7CpzIAM0y4= +github.com/redis/go-redis/v9 v9.6.1/go.mod h1:0C0c6ycQsdpVNQpxb1njEQIqkx5UcsM8FJCQLgE9+RA= +github.com/redis/go-redis/v9 v9.6.2 h1:w0uvkRbc9KpgD98zcvo5IrVUsn0lXpRMuhNgiHDJzdk= +github.com/redis/go-redis/v9 v9.6.2/go.mod h1:0C0c6ycQsdpVNQpxb1njEQIqkx5UcsM8FJCQLgE9+RA= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM= +github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk= +github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= +github.com/richardlehane/msoleps v1.0.4 h1:WuESlvhX3gH2IHcd8UqyCuFY5yiq/GR/yqaSM/9/g00= +github.com/richardlehane/msoleps v1.0.4/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= +github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= +github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk= +github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk= +github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0= +github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= +github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= +github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= +github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI= +github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk= +github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= +github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/songzhibin97/gkit v1.2.13 h1:paY0XJkdRuy9/8k9nTnbdrzo8pC22jIIFldUkOQv5nU= +github.com/songzhibin97/gkit v1.2.13/go.mod h1:38CreNR27eTGaG1UMGihrXqI4xc3nGfYxLVKKVx6Ngg= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= +github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/swaggo/files v1.0.1 h1:J1bVJ4XHZNq0I46UU90611i9/YzdrF7x92oX1ig5IdE= +github.com/swaggo/files v1.0.1/go.mod h1:0qXmMNH6sXNf+73t65aKeB+ApmgxdnkQzVTAj2uaMUg= +github.com/swaggo/gin-swagger v1.6.0 h1:y8sxvQ3E20/RCyrXeFfg60r6H0Z+SwpTjMYsMm+zy8M= +github.com/swaggo/gin-swagger v1.6.0/go.mod h1:BG00cCEy294xtVpyIAHG6+e2Qzj/xKlRdOqDkvq0uzo= +github.com/swaggo/swag v1.16.3 h1:PnCYjPCah8FK4I26l2F/KQ4yz3sILcVUN3cTlBFA9Pg= +github.com/swaggo/swag v1.16.3/go.mod h1:DImHIuOFXKpMFAQjcC7FG4m3Dg4+QuUgUzJmKjI/gRk= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.563/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.563/go.mod h1:uom4Nvi9W+Qkom0exYiJ9VWJjXwyxtPYTkKkaLMlfE0= +github.com/tencentyun/cos-go-sdk-v5 v0.7.55 h1:9DfH3umWUd0I2jdqcUxrU1kLfUPOydULNy4T9qN5PF8= +github.com/tencentyun/cos-go-sdk-v5 v0.7.55/go.mod h1:8+hG+mQMuRP/OIS9d83syAvXvrMj9HhkND6Q1fLghw0= +github.com/therootcompany/xz v1.0.1 h1:CmOtsn1CbtmyYiusbfmhmkpAAETj0wBIH6kCYaX+xzw= +github.com/therootcompany/xz v1.0.1/go.mod h1:3K3UH1yCKgBneZYhuQUvJ9HPD19UEXEI0BWbMn8qNMY= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= +github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU= +github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY= +github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY= +github.com/tklauser/numcpus v0.8.0/go.mod h1:ZJZlAY+dmR4eut8epnzf0u/VwodKmryxR8txiloSqBE= +github.com/tklauser/numcpus v0.9.0 h1:lmyCHtANi8aRUgkckBgoDk1nHCux3n2cgkJLXdQGPDo= +github.com/tklauser/numcpus v0.9.0/go.mod h1:SN6Nq1O3VychhC1npsWostA+oW+VOQTxZrS604NSRyI= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= +github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= +github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc= +github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/unrolled/secure v1.15.0 h1:q7x+pdp8jAHnbzxu6UheP8fRlG/rwYTb8TPuQ3rn9Og= +github.com/unrolled/secure v1.15.0/go.mod h1:BmF5hyM6tXczk3MpQkFf1hpKSRqCyhqcbiQtiAF7+40= +github.com/unrolled/secure v1.16.0 h1:XgdAsS/Zl50ZfZPRJK6WpicFttfrsFYFd0+ONDBJubU= +github.com/unrolled/secure v1.16.0/go.mod h1:BmF5hyM6tXczk3MpQkFf1hpKSRqCyhqcbiQtiAF7+40= +github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= +github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= +github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= +github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY= +github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4= +github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= +github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8= +github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM= +github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= +github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= +github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d h1:llb0neMWDQe87IzJLS4Ci7psK/lVsjIS2otl+1WyRyY= +github.com/xuri/efp v0.0.0-20240408161823-9ad904a10d6d/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI= +github.com/xuri/excelize/v2 v2.8.1 h1:pZLMEwK8ep+CLIUWpWmvW8IWE/yxqG0I1xcN6cVMGuQ= +github.com/xuri/excelize/v2 v2.8.1/go.mod h1:oli1E4C3Pa5RXg1TBXn4ENCXDV5JUMlBluUhG7c+CEE= +github.com/xuri/excelize/v2 v2.9.0 h1:1tgOaEq92IOEumR1/JfYS/eR0KHOCsRv/rYXXh6YJQE= +github.com/xuri/excelize/v2 v2.9.0/go.mod h1:uqey4QBZ9gdMeWApPLdhm9x+9o2lq4iVmjiLfBS5hdE= +github.com/xuri/nfp v0.0.0-20240318013403-ab9948c2c4a7 h1:hPVCafDV85blFTabnqKgNhDCkJX25eik94Si9cTER4A= +github.com/xuri/nfp v0.0.0-20240318013403-ab9948c2c4a7/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ= +github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= +github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= +github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM= +github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= +github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.mongodb.org/mongo-driver v1.11.6/go.mod h1:G9TgswdsWjX4tmDA5zfs2+6AEPpYJwqblyjsfuh8oXY= +go.mongodb.org/mongo-driver v1.17.0 h1:Hp4q2MCjvY19ViwimTs00wHi7G4yzxh4/2+nTx8r40k= +go.mongodb.org/mongo-driver v1.17.0/go.mod h1:wwWm/+BuOddhcq3n68LKRmgk2wXzmF6s0SFOa0GINL4= +go.mongodb.org/mongo-driver v1.17.1 h1:Wic5cJIwJgSpBhe3lx3+/RybR5PiYRMpVFgO7cOHyIM= +go.mongodb.org/mongo-driver v1.17.1/go.mod h1:wwWm/+BuOddhcq3n68LKRmgk2wXzmF6s0SFOa0GINL4= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8= +go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= +go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= +go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go4.org v0.0.0-20230225012048-214862532bf5 h1:nifaUDeh+rPaBCMPMQHZmvJf+QdpLFnuQPwx+LxVmtc= +go4.org v0.0.0-20230225012048-214862532bf5/go.mod h1:F57wTi5Lrj6WLyswp5EYV1ncrEbFGHD4hhz6S1ZYeaU= +golang.org/x/arch v0.10.0 h1:S3huipmSclq3PJMNe76NGwkBR504WFkQ5dhzWzP8ZW8= +golang.org/x/arch v0.10.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= +golang.org/x/arch v0.11.0 h1:KXV8WWKCXm6tRpLirl2szsO5j/oOODwZf4hATmGVNs4= +golang.org/x/arch v0.11.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= +golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= +golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= +golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= +golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.13.0/go.mod h1:6mmbMOeV28HuMTgA6OSRkdXKYw/t5W9Uwn2Yv1r3Yxk= +golang.org/x/image v0.20.0 h1:7cVCUjQwfL18gyBJOmYvptfSHS8Fb3YUDtfLIZ7Nbpw= +golang.org/x/image v0.20.0/go.mod h1:0a88To4CYVBAHp5FXJm8o7QbUl37Vd85ply1vyD8auM= +golang.org/x/image v0.21.0 h1:c5qV36ajHpdj4Qi0GnE0jUc/yuo33OLFaa0d+crTD5s= +golang.org/x/image v0.21.0/go.mod h1:vUbsLavqK/W303ZroQQVKQ+Af3Yl6Uz1Ppu5J/cLz78= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= +golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= +golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190425145619-16072639606e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= +golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= +golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE= +golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg= +golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ= +golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/datatypes v1.2.2 h1:sdn7ZmG4l7JWtMDUb3L98f2Ym7CO5F8mZLlrQJMfF9g= +gorm.io/datatypes v1.2.2/go.mod h1:f4BsLcFAX67szSv8svwLRjklArSHAvHLeE3pXAS5DZI= +gorm.io/datatypes v1.2.3 h1:95ucr9ip9dZMPhB3Tc9zbcoAi62hxYAgHicu7SLjK4g= +gorm.io/datatypes v1.2.3/go.mod h1:f4BsLcFAX67szSv8svwLRjklArSHAvHLeE3pXAS5DZI= +gorm.io/driver/mysql v1.5.7 h1:MndhOPYOfEp2rHKgkZIhJ16eVUIRf2HmzgoPmh7FCWo= +gorm.io/driver/mysql v1.5.7/go.mod h1:sEtPWMiqiN1N1cMXoXmBbd8C6/l+TESwriotuRRpkDM= +gorm.io/driver/postgres v1.5.9 h1:DkegyItji119OlcaLjqN11kHoUgZ/j13E0jkJZgD6A8= +gorm.io/driver/postgres v1.5.9/go.mod h1:DX3GReXH+3FPWGrrgffdvCk3DQ1dwDPdmbenSkweRGI= +gorm.io/driver/sqlite v1.5.0 h1:zKYbzRCpBrT1bNijRnxLDJWPjVfImGEn0lSnUY5gZ+c= +gorm.io/driver/sqlite v1.5.0/go.mod h1:kDMDfntV9u/vuMmz8APHtHF0b4nyBB7sfCieC6G8k8I= +gorm.io/driver/sqlserver v1.5.3 h1:rjupPS4PVw+rjJkfvr8jn2lJ8BMhT4UW5FwuJY0P3Z0= +gorm.io/driver/sqlserver v1.5.3/go.mod h1:B+CZ0/7oFJ6tAlefsKoyxdgDCXJKSgwS2bMOQZT0I00= +gorm.io/gen v0.3.26 h1:sFf1j7vNStimPRRAtH4zz5NiHM+1dr6eA9aaRdplyhY= +gorm.io/gen v0.3.26/go.mod h1:a5lq5y3w4g5LMxBcw0wnO6tYUCdNutWODq5LrIt75LE= +gorm.io/gorm v1.24.7-0.20230306060331-85eaf9eeda11/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= +gorm.io/gorm v1.25.0/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= +gorm.io/gorm v1.25.7-0.20240204074919-46816ad31dde/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8= +gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ= +gorm.io/hints v1.1.2 h1:b5j0kwk5p4+3BtDtYqqfY+ATSxjj+6ptPgVveuynn9o= +gorm.io/hints v1.1.2/go.mod h1:/ARdpUHAtyEMCh5NNi3tI7FsGh+Cj/MIUlvNxCNCFWg= +gorm.io/plugin/dbresolver v1.5.3 h1:wFwINGZZmttuu9h7XpvbDHd8Lf9bb8GNzp/NpAMV2wU= +gorm.io/plugin/dbresolver v1.5.3/go.mod h1:TSrVhaUg2DZAWP3PrHlDlITEJmNOkL0tFTjvTEsQ4XE= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +howett.net/plist v0.0.0-20181124034731-591f970eefbb h1:jhnBjNi9UFpfpl8YZhA9CrOqpnJdvzuiHsl/dnxl11M= +howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= +howett.net/plist v1.0.1 h1:37GdZ8tP09Q35o9ych3ehygcsL+HqKSwzctveSlarvM= +howett.net/plist v1.0.1/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= +modernc.org/cc/v4 v4.21.4 h1:3Be/Rdo1fpr8GrQ7IVw9OHtplU4gWbb+wNgeoBMmGLQ= +modernc.org/cc/v4 v4.21.4/go.mod h1:HM7VJTZbUCR3rV8EYBi9wxnJ0ZBRiGE5OeGXNA0IsLQ= +modernc.org/ccgo/v4 v4.21.0 h1:kKPI3dF7RIag8YcToh5ZwDcVMIv6VGa0ED5cvh0LMW4= +modernc.org/ccgo/v4 v4.21.0/go.mod h1:h6kt6H/A2+ew/3MW/p6KEoQmrq/i3pr0J/SiwiaF/g0= +modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE= +modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ= +modernc.org/gc/v2 v2.5.0 h1:bJ9ChznK1L1mUtAQtxi0wi5AtAs5jQuw4PrPHO5pb6M= +modernc.org/gc/v2 v2.5.0/go.mod h1:wzN5dK1AzVGoH6XOzc3YZ+ey/jPgYHLuVckd62P0GYU= +modernc.org/libc v1.61.0 h1:eGFcvWpqlnoGwzZeZe3PWJkkKbM/3SUGyk1DVZQ0TpE= +modernc.org/libc v1.61.0/go.mod h1:DvxVX89wtGTu+r72MLGhygpfi3aUGgZRdAYGCAVVud0= +modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= +modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= +modernc.org/memory v1.8.0 h1:IqGTL6eFMaDZZhEWwcREgeMXYwmW83LYW8cROZYkg+E= +modernc.org/memory v1.8.0/go.mod h1:XPZ936zp5OMKGWPqbD3JShgd/ZoQ7899TUuQqxY+peU= +modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= +modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sortutil v1.2.0 h1:jQiD3PfS2REGJNzNCMMaLSp/wdMNieTbKX920Cqdgqc= +modernc.org/sortutil v1.2.0/go.mod h1:TKU2s7kJMf1AE84OoiGppNHJwvB753OYfNl2WRb++Ss= +modernc.org/sqlite v1.33.1 h1:trb6Z3YYoeM9eDL1O8do81kP+0ejv+YzgyFo+Gwy0nM= +modernc.org/sqlite v1.33.1/go.mod h1:pXV2xHxhzXZsgT/RtTFAPY6JJDEvOTcTdwADQCCWD4k= +modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA= +modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0= +modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= +modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +nhooyr.io/websocket v1.8.17 h1:KEVeLJkUywCKVsnLIDlD/5gtayKp8VoCkksHCGGfT9Y= +nhooyr.io/websocket v1.8.17/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/db_list.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/db_list.go new file mode 100644 index 000000000..90eef9ea1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/db_list.go @@ -0,0 +1,36 @@ +package initialize + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/config" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "gorm.io/gorm" +) + +const sys = "system" + +func DBList() { + dbMap := make(map[string]*gorm.DB) + for _, info := range global.GVA_CONFIG.DBList { + if info.Disable { + continue + } + switch info.Type { + case "mysql": + dbMap[info.AliasName] = GormMysqlByConfig(config.Mysql{GeneralDB: info.GeneralDB}) + case "mssql": + dbMap[info.AliasName] = GormMssqlByConfig(config.Mssql{GeneralDB: info.GeneralDB}) + case "pgsql": + dbMap[info.AliasName] = GormPgSqlByConfig(config.Pgsql{GeneralDB: info.GeneralDB}) + case "oracle": + dbMap[info.AliasName] = GormOracleByConfig(config.Oracle{GeneralDB: info.GeneralDB}) + default: + continue + } + } + // 做特殊判断,是否有迁移 + // 适配低版本迁移多数据库版本 + if sysDB, ok := dbMap[sys]; ok { + global.GVA_DB = sysDB + } + global.GVA_DBList = dbMap +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/ensure_tables.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/ensure_tables.go new file mode 100644 index 000000000..daa79f353 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/ensure_tables.go @@ -0,0 +1,106 @@ +package initialize + +import ( + "context" + adapter "github.com/casbin/gorm-adapter/v3" + "github.com/flipped-aurora/gin-vue-admin/server/model/example" + sysModel "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/service/system" + "gorm.io/gorm" +) + +const initOrderEnsureTables = system.InitOrderExternal - 1 + +type ensureTables struct{} + +// auto run +func init() { + system.RegisterInit(initOrderEnsureTables, &ensureTables{}) +} + +func (ensureTables) InitializerName() string { + return "ensure_tables_created" +} +func (e *ensureTables) InitializeData(ctx context.Context) (next context.Context, err error) { + return ctx, nil +} + +func (e *ensureTables) DataInserted(ctx context.Context) bool { + return true +} + +func (e *ensureTables) MigrateTable(ctx context.Context) (context.Context, error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + tables := []interface{}{ + sysModel.SysApi{}, + sysModel.SysUser{}, + sysModel.SysBaseMenu{}, + sysModel.SysAuthority{}, + sysModel.JwtBlacklist{}, + sysModel.SysDictionary{}, + sysModel.SysAutoCodeHistory{}, + sysModel.SysOperationRecord{}, + sysModel.SysDictionaryDetail{}, + sysModel.SysBaseMenuParameter{}, + sysModel.SysBaseMenuBtn{}, + sysModel.SysAuthorityBtn{}, + sysModel.SysAutoCodePackage{}, + sysModel.SysExportTemplate{}, + sysModel.Condition{}, + sysModel.JoinTemplate{}, + sysModel.SysParams{}, + + adapter.CasbinRule{}, + + example.ExaFile{}, + example.ExaCustomer{}, + example.ExaFileChunk{}, + example.ExaFileUploadAndDownload{}, + } + for _, t := range tables { + _ = db.AutoMigrate(&t) + // 视图 authority_menu 会被当成表来创建,引发冲突错误(更新版本的gorm似乎不会) + // 由于 AutoMigrate() 基本无需考虑错误,因此显式忽略 + } + return ctx, nil +} + +func (e *ensureTables) TableCreated(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + tables := []interface{}{ + sysModel.SysApi{}, + sysModel.SysUser{}, + sysModel.SysBaseMenu{}, + sysModel.SysAuthority{}, + sysModel.JwtBlacklist{}, + sysModel.SysDictionary{}, + sysModel.SysAutoCodeHistory{}, + sysModel.SysOperationRecord{}, + sysModel.SysDictionaryDetail{}, + sysModel.SysBaseMenuParameter{}, + sysModel.SysBaseMenuBtn{}, + sysModel.SysAuthorityBtn{}, + sysModel.SysAutoCodePackage{}, + sysModel.SysExportTemplate{}, + sysModel.Condition{}, + sysModel.JoinTemplate{}, + + adapter.CasbinRule{}, + + example.ExaFile{}, + example.ExaCustomer{}, + example.ExaFileChunk{}, + example.ExaFileUploadAndDownload{}, + } + yes := true + for _, t := range tables { + yes = yes && db.Migrator().HasTable(t) + } + return yes +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm.go new file mode 100644 index 000000000..398a823e4 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm.go @@ -0,0 +1,77 @@ +package initialize + +import ( + "os" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/example" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + + "go.uber.org/zap" + "gorm.io/gorm" +) + +func Gorm() *gorm.DB { + switch global.GVA_CONFIG.System.DbType { + case "mysql": + global.GVA_ACTIVE_DBNAME = &global.GVA_CONFIG.Mysql.Dbname + return GormMysql() + case "pgsql": + global.GVA_ACTIVE_DBNAME = &global.GVA_CONFIG.Pgsql.Dbname + return GormPgSql() + case "oracle": + global.GVA_ACTIVE_DBNAME = &global.GVA_CONFIG.Oracle.Dbname + return GormOracle() + case "mssql": + global.GVA_ACTIVE_DBNAME = &global.GVA_CONFIG.Mssql.Dbname + return GormMssql() + case "sqlite": + global.GVA_ACTIVE_DBNAME = &global.GVA_CONFIG.Sqlite.Dbname + return GormSqlite() + default: + global.GVA_ACTIVE_DBNAME = &global.GVA_CONFIG.Mysql.Dbname + return GormMysql() + } +} + +func RegisterTables() { + db := global.GVA_DB + err := db.AutoMigrate( + + system.SysApi{}, + system.SysIgnoreApi{}, + system.SysUser{}, + system.SysBaseMenu{}, + system.JwtBlacklist{}, + system.SysAuthority{}, + system.SysDictionary{}, + system.SysOperationRecord{}, + system.SysAutoCodeHistory{}, + system.SysDictionaryDetail{}, + system.SysBaseMenuParameter{}, + system.SysBaseMenuBtn{}, + system.SysAuthorityBtn{}, + system.SysAutoCodePackage{}, + system.SysExportTemplate{}, + system.Condition{}, + system.JoinTemplate{}, + system.SysParams{}, + + example.ExaFile{}, + example.ExaCustomer{}, + example.ExaFileChunk{}, + example.ExaFileUploadAndDownload{}, + ) + if err != nil { + global.GVA_LOG.Error("register table failed", zap.Error(err)) + os.Exit(0) + } + + err = bizModel() + + if err != nil { + global.GVA_LOG.Error("register biz_table failed", zap.Error(err)) + os.Exit(0) + } + global.GVA_LOG.Info("register table success") +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_biz.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_biz.go new file mode 100644 index 000000000..9316ccc88 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_biz.go @@ -0,0 +1,14 @@ +package initialize + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" +) + +func bizModel() error { + db := global.GVA_DB + err := db.AutoMigrate() + if err != nil { + return err + } + return nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_mssql.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_mssql.go new file mode 100644 index 000000000..0ec25a7f5 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_mssql.go @@ -0,0 +1,59 @@ +/* + * @Author: 逆光飞翔 191180776@qq.com + * @Date: 2022-12-08 17:25:49 + * @LastEditors: 逆光飞翔 191180776@qq.com + * @LastEditTime: 2022-12-08 18:00:00 + * @FilePath: \server\initialize\gorm_mssql.go + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +package initialize + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/config" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/initialize/internal" + "gorm.io/driver/sqlserver" + "gorm.io/gorm" +) + +// GormMssql 初始化Mssql数据库 +// Author [LouisZhang](191180776@qq.com) +func GormMssql() *gorm.DB { + m := global.GVA_CONFIG.Mssql + if m.Dbname == "" { + return nil + } + mssqlConfig := sqlserver.Config{ + DSN: m.Dsn(), // DSN data source name + DefaultStringSize: 191, // string 类型字段的默认长度 + } + if db, err := gorm.Open(sqlserver.New(mssqlConfig), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil { + return nil + } else { + db.InstanceSet("gorm:table_options", "ENGINE="+m.Engine) + sqlDB, _ := db.DB() + sqlDB.SetMaxIdleConns(m.MaxIdleConns) + sqlDB.SetMaxOpenConns(m.MaxOpenConns) + return db + } +} + +// GormMssqlByConfig 初始化Mysql数据库用过传入配置 +func GormMssqlByConfig(m config.Mssql) *gorm.DB { + if m.Dbname == "" { + return nil + } + mssqlConfig := sqlserver.Config{ + DSN: m.Dsn(), // DSN data source name + DefaultStringSize: 191, // string 类型字段的默认长度 + } + if db, err := gorm.Open(sqlserver.New(mssqlConfig), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil { + panic(err) + } else { + db.InstanceSet("gorm:table_options", "ENGINE=InnoDB") + sqlDB, _ := db.DB() + sqlDB.SetMaxIdleConns(m.MaxIdleConns) + sqlDB.SetMaxOpenConns(m.MaxOpenConns) + return db + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_mysql.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_mysql.go new file mode 100644 index 000000000..6e496a4d3 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_mysql.go @@ -0,0 +1,55 @@ +package initialize + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/config" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/initialize/internal" + _ "github.com/go-sql-driver/mysql" + "gorm.io/driver/mysql" + "gorm.io/gorm" +) + +// GormMysql 初始化Mysql数据库 +// Author [piexlmax](https://github.com/piexlmax) +// Author [SliverHorn](https://github.com/SliverHorn) +func GormMysql() *gorm.DB { + m := global.GVA_CONFIG.Mysql + if m.Dbname == "" { + return nil + } + mysqlConfig := mysql.Config{ + DSN: m.Dsn(), // DSN data source name + DefaultStringSize: 191, // string 类型字段的默认长度 + SkipInitializeWithVersion: false, // 根据版本自动配置 + } + if db, err := gorm.Open(mysql.New(mysqlConfig), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil { + return nil + } else { + db.InstanceSet("gorm:table_options", "ENGINE="+m.Engine) + sqlDB, _ := db.DB() + sqlDB.SetMaxIdleConns(m.MaxIdleConns) + sqlDB.SetMaxOpenConns(m.MaxOpenConns) + return db + } +} + +// GormMysqlByConfig 初始化Mysql数据库用过传入配置 +func GormMysqlByConfig(m config.Mysql) *gorm.DB { + if m.Dbname == "" { + return nil + } + mysqlConfig := mysql.Config{ + DSN: m.Dsn(), // DSN data source name + DefaultStringSize: 191, // string 类型字段的默认长度 + SkipInitializeWithVersion: false, // 根据版本自动配置 + } + if db, err := gorm.Open(mysql.New(mysqlConfig), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil { + panic(err) + } else { + db.InstanceSet("gorm:table_options", "ENGINE=InnoDB") + sqlDB, _ := db.DB() + sqlDB.SetMaxIdleConns(m.MaxIdleConns) + sqlDB.SetMaxOpenConns(m.MaxOpenConns) + return db + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_oracle.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_oracle.go new file mode 100644 index 000000000..4d18c8a84 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_oracle.go @@ -0,0 +1,52 @@ +package initialize + +import ( + //"github.com/dzwvip/oracle" + "github.com/flipped-aurora/gin-vue-admin/server/config" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/initialize/internal" + + //_ "github.com/godror/godror" + "gorm.io/driver/mysql" + "gorm.io/gorm" +) + +// GormOracle 初始化oracle数据库 +// 如果需要Oracle库 放开import里的注释 把下方 mysql.Config 改为 oracle.Config ; mysql.New 改为 oracle.New +func GormOracle() *gorm.DB { + m := global.GVA_CONFIG.Oracle + if m.Dbname == "" { + return nil + } + oracleConfig := mysql.Config{ + DSN: m.Dsn(), // DSN data source name + DefaultStringSize: 191, // string 类型字段的默认长度 + } + if db, err := gorm.Open(mysql.New(oracleConfig), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil { + panic(err) + } else { + sqlDB, _ := db.DB() + sqlDB.SetMaxIdleConns(m.MaxIdleConns) + sqlDB.SetMaxOpenConns(m.MaxOpenConns) + return db + } +} + +// GormOracleByConfig 初始化Oracle数据库用过传入配置 +func GormOracleByConfig(m config.Oracle) *gorm.DB { + if m.Dbname == "" { + return nil + } + oracleConfig := mysql.Config{ + DSN: m.Dsn(), // DSN data source name + DefaultStringSize: 191, // string 类型字段的默认长度 + } + if db, err := gorm.Open(mysql.New(oracleConfig), internal.Gorm.Config(m.Prefix, m.Singular)); err != nil { + panic(err) + } else { + sqlDB, _ := db.DB() + sqlDB.SetMaxIdleConns(m.MaxIdleConns) + sqlDB.SetMaxOpenConns(m.MaxOpenConns) + return db + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_pgsql.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_pgsql.go new file mode 100644 index 000000000..625c87385 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_pgsql.go @@ -0,0 +1,50 @@ +package initialize + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/config" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/initialize/internal" + "gorm.io/driver/postgres" + "gorm.io/gorm" +) + +// GormPgSql 初始化 Postgresql 数据库 +// Author [piexlmax](https://github.com/piexlmax) +// Author [SliverHorn](https://github.com/SliverHorn) +func GormPgSql() *gorm.DB { + p := global.GVA_CONFIG.Pgsql + if p.Dbname == "" { + return nil + } + pgsqlConfig := postgres.Config{ + DSN: p.Dsn(), // DSN data source name + PreferSimpleProtocol: false, + } + if db, err := gorm.Open(postgres.New(pgsqlConfig), internal.Gorm.Config(p.Prefix, p.Singular)); err != nil { + return nil + } else { + sqlDB, _ := db.DB() + sqlDB.SetMaxIdleConns(p.MaxIdleConns) + sqlDB.SetMaxOpenConns(p.MaxOpenConns) + return db + } +} + +// GormPgSqlByConfig 初始化 Postgresql 数据库 通过参数 +func GormPgSqlByConfig(p config.Pgsql) *gorm.DB { + if p.Dbname == "" { + return nil + } + pgsqlConfig := postgres.Config{ + DSN: p.Dsn(), // DSN data source name + PreferSimpleProtocol: false, + } + if db, err := gorm.Open(postgres.New(pgsqlConfig), internal.Gorm.Config(p.Prefix, p.Singular)); err != nil { + panic(err) + } else { + sqlDB, _ := db.DB() + sqlDB.SetMaxIdleConns(p.MaxIdleConns) + sqlDB.SetMaxOpenConns(p.MaxOpenConns) + return db + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_sqlite.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_sqlite.go new file mode 100644 index 000000000..041264107 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/gorm_sqlite.go @@ -0,0 +1,42 @@ +package initialize + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/config" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/initialize/internal" + "github.com/glebarez/sqlite" + "gorm.io/gorm" +) + +// GormSqlite 初始化Sqlite数据库 +func GormSqlite() *gorm.DB { + s := global.GVA_CONFIG.Sqlite + if s.Dbname == "" { + return nil + } + + if db, err := gorm.Open(sqlite.Open(s.Dsn()), internal.Gorm.Config(s.Prefix, s.Singular)); err != nil { + panic(err) + } else { + sqlDB, _ := db.DB() + sqlDB.SetMaxIdleConns(s.MaxIdleConns) + sqlDB.SetMaxOpenConns(s.MaxOpenConns) + return db + } +} + +// GormSqliteByConfig 初始化Sqlite数据库用过传入配置 +func GormSqliteByConfig(s config.Sqlite) *gorm.DB { + if s.Dbname == "" { + return nil + } + + if db, err := gorm.Open(sqlite.Open(s.Dsn()), internal.Gorm.Config(s.Prefix, s.Singular)); err != nil { + panic(err) + } else { + sqlDB, _ := db.DB() + sqlDB.SetMaxIdleConns(s.MaxIdleConns) + sqlDB.SetMaxOpenConns(s.MaxOpenConns) + return db + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/internal/gorm.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/internal/gorm.go new file mode 100644 index 000000000..dcf388bea --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/internal/gorm.go @@ -0,0 +1,48 @@ +package internal + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/config" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "gorm.io/gorm" + "gorm.io/gorm/logger" + "gorm.io/gorm/schema" + "log" + "os" + "time" +) + +var Gorm = new(_gorm) + +type _gorm struct{} + +// Config gorm 自定义配置 +// Author [SliverHorn](https://github.com/SliverHorn) +func (g *_gorm) Config(prefix string, singular bool) *gorm.Config { + var general config.GeneralDB + switch global.GVA_CONFIG.System.DbType { + case "mysql": + general = global.GVA_CONFIG.Mysql.GeneralDB + case "pgsql": + general = global.GVA_CONFIG.Pgsql.GeneralDB + case "oracle": + general = global.GVA_CONFIG.Oracle.GeneralDB + case "sqlite": + general = global.GVA_CONFIG.Sqlite.GeneralDB + case "mssql": + general = global.GVA_CONFIG.Mssql.GeneralDB + default: + general = global.GVA_CONFIG.Mysql.GeneralDB + } + return &gorm.Config{ + Logger: logger.New(NewWriter(general, log.New(os.Stdout, "\r\n", log.LstdFlags)), logger.Config{ + SlowThreshold: 200 * time.Millisecond, + LogLevel: general.LogLevel(), + Colorful: true, + }), + NamingStrategy: schema.NamingStrategy{ + TablePrefix: prefix, + SingularTable: singular, + }, + DisableForeignKeyConstraintWhenMigrating: true, + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/internal/gorm_logger_writer.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/internal/gorm_logger_writer.go new file mode 100644 index 000000000..955503d87 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/internal/gorm_logger_writer.go @@ -0,0 +1,37 @@ +package internal + +import ( + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/config" + "go.uber.org/zap" + "gorm.io/gorm/logger" +) + +type Writer struct { + config config.GeneralDB + writer logger.Writer +} + +func NewWriter(config config.GeneralDB, writer logger.Writer) *Writer { + return &Writer{config: config, writer: writer} +} + +// Printf 格式化打印日志 +func (c *Writer) Printf(message string, data ...any) { + if c.config.LogZap { + switch c.config.LogLevel() { + case logger.Silent: + zap.L().Debug(fmt.Sprintf(message, data...)) + case logger.Error: + zap.L().Error(fmt.Sprintf(message, data...)) + case logger.Warn: + zap.L().Warn(fmt.Sprintf(message, data...)) + case logger.Info: + zap.L().Info(fmt.Sprintf(message, data...)) + default: + zap.L().Info(fmt.Sprintf(message, data...)) + } + return + } + c.writer.Printf(message, data...) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/internal/mongo.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/internal/mongo.go new file mode 100644 index 000000000..c4992d712 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/internal/mongo.go @@ -0,0 +1,29 @@ +package internal + +import ( + "context" + "fmt" + "github.com/qiniu/qmgo/options" + "go.mongodb.org/mongo-driver/event" + opt "go.mongodb.org/mongo-driver/mongo/options" + "go.uber.org/zap" +) + +var Mongo = new(mongo) + +type mongo struct{} + +func (m *mongo) GetClientOptions() []options.ClientOptions { + cmdMonitor := &event.CommandMonitor{ + Started: func(ctx context.Context, event *event.CommandStartedEvent) { + zap.L().Info(fmt.Sprintf("[MongoDB][RequestID:%d][database:%s] %s\n", event.RequestID, event.DatabaseName, event.Command), zap.String("business", "mongo")) + }, + Succeeded: func(ctx context.Context, event *event.CommandSucceededEvent) { + zap.L().Info(fmt.Sprintf("[MongoDB][RequestID:%d] [%s] %s\n", event.RequestID, event.Duration.String(), event.Reply), zap.String("business", "mongo")) + }, + Failed: func(ctx context.Context, event *event.CommandFailedEvent) { + zap.L().Error(fmt.Sprintf("[MongoDB][RequestID:%d] [%s] %s\n", event.RequestID, event.Duration.String(), event.Failure), zap.String("business", "mongo")) + }, + } + return []options.ClientOptions{{ClientOptions: &opt.ClientOptions{Monitor: cmdMonitor}}} +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/mongo.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/mongo.go new file mode 100644 index 000000000..d88afaa74 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/mongo.go @@ -0,0 +1,151 @@ +package initialize + +import ( + "context" + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/initialize/internal" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/pkg/errors" + "github.com/qiniu/qmgo" + "github.com/qiniu/qmgo/options" + "go.mongodb.org/mongo-driver/bson" + option "go.mongodb.org/mongo-driver/mongo/options" + "sort" + "strings" +) + +var Mongo = new(mongo) + +type ( + mongo struct{} + Index struct { + V any `bson:"v"` + Ns any `bson:"ns"` + Key []bson.E `bson:"key"` + Name string `bson:"name"` + } +) + +func (m *mongo) Indexes(ctx context.Context) error { + // 表名:索引列表 列: "表名": [][]string{{"index1", "index2"}} + indexMap := map[string][][]string{} + for collection, indexes := range indexMap { + err := m.CreateIndexes(ctx, collection, indexes) + if err != nil { + return err + } + } + return nil +} + +func (m *mongo) Initialization() error { + var opts []options.ClientOptions + if global.GVA_CONFIG.Mongo.IsZap { + opts = internal.Mongo.GetClientOptions() + } + ctx := context.Background() + client, err := qmgo.Open(ctx, &qmgo.Config{ + Uri: global.GVA_CONFIG.Mongo.Uri(), + Coll: global.GVA_CONFIG.Mongo.Coll, + Database: global.GVA_CONFIG.Mongo.Database, + MinPoolSize: &global.GVA_CONFIG.Mongo.MinPoolSize, + MaxPoolSize: &global.GVA_CONFIG.Mongo.MaxPoolSize, + SocketTimeoutMS: &global.GVA_CONFIG.Mongo.SocketTimeoutMs, + ConnectTimeoutMS: &global.GVA_CONFIG.Mongo.ConnectTimeoutMs, + Auth: &qmgo.Credential{ + Username: global.GVA_CONFIG.Mongo.Username, + Password: global.GVA_CONFIG.Mongo.Password, + AuthSource: global.GVA_CONFIG.Mongo.AuthSource, + }, + }, opts...) + if err != nil { + return errors.Wrap(err, "链接mongodb数据库失败!") + } + global.GVA_MONGO = client + err = m.Indexes(ctx) + if err != nil { + return err + } + return nil +} + +func (m *mongo) CreateIndexes(ctx context.Context, name string, indexes [][]string) error { + collection, err := global.GVA_MONGO.Database.Collection(name).CloneCollection() + if err != nil { + return errors.Wrapf(err, "获取[%s]的表对象失败!", name) + } + list, err := collection.Indexes().List(ctx) + if err != nil { + return errors.Wrapf(err, "获取[%s]的索引对象失败!", name) + } + var entities []Index + err = list.All(ctx, &entities) + if err != nil { + return errors.Wrapf(err, "获取[%s]的索引列表失败!", name) + } + length := len(indexes) + indexMap1 := make(map[string][]string, length) + for i := 0; i < length; i++ { + sort.Strings(indexes[i]) // 对索引key进行排序, 在使用bson.M搜索时, bson会自动按照key的字母顺序进行排序 + length1 := len(indexes[i]) + keys := make([]string, 0, length1) + for j := 0; j < length1; j++ { + if indexes[i][i][0] == '-' { + keys = append(keys, indexes[i][j], "-1") + continue + } + keys = append(keys, indexes[i][j], "1") + } + key := strings.Join(keys, "_") + _, o1 := indexMap1[key] + if o1 { + return errors.Errorf("索引[%s]重复!", key) + } + indexMap1[key] = indexes[i] + } + length = len(entities) + indexMap2 := make(map[string]map[string]string, length) + for i := 0; i < length; i++ { + v1, o1 := indexMap2[entities[i].Name] + if !o1 { + keyLength := len(entities[i].Key) + v1 = make(map[string]string, keyLength) + for j := 0; j < keyLength; j++ { + v2, o2 := v1[entities[i].Key[j].Key] + if !o2 { + v1 = make(map[string]string) + } + v2 = entities[i].Key[j].Key + v1[entities[i].Key[j].Key] = v2 + indexMap2[entities[i].Name] = v1 + } + } + } + for k1, v1 := range indexMap1 { + _, o2 := indexMap2[k1] + if o2 { + continue + } // 索引存在 + if len(fmt.Sprintf("%s.%s.$%s", collection.Name(), name, v1)) > 127 { + err = global.GVA_MONGO.Database.Collection(name).CreateOneIndex(ctx, options.IndexModel{ + Key: v1, + IndexOptions: option.Index().SetName(utils.MD5V([]byte(k1))), + // IndexOptions: option.Index().SetName(utils.MD5V([]byte(k1))).SetExpireAfterSeconds(86400), // SetExpireAfterSeconds(86400) 设置索引过期时间, 86400 = 1天 + }) + if err != nil { + return errors.Wrapf(err, "创建索引[%s]失败!", k1) + } + return nil + } + err = global.GVA_MONGO.Database.Collection(name).CreateOneIndex(ctx, options.IndexModel{ + Key: v1, + IndexOptions: option.Index().SetExpireAfterSeconds(86400), + // IndexOptions: option.Index().SetName(utils.MD5V([]byte(k1))).SetExpireAfterSeconds(86400), // SetExpireAfterSeconds(86400) 设置索引过期时间(秒), 86400 = 1天 + }) + if err != nil { + return errors.Wrapf(err, "创建索引[%s]失败!", k1) + } + } + return nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/other.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/other.go new file mode 100644 index 000000000..f272a812a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/other.go @@ -0,0 +1,32 @@ +package initialize + +import ( + "bufio" + "github.com/songzhibin97/gkit/cache/local_cache" + "os" + "strings" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/utils" +) + +func OtherInit() { + dr, err := utils.ParseDuration(global.GVA_CONFIG.JWT.ExpiresTime) + if err != nil { + panic(err) + } + _, err = utils.ParseDuration(global.GVA_CONFIG.JWT.BufferTime) + if err != nil { + panic(err) + } + + global.BlackCache = local_cache.NewCache( + local_cache.SetDefaultExpire(dr), + ) + file, err := os.Open("go.mod") + if err == nil && global.GVA_CONFIG.AutoCode.Module == "" { + scanner := bufio.NewScanner(file) + scanner.Scan() + global.GVA_CONFIG.AutoCode.Module = strings.TrimPrefix(scanner.Text(), "module ") + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/plugin.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/plugin.go new file mode 100644 index 000000000..16913b18f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/plugin.go @@ -0,0 +1,15 @@ +package initialize + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/gin-gonic/gin" +) + +func InstallPlugin(PrivateGroup *gin.RouterGroup, PublicRouter *gin.RouterGroup, engine *gin.Engine) { + if global.GVA_DB == nil { + global.GVA_LOG.Info("项目暂未初始化,无法安装插件,初始化后重启项目即可完成插件安装") + return + } + bizPluginV1(PrivateGroup, PublicRouter) + bizPluginV2(engine) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/plugin_biz_v1.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/plugin_biz_v1.go new file mode 100644 index 000000000..7366c65d9 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/plugin_biz_v1.go @@ -0,0 +1,34 @@ +package initialize + +import ( + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/email" + "github.com/flipped-aurora/gin-vue-admin/server/utils/plugin" + "github.com/gin-gonic/gin" +) + +func PluginInit(group *gin.RouterGroup, Plugin ...plugin.Plugin) { + for i := range Plugin { + fmt.Println(Plugin[i].RouterPath(), "注册开始!") + PluginGroup := group.Group(Plugin[i].RouterPath()) + Plugin[i].Register(PluginGroup) + fmt.Println(Plugin[i].RouterPath(), "注册成功!") + } +} + +func bizPluginV1(group ...*gin.RouterGroup) { + private := group[0] + public := group[1] + // 添加跟角色挂钩权限的插件 示例 本地示例模式于在线仓库模式注意上方的import 可以自行切换 效果相同 + PluginInit(private, email.CreateEmailPlug( + global.GVA_CONFIG.Email.To, + global.GVA_CONFIG.Email.From, + global.GVA_CONFIG.Email.Host, + global.GVA_CONFIG.Email.Secret, + global.GVA_CONFIG.Email.Nickname, + global.GVA_CONFIG.Email.Port, + global.GVA_CONFIG.Email.IsSSL, + )) + holder(public, private) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/plugin_biz_v2.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/plugin_biz_v2.go new file mode 100644 index 000000000..9d13bbe02 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/plugin_biz_v2.go @@ -0,0 +1,16 @@ +package initialize + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/plugin/announcement" + "github.com/flipped-aurora/gin-vue-admin/server/utils/plugin/v2" + "github.com/gin-gonic/gin" +) + +func PluginInitV2(group *gin.Engine, plugins ...plugin.Plugin) { + for i := 0; i < len(plugins); i++ { + plugins[i].Register(group) + } +} +func bizPluginV2(engine *gin.Engine) { + PluginInitV2(engine, announcement.Plugin) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/redis.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/redis.go new file mode 100644 index 000000000..2d9c8f4eb --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/redis.go @@ -0,0 +1,59 @@ +package initialize + +import ( + "context" + + "github.com/flipped-aurora/gin-vue-admin/server/config" + "github.com/flipped-aurora/gin-vue-admin/server/global" + + "github.com/redis/go-redis/v9" + "go.uber.org/zap" +) + +func initRedisClient(redisCfg config.Redis) (redis.UniversalClient, error) { + var client redis.UniversalClient + // 使用集群模式 + if redisCfg.UseCluster { + client = redis.NewClusterClient(&redis.ClusterOptions{ + Addrs: redisCfg.ClusterAddrs, + Password: redisCfg.Password, + }) + } else { + // 使用单例模式 + client = redis.NewClient(&redis.Options{ + Addr: redisCfg.Addr, + Password: redisCfg.Password, + DB: redisCfg.DB, + }) + } + pong, err := client.Ping(context.Background()).Result() + if err != nil { + global.GVA_LOG.Error("redis connect ping failed, err:", zap.String("name", redisCfg.Name), zap.Error(err)) + return nil, err + } + + global.GVA_LOG.Info("redis connect ping response:", zap.String("name", redisCfg.Name), zap.String("pong", pong)) + return client, nil +} + +func Redis() { + redisClient, err := initRedisClient(global.GVA_CONFIG.Redis) + if err != nil { + panic(err) + } + global.GVA_REDIS = redisClient +} + +func RedisList() { + redisMap := make(map[string]redis.UniversalClient) + + for _, redisCfg := range global.GVA_CONFIG.RedisList { + client, err := initRedisClient(redisCfg) + if err != nil { + panic(err) + } + redisMap[redisCfg.Name] = client + } + + global.GVA_REDISList = redisMap +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/register_init.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/register_init.go new file mode 100644 index 000000000..a2496612b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/register_init.go @@ -0,0 +1,10 @@ +package initialize + +import ( + _ "github.com/flipped-aurora/gin-vue-admin/server/source/example" + _ "github.com/flipped-aurora/gin-vue-admin/server/source/system" +) + +func init() { + // do nothing,only import source package so that inits can be registered +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/router.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/router.go new file mode 100644 index 000000000..499f87d8b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/router.go @@ -0,0 +1,110 @@ +package initialize + +import ( + "net/http" + "os" + + "github.com/flipped-aurora/gin-vue-admin/server/docs" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/flipped-aurora/gin-vue-admin/server/router" + "github.com/gin-gonic/gin" + swaggerFiles "github.com/swaggo/files" + ginSwagger "github.com/swaggo/gin-swagger" +) + +type justFilesFilesystem struct { + fs http.FileSystem +} + +func (fs justFilesFilesystem) Open(name string) (http.File, error) { + f, err := fs.fs.Open(name) + if err != nil { + return nil, err + } + + stat, err := f.Stat() + if stat.IsDir() { + return nil, os.ErrPermission + } + + return f, nil +} + +// 初始化总路由 + +func Routers() *gin.Engine { + Router := gin.New() + Router.Use(gin.Recovery()) + if gin.Mode() == gin.DebugMode { + Router.Use(gin.Logger()) + } + + systemRouter := router.RouterGroupApp.System + exampleRouter := router.RouterGroupApp.Example + // 如果想要不使用nginx代理前端网页,可以修改 web/.env.production 下的 + // VUE_APP_BASE_API = / + // VUE_APP_BASE_PATH = http://localhost + // 然后执行打包命令 npm run build。在打开下面3行注释 + // Router.Static("/favicon.ico", "./dist/favicon.ico") + // Router.Static("/assets", "./dist/assets") // dist里面的静态资源 + // Router.StaticFile("/", "./dist/index.html") // 前端网页入口页面 + + Router.StaticFS(global.GVA_CONFIG.Local.StorePath, justFilesFilesystem{http.Dir(global.GVA_CONFIG.Local.StorePath)}) // Router.Use(middleware.LoadTls()) // 如果需要使用https 请打开此中间件 然后前往 core/server.go 将启动模式 更变为 Router.RunTLS("端口","你的cre/pem文件","你的key文件") + // 跨域,如需跨域可以打开下面的注释 + // Router.Use(middleware.Cors()) // 直接放行全部跨域请求 + // Router.Use(middleware.CorsByRules()) // 按照配置的规则放行跨域请求 + // global.GVA_LOG.Info("use middleware cors") + docs.SwaggerInfo.BasePath = global.GVA_CONFIG.System.RouterPrefix + Router.GET(global.GVA_CONFIG.System.RouterPrefix+"/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) + global.GVA_LOG.Info("register swagger handler") + // 方便统一添加路由组前缀 多服务器上线使用 + + PublicGroup := Router.Group(global.GVA_CONFIG.System.RouterPrefix) + PrivateGroup := Router.Group(global.GVA_CONFIG.System.RouterPrefix) + + PrivateGroup.Use(middleware.JWTAuth()).Use(middleware.CasbinHandler()) + + { + // 健康监测 + PublicGroup.GET("/health", func(c *gin.Context) { + c.JSON(http.StatusOK, "ok") + }) + } + { + systemRouter.InitBaseRouter(PublicGroup) // 注册基础功能路由 不做鉴权 + systemRouter.InitInitRouter(PublicGroup) // 自动初始化相关 + } + + { + systemRouter.InitApiRouter(PrivateGroup, PublicGroup) // 注册功能api路由 + systemRouter.InitJwtRouter(PrivateGroup) // jwt相关路由 + systemRouter.InitUserRouter(PrivateGroup) // 注册用户路由 + systemRouter.InitMenuRouter(PrivateGroup) // 注册menu路由 + systemRouter.InitSystemRouter(PrivateGroup) // system相关路由 + systemRouter.InitCasbinRouter(PrivateGroup) // 权限相关路由 + systemRouter.InitAutoCodeRouter(PrivateGroup, PublicGroup) // 创建自动化代码 + systemRouter.InitAuthorityRouter(PrivateGroup) // 注册角色路由 + systemRouter.InitSysDictionaryRouter(PrivateGroup) // 字典管理 + systemRouter.InitAutoCodeHistoryRouter(PrivateGroup) // 自动化代码历史 + systemRouter.InitSysOperationRecordRouter(PrivateGroup) // 操作记录 + systemRouter.InitSysDictionaryDetailRouter(PrivateGroup) // 字典详情管理 + systemRouter.InitAuthorityBtnRouterRouter(PrivateGroup) // 按钮权限管理 + systemRouter.InitSysExportTemplateRouter(PrivateGroup) // 导出模板 + systemRouter.InitSysParamsRouter(PrivateGroup, PublicGroup) // 参数管理 + exampleRouter.InitCustomerRouter(PrivateGroup) // 客户路由 + exampleRouter.InitFileUploadAndDownloadRouter(PrivateGroup) // 文件上传下载功能路由 + + } + + //插件路由安装 + InstallPlugin(PrivateGroup, PublicGroup, Router) + + // 注册业务路由 + initBizRouter(PrivateGroup, PublicGroup) + + global.GVA_ROUTERS = Router.Routes() + + global.GVA_LOG.Info("router register success") + return Router +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/router_biz.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/router_biz.go new file mode 100644 index 000000000..9a7bddfef --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/router_biz.go @@ -0,0 +1,16 @@ +package initialize + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/router" + "github.com/gin-gonic/gin" +) + +func holder(routers ...*gin.RouterGroup) { + _ = routers + _ = router.RouterGroupApp +} +func initBizRouter(routers ...*gin.RouterGroup) { + privateGroup := routers[0] + publicGroup := routers[1] + holder(publicGroup, privateGroup) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/timer.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/timer.go new file mode 100644 index 000000000..ab5a7a5a4 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/timer.go @@ -0,0 +1,37 @@ +package initialize + +import ( + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/task" + + "github.com/robfig/cron/v3" + + "github.com/flipped-aurora/gin-vue-admin/server/global" +) + +func Timer() { + go func() { + var option []cron.Option + option = append(option, cron.WithSeconds()) + // 清理DB定时任务 + _, err := global.GVA_Timer.AddTaskByFunc("ClearDB", "@daily", func() { + err := task.ClearTable(global.GVA_DB) // 定时任务方法定在task文件包中 + if err != nil { + fmt.Println("timer error:", err) + } + }, "定时清理数据库【日志,黑名单】内容", option...) + if err != nil { + fmt.Println("add timer error:", err) + } + + // 其他定时任务定在这里 参考上方使用方法 + + //_, err := global.GVA_Timer.AddTaskByFunc("定时任务标识", "corn表达式", func() { + // 具体执行内容... + // ...... + //}, option...) + //if err != nil { + // fmt.Println("add timer error:", err) + //} + }() +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/validator.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/validator.go new file mode 100644 index 000000000..79aea6693 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/initialize/validator.go @@ -0,0 +1,22 @@ +package initialize + +import "github.com/flipped-aurora/gin-vue-admin/server/utils" + +func init() { + _ = utils.RegisterRule("PageVerify", + utils.Rules{ + "Page": {utils.NotEmpty()}, + "PageSize": {utils.NotEmpty()}, + }, + ) + _ = utils.RegisterRule("IdVerify", + utils.Rules{ + "Id": {utils.NotEmpty()}, + }, + ) + _ = utils.RegisterRule("AuthorityIdVerify", + utils.Rules{ + "AuthorityId": {utils.NotEmpty()}, + }, + ) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/main.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/main.go new file mode 100644 index 000000000..f9a7508cb --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/main.go @@ -0,0 +1,38 @@ +package main + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/core" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/initialize" + _ "go.uber.org/automaxprocs" + "go.uber.org/zap" +) + +//go:generate go env -w GO111MODULE=on +//go:generate go env -w GOPROXY=https://goproxy.cn,direct +//go:generate go mod tidy +//go:generate go mod download + +// @title Gin-Vue-Admin Swagger API接口文档 +// @version v2.7.6 +// @description 使用gin+vue进行极速开发的全栈开发基础平台 +// @securityDefinitions.apikey ApiKeyAuth +// @in header +// @name x-token +// @BasePath / +func main() { + global.GVA_VP = core.Viper() // 初始化Viper + initialize.OtherInit() + global.GVA_LOG = core.Zap() // 初始化zap日志库 + zap.ReplaceGlobals(global.GVA_LOG) + global.GVA_DB = initialize.Gorm() // gorm连接数据库 + initialize.Timer() + initialize.DBList() + if global.GVA_DB != nil { + initialize.RegisterTables() // 初始化表 + // 程序结束前关闭数据库链接 + db, _ := global.GVA_DB.DB() + defer db.Close() + } + core.RunWindowsServer() +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/casbin_rbac.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/casbin_rbac.go new file mode 100644 index 000000000..a1ca4c2b7 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/casbin_rbac.go @@ -0,0 +1,36 @@ +package middleware + +import ( + "strconv" + "strings" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/service" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/gin-gonic/gin" +) + +var casbinService = service.ServiceGroupApp.SystemServiceGroup.CasbinService + +// CasbinHandler 拦截器 +func CasbinHandler() gin.HandlerFunc { + return func(c *gin.Context) { + waitUse, _ := utils.GetClaims(c) + //获取请求的PATH + path := c.Request.URL.Path + obj := strings.TrimPrefix(path, global.GVA_CONFIG.System.RouterPrefix) + // 获取请求方法 + act := c.Request.Method + // 获取用户的角色 + sub := strconv.Itoa(int(waitUse.AuthorityId)) + e := casbinService.Casbin() // 判断策略中是否存在 + success, _ := e.Enforce(sub, obj, act) + if !success { + response.FailWithDetailed(gin.H{}, "权限不足", c) + c.Abort() + return + } + c.Next() + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/cors.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/cors.go new file mode 100644 index 000000000..d7e3ccd4c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/cors.go @@ -0,0 +1,73 @@ +package middleware + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/config" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/gin-gonic/gin" + "net/http" +) + +// Cors 直接放行所有跨域请求并放行所有 OPTIONS 方法 +func Cors() gin.HandlerFunc { + return func(c *gin.Context) { + method := c.Request.Method + origin := c.Request.Header.Get("Origin") + c.Header("Access-Control-Allow-Origin", origin) + c.Header("Access-Control-Allow-Headers", "Content-Type,AccessToken,X-CSRF-Token, Authorization, Token,X-Token,X-User-Id") + c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS,DELETE,PUT") + c.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type, New-Token, New-Expires-At") + c.Header("Access-Control-Allow-Credentials", "true") + + // 放行所有OPTIONS方法 + if method == "OPTIONS" { + c.AbortWithStatus(http.StatusNoContent) + } + // 处理请求 + c.Next() + } +} + +// CorsByRules 按照配置处理跨域请求 +func CorsByRules() gin.HandlerFunc { + // 放行全部 + if global.GVA_CONFIG.Cors.Mode == "allow-all" { + return Cors() + } + return func(c *gin.Context) { + whitelist := checkCors(c.GetHeader("origin")) + + // 通过检查, 添加请求头 + if whitelist != nil { + c.Header("Access-Control-Allow-Origin", whitelist.AllowOrigin) + c.Header("Access-Control-Allow-Headers", whitelist.AllowHeaders) + c.Header("Access-Control-Allow-Methods", whitelist.AllowMethods) + c.Header("Access-Control-Expose-Headers", whitelist.ExposeHeaders) + if whitelist.AllowCredentials { + c.Header("Access-Control-Allow-Credentials", "true") + } + } + + // 严格白名单模式且未通过检查,直接拒绝处理请求 + if whitelist == nil && global.GVA_CONFIG.Cors.Mode == "strict-whitelist" && !(c.Request.Method == "GET" && c.Request.URL.Path == "/health") { + c.AbortWithStatus(http.StatusForbidden) + } else { + // 非严格白名单模式,无论是否通过检查均放行所有 OPTIONS 方法 + if c.Request.Method == http.MethodOptions { + c.AbortWithStatus(http.StatusNoContent) + } + } + + // 处理请求 + c.Next() + } +} + +func checkCors(currentOrigin string) *config.CORSWhitelist { + for _, whitelist := range global.GVA_CONFIG.Cors.Whitelist { + // 遍历配置中的跨域头,寻找匹配项 + if currentOrigin == whitelist.AllowOrigin { + return &whitelist + } + } + return nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/email.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/email.go new file mode 100644 index 000000000..4a07561c9 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/email.go @@ -0,0 +1,60 @@ +package middleware + +import ( + "bytes" + "io" + "strconv" + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/plugin/email/utils" + utils2 "github.com/flipped-aurora/gin-vue-admin/server/utils" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/service" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +var userService = service.ServiceGroupApp.SystemServiceGroup.UserService + +func ErrorToEmail() gin.HandlerFunc { + return func(c *gin.Context) { + var username string + claims, _ := utils2.GetClaims(c) + if claims.Username != "" { + username = claims.Username + } else { + id, _ := strconv.Atoi(c.Request.Header.Get("x-user-id")) + user, err := userService.FindUserById(id) + if err != nil { + username = "Unknown" + } + username = user.Username + } + body, _ := io.ReadAll(c.Request.Body) + // 再重新写回请求体body中,ioutil.ReadAll会清空c.Request.Body中的数据 + c.Request.Body = io.NopCloser(bytes.NewBuffer(body)) + record := system.SysOperationRecord{ + Ip: c.ClientIP(), + Method: c.Request.Method, + Path: c.Request.URL.Path, + Agent: c.Request.UserAgent(), + Body: string(body), + } + now := time.Now() + + c.Next() + + latency := time.Since(now) + status := c.Writer.Status() + record.ErrorMessage = c.Errors.ByType(gin.ErrorTypePrivate).String() + str := "接收到的请求为" + record.Body + "\n" + "请求方式为" + record.Method + "\n" + "报错信息如下" + record.ErrorMessage + "\n" + "耗时" + latency.String() + "\n" + if status != 200 { + subject := username + "" + record.Ip + "调用了" + record.Path + "报错了" + if err := utils.ErrorToEmail(subject, str); err != nil { + global.GVA_LOG.Error("ErrorToEmail Failed, err:", zap.Error(err)) + } + } + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/error.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/error.go new file mode 100644 index 000000000..f68b7a562 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/error.go @@ -0,0 +1,61 @@ +package middleware + +import ( + "net" + "net/http" + "net/http/httputil" + "os" + "runtime/debug" + "strings" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +// GinRecovery recover掉项目可能出现的panic,并使用zap记录相关日志 +func GinRecovery(stack bool) gin.HandlerFunc { + return func(c *gin.Context) { + defer func() { + if err := recover(); err != nil { + // Check for a broken connection, as it is not really a + // condition that warrants a panic stack trace. + var brokenPipe bool + if ne, ok := err.(*net.OpError); ok { + if se, ok := ne.Err.(*os.SyscallError); ok { + if strings.Contains(strings.ToLower(se.Error()), "broken pipe") || strings.Contains(strings.ToLower(se.Error()), "connection reset by peer") { + brokenPipe = true + } + } + } + + httpRequest, _ := httputil.DumpRequest(c.Request, false) + if brokenPipe { + global.GVA_LOG.Error(c.Request.URL.Path, + zap.Any("error", err), + zap.String("request", string(httpRequest)), + ) + // If the connection is dead, we can't write a status to it. + _ = c.Error(err.(error)) // nolint: errcheck + c.Abort() + return + } + + if stack { + global.GVA_LOG.Error("[Recovery from panic]", + zap.Any("error", err), + zap.String("request", string(httpRequest)), + zap.String("stack", string(debug.Stack())), + ) + } else { + global.GVA_LOG.Error("[Recovery from panic]", + zap.Any("error", err), + zap.String("request", string(httpRequest)), + ) + } + c.AbortWithStatus(http.StatusInternalServerError) + } + }() + c.Next() + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/jwt.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/jwt.go new file mode 100644 index 000000000..38b56dcf3 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/jwt.go @@ -0,0 +1,81 @@ +package middleware + +import ( + "errors" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/golang-jwt/jwt/v4" + "strconv" + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/service" + + "github.com/gin-gonic/gin" +) + +var jwtService = service.ServiceGroupApp.SystemServiceGroup.JwtService + +func JWTAuth() gin.HandlerFunc { + return func(c *gin.Context) { + // 我们这里jwt鉴权取头部信息 x-token 登录时回返回token信息 这里前端需要把token存储到cookie或者本地localStorage中 不过需要跟后端协商过期时间 可以约定刷新令牌或者重新登录 + token := utils.GetToken(c) + if token == "" { + response.NoAuth("未登录或非法访问", c) + c.Abort() + return + } + if jwtService.IsBlacklist(token) { + response.NoAuth("您的帐户异地登陆或令牌失效", c) + utils.ClearToken(c) + c.Abort() + return + } + j := utils.NewJWT() + // parseToken 解析token包含的信息 + claims, err := j.ParseToken(token) + if err != nil { + if errors.Is(err, utils.TokenExpired) { + response.NoAuth("授权已过期", c) + utils.ClearToken(c) + c.Abort() + return + } + response.NoAuth(err.Error(), c) + utils.ClearToken(c) + c.Abort() + return + } + + // 已登录用户被管理员禁用 需要使该用户的jwt失效 此处比较消耗性能 如果需要 请自行打开 + // 用户被删除的逻辑 需要优化 此处比较消耗性能 如果需要 请自行打开 + + //if user, err := userService.FindUserByUuid(claims.UUID.String()); err != nil || user.Enable == 2 { + // _ = jwtService.JsonInBlacklist(system.JwtBlacklist{Jwt: token}) + // response.FailWithDetailed(gin.H{"reload": true}, err.Error(), c) + // c.Abort() + //} + c.Set("claims", claims) + if claims.ExpiresAt.Unix()-time.Now().Unix() < claims.BufferTime { + dr, _ := utils.ParseDuration(global.GVA_CONFIG.JWT.ExpiresTime) + claims.ExpiresAt = jwt.NewNumericDate(time.Now().Add(dr)) + newToken, _ := j.CreateTokenByOldToken(token, *claims) + newClaims, _ := j.ParseToken(newToken) + c.Header("new-token", newToken) + c.Header("new-expires-at", strconv.FormatInt(newClaims.ExpiresAt.Unix(), 10)) + utils.SetToken(c, newToken, int(dr.Seconds())) + if global.GVA_CONFIG.System.UseMultipoint { + // 记录新的活跃jwt + _ = jwtService.SetRedisJWT(newToken, newClaims.Username) + } + } + c.Next() + + if newToken, exists := c.Get("new-token"); exists { + c.Header("new-token", newToken.(string)) + } + if newExpiresAt, exists := c.Get("new-expires-at"); exists { + c.Header("new-expires-at", newExpiresAt.(string)) + } + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/limit_ip.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/limit_ip.go new file mode 100644 index 000000000..315010b22 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/limit_ip.go @@ -0,0 +1,92 @@ +package middleware + +import ( + "context" + "errors" + "net/http" + "time" + + "go.uber.org/zap" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/gin-gonic/gin" +) + +type LimitConfig struct { + // GenerationKey 根据业务生成key 下面CheckOrMark查询生成 + GenerationKey func(c *gin.Context) string + // 检查函数,用户可修改具体逻辑,更加灵活 + CheckOrMark func(key string, expire int, limit int) error + // Expire key 过期时间 + Expire int + // Limit 周期时间 + Limit int +} + +func (l LimitConfig) LimitWithTime() gin.HandlerFunc { + return func(c *gin.Context) { + if err := l.CheckOrMark(l.GenerationKey(c), l.Expire, l.Limit); err != nil { + c.JSON(http.StatusOK, gin.H{"code": response.ERROR, "msg": err}) + c.Abort() + return + } else { + c.Next() + } + } +} + +// DefaultGenerationKey 默认生成key +func DefaultGenerationKey(c *gin.Context) string { + return "GVA_Limit" + c.ClientIP() +} + +func DefaultCheckOrMark(key string, expire int, limit int) (err error) { + // 判断是否开启redis + if global.GVA_REDIS == nil { + return err + } + if err = SetLimitWithTime(key, limit, time.Duration(expire)*time.Second); err != nil { + global.GVA_LOG.Error("limit", zap.Error(err)) + } + return err +} + +func DefaultLimit() gin.HandlerFunc { + return LimitConfig{ + GenerationKey: DefaultGenerationKey, + CheckOrMark: DefaultCheckOrMark, + Expire: global.GVA_CONFIG.System.LimitTimeIP, + Limit: global.GVA_CONFIG.System.LimitCountIP, + }.LimitWithTime() +} + +// SetLimitWithTime 设置访问次数 +func SetLimitWithTime(key string, limit int, expiration time.Duration) error { + count, err := global.GVA_REDIS.Exists(context.Background(), key).Result() + if err != nil { + return err + } + if count == 0 { + pipe := global.GVA_REDIS.TxPipeline() + pipe.Incr(context.Background(), key) + pipe.Expire(context.Background(), key, expiration) + _, err = pipe.Exec(context.Background()) + return err + } else { + // 次数 + if times, err := global.GVA_REDIS.Get(context.Background(), key).Int(); err != nil { + return err + } else { + if times >= limit { + if t, err := global.GVA_REDIS.PTTL(context.Background(), key).Result(); err != nil { + return errors.New("请求太过频繁,请稍后再试") + } else { + return errors.New("请求太过频繁, 请 " + t.String() + " 秒后尝试") + } + } else { + return global.GVA_REDIS.Incr(context.Background(), key).Err() + } + } + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/loadtls.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/loadtls.go new file mode 100644 index 000000000..a17cf653b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/loadtls.go @@ -0,0 +1,27 @@ +package middleware + +import ( + "fmt" + + "github.com/gin-gonic/gin" + "github.com/unrolled/secure" +) + +// 用https把这个中间件在router里面use一下就好 + +func LoadTls() gin.HandlerFunc { + return func(c *gin.Context) { + middleware := secure.New(secure.Options{ + SSLRedirect: true, + SSLHost: "localhost:443", + }) + err := middleware.Process(c.Writer, c.Request) + if err != nil { + // 如果出现错误,请不要继续 + fmt.Println(err) + return + } + // 继续往下处理 + c.Next() + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/logger.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/logger.go new file mode 100644 index 000000000..fabc33497 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/logger.go @@ -0,0 +1,89 @@ +package middleware + +import ( + "bytes" + "encoding/json" + "fmt" + "io" + "strings" + "time" + + "github.com/gin-gonic/gin" +) + +// LogLayout 日志layout +type LogLayout struct { + Time time.Time + Metadata map[string]interface{} // 存储自定义原数据 + Path string // 访问路径 + Query string // 携带query + Body string // 携带body数据 + IP string // ip地址 + UserAgent string // 代理 + Error string // 错误 + Cost time.Duration // 花费时间 + Source string // 来源 +} + +type Logger struct { + // Filter 用户自定义过滤 + Filter func(c *gin.Context) bool + // FilterKeyword 关键字过滤(key) + FilterKeyword func(layout *LogLayout) bool + // AuthProcess 鉴权处理 + AuthProcess func(c *gin.Context, layout *LogLayout) + // 日志处理 + Print func(LogLayout) + // Source 服务唯一标识 + Source string +} + +func (l Logger) SetLoggerMiddleware() gin.HandlerFunc { + return func(c *gin.Context) { + start := time.Now() + path := c.Request.URL.Path + query := c.Request.URL.RawQuery + var body []byte + if l.Filter != nil && !l.Filter(c) { + body, _ = c.GetRawData() + // 将原body塞回去 + c.Request.Body = io.NopCloser(bytes.NewBuffer(body)) + } + c.Next() + cost := time.Since(start) + layout := LogLayout{ + Time: time.Now(), + Path: path, + Query: query, + IP: c.ClientIP(), + UserAgent: c.Request.UserAgent(), + Error: strings.TrimRight(c.Errors.ByType(gin.ErrorTypePrivate).String(), "\n"), + Cost: cost, + Source: l.Source, + } + if l.Filter != nil && !l.Filter(c) { + layout.Body = string(body) + } + if l.AuthProcess != nil { + // 处理鉴权需要的信息 + l.AuthProcess(c, &layout) + } + if l.FilterKeyword != nil { + // 自行判断key/value 脱敏等 + l.FilterKeyword(&layout) + } + // 自行处理日志 + l.Print(layout) + } +} + +func DefaultLogger() gin.HandlerFunc { + return Logger{ + Print: func(layout LogLayout) { + // 标准输出,k8s做收集 + v, _ := json.Marshal(layout) + fmt.Println(string(v)) + }, + Source: "GVA", + }.SetLoggerMiddleware() +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/operation.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/operation.go new file mode 100644 index 000000000..f34cf68ee --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/middleware/operation.go @@ -0,0 +1,133 @@ +package middleware + +import ( + "bytes" + "encoding/json" + "io" + "net/http" + "net/url" + "strconv" + "strings" + "sync" + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/utils" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/service" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +var operationRecordService = service.ServiceGroupApp.SystemServiceGroup.OperationRecordService + +var respPool sync.Pool +var bufferSize = 1024 + +func init() { + respPool.New = func() interface{} { + return make([]byte, bufferSize) + } +} + +func OperationRecord() gin.HandlerFunc { + return func(c *gin.Context) { + var body []byte + var userId int + if c.Request.Method != http.MethodGet { + var err error + body, err = io.ReadAll(c.Request.Body) + if err != nil { + global.GVA_LOG.Error("read body from request error:", zap.Error(err)) + } else { + c.Request.Body = io.NopCloser(bytes.NewBuffer(body)) + } + } else { + query := c.Request.URL.RawQuery + query, _ = url.QueryUnescape(query) + split := strings.Split(query, "&") + m := make(map[string]string) + for _, v := range split { + kv := strings.Split(v, "=") + if len(kv) == 2 { + m[kv[0]] = kv[1] + } + } + body, _ = json.Marshal(&m) + } + claims, _ := utils.GetClaims(c) + if claims != nil && claims.BaseClaims.ID != 0 { + userId = int(claims.BaseClaims.ID) + } else { + id, err := strconv.Atoi(c.Request.Header.Get("x-user-id")) + if err != nil { + userId = 0 + } + userId = id + } + record := system.SysOperationRecord{ + Ip: c.ClientIP(), + Method: c.Request.Method, + Path: c.Request.URL.Path, + Agent: c.Request.UserAgent(), + Body: "", + UserID: userId, + } + + // 上传文件时候 中间件日志进行裁断操作 + if strings.Contains(c.GetHeader("Content-Type"), "multipart/form-data") { + record.Body = "[文件]" + } else { + if len(body) > bufferSize { + record.Body = "[超出记录长度]" + } else { + record.Body = string(body) + } + } + + writer := responseBodyWriter{ + ResponseWriter: c.Writer, + body: &bytes.Buffer{}, + } + c.Writer = writer + now := time.Now() + + c.Next() + + latency := time.Since(now) + record.ErrorMessage = c.Errors.ByType(gin.ErrorTypePrivate).String() + record.Status = c.Writer.Status() + record.Latency = latency + record.Resp = writer.body.String() + + if strings.Contains(c.Writer.Header().Get("Pragma"), "public") || + strings.Contains(c.Writer.Header().Get("Expires"), "0") || + strings.Contains(c.Writer.Header().Get("Cache-Control"), "must-revalidate, post-check=0, pre-check=0") || + strings.Contains(c.Writer.Header().Get("Content-Type"), "application/force-download") || + strings.Contains(c.Writer.Header().Get("Content-Type"), "application/octet-stream") || + strings.Contains(c.Writer.Header().Get("Content-Type"), "application/vnd.ms-excel") || + strings.Contains(c.Writer.Header().Get("Content-Type"), "application/download") || + strings.Contains(c.Writer.Header().Get("Content-Disposition"), "attachment") || + strings.Contains(c.Writer.Header().Get("Content-Transfer-Encoding"), "binary") { + if len(record.Resp) > bufferSize { + // 截断 + record.Body = "超出记录长度" + } + } + + if err := operationRecordService.CreateSysOperationRecord(record); err != nil { + global.GVA_LOG.Error("create operation record error:", zap.Error(err)) + } + } +} + +type responseBodyWriter struct { + gin.ResponseWriter + body *bytes.Buffer +} + +func (r responseBodyWriter) Write(b []byte) (int, error) { + r.body.Write(b) + return r.ResponseWriter.Write(b) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/basetypes.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/basetypes.go new file mode 100644 index 000000000..870d975c6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/basetypes.go @@ -0,0 +1,36 @@ +package common + +import ( + "database/sql/driver" + "encoding/json" + "errors" +) + +type JSONMap map[string]interface{} + +func (m JSONMap) Value() (driver.Value, error) { + if m == nil { + return nil, nil + } + return json.Marshal(m) +} + +func (m *JSONMap) Scan(value interface{}) error { + if value == nil { + *m = make(map[string]interface{}) + return nil + } + var err error + switch value.(type) { + case []byte: + err = json.Unmarshal(value.([]byte), m) + case string: + err = json.Unmarshal([]byte(value.(string)), m) + default: + err = errors.New("basetypes.JSONMap.Scan: invalid value type") + } + if err != nil { + return err + } + return nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/clearDB.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/clearDB.go new file mode 100644 index 000000000..e7fc75795 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/clearDB.go @@ -0,0 +1,7 @@ +package common + +type ClearDB struct { + TableName string + CompareField string + Interval string +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/request/common.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/request/common.go new file mode 100644 index 000000000..c729f3db2 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/request/common.go @@ -0,0 +1,48 @@ +package request + +import ( + "gorm.io/gorm" +) + +// PageInfo Paging common input parameter structure +type PageInfo struct { + Page int `json:"page" form:"page"` // 页码 + PageSize int `json:"pageSize" form:"pageSize"` // 每页大小 + Keyword string `json:"keyword" form:"keyword"` // 关键字 +} + +func (r *PageInfo) Paginate() func(db *gorm.DB) *gorm.DB { + return func(db *gorm.DB) *gorm.DB { + if r.Page <= 0 { + r.Page = 1 + } + switch { + case r.PageSize > 100: + r.PageSize = 100 + case r.PageSize <= 0: + r.PageSize = 10 + } + offset := (r.Page - 1) * r.PageSize + return db.Offset(offset).Limit(r.PageSize) + } +} + +// GetById Find by id structure +type GetById struct { + ID int `json:"id" form:"id"` // 主键ID +} + +func (r *GetById) Uint() uint { + return uint(r.ID) +} + +type IdsReq struct { + Ids []int `json:"ids" form:"ids"` +} + +// GetAuthorityId Get role by id structure +type GetAuthorityId struct { + AuthorityId uint `json:"authorityId" form:"authorityId"` // 角色ID +} + +type Empty struct{} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/response/common.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/response/common.go new file mode 100644 index 000000000..74610965b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/response/common.go @@ -0,0 +1,8 @@ +package response + +type PageResult struct { + List interface{} `json:"list"` + Total int64 `json:"total"` + Page int `json:"page"` + PageSize int `json:"pageSize"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/response/response.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/response/response.go new file mode 100644 index 000000000..a429b12e1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/common/response/response.go @@ -0,0 +1,63 @@ +package response + +import ( + "net/http" + + "github.com/gin-gonic/gin" +) + +type Response struct { + Code int `json:"code"` + Data interface{} `json:"data"` + Msg string `json:"msg"` +} + +const ( + ERROR = 7 + SUCCESS = 0 +) + +func Result(code int, data interface{}, msg string, c *gin.Context) { + // 开始时间 + c.JSON(http.StatusOK, Response{ + code, + data, + msg, + }) +} + +func Ok(c *gin.Context) { + Result(SUCCESS, map[string]interface{}{}, "操作成功", c) +} + +func OkWithMessage(message string, c *gin.Context) { + Result(SUCCESS, map[string]interface{}{}, message, c) +} + +func OkWithData(data interface{}, c *gin.Context) { + Result(SUCCESS, data, "成功", c) +} + +func OkWithDetailed(data interface{}, message string, c *gin.Context) { + Result(SUCCESS, data, message, c) +} + +func Fail(c *gin.Context) { + Result(ERROR, map[string]interface{}{}, "操作失败", c) +} + +func FailWithMessage(message string, c *gin.Context) { + Result(ERROR, map[string]interface{}{}, message, c) +} + +func NoAuth(message string, c *gin.Context) { + c.JSON(http.StatusUnauthorized, Response{ + 7, + nil, + message, + }) +} + +func FailWithDetailed(data interface{}, message string, c *gin.Context) { + Result(ERROR, data, message, c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/exa_breakpoint_continue.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/exa_breakpoint_continue.go new file mode 100644 index 000000000..3c2924bdb --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/exa_breakpoint_continue.go @@ -0,0 +1,24 @@ +package example + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" +) + +// file struct, 文件结构体 +type ExaFile struct { + global.GVA_MODEL + FileName string + FileMd5 string + FilePath string + ExaFileChunk []ExaFileChunk + ChunkTotal int + IsFinish bool +} + +// file chunk struct, 切片结构体 +type ExaFileChunk struct { + global.GVA_MODEL + ExaFileID uint + FileChunkNumber int + FileChunkPath string +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/exa_customer.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/exa_customer.go new file mode 100644 index 000000000..e78dd093f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/exa_customer.go @@ -0,0 +1,15 @@ +package example + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" +) + +type ExaCustomer struct { + global.GVA_MODEL + CustomerName string `json:"customerName" form:"customerName" gorm:"comment:客户名"` // 客户名 + CustomerPhoneData string `json:"customerPhoneData" form:"customerPhoneData" gorm:"comment:客户手机号"` // 客户手机号 + SysUserID uint `json:"sysUserId" form:"sysUserId" gorm:"comment:管理ID"` // 管理ID + SysUserAuthorityID uint `json:"sysUserAuthorityID" form:"sysUserAuthorityID" gorm:"comment:管理角色ID"` // 管理角色ID + SysUser system.SysUser `json:"sysUser" form:"sysUser" gorm:"comment:管理详情"` // 管理详情 +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/exa_file_upload_download.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/exa_file_upload_download.go new file mode 100644 index 000000000..bf4c7df7e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/exa_file_upload_download.go @@ -0,0 +1,17 @@ +package example + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" +) + +type ExaFileUploadAndDownload struct { + global.GVA_MODEL + Name string `json:"name" gorm:"comment:文件名"` // 文件名 + Url string `json:"url" gorm:"comment:文件地址"` // 文件地址 + Tag string `json:"tag" gorm:"comment:文件标签"` // 文件标签 + Key string `json:"key" gorm:"comment:编号"` // 编号 +} + +func (ExaFileUploadAndDownload) TableName() string { + return "exa_file_upload_and_downloads" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/response/exa_breakpoint_continue.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/response/exa_breakpoint_continue.go new file mode 100644 index 000000000..54aa3516b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/response/exa_breakpoint_continue.go @@ -0,0 +1,11 @@ +package response + +import "github.com/flipped-aurora/gin-vue-admin/server/model/example" + +type FilePathResponse struct { + FilePath string `json:"filePath"` +} + +type FileResponse struct { + File example.ExaFile `json:"file"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/response/exa_customer.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/response/exa_customer.go new file mode 100644 index 000000000..7fd26f9d6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/response/exa_customer.go @@ -0,0 +1,7 @@ +package response + +import "github.com/flipped-aurora/gin-vue-admin/server/model/example" + +type ExaCustomerResponse struct { + Customer example.ExaCustomer `json:"customer"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/response/exa_file_upload_download.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/response/exa_file_upload_download.go new file mode 100644 index 000000000..c1b7931a0 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/example/response/exa_file_upload_download.go @@ -0,0 +1,7 @@ +package response + +import "github.com/flipped-aurora/gin-vue-admin/server/model/example" + +type ExaFileResponse struct { + File example.ExaFileUploadAndDownload `json:"file"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/jwt.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/jwt.go new file mode 100644 index 000000000..638820244 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/jwt.go @@ -0,0 +1,21 @@ +package request + +import ( + "github.com/gofrs/uuid/v5" + jwt "github.com/golang-jwt/jwt/v4" +) + +// Custom claims structure +type CustomClaims struct { + BaseClaims + BufferTime int64 + jwt.RegisteredClaims +} + +type BaseClaims struct { + UUID uuid.UUID + ID uint + Username string + NickName string + AuthorityId uint +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_api.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_api.go new file mode 100644 index 000000000..0be8ee72d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_api.go @@ -0,0 +1,14 @@ +package request + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" +) + +// api分页条件查询及排序结构体 +type SearchApiParams struct { + system.SysApi + request.PageInfo + OrderKey string `json:"orderKey"` // 排序 + Desc bool `json:"desc"` // 排序方式:升序false(默认)|降序true +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_authority_btn.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_authority_btn.go new file mode 100644 index 000000000..98493ff34 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_authority_btn.go @@ -0,0 +1,7 @@ +package request + +type SysAuthorityBtnReq struct { + MenuID uint `json:"menuID"` + AuthorityId uint `json:"authorityId"` + Selected []uint `json:"selected"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_auto_code.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_auto_code.go new file mode 100644 index 000000000..942d75640 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_auto_code.go @@ -0,0 +1,267 @@ +package request + +import ( + "encoding/json" + "fmt" + model "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/pkg/errors" + "go/token" + "strings" +) + +type AutoCode struct { + Package string `json:"package"` + PackageT string `json:"-"` + TableName string `json:"tableName" example:"表名"` // 表名 + BusinessDB string `json:"businessDB" example:"业务数据库"` // 业务数据库 + StructName string `json:"structName" example:"Struct名称"` // Struct名称 + PackageName string `json:"packageName" example:"文件名称"` // 文件名称 + Description string `json:"description" example:"Struct中文名称"` // Struct中文名称 + Abbreviation string `json:"abbreviation" example:"Struct简称"` // Struct简称 + HumpPackageName string `json:"humpPackageName" example:"go文件名称"` // go文件名称 + GvaModel bool `json:"gvaModel" example:"false"` // 是否使用gva默认Model + AutoMigrate bool `json:"autoMigrate" example:"false"` // 是否自动迁移表结构 + AutoCreateResource bool `json:"autoCreateResource" example:"false"` // 是否自动创建资源标识 + AutoCreateApiToSql bool `json:"autoCreateApiToSql" example:"false"` // 是否自动创建api + AutoCreateMenuToSql bool `json:"autoCreateMenuToSql" example:"false"` // 是否自动创建menu + AutoCreateBtnAuth bool `json:"autoCreateBtnAuth" example:"false"` // 是否自动创建按钮权限 + OnlyTemplate bool `json:"onlyTemplate" example:"false"` // 是否只生成模板 + Fields []*AutoCodeField `json:"fields"` + DictTypes []string `json:"-"` + PrimaryField *AutoCodeField `json:"primaryField"` + DataSourceMap map[string]*DataSource `json:"-"` + HasPic bool `json:"-"` + HasFile bool `json:"-"` + HasTimer bool `json:"-"` + NeedSort bool `json:"-"` + NeedJSON bool `json:"-"` + HasRichText bool `json:"-"` + HasDataSource bool `json:"-"` + HasSearchTimer bool `json:"-"` + HasArray bool `json:"-"` + HasExcel bool `json:"-"` +} + +type DataSource struct { + DBName string `json:"dbName"` + Table string `json:"table"` + Label string `json:"label"` + Value string `json:"value"` + Association int `json:"association"` // 关联关系 1 一对一 2 一对多 +} + +func (r *AutoCode) Apis() []model.SysApi { + return []model.SysApi{ + { + Path: "/" + r.Abbreviation + "/" + "create" + r.StructName, + Description: "新增" + r.Description, + ApiGroup: r.Description, + Method: "POST", + }, + { + Path: "/" + r.Abbreviation + "/" + "delete" + r.StructName, + Description: "删除" + r.Description, + ApiGroup: r.Description, + Method: "DELETE", + }, + { + Path: "/" + r.Abbreviation + "/" + "delete" + r.StructName + "ByIds", + Description: "批量删除" + r.Description, + ApiGroup: r.Description, + Method: "DELETE", + }, + { + Path: "/" + r.Abbreviation + "/" + "update" + r.StructName, + Description: "更新" + r.Description, + ApiGroup: r.Description, + Method: "PUT", + }, + { + Path: "/" + r.Abbreviation + "/" + "find" + r.StructName, + Description: "根据ID获取" + r.Description, + ApiGroup: r.Description, + Method: "GET", + }, + { + Path: "/" + r.Abbreviation + "/" + "get" + r.StructName + "List", + Description: "获取" + r.Description + "列表", + ApiGroup: r.Description, + Method: "GET", + }, + } +} + +func (r *AutoCode) Menu(template string) model.SysBaseMenu { + component := fmt.Sprintf("view/%s/%s/%s.vue", r.Package, r.PackageName, r.PackageName) + if template != "package" { + component = fmt.Sprintf("plugin/%s/view/%s.vue", r.Package, r.PackageName) + } + return model.SysBaseMenu{ + ParentId: 0, + Path: r.Abbreviation, + Name: r.Abbreviation, + Component: component, + Meta: model.Meta{ + Title: r.Description, + }, + } +} + +// Pretreatment 预处理 +// Author [SliverHorn](https://github.com/SliverHorn) +func (r *AutoCode) Pretreatment() error { + if token.IsKeyword(r.Abbreviation) { + r.Abbreviation = r.Abbreviation + "_" + } // go 关键字处理 + if strings.HasSuffix(r.HumpPackageName, "test") { + r.HumpPackageName = r.HumpPackageName + "_" + } // test + length := len(r.Fields) + dict := make(map[string]string, length) + r.DataSourceMap = make(map[string]*DataSource, length) + for i := 0; i < length; i++ { + if r.Fields[i].Excel { + r.HasExcel = true + } + if r.Fields[i].DictType != "" { + dict[r.Fields[i].DictType] = "" + } + if r.Fields[i].Sort { + r.NeedSort = true + } + switch r.Fields[i].FieldType { + case "file": + r.HasFile = true + r.NeedJSON = true + case "json": + r.NeedJSON = true + case "array": + r.NeedJSON = true + r.HasArray = true + case "video": + r.HasPic = true + case "richtext": + r.HasRichText = true + case "picture": + r.HasPic = true + case "pictures": + r.HasPic = true + r.NeedJSON = true + case "time.Time": + r.HasTimer = true + if r.Fields[i].FieldSearchType != "" { + r.HasSearchTimer = true + } + } + if r.Fields[i].DataSource != nil { + if r.Fields[i].DataSource.Table != "" && r.Fields[i].DataSource.Label != "" && r.Fields[i].DataSource.Value != "" { + r.HasDataSource = true + r.Fields[i].CheckDataSource = true + r.DataSourceMap[r.Fields[i].FieldJson] = r.Fields[i].DataSource + } + } + if !r.GvaModel && r.PrimaryField == nil && r.Fields[i].PrimaryKey { + r.PrimaryField = r.Fields[i] + } // 自定义主键 + } + { + for key := range dict { + r.DictTypes = append(r.DictTypes, key) + } + } // DictTypes => 字典 + { + if r.GvaModel { + r.PrimaryField = &AutoCodeField{ + FieldName: "ID", + FieldType: "uint", + FieldDesc: "ID", + FieldJson: "ID", + DataTypeLong: "20", + Comment: "主键ID", + ColumnName: "id", + } + } + } // GvaModel + if r.Package == "" { + return errors.New("Package为空!") + } // 增加判断:Package不为空 + packages := []rune(r.Package) + if len(packages) > 0 { + if packages[0] >= 97 && packages[0] <= 122 { + packages[0] = packages[0] - 32 + } + r.PackageT = string(packages) + } // PackageT 是 Package 的首字母大写 + return nil +} + +func (r *AutoCode) History() SysAutoHistoryCreate { + bytes, _ := json.Marshal(r) + return SysAutoHistoryCreate{ + Table: r.TableName, + Package: r.Package, + Request: string(bytes), + StructName: r.StructName, + BusinessDB: r.BusinessDB, + Description: r.Description, + } +} + +type AutoCodeField struct { + FieldName string `json:"fieldName"` // Field名 + FieldDesc string `json:"fieldDesc"` // 中文名 + FieldType string `json:"fieldType"` // Field数据类型 + FieldJson string `json:"fieldJson"` // FieldJson + DataTypeLong string `json:"dataTypeLong"` // 数据库字段长度 + Comment string `json:"comment"` // 数据库字段描述 + ColumnName string `json:"columnName"` // 数据库字段 + FieldSearchType string `json:"fieldSearchType"` // 搜索条件 + FieldSearchHide bool `json:"fieldSearchHide"` // 是否隐藏查询条件 + DictType string `json:"dictType"` // 字典 + //Front bool `json:"front"` // 是否前端可见 + Form bool `json:"form"` // 是否前端新建/编辑 + Table bool `json:"table"` // 是否前端表格列 + Desc bool `json:"desc"` // 是否前端详情 + Excel bool `json:"excel"` // 是否导入/导出 + Require bool `json:"require"` // 是否必填 + DefaultValue string `json:"defaultValue"` // 是否必填 + ErrorText string `json:"errorText"` // 校验失败文字 + Clearable bool `json:"clearable"` // 是否可清空 + Sort bool `json:"sort"` // 是否增加排序 + PrimaryKey bool `json:"primaryKey"` // 是否主键 + DataSource *DataSource `json:"dataSource"` // 数据源 + CheckDataSource bool `json:"checkDataSource"` // 是否检查数据源 + FieldIndexType string `json:"fieldIndexType"` // 索引类型 +} + +type AutoFunc struct { + Package string `json:"package"` + FuncName string `json:"funcName"` // 方法名称 + Router string `json:"router"` // 路由名称 + FuncDesc string `json:"funcDesc"` // 方法介绍 + BusinessDB string `json:"businessDB"` // 业务库 + StructName string `json:"structName"` // Struct名称 + PackageName string `json:"packageName"` // 文件名称 + Description string `json:"description"` // Struct中文名称 + Abbreviation string `json:"abbreviation"` // Struct简称 + HumpPackageName string `json:"humpPackageName"` // go文件名称 + Method string `json:"method"` // 方法 + IsPlugin bool `json:"isPlugin"` // 是否插件 + IsAuth bool `json:"isAuth"` // 是否鉴权 +} + +type InitMenu struct { + PlugName string `json:"plugName"` + ParentMenu string `json:"parentMenu"` + Menus []uint `json:"menus"` +} + +type InitApi struct { + PlugName string `json:"plugName"` + APIs []uint `json:"apis"` +} + +type LLMAutoCode struct { + Prompt string `json:"prompt" form:"prompt" gorm:"column:prompt;comment:提示语;type:text;"` //提示语 + Mode string `json:"mode" form:"mode" gorm:"column:mode;comment:模式;type:text;"` //模式 +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_auto_code_package.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_auto_code_package.go new file mode 100644 index 000000000..8494cb178 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_auto_code_package.go @@ -0,0 +1,27 @@ +package request + +import ( + model "github.com/flipped-aurora/gin-vue-admin/server/model/system" +) + +type SysAutoCodePackageCreate struct { + Desc string `json:"desc" example:"描述"` + Label string `json:"label" example:"展示名"` + Template string `json:"template" example:"模版"` + PackageName string `json:"packageName" example:"包名"` +} + +func (r *SysAutoCodePackageCreate) AutoCode() AutoCode { + return AutoCode{ + Package: r.PackageName, + } +} + +func (r *SysAutoCodePackageCreate) Create() model.SysAutoCodePackage { + return model.SysAutoCodePackage{ + Desc: r.Desc, + Label: r.Label, + Template: r.Template, + PackageName: r.PackageName, + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_auto_history.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_auto_history.go new file mode 100644 index 000000000..fb50a7944 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_auto_history.go @@ -0,0 +1,56 @@ +package request + +import ( + common "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + model "github.com/flipped-aurora/gin-vue-admin/server/model/system" +) + +type SysAutoHistoryCreate struct { + Table string // 表名 + Package string // 模块名/插件名 + Request string // 前端传入的结构化信息 + StructName string // 结构体名称 + BusinessDB string // 业务库 + Description string // Struct中文名称 + Injections map[string]string // 注入路径 + Templates map[string]string // 模板信息 + ApiIDs []uint // api表注册内容 + MenuID uint // 菜单ID + ExportTemplateID uint // 导出模板ID +} + +func (r *SysAutoHistoryCreate) Create() model.SysAutoCodeHistory { + entity := model.SysAutoCodeHistory{ + Package: r.Package, + Request: r.Request, + Table: r.Table, + StructName: r.StructName, + BusinessDB: r.BusinessDB, + Description: r.Description, + Injections: r.Injections, + Templates: r.Templates, + ApiIDs: r.ApiIDs, + MenuID: r.MenuID, + ExportTemplateID: r.ExportTemplateID, + } + if entity.Table == "" { + entity.Table = r.StructName + } + return entity +} + +type SysAutoHistoryRollBack struct { + common.GetById + DeleteApi bool `json:"deleteApi" form:"deleteApi"` // 是否删除接口 + DeleteMenu bool `json:"deleteMenu" form:"deleteMenu"` // 是否删除菜单 + DeleteTable bool `json:"deleteTable" form:"deleteTable"` // 是否删除表 +} + +func (r *SysAutoHistoryRollBack) ApiIds(entity model.SysAutoCodeHistory) common.IdsReq { + length := len(entity.ApiIDs) + ids := make([]int, 0) + for i := 0; i < length; i++ { + ids = append(ids, int(entity.ApiIDs[i])) + } + return common.IdsReq{Ids: ids} +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_casbin.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_casbin.go new file mode 100644 index 000000000..ef8c823cb --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_casbin.go @@ -0,0 +1,27 @@ +package request + +// Casbin info structure +type CasbinInfo struct { + Path string `json:"path"` // 路径 + Method string `json:"method"` // 方法 +} + +// Casbin structure for input parameters +type CasbinInReceive struct { + AuthorityId uint `json:"authorityId"` // 权限id + CasbinInfos []CasbinInfo `json:"casbinInfos"` +} + +func DefaultCasbin() []CasbinInfo { + return []CasbinInfo{ + {Path: "/menu/getMenu", Method: "POST"}, + {Path: "/jwt/jsonInBlacklist", Method: "POST"}, + {Path: "/base/login", Method: "POST"}, + {Path: "/user/changePassword", Method: "POST"}, + {Path: "/user/setUserAuthority", Method: "POST"}, + {Path: "/user/getUserInfo", Method: "GET"}, + {Path: "/user/setSelfInfo", Method: "PUT"}, + {Path: "/fileUploadAndDownload/upload", Method: "POST"}, + {Path: "/sysDictionary/findSysDictionary", Method: "GET"}, + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_dictionary_detail.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_dictionary_detail.go new file mode 100644 index 000000000..2f97da280 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_dictionary_detail.go @@ -0,0 +1,11 @@ +package request + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" +) + +type SysDictionaryDetailSearch struct { + system.SysDictionaryDetail + request.PageInfo +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_export_template.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_export_template.go new file mode 100644 index 000000000..1010bf6b9 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_export_template.go @@ -0,0 +1,14 @@ +package request + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "time" +) + +type SysExportTemplateSearch struct { + system.SysExportTemplate + StartCreatedAt *time.Time `json:"startCreatedAt" form:"startCreatedAt"` + EndCreatedAt *time.Time `json:"endCreatedAt" form:"endCreatedAt"` + request.PageInfo +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_init.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_init.go new file mode 100644 index 000000000..6882895d2 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_init.go @@ -0,0 +1,123 @@ +package request + +import ( + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/config" + "os" +) + +type InitDB struct { + AdminPassword string `json:"adminPassword" binding:"required"` + DBType string `json:"dbType"` // 数据库类型 + Host string `json:"host"` // 服务器地址 + Port string `json:"port"` // 数据库连接端口 + UserName string `json:"userName"` // 数据库用户名 + Password string `json:"password"` // 数据库密码 + DBName string `json:"dbName" binding:"required"` // 数据库名 + DBPath string `json:"dbPath"` // sqlite数据库文件路径 +} + +// MysqlEmptyDsn msyql 空数据库 建库链接 +// Author SliverHorn +func (i *InitDB) MysqlEmptyDsn() string { + if i.Host == "" { + i.Host = "127.0.0.1" + } + if i.Port == "" { + i.Port = "3306" + } + return fmt.Sprintf("%s:%s@tcp(%s:%s)/", i.UserName, i.Password, i.Host, i.Port) +} + +// PgsqlEmptyDsn pgsql 空数据库 建库链接 +// Author SliverHorn +func (i *InitDB) PgsqlEmptyDsn() string { + if i.Host == "" { + i.Host = "127.0.0.1" + } + if i.Port == "" { + i.Port = "5432" + } + return "host=" + i.Host + " user=" + i.UserName + " password=" + i.Password + " port=" + i.Port + " dbname=" + "postgres" + " " + "sslmode=disable TimeZone=Asia/Shanghai" +} + +// SqliteEmptyDsn sqlite 空数据库 建库链接 +// Author Kafumio +func (i *InitDB) SqliteEmptyDsn() string { + separator := string(os.PathSeparator) + return i.DBPath + separator + i.DBName + ".db" +} + +func (i *InitDB) MssqlEmptyDsn() string { + return "sqlserver://" + i.UserName + ":" + i.Password + "@" + i.Host + ":" + i.Port + "?database=" + i.DBName + "&encrypt=disable" +} + +// ToMysqlConfig 转换 config.Mysql +// Author [SliverHorn](https://github.com/SliverHorn) +func (i *InitDB) ToMysqlConfig() config.Mysql { + return config.Mysql{ + GeneralDB: config.GeneralDB{ + Path: i.Host, + Port: i.Port, + Dbname: i.DBName, + Username: i.UserName, + Password: i.Password, + MaxIdleConns: 10, + MaxOpenConns: 100, + LogMode: "error", + Config: "charset=utf8mb4&parseTime=True&loc=Local", + }, + } +} + +// ToPgsqlConfig 转换 config.Pgsql +// Author [SliverHorn](https://github.com/SliverHorn) +func (i *InitDB) ToPgsqlConfig() config.Pgsql { + return config.Pgsql{ + GeneralDB: config.GeneralDB{ + Path: i.Host, + Port: i.Port, + Dbname: i.DBName, + Username: i.UserName, + Password: i.Password, + MaxIdleConns: 10, + MaxOpenConns: 100, + LogMode: "error", + Config: "sslmode=disable TimeZone=Asia/Shanghai", + }, + } +} + +// ToSqliteConfig 转换 config.Sqlite +// Author [Kafumio](https://github.com/Kafumio) +func (i *InitDB) ToSqliteConfig() config.Sqlite { + return config.Sqlite{ + GeneralDB: config.GeneralDB{ + Path: i.DBPath, + Port: i.Port, + Dbname: i.DBName, + Username: i.UserName, + Password: i.Password, + MaxIdleConns: 10, + MaxOpenConns: 100, + LogMode: "error", + Config: "", + }, + } +} + +func (i *InitDB) ToMssqlConfig() config.Mssql { + return config.Mssql{ + GeneralDB: config.GeneralDB{ + Path: i.DBPath, + Port: i.Port, + Dbname: i.DBName, + Username: i.UserName, + Password: i.Password, + MaxIdleConns: 10, + MaxOpenConns: 100, + LogMode: "error", + Config: "", + }, + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_menu.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_menu.go new file mode 100644 index 000000000..2f5c7c46e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_menu.go @@ -0,0 +1,27 @@ +package request + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" +) + +// Add menu authority info structure +type AddMenuAuthorityInfo struct { + Menus []system.SysBaseMenu `json:"menus"` + AuthorityId uint `json:"authorityId"` // 角色ID +} + +func DefaultMenu() []system.SysBaseMenu { + return []system.SysBaseMenu{{ + GVA_MODEL: global.GVA_MODEL{ID: 1}, + ParentId: 0, + Path: "dashboard", + Name: "dashboard", + Component: "view/dashboard/index.vue", + Sort: 1, + Meta: system.Meta{ + Title: "仪表盘", + Icon: "setting", + }, + }} +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_operation_record.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_operation_record.go new file mode 100644 index 000000000..e58dd59c3 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_operation_record.go @@ -0,0 +1,11 @@ +package request + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" +) + +type SysOperationRecordSearch struct { + system.SysOperationRecord + request.PageInfo +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_params.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_params.go new file mode 100644 index 000000000..0009271bf --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_params.go @@ -0,0 +1,14 @@ +package request + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "time" +) + +type SysParamsSearch struct { + StartCreatedAt *time.Time `json:"startCreatedAt" form:"startCreatedAt"` + EndCreatedAt *time.Time `json:"endCreatedAt" form:"endCreatedAt"` + Name string `json:"name" form:"name" ` + Key string `json:"key" form:"key" ` + request.PageInfo +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_user.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_user.go new file mode 100644 index 000000000..2e698d440 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/request/sys_user.go @@ -0,0 +1,65 @@ +package request + +import ( + common "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" +) + +// Register User register structure +type Register struct { + Username string `json:"userName" example:"用户名"` + Password string `json:"passWord" example:"密码"` + NickName string `json:"nickName" example:"昵称"` + HeaderImg string `json:"headerImg" example:"头像链接"` + AuthorityId uint `json:"authorityId" swaggertype:"string" example:"int 角色id"` + Enable int `json:"enable" swaggertype:"string" example:"int 是否启用"` + AuthorityIds []uint `json:"authorityIds" swaggertype:"string" example:"[]uint 角色id"` + Phone string `json:"phone" example:"电话号码"` + Email string `json:"email" example:"电子邮箱"` +} + +// User login structure +type Login struct { + Username string `json:"username"` // 用户名 + Password string `json:"password"` // 密码 + Captcha string `json:"captcha"` // 验证码 + CaptchaId string `json:"captchaId"` // 验证码ID +} + +// Modify password structure +type ChangePasswordReq struct { + ID uint `json:"-"` // 从 JWT 中提取 user id,避免越权 + Password string `json:"password"` // 密码 + NewPassword string `json:"newPassword"` // 新密码 +} + +// Modify user's auth structure +type SetUserAuth struct { + AuthorityId uint `json:"authorityId"` // 角色ID +} + +// Modify user's auth structure +type SetUserAuthorities struct { + ID uint + AuthorityIds []uint `json:"authorityIds"` // 角色ID +} + +type ChangeUserInfo struct { + ID uint `gorm:"primarykey"` // 主键ID + NickName string `json:"nickName" gorm:"default:系统用户;comment:用户昵称"` // 用户昵称 + Phone string `json:"phone" gorm:"comment:用户手机号"` // 用户手机号 + AuthorityIds []uint `json:"authorityIds" gorm:"-"` // 角色ID + Email string `json:"email" gorm:"comment:用户邮箱"` // 用户邮箱 + HeaderImg string `json:"headerImg" gorm:"default:https://qmplusimg.henrongyi.top/gva_header.jpg;comment:用户头像"` // 用户头像 + SideMode string `json:"sideMode" gorm:"comment:用户侧边主题"` // 用户侧边主题 + Enable int `json:"enable" gorm:"comment:冻结用户"` //冻结用户 + Authorities []system.SysAuthority `json:"-" gorm:"many2many:sys_user_authority;"` +} + +type GetUserList struct { + common.PageInfo + Username string `json:"username" form:"username"` + NickName string `json:"nickName" form:"nickName"` + Phone string `json:"phone" form:"phone"` + Email string `json:"email" form:"email"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_api.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_api.go new file mode 100644 index 000000000..20e382b9a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_api.go @@ -0,0 +1,18 @@ +package response + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/model/system" +) + +type SysAPIResponse struct { + Api system.SysApi `json:"api"` +} + +type SysAPIListResponse struct { + Apis []system.SysApi `json:"apis"` +} + +type SysSyncApis struct { + NewApis []system.SysApi `json:"newApis"` + DeleteApis []system.SysApi `json:"deleteApis"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_authority.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_authority.go new file mode 100644 index 000000000..a05540167 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_authority.go @@ -0,0 +1,12 @@ +package response + +import "github.com/flipped-aurora/gin-vue-admin/server/model/system" + +type SysAuthorityResponse struct { + Authority system.SysAuthority `json:"authority"` +} + +type SysAuthorityCopyResponse struct { + Authority system.SysAuthority `json:"authority"` + OldAuthorityId uint `json:"oldAuthorityId"` // 旧角色ID +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_authority_btn.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_authority_btn.go new file mode 100644 index 000000000..2f772cf09 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_authority_btn.go @@ -0,0 +1,5 @@ +package response + +type SysAuthorityBtnRes struct { + Selected []uint `json:"selected"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_auto_code.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_auto_code.go new file mode 100644 index 000000000..9e99bde3a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_auto_code.go @@ -0,0 +1,17 @@ +package response + +type Db struct { + Database string `json:"database" gorm:"column:database"` +} + +type Table struct { + TableName string `json:"tableName" gorm:"column:table_name"` +} + +type Column struct { + DataType string `json:"dataType" gorm:"column:data_type"` + ColumnName string `json:"columnName" gorm:"column:column_name"` + DataTypeLong string `json:"dataTypeLong" gorm:"column:data_type_long"` + ColumnComment string `json:"columnComment" gorm:"column:column_comment"` + PrimaryKey bool `json:"primaryKey" gorm:"column:primary_key"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_captcha.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_captcha.go new file mode 100644 index 000000000..0c3995a1d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_captcha.go @@ -0,0 +1,8 @@ +package response + +type SysCaptchaResponse struct { + CaptchaId string `json:"captchaId"` + PicPath string `json:"picPath"` + CaptchaLength int `json:"captchaLength"` + OpenCaptcha bool `json:"openCaptcha"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_casbin.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_casbin.go new file mode 100644 index 000000000..267bb42c9 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_casbin.go @@ -0,0 +1,9 @@ +package response + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" +) + +type PolicyPathResponse struct { + Paths []request.CasbinInfo `json:"paths"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_menu.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_menu.go new file mode 100644 index 000000000..d8f80f314 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_menu.go @@ -0,0 +1,15 @@ +package response + +import "github.com/flipped-aurora/gin-vue-admin/server/model/system" + +type SysMenusResponse struct { + Menus []system.SysMenu `json:"menus"` +} + +type SysBaseMenusResponse struct { + Menus []system.SysBaseMenu `json:"menus"` +} + +type SysBaseMenuResponse struct { + Menu system.SysBaseMenu `json:"menu"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_system.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_system.go new file mode 100644 index 000000000..f19e965bf --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_system.go @@ -0,0 +1,7 @@ +package response + +import "github.com/flipped-aurora/gin-vue-admin/server/config" + +type SysConfigResponse struct { + Config config.Server `json:"config"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_user.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_user.go new file mode 100644 index 000000000..d6f1074b7 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/response/sys_user.go @@ -0,0 +1,15 @@ +package response + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/model/system" +) + +type SysUserResponse struct { + User system.SysUser `json:"user"` +} + +type LoginResponse struct { + User system.SysUser `json:"user"` + Token string `json:"token"` + ExpiresAt int64 `json:"expiresAt"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_api.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_api.go new file mode 100644 index 000000000..853ddb087 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_api.go @@ -0,0 +1,28 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" +) + +type SysApi struct { + global.GVA_MODEL + Path string `json:"path" gorm:"comment:api路径"` // api路径 + Description string `json:"description" gorm:"comment:api中文描述"` // api中文描述 + ApiGroup string `json:"apiGroup" gorm:"comment:api组"` // api组 + Method string `json:"method" gorm:"default:POST;comment:方法"` // 方法:创建POST(默认)|查看GET|更新PUT|删除DELETE +} + +func (SysApi) TableName() string { + return "sys_apis" +} + +type SysIgnoreApi struct { + global.GVA_MODEL + Path string `json:"path" gorm:"comment:api路径"` // api路径 + Method string `json:"method" gorm:"default:POST;comment:方法"` // 方法:创建POST(默认)|查看GET|更新PUT|删除DELETE + Flag bool `json:"flag" gorm:"-"` // 是否忽略 +} + +func (SysIgnoreApi) TableName() string { + return "sys_ignore_apis" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_authority.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_authority.go new file mode 100644 index 000000000..01c5efad1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_authority.go @@ -0,0 +1,23 @@ +package system + +import ( + "time" +) + +type SysAuthority struct { + CreatedAt time.Time // 创建时间 + UpdatedAt time.Time // 更新时间 + DeletedAt *time.Time `sql:"index"` + AuthorityId uint `json:"authorityId" gorm:"not null;unique;primary_key;comment:角色ID;size:90"` // 角色ID + AuthorityName string `json:"authorityName" gorm:"comment:角色名"` // 角色名 + ParentId *uint `json:"parentId" gorm:"comment:父角色ID"` // 父角色ID + DataAuthorityId []*SysAuthority `json:"dataAuthorityId" gorm:"many2many:sys_data_authority_id;"` + Children []SysAuthority `json:"children" gorm:"-"` + SysBaseMenus []SysBaseMenu `json:"menus" gorm:"many2many:sys_authority_menus;"` + Users []SysUser `json:"-" gorm:"many2many:sys_user_authority;"` + DefaultRouter string `json:"defaultRouter" gorm:"comment:默认菜单;default:dashboard"` // 默认菜单(默认dashboard) +} + +func (SysAuthority) TableName() string { + return "sys_authorities" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_authority_btn.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_authority_btn.go new file mode 100644 index 000000000..e00598412 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_authority_btn.go @@ -0,0 +1,8 @@ +package system + +type SysAuthorityBtn struct { + AuthorityId uint `gorm:"comment:角色ID"` + SysMenuID uint `gorm:"comment:菜单ID"` + SysBaseMenuBtnID uint `gorm:"comment:菜单按钮ID"` + SysBaseMenuBtn SysBaseMenuBtn ` gorm:"comment:按钮详情"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_authority_menu.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_authority_menu.go new file mode 100644 index 000000000..4467a7e10 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_authority_menu.go @@ -0,0 +1,19 @@ +package system + +type SysMenu struct { + SysBaseMenu + MenuId uint `json:"menuId" gorm:"comment:菜单ID"` + AuthorityId uint `json:"-" gorm:"comment:角色ID"` + Children []SysMenu `json:"children" gorm:"-"` + Parameters []SysBaseMenuParameter `json:"parameters" gorm:"foreignKey:SysBaseMenuID;references:MenuId"` + Btns map[string]uint `json:"btns" gorm:"-"` +} + +type SysAuthorityMenu struct { + MenuId string `json:"menuId" gorm:"comment:菜单ID;column:sys_base_menu_id"` + AuthorityId string `json:"-" gorm:"comment:角色ID;column:sys_authority_authority_id"` +} + +func (s SysAuthorityMenu) TableName() string { + return "sys_authority_menus" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_auto_code_history.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_auto_code_history.go new file mode 100644 index 000000000..c36787ddb --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_auto_code_history.go @@ -0,0 +1,67 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "gorm.io/gorm" + "os" + "path" + "path/filepath" + "strings" +) + +// SysAutoCodeHistory 自动迁移代码记录,用于回滚,重放使用 +type SysAutoCodeHistory struct { + global.GVA_MODEL + Table string `json:"tableName" gorm:"column:table_name;comment:表名"` + Package string `json:"package" gorm:"column:package;comment:模块名/插件名"` + Request string `json:"request" gorm:"type:text;column:request;comment:前端传入的结构化信息"` + StructName string `json:"structName" gorm:"column:struct_name;comment:结构体名称"` + BusinessDB string `json:"businessDb" gorm:"column:business_db;comment:业务库"` + Description string `json:"description" gorm:"column:description;comment:Struct中文名称"` + Templates map[string]string `json:"template" gorm:"serializer:json;type:text;column:templates;comment:模板信息"` + Injections map[string]string `json:"injections" gorm:"serializer:json;type:text;column:Injections;comment:注入路径"` + Flag int `json:"flag" gorm:"column:flag;comment:[0:创建,1:回滚]"` + ApiIDs []uint `json:"apiIDs" gorm:"serializer:json;column:api_ids;comment:api表注册内容"` + MenuID uint `json:"menuId" gorm:"column:menu_id;comment:菜单ID"` + ExportTemplateID uint `json:"exportTemplateID" gorm:"column:export_template_id;comment:导出模板ID"` + AutoCodePackage SysAutoCodePackage `json:"autoCodePackage" gorm:"foreignKey:ID;references:PackageID"` + PackageID uint `json:"packageID" gorm:"column:package_id;comment:包ID"` +} + +func (s *SysAutoCodeHistory) BeforeCreate(db *gorm.DB) error { + templates := make(map[string]string, len(s.Templates)) + for key, value := range s.Templates { + server := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server) + { + hasServer := strings.Index(key, server) + if hasServer != -1 { + key = strings.TrimPrefix(key, server) + keys := strings.Split(key, string(os.PathSeparator)) + key = path.Join(keys...) + } + } // key + web := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.WebRoot()) + hasWeb := strings.Index(value, web) + if hasWeb != -1 { + value = strings.TrimPrefix(value, web) + values := strings.Split(value, string(os.PathSeparator)) + value = path.Join(values...) + templates[key] = value + continue + } + hasServer := strings.Index(value, server) + if hasServer != -1 { + value = strings.TrimPrefix(value, server) + values := strings.Split(value, string(os.PathSeparator)) + value = path.Join(values...) + templates[key] = value + continue + } + } + s.Templates = templates + return nil +} + +func (s *SysAutoCodeHistory) TableName() string { + return "sys_auto_code_histories" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_auto_code_package.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_auto_code_package.go new file mode 100644 index 000000000..e87e88538 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_auto_code_package.go @@ -0,0 +1,17 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" +) + +type SysAutoCodePackage struct { + global.GVA_MODEL + Desc string `json:"desc" gorm:"comment:描述"` + Label string `json:"label" gorm:"comment:展示名"` + Template string `json:"template" gorm:"comment:模版"` + PackageName string `json:"packageName" gorm:"comment:包名"` +} + +func (s *SysAutoCodePackage) TableName() string { + return "sys_auto_code_packages" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_base_menu.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_base_menu.go new file mode 100644 index 000000000..41cf37631 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_base_menu.go @@ -0,0 +1,42 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" +) + +type SysBaseMenu struct { + global.GVA_MODEL + MenuLevel uint `json:"-"` + ParentId uint `json:"parentId" gorm:"comment:父菜单ID"` // 父菜单ID + Path string `json:"path" gorm:"comment:路由path"` // 路由path + Name string `json:"name" gorm:"comment:路由name"` // 路由name + Hidden bool `json:"hidden" gorm:"comment:是否在列表隐藏"` // 是否在列表隐藏 + Component string `json:"component" gorm:"comment:对应前端文件路径"` // 对应前端文件路径 + Sort int `json:"sort" gorm:"comment:排序标记"` // 排序标记 + Meta `json:"meta" gorm:"embedded;comment:附加属性"` // 附加属性 + SysAuthoritys []SysAuthority `json:"authoritys" gorm:"many2many:sys_authority_menus;"` + Children []SysBaseMenu `json:"children" gorm:"-"` + Parameters []SysBaseMenuParameter `json:"parameters"` + MenuBtn []SysBaseMenuBtn `json:"menuBtn"` +} + +type Meta struct { + ActiveName string `json:"activeName" gorm:"comment:高亮菜单"` + KeepAlive bool `json:"keepAlive" gorm:"comment:是否缓存"` // 是否缓存 + DefaultMenu bool `json:"defaultMenu" gorm:"comment:是否是基础路由(开发中)"` // 是否是基础路由(开发中) + Title string `json:"title" gorm:"comment:菜单名"` // 菜单名 + Icon string `json:"icon" gorm:"comment:菜单图标"` // 菜单图标 + CloseTab bool `json:"closeTab" gorm:"comment:自动关闭tab"` // 自动关闭tab +} + +type SysBaseMenuParameter struct { + global.GVA_MODEL + SysBaseMenuID uint + Type string `json:"type" gorm:"comment:地址栏携带参数为params还是query"` // 地址栏携带参数为params还是query + Key string `json:"key" gorm:"comment:地址栏携带参数的key"` // 地址栏携带参数的key + Value string `json:"value" gorm:"comment:地址栏携带参数的值"` // 地址栏携带参数的值 +} + +func (SysBaseMenu) TableName() string { + return "sys_base_menus" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_dictionary.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_dictionary.go new file mode 100644 index 000000000..c0b9bf7fc --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_dictionary.go @@ -0,0 +1,20 @@ +// 自动生成模板SysDictionary +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" +) + +// 如果含有time.Time 请自行import time包 +type SysDictionary struct { + global.GVA_MODEL + Name string `json:"name" form:"name" gorm:"column:name;comment:字典名(中)"` // 字典名(中) + Type string `json:"type" form:"type" gorm:"column:type;comment:字典名(英)"` // 字典名(英) + Status *bool `json:"status" form:"status" gorm:"column:status;comment:状态"` // 状态 + Desc string `json:"desc" form:"desc" gorm:"column:desc;comment:描述"` // 描述 + SysDictionaryDetails []SysDictionaryDetail `json:"sysDictionaryDetails" form:"sysDictionaryDetails"` +} + +func (SysDictionary) TableName() string { + return "sys_dictionaries" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_dictionary_detail.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_dictionary_detail.go new file mode 100644 index 000000000..4084136c2 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_dictionary_detail.go @@ -0,0 +1,21 @@ +// 自动生成模板SysDictionaryDetail +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" +) + +// 如果含有time.Time 请自行import time包 +type SysDictionaryDetail struct { + global.GVA_MODEL + Label string `json:"label" form:"label" gorm:"column:label;comment:展示值"` // 展示值 + Value string `json:"value" form:"value" gorm:"column:value;comment:字典值"` // 字典值 + Extend string `json:"extend" form:"extend" gorm:"column:extend;comment:扩展值"` // 扩展值 + Status *bool `json:"status" form:"status" gorm:"column:status;comment:启用状态"` // 启用状态 + Sort int `json:"sort" form:"sort" gorm:"column:sort;comment:排序标记"` // 排序标记 + SysDictionaryID int `json:"sysDictionaryID" form:"sysDictionaryID" gorm:"column:sys_dictionary_id;comment:关联标记"` // 关联标记 +} + +func (SysDictionaryDetail) TableName() string { + return "sys_dictionary_details" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_export_template.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_export_template.go new file mode 100644 index 000000000..aef24617d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_export_template.go @@ -0,0 +1,44 @@ +// 自动生成模板SysExportTemplate +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" +) + +// 导出模板 结构体 SysExportTemplate +type SysExportTemplate struct { + global.GVA_MODEL + DBName string `json:"dbName" form:"dbName" gorm:"column:db_name;comment:数据库名称;"` //数据库名称 + Name string `json:"name" form:"name" gorm:"column:name;comment:模板名称;"` //模板名称 + TableName string `json:"tableName" form:"tableName" gorm:"column:table_name;comment:表名称;"` //表名称 + TemplateID string `json:"templateID" form:"templateID" gorm:"column:template_id;comment:模板标识;"` //模板标识 + TemplateInfo string `json:"templateInfo" form:"templateInfo" gorm:"column:template_info;type:text;"` //模板信息 + Limit *int `json:"limit" form:"limit" gorm:"column:limit;comment:导出限制"` + Order string `json:"order" form:"order" gorm:"column:order;comment:排序"` + Conditions []Condition `json:"conditions" form:"conditions" gorm:"foreignKey:TemplateID;references:TemplateID;comment:条件"` + JoinTemplate []JoinTemplate `json:"joinTemplate" form:"joinTemplate" gorm:"foreignKey:TemplateID;references:TemplateID;comment:关联"` +} + +type JoinTemplate struct { + global.GVA_MODEL + TemplateID string `json:"templateID" form:"templateID" gorm:"column:template_id;comment:模板标识"` + JOINS string `json:"joins" form:"joins" gorm:"column:joins;comment:关联"` + Table string `json:"table" form:"table" gorm:"column:table;comment:关联表"` + ON string `json:"on" form:"on" gorm:"column:on;comment:关联条件"` +} + +func (JoinTemplate) TableName() string { + return "sys_export_template_join" +} + +type Condition struct { + global.GVA_MODEL + TemplateID string `json:"templateID" form:"templateID" gorm:"column:template_id;comment:模板标识"` + From string `json:"from" form:"from" gorm:"column:from;comment:条件取的key"` + Column string `json:"column" form:"column" gorm:"column:column;comment:作为查询条件的字段"` + Operator string `json:"operator" form:"operator" gorm:"column:operator;comment:操作符"` +} + +func (Condition) TableName() string { + return "sys_export_template_condition" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_jwt_blacklist.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_jwt_blacklist.go new file mode 100644 index 000000000..4f9fa396d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_jwt_blacklist.go @@ -0,0 +1,10 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" +) + +type JwtBlacklist struct { + global.GVA_MODEL + Jwt string `gorm:"type:text;comment:jwt"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_menu_btn.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_menu_btn.go new file mode 100644 index 000000000..9d3276142 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_menu_btn.go @@ -0,0 +1,10 @@ +package system + +import "github.com/flipped-aurora/gin-vue-admin/server/global" + +type SysBaseMenuBtn struct { + global.GVA_MODEL + Name string `json:"name" gorm:"comment:按钮关键key"` + Desc string `json:"desc" gorm:"按钮备注"` + SysBaseMenuID uint `json:"sysBaseMenuID" gorm:"comment:菜单ID"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_operation_record.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_operation_record.go new file mode 100644 index 000000000..3d201d30d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_operation_record.go @@ -0,0 +1,24 @@ +// 自动生成模板SysOperationRecord +package system + +import ( + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/global" +) + +// 如果含有time.Time 请自行import time包 +type SysOperationRecord struct { + global.GVA_MODEL + Ip string `json:"ip" form:"ip" gorm:"column:ip;comment:请求ip"` // 请求ip + Method string `json:"method" form:"method" gorm:"column:method;comment:请求方法"` // 请求方法 + Path string `json:"path" form:"path" gorm:"column:path;comment:请求路径"` // 请求路径 + Status int `json:"status" form:"status" gorm:"column:status;comment:请求状态"` // 请求状态 + Latency time.Duration `json:"latency" form:"latency" gorm:"column:latency;comment:延迟" swaggertype:"string"` // 延迟 + Agent string `json:"agent" form:"agent" gorm:"type:text;column:agent;comment:代理"` // 代理 + ErrorMessage string `json:"error_message" form:"error_message" gorm:"column:error_message;comment:错误信息"` // 错误信息 + Body string `json:"body" form:"body" gorm:"type:text;column:body;comment:请求Body"` // 请求Body + Resp string `json:"resp" form:"resp" gorm:"type:text;column:resp;comment:响应Body"` // 响应Body + UserID int `json:"user_id" form:"user_id" gorm:"column:user_id;comment:用户id"` // 用户id + User SysUser `json:"user"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_params.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_params.go new file mode 100644 index 000000000..049c07f20 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_params.go @@ -0,0 +1,20 @@ +// 自动生成模板SysParams +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" +) + +// 参数 结构体 SysParams +type SysParams struct { + global.GVA_MODEL + Name string `json:"name" form:"name" gorm:"column:name;comment:参数名称;" binding:"required"` //参数名称 + Key string `json:"key" form:"key" gorm:"column:key;comment:参数键;" binding:"required"` //参数键 + Value string `json:"value" form:"value" gorm:"column:value;comment:参数值;" binding:"required"` //参数值 + Desc string `json:"desc" form:"desc" gorm:"column:desc;comment:参数说明;"` //参数说明 +} + +// TableName 参数 SysParams自定义表名 sys_params +func (SysParams) TableName() string { + return "sys_params" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_system.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_system.go new file mode 100644 index 000000000..ad983110b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_system.go @@ -0,0 +1,10 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/config" +) + +// 配置文件结构体 +type System struct { + Config config.Server `json:"config"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_user.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_user.go new file mode 100644 index 000000000..916c6b6e0 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_user.go @@ -0,0 +1,62 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common" + "github.com/gofrs/uuid/v5" +) + +type Login interface { + GetUsername() string + GetNickname() string + GetUUID() uuid.UUID + GetUserId() uint + GetAuthorityId() uint + GetUserInfo() any +} + +var _ Login = new(SysUser) + +type SysUser struct { + global.GVA_MODEL + UUID uuid.UUID `json:"uuid" gorm:"index;comment:用户UUID"` // 用户UUID + Username string `json:"userName" gorm:"index;comment:用户登录名"` // 用户登录名 + Password string `json:"-" gorm:"comment:用户登录密码"` // 用户登录密码 + NickName string `json:"nickName" gorm:"default:系统用户;comment:用户昵称"` // 用户昵称 + HeaderImg string `json:"headerImg" gorm:"default:https://qmplusimg.henrongyi.top/gva_header.jpg;comment:用户头像"` // 用户头像 + AuthorityId uint `json:"authorityId" gorm:"default:888;comment:用户角色ID"` // 用户角色ID + Authority SysAuthority `json:"authority" gorm:"foreignKey:AuthorityId;references:AuthorityId;comment:用户角色"` // 用户角色 + Authorities []SysAuthority `json:"authorities" gorm:"many2many:sys_user_authority;"` // 多用户角色 + Phone string `json:"phone" gorm:"comment:用户手机号"` // 用户手机号 + Email string `json:"email" gorm:"comment:用户邮箱"` // 用户邮箱 + Enable int `json:"enable" gorm:"default:1;comment:用户是否被冻结 1正常 2冻结"` //用户是否被冻结 1正常 2冻结 + OriginSetting common.JSONMap `json:"originSetting" form:"originSetting" gorm:"type:text;default:null;column:origin_setting;comment:配置;"` //配置 +} + +func (SysUser) TableName() string { + return "sys_users" +} + +func (s *SysUser) GetUsername() string { + return s.Username +} + +func (s *SysUser) GetNickname() string { + return s.NickName +} + +func (s *SysUser) GetUUID() uuid.UUID { + return s.UUID +} + +func (s *SysUser) GetUserId() uint { + return s.ID +} + +func (s *SysUser) GetAuthorityId() uint { + return s.AuthorityId +} + +func (s *SysUser) GetUserInfo() any { + return *s +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_user_authority.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_user_authority.go new file mode 100644 index 000000000..1aa83cbd5 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/model/system/sys_user_authority.go @@ -0,0 +1,11 @@ +package system + +// SysUserAuthority 是 sysUser 和 sysAuthority 的连接表 +type SysUserAuthority struct { + SysUserId uint `gorm:"column:sys_user_id"` + SysAuthorityAuthorityId uint `gorm:"column:sys_authority_authority_id"` +} + +func (s *SysUserAuthority) TableName() string { + return "sys_user_authority" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/api/enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/api/enter.go new file mode 100644 index 000000000..7fee6fc2b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/api/enter.go @@ -0,0 +1,10 @@ +package api + +import "github.com/flipped-aurora/gin-vue-admin/server/plugin/announcement/service" + +var ( + Api = new(api) + serviceInfo = service.Service.Info +) + +type api struct{ Info info } diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/api/info.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/api/info.go new file mode 100644 index 000000000..dd0faa350 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/api/info.go @@ -0,0 +1,183 @@ +package api + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/announcement/model" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/announcement/model/request" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +var Info = new(info) + +type info struct{} + +// CreateInfo 创建公告 +// @Tags Info +// @Summary 创建公告 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.Info true "创建公告" +// @Success 200 {object} response.Response{msg=string} "创建成功" +// @Router /info/createInfo [post] +func (a *info) CreateInfo(c *gin.Context) { + var info model.Info + err := c.ShouldBindJSON(&info) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = serviceInfo.CreateInfo(&info) + if err != nil { + global.GVA_LOG.Error("创建失败!", zap.Error(err)) + response.FailWithMessage("创建失败", c) + return + } + response.OkWithMessage("创建成功", c) +} + +// DeleteInfo 删除公告 +// @Tags Info +// @Summary 删除公告 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.Info true "删除公告" +// @Success 200 {object} response.Response{msg=string} "删除成功" +// @Router /info/deleteInfo [delete] +func (a *info) DeleteInfo(c *gin.Context) { + ID := c.Query("ID") + err := serviceInfo.DeleteInfo(ID) + if err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage("删除失败", c) + return + } + response.OkWithMessage("删除成功", c) +} + +// DeleteInfoByIds 批量删除公告 +// @Tags Info +// @Summary 批量删除公告 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{msg=string} "批量删除成功" +// @Router /info/deleteInfoByIds [delete] +func (a *info) DeleteInfoByIds(c *gin.Context) { + IDs := c.QueryArray("IDs[]") + if err := serviceInfo.DeleteInfoByIds(IDs); err != nil { + global.GVA_LOG.Error("批量删除失败!", zap.Error(err)) + response.FailWithMessage("批量删除失败", c) + return + } + response.OkWithMessage("批量删除成功", c) +} + +// UpdateInfo 更新公告 +// @Tags Info +// @Summary 更新公告 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.Info true "更新公告" +// @Success 200 {object} response.Response{msg=string} "更新成功" +// @Router /info/updateInfo [put] +func (a *info) UpdateInfo(c *gin.Context) { + var info model.Info + err := c.ShouldBindJSON(&info) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = serviceInfo.UpdateInfo(info) + if err != nil { + global.GVA_LOG.Error("更新失败!", zap.Error(err)) + response.FailWithMessage("更新失败", c) + return + } + response.OkWithMessage("更新成功", c) +} + +// FindInfo 用id查询公告 +// @Tags Info +// @Summary 用id查询公告 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query model.Info true "用id查询公告" +// @Success 200 {object} response.Response{data=model.Info,msg=string} "查询成功" +// @Router /info/findInfo [get] +func (a *info) FindInfo(c *gin.Context) { + ID := c.Query("ID") + reinfo, err := serviceInfo.GetInfo(ID) + if err != nil { + global.GVA_LOG.Error("查询失败!", zap.Error(err)) + response.FailWithMessage("查询失败", c) + return + } + response.OkWithData(reinfo, c) +} + +// GetInfoList 分页获取公告列表 +// @Tags Info +// @Summary 分页获取公告列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query request.InfoSearch true "分页获取公告列表" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "获取成功" +// @Router /info/getInfoList [get] +func (a *info) GetInfoList(c *gin.Context) { + var pageInfo request.InfoSearch + err := c.ShouldBindQuery(&pageInfo) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + list, total, err := serviceInfo.GetInfoInfoList(pageInfo) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + response.OkWithDetailed(response.PageResult{ + List: list, + Total: total, + Page: pageInfo.Page, + PageSize: pageInfo.PageSize, + }, "获取成功", c) +} + +// GetInfoDataSource 获取Info的数据源 +// @Tags Info +// @Summary 获取Info的数据源 +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{data=object,msg=string} "查询成功" +// @Router /info/getInfoDataSource [get] +func (a *info) GetInfoDataSource(c *gin.Context) { + // 此接口为获取数据源定义的数据 + dataSource, err := serviceInfo.GetInfoDataSource() + if err != nil { + global.GVA_LOG.Error("查询失败!", zap.Error(err)) + response.FailWithMessage("查询失败", c) + return + } + response.OkWithData(dataSource, c) +} + +// GetInfoPublic 不需要鉴权的公告接口 +// @Tags Info +// @Summary 不需要鉴权的公告接口 +// @accept application/json +// @Produce application/json +// @Param data query request.InfoSearch true "分页获取公告列表" +// @Success 200 {object} response.Response{data=object,msg=string} "获取成功" +// @Router /info/getInfoPublic [get] +func (a *info) GetInfoPublic(c *gin.Context) { + // 此接口不需要鉴权 示例为返回了一个固定的消息接口,一般本接口用于C端服务,需要自己实现业务逻辑 + response.OkWithDetailed(gin.H{"info": "不需要鉴权的公告接口信息"}, "获取成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/config/config.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/config/config.go new file mode 100644 index 000000000..809bc990f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/config/config.go @@ -0,0 +1,4 @@ +package config + +type Config struct { +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/gen/gen.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/gen/gen.go new file mode 100644 index 000000000..240749ff1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/gen/gen.go @@ -0,0 +1,17 @@ +package main + +import ( + "gorm.io/gen" + "path/filepath" //go:generate go mod tidy + //go:generate go mod download + //go:generate go run gen.go + "github.com/flipped-aurora/gin-vue-admin/server/plugin/announcement/model" +) + +func main() { + g := gen.NewGenerator(gen.Config{OutPath: filepath.Join("..", "..", "..", "announcement", "blender", "model", "dao"), Mode: gen.WithoutContext | gen.WithDefaultQuery | gen.WithQueryInterface}) + g.ApplyBasic( + new(model.Info), + ) + g.Execute() +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/api.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/api.go new file mode 100644 index 000000000..6d0fed1d0 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/api.go @@ -0,0 +1,49 @@ +package initialize + +import ( + "context" + model "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/plugin-tool/utils" +) + +func Api(ctx context.Context) { + entities := []model.SysApi{ + { + Path: "/info/createInfo", + Description: "新建公告", + ApiGroup: "公告", + Method: "POST", + }, + { + Path: "/info/deleteInfo", + Description: "删除公告", + ApiGroup: "公告", + Method: "DELETE", + }, + { + Path: "/info/deleteInfoByIds", + Description: "批量删除公告", + ApiGroup: "公告", + Method: "DELETE", + }, + { + Path: "/info/updateInfo", + Description: "更新公告", + ApiGroup: "公告", + Method: "PUT", + }, + { + Path: "/info/findInfo", + Description: "根据ID获取公告", + ApiGroup: "公告", + Method: "GET", + }, + { + Path: "/info/getInfoList", + Description: "获取公告列表", + ApiGroup: "公告", + Method: "GET", + }, + } + utils.RegisterApis(entities...) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/gorm.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/gorm.go new file mode 100644 index 000000000..3a88ff25a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/gorm.go @@ -0,0 +1,20 @@ +package initialize + +import ( + "context" + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/announcement/model" + "github.com/pkg/errors" + "go.uber.org/zap" +) + +func Gorm(ctx context.Context) { + err := global.GVA_DB.WithContext(ctx).AutoMigrate( + new(model.Info), + ) + if err != nil { + err = errors.Wrap(err, "注册表失败!") + zap.L().Error(fmt.Sprintf("%+v", err)) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/menu.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/menu.go new file mode 100644 index 000000000..40aff2b50 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/menu.go @@ -0,0 +1,22 @@ +package initialize + +import ( + "context" + model "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/plugin-tool/utils" +) + +func Menu(ctx context.Context) { + entities := []model.SysBaseMenu{ + { + ParentId: 24, + Path: "anInfo", + Name: "anInfo", + Hidden: false, + Component: "plugin/announcement/view/info.vue", + Sort: 5, + Meta: model.Meta{Title: "公告管理", Icon: "box"}, + }, + } + utils.RegisterMenus(entities...) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/router.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/router.go new file mode 100644 index 000000000..e2c4f1787 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/router.go @@ -0,0 +1,15 @@ +package initialize + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/announcement/router" + "github.com/gin-gonic/gin" +) + +func Router(engine *gin.Engine) { + public := engine.Group(global.GVA_CONFIG.System.RouterPrefix).Group("") + private := engine.Group(global.GVA_CONFIG.System.RouterPrefix).Group("") + private.Use(middleware.JWTAuth()).Use(middleware.CasbinHandler()) + router.Router.Info.Init(public, private) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/viper.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/viper.go new file mode 100644 index 000000000..68cfff685 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/initialize/viper.go @@ -0,0 +1,17 @@ +package initialize + +import ( + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/announcement/plugin" + "github.com/pkg/errors" + "go.uber.org/zap" +) + +func Viper() { + err := global.GVA_VP.UnmarshalKey("announcement", &plugin.Config) + if err != nil { + err = errors.Wrap(err, "初始化配置文件失败!") + zap.L().Error(fmt.Sprintf("%+v", err)) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/model/info.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/model/info.go new file mode 100644 index 000000000..fcaa11f59 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/model/info.go @@ -0,0 +1,20 @@ +package model + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "gorm.io/datatypes" +) + +// Info 公告 结构体 +type Info struct { + global.GVA_MODEL + Title string `json:"title" form:"title" gorm:"column:title;comment:公告标题;"` //标题 + Content string `json:"content" form:"content" gorm:"column:content;comment:公告内容;type:text;"` //内容 + UserID *int `json:"userID" form:"userID" gorm:"column:user_id;comment:发布者;"` //作者 + Attachments datatypes.JSON `json:"attachments" form:"attachments" gorm:"column:attachments;comment:相关附件;"swaggertype:"array,object"` //附件 +} + +// TableName 公告 Info自定义表名 gva_announcements_info +func (Info) TableName() string { + return "gva_announcements_info" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/model/request/info.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/model/request/info.go new file mode 100644 index 000000000..35be3e032 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/model/request/info.go @@ -0,0 +1,12 @@ +package request + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "time" +) + +type InfoSearch struct { + StartCreatedAt *time.Time `json:"startCreatedAt" form:"startCreatedAt"` + EndCreatedAt *time.Time `json:"endCreatedAt" form:"endCreatedAt"` + request.PageInfo +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/plugin.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/plugin.go new file mode 100644 index 000000000..a20edb894 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/plugin.go @@ -0,0 +1,26 @@ +package announcement + +import ( + "context" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/announcement/initialize" + interfaces "github.com/flipped-aurora/gin-vue-admin/server/utils/plugin/v2" + "github.com/gin-gonic/gin" +) + +var _ interfaces.Plugin = (*plugin)(nil) + +var Plugin = new(plugin) + +type plugin struct{} + +func (p *plugin) Register(group *gin.Engine) { + ctx := context.Background() + // 如果需要配置文件,请到config.Config中填充配置结构,且到下方发放中填入其在config.yaml中的key + // initialize.Viper() + // 安装插件时候自动注册的api数据请到下方法.Api方法中实现 + initialize.Api(ctx) + // 安装插件时候自动注册的api数据请到下方法.Menu方法中实现 + initialize.Menu(ctx) + initialize.Gorm(ctx) + initialize.Router(group) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/plugin/plugin.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/plugin/plugin.go new file mode 100644 index 000000000..405823980 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/plugin/plugin.go @@ -0,0 +1,5 @@ +package plugin + +import "github.com/flipped-aurora/gin-vue-admin/server/plugin/announcement/config" + +var Config config.Config diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/router/enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/router/enter.go new file mode 100644 index 000000000..543e0ffb2 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/router/enter.go @@ -0,0 +1,10 @@ +package router + +import "github.com/flipped-aurora/gin-vue-admin/server/plugin/announcement/api" + +var ( + Router = new(router) + apiInfo = api.Api.Info +) + +type router struct{ Info info } diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/router/info.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/router/info.go new file mode 100644 index 000000000..8de316b35 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/router/info.go @@ -0,0 +1,31 @@ +package router + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/gin-gonic/gin" +) + +var Info = new(info) + +type info struct{} + +// Init 初始化 公告 路由信息 +func (r *info) Init(public *gin.RouterGroup, private *gin.RouterGroup) { + { + group := private.Group("info").Use(middleware.OperationRecord()) + group.POST("createInfo", apiInfo.CreateInfo) // 新建公告 + group.DELETE("deleteInfo", apiInfo.DeleteInfo) // 删除公告 + group.DELETE("deleteInfoByIds", apiInfo.DeleteInfoByIds) // 批量删除公告 + group.PUT("updateInfo", apiInfo.UpdateInfo) // 更新公告 + } + { + group := private.Group("info") + group.GET("findInfo", apiInfo.FindInfo) // 根据ID获取公告 + group.GET("getInfoList", apiInfo.GetInfoList) // 获取公告列表 + } + { + group := public.Group("info") + group.GET("getInfoDataSource", apiInfo.GetInfoDataSource) // 获取公告数据源 + group.GET("getInfoPublic", apiInfo.GetInfoPublic) // 获取公告列表 + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/service/enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/service/enter.go new file mode 100644 index 000000000..988fbcd76 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/service/enter.go @@ -0,0 +1,5 @@ +package service + +var Service = new(service) + +type service struct{ Info info } diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/service/info.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/service/info.go new file mode 100644 index 000000000..b52155393 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/announcement/service/info.go @@ -0,0 +1,78 @@ +package service + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/announcement/model" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/announcement/model/request" +) + +var Info = new(info) + +type info struct{} + +// CreateInfo 创建公告记录 +// Author [piexlmax](https://github.com/piexlmax) +func (s *info) CreateInfo(info *model.Info) (err error) { + err = global.GVA_DB.Create(info).Error + return err +} + +// DeleteInfo 删除公告记录 +// Author [piexlmax](https://github.com/piexlmax) +func (s *info) DeleteInfo(ID string) (err error) { + err = global.GVA_DB.Delete(&model.Info{}, "id = ?", ID).Error + return err +} + +// DeleteInfoByIds 批量删除公告记录 +// Author [piexlmax](https://github.com/piexlmax) +func (s *info) DeleteInfoByIds(IDs []string) (err error) { + err = global.GVA_DB.Delete(&[]model.Info{}, "id in ?", IDs).Error + return err +} + +// UpdateInfo 更新公告记录 +// Author [piexlmax](https://github.com/piexlmax) +func (s *info) UpdateInfo(info model.Info) (err error) { + err = global.GVA_DB.Model(&model.Info{}).Where("id = ?", info.ID).Updates(&info).Error + return err +} + +// GetInfo 根据ID获取公告记录 +// Author [piexlmax](https://github.com/piexlmax) +func (s *info) GetInfo(ID string) (info model.Info, err error) { + err = global.GVA_DB.Where("id = ?", ID).First(&info).Error + return +} + +// GetInfoInfoList 分页获取公告记录 +// Author [piexlmax](https://github.com/piexlmax) +func (s *info) GetInfoInfoList(info request.InfoSearch) (list []model.Info, total int64, err error) { + limit := info.PageSize + offset := info.PageSize * (info.Page - 1) + // 创建db + db := global.GVA_DB.Model(&model.Info{}) + var infos []model.Info + // 如果有条件搜索 下方会自动创建搜索语句 + if info.StartCreatedAt != nil && info.EndCreatedAt != nil { + db = db.Where("created_at BETWEEN ? AND ?", info.StartCreatedAt, info.EndCreatedAt) + } + err = db.Count(&total).Error + if err != nil { + return + } + + if limit != 0 { + db = db.Limit(limit).Offset(offset) + } + err = db.Find(&infos).Error + return infos, total, err +} +func (s *info) GetInfoDataSource() (res map[string][]map[string]any, err error) { + res = make(map[string][]map[string]any) + + userID := make([]map[string]any, 0) + global.GVA_DB.Table("sys_users").Select("nick_name as label,id as value").Scan(&userID) + res["userID"] = userID + return +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/README.md b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/README.md new file mode 100644 index 000000000..63ff4400d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/README.md @@ -0,0 +1,63 @@ +[## GVA 图库功能 + +### 手动安装方法 + + 1.解压zip获得customerservice文件夹 + 2.将 customerservice/web/plugin/customerservice 放置在web/plugin下 + 3.将 customerservice/server/plugin/customerservice 放置在server/plugin下 + +#### 1. 前往GVA主程序下的initialize/router.go 在Routers 方法最末尾按照你需要的及安全模式添加本插件 + PluginInit(PublicGroup, customerservice.CreateCustomerServicePlug()) + 到gva系统,角色管理,分配角色的api权限即可,插件会自动注册api,需要手动分配。 + 注:会自动生成如下表:sys_service、sys_service_msg、sys_service_record、sys_service_reply、sys_service_script、sys_test_user +### 2. 配置说明 + +#### 2-1 后台主要功能 + + 客服管理、客服话术、客服自动回复配置等 + +#### 2-2 使用说明 + + 1、在前端vue部分路由需要手动配置: + web/src/router/index.js下新增如下配置: + { + path: '/kefu/login', + name: 'ServiceLogin', + component: () => import('@/plugin/customerservice/view/login/index.vue'), + meta:{ + client:true + } + }, + { + path: '/kefu/main', + name: 'ServiceMain', + component: () => import('@/plugin/customerservice/view/chat/index.vue'), + meta:{ + client:true + } + }, + { + path: '/kefu/test', + name: 'ServiceUserTest', + component: () => import('@/plugin/customerservice/view/chat/test.vue'), + meta:{ + client:true + } + }, + + 2、后台使用方法: + 启动gva项目,安装后在客服列表添加客服,然后可以从客服列表的进入工作台进入客服聊天页,或者打开客服登录页 + http://localhost:8080/#/kefu/login进行登录,在sys_test_user表手动新增测试聊天用户,然后打开链接 + http://localhost:8080/#/kefu/test/?uid=xx,uid的参数为你手动添加的test表自增id,就可以进行聊天测试了 + 3、此插件涉及的图片上传使用了插件管理中《图库》插件,可根据自己喜好进行替换 + 4、websocket连接的地方在插件view/chat/index.vue和test.vue下,连接地址改成自己项目地址, + 客服:websocket.value = new WebSocket(`ws://localhost:8888/service/serve_ws?token=${token.value}`) + 用户:websocket.value = new WebSocket(`ws://localhost:8888/service/ws?user_id=${uid.value}`) + 5、项目没进行过啥大的测试,仅供参考学习 + +#### 2-3 参数说明 + +### 3. 方法API + 无 + +]() \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/api/api.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/api/api.go new file mode 100644 index 000000000..e395b2aab --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/api/api.go @@ -0,0 +1,396 @@ +package api + +import ( + "crypto/md5" + "encoding/base64" + "encoding/hex" + "encoding/json" + "errors" + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + sysModel "github.com/flipped-aurora/gin-vue-admin/server/plugin/customerservice/model" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/customerservice/service" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/customerservice/service/ws" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/customerservice/tools" + "github.com/gin-gonic/gin" + "github.com/google/uuid" + "go.uber.org/zap" + "gorm.io/gorm" + "net/http" + "path/filepath" + "sort" + "strconv" + "time" +) + +type CustomerServiceApi struct{} + +func (cus *CustomerServiceApi) ServeWs(ctx *gin.Context) { + ws.WsServe(ctx) +} + +func (cus *CustomerServiceApi) ServeWsForKefu(ctx *gin.Context) { + ws.ServeWsForKefu(ctx) +} + +func (cus *CustomerServiceApi) HandleTransfer(c *gin.Context) { + var transferReq struct { + FromAgent string `json:"from_agent"` + ToAgent string `json:"to_agent"` + UserID string `json:"user_id"` + } + if err := c.ShouldBindJSON(&transferReq); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) + return + } + + // 更新用户与客服的映射关系 + // 例如:userAgentMap[transferReq.UserID] = transferReq.ToAgent + + c.JSON(http.StatusOK, gin.H{"status": "success"}) +} + +func (cus *CustomerServiceApi) GetKefuInfo(c *gin.Context) { + serviceIdAny, ok := c.Get("service_id") + uidStr := c.Query("uid") + var serviceId int64 + if !ok && uidStr != "" { + var recordData sysModel.SysServiceRecord + result := global.GVA_DB.Where("uid=?", uidStr).Order("update_time DESC").Limit(1).Find(&recordData) + if result.RowsAffected == 0 || result.Error != nil { + //直接查询service表 + result2 := global.GVA_DB.Model(&sysModel.SysService{}).Select("id").Where("`status`=?", 1).Order("add_time DESC").Limit(1).Scan(&serviceId) + fmt.Println(result2) + fmt.Println(serviceId) + if result2.Error != nil || result2.RowsAffected == 0 { + response.FailWithMessage("获取客服信息失败-1", c) + return + } + } else { + serviceId = recordData.ServiceId + } + + } else { + serviceId, _ = serviceIdAny.(int64) + } + var serviceData sysModel.SysService + result3 := global.GVA_DB.Select("id,uid,online,avatar,nickname,add_time,status").Where("id=?", serviceId).Where("`status`=?", 1).Order("add_time DESC").Limit(1).Find(&serviceData) + + if result3.Error != nil || result3.RowsAffected == 0 { + response.FailWithMessage("获取客服信息失败-2", c) + return + } + + response.OkWithDetailed(serviceData, "获取成功", c) +} + +func (cus *CustomerServiceApi) SendMsg(c *gin.Context) { + var msgJson ws.Message + if jsErr := c.ShouldBindJSON(&msgJson); jsErr != nil { + fmt.Println(jsErr) + response.FailWithMessage("参数有误-1", c) + return + } + fromIdStr := msgJson.Sender + toIdStr := msgJson.Receiver + content := msgJson.Content + cType := msgJson.Role + msgTypeStr := msgJson.MsgType + if content == "" || fromIdStr == "" || toIdStr == "" || msgTypeStr == "" { + response.FailWithMessage("参数有误-2", c) + return + } + toId, err_1 := strconv.ParseInt(toIdStr, 10, 64) + fromId, err_2 := strconv.ParseInt(fromIdStr, 10, 64) + msgType, err_3 := strconv.ParseInt(msgTypeStr, 10, 64) + if err_1 != nil || err_2 != nil || err_3 != nil { + response.FailWithMessage("参数有误", c) + return + } + //限流 + if !tools.LimitFreqSingle("send_message:"+c.ClientIP(), 1, 2) { + response.FailWithMessage("发送频率过快", c) + return + } + var kfInfo sysModel.SysService + var userInfo sysModel.SysTestUser + var err, err2 error + isKf := "0" + if cType == "kf" { + err = global.GVA_DB.Where("id = ?", fromId).First(&kfInfo).Error + err2 = global.GVA_DB.Where("id = ?", toId).First(&userInfo).Error + isKf = "1" + + } else if cType == "user" { + err = global.GVA_DB.Where("id = ?", toId).First(&kfInfo).Error + err2 = global.GVA_DB.Where("id = ?", fromId).First(&userInfo).Error + } + if err != nil || err2 != nil { + response.FailWithMessage("获取失败-1", c) + return + } else if errors.Is(err, gorm.ErrRecordNotFound) || errors.Is(err2, gorm.ErrRecordNotFound) { + response.FailWithMessage("获取失败-2", c) + return + } + + ser := service.ServiceGroupApp + cErr := ser.CreateMsg(kfInfo, userInfo, msgType, content, isKf) + if cErr != nil { + response.FailWithMessage("发送失败", c) + return + } + message := ws.Message{ + Sender: fromIdStr, + Receiver: toIdStr, + Content: content, + MsgType: msgTypeStr, + Role: "kf", + Timestamp: time.Now().Unix(), + } + var key string + if cType == "kf" { + //查找指定用户广播消息 + key = "user" + toIdStr + message.AvatarUrl = kfInfo.Avatar + message.Nickname = kfInfo.Nickname + } else if cType == "user" { + //查找指定客服广播消息 + key = "kf" + toIdStr + message.Role = "user" + message.AvatarUrl = userInfo.Avatar + message.Nickname = userInfo.Nickname + } + conn, ok := ws.Manager.Clients[key] + if conn != nil && ok { + sendMsg := ws.TypeMsg{ + Type: "message", + Data: message, + } + str, _ := json.Marshal(sendMsg) + conn.Send <- str + + if cType == "user" { + //客服给用户发送自动回复消息 + var autoReply sysModel.SysServiceReply + autoContent := "" + var autoMsgType int64 + aErr := global.GVA_DB.Where("is_complete = ? AND `status` = ? AND keyword = ?", 1, 1, content).First(&autoReply).Error + fmt.Println(aErr) + if aErr == nil { + fmt.Println(autoReply) + autoContent = autoReply.Content + autoMsgType = autoReply.ReplyType + } else { + aErr = global.GVA_DB.Where("is_complete = ? AND `status` = ? AND keyword LIKE ?", 0, 1, "%"+content+"%").First(&autoReply).Error + if aErr == nil { + autoContent = autoReply.Content + autoMsgType = autoReply.ReplyType + } + } + if autoContent != "" { + if autoMsgType == 2 { + autoMsgType = 3 //图片 + } + aErr = ser.CreateMsg(kfInfo, userInfo, autoMsgType, autoContent, "1") + if aErr == nil { + autoUidStr := strconv.FormatInt(userInfo.Id, 10) + message.Sender = strconv.FormatInt(kfInfo.Id, 10) + message.Receiver = autoUidStr + message.MsgType = strconv.FormatInt(autoMsgType, 10) + message.Content = autoContent + message.IsKf = 1 + message.Role = "kf" + message.AvatarUrl = kfInfo.Avatar + message.Nickname = kfInfo.Nickname + sendMsg.Data = message + autoStr, _ := json.Marshal(sendMsg) + kfConn, isOk := ws.Manager.Clients["user"+autoUidStr] + if kfConn != nil && isOk { + kfConn.Send <- autoStr + } + } + } + } + } + + response.OkWithDetailed(nil, "发送成功", c) +} + +func (cus *CustomerServiceApi) GetMsgList(c *gin.Context) { + uid := c.Query("uid") + serviceId, ok := c.Get("service_id") //jwt里解出的 + if !ok { + //前端测试用户连接请求消息列表 + serviceId = c.Query("kf_id") + } + page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) + pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "10")) + if pageSize > 20 { + pageSize = 20 + } + offset := pageSize * (page - 1) + var total int64 + var list []sysModel.SysServiceMsg + global.GVA_DB.Model(&sysModel.SysServiceMsg{}).Where("uid=?", uid).Where("service_id=?", serviceId).Count(&total) + err := global.GVA_DB.Where("uid=?", uid).Where("service_id=?", serviceId).Limit(pageSize).Offset(offset).Order("add_time desc").Find(&list).Error + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + if len(list) > 0 { + sort.Slice(list, func(i, j int) bool { + return list[i].AddTime < list[j].AddTime + }) + for k, v := range list { + decoded, _ := base64.StdEncoding.DecodeString(v.Content) + v.Content = string(decoded) + list[k] = v + } + } + response.OkWithDetailed(response.PageResult{ + List: list, + Total: total, + Page: page, + PageSize: pageSize, + }, "获取成功", c) +} + +func (cus *CustomerServiceApi) GetMsgUser(c *gin.Context) { + kfId, _ := c.Get("service_id") + var list []sysModel.SysServiceRecord + err := global.GVA_DB.Where("service_id=?", kfId).Find(&list).Error + if err != nil { + response.FailWithMessage("获取失败", c) + return + } + if len(list) > 0 { + //判断用户在线状况 + for k, v := range list { + userKey := "user" + strconv.FormatInt(v.Uid, 10) + isClent, ok := ws.Manager.Clients[userKey] + if ok && isClent != nil { + v.Online = 1 + } else { + v.Online = 0 + } + decoded, _ := base64.StdEncoding.DecodeString(v.Message) + v.Message = string(decoded) + //查找未读消息数 + var noCount int64 + global.GVA_DB.Model(&sysModel.SysServiceMsg{}).Where("is_view=?", 0).Where("is_kf=?", 0).Where("service_id=?", kfId).Where("uid=?", v.Uid).Count(&noCount) + v.NoRead = noCount + v.AddTimeStr = tools.FormatTimestamp(v.UpdateTime) + if v.MessageType == 3 { + v.Message = "[图片]" + } + list[k] = v + } + sort.Slice(list, func(i, j int) bool { + if list[i].Online != list[j].Online { + return list[i].Online > list[j].Online + } + return list[i].AddTime > list[j].AddTime + }) + } + response.OkWithDetailed(list, "获取成功", c) +} + +func (cus *CustomerServiceApi) SetMsgView(c *gin.Context) { + kfId, _ := c.Get("service_id") + uid := c.Query("uid") + global.GVA_DB.Model(&sysModel.SysServiceMsg{}).Where(map[string]interface{}{"is_kf": 0, "service_id": kfId, "is_view": 0, "uid": uid}).Update("is_view", 1) + response.Ok(c) +} + +func (cus *CustomerServiceApi) UploadFile(c *gin.Context) { + file, err := c.FormFile("file") + if err != nil { + response.FailWithMessage("上传失败", c) + return + } + extension := filepath.Ext(file.Filename) + newUUID := uuid.New().String() + hash := md5.Sum([]byte("gva-service" + newUUID)) + md5Pwd := hex.EncodeToString(hash[:]) + filename := md5Pwd + extension + if err := c.SaveUploadedFile(file, "./uploads/file/"+filename); err != nil { + response.FailWithMessage("上传失败-2", c) + return + + } + ser := service.ServiceGroupApp + url := ser.GetUrlHost(c) + response.OkWithDetailed(url+"api/uploads/file/"+filename, "获取成功", c) + return +} + +func (cus *CustomerServiceApi) GetTestMsgList(c *gin.Context) { + uid := c.Query("uid") + serviceId := c.Query("service_id") + page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) + pageSize, _ := strconv.Atoi(c.DefaultQuery("page_size", "10")) + if pageSize > 20 { + pageSize = 20 + } + offset := pageSize * (page - 1) + var total int64 + var list []sysModel.SysServiceMsg + global.GVA_DB.Model(&sysModel.SysServiceMsg{}).Where("uid=?", uid).Where("service_id=?", serviceId).Count(&total) + err := global.GVA_DB.Where("uid=?", uid).Where("service_id=?", serviceId).Limit(pageSize).Offset(offset).Order("add_time desc").Find(&list).Error + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败", c) + return + } + if len(list) > 0 { + sort.Slice(list, func(i, j int) bool { + return list[i].AddTime < list[j].AddTime + }) + for k, v := range list { + decoded, _ := base64.StdEncoding.DecodeString(v.Content) + v.Content = string(decoded) + list[k] = v + } + } + response.OkWithDetailed(response.PageResult{ + List: list, + Total: total, + Page: page, + PageSize: pageSize, + }, "获取成功", c) +} + +func (cus *CustomerServiceApi) GetUserInfo(c *gin.Context) { + uidStr := c.Query("uid") + var test sysModel.SysTestUser + result := global.GVA_DB.Where("id=?", uidStr).Limit(1).Find(&test) + + if result.Error != nil || result.RowsAffected == 0 { + response.FailWithMessage("获取用户信息失败", c) + return + } + + response.OkWithDetailed(test, "获取成功", c) +} + +func (cus *CustomerServiceApi) GetServiceScript(c *gin.Context) { + rType := c.Query("type") + db := global.GVA_DB.Model(&sysModel.SysServiceScript{}) + if rType == "1" { + serviceId, ok := c.Get("service_id") + if serviceId != "" && ok { + db = db.Where("service_id=?", serviceId) + } + } else { + db = db.Where("service_id=?", 0) + } + var list []sysModel.SysServiceScript + err := db.Order("add_time desc").Limit(20).Offset(0).Find(&list).Error + if err != nil { + response.FailWithMessage("查询失败:"+err.Error(), c) + return + } + response.OkWithDetailed(list, "获取成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/api/enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/api/enter.go new file mode 100644 index 000000000..544d361ad --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/api/enter.go @@ -0,0 +1,8 @@ +package api + +type ApiGroup struct { + CustomerServiceApi + AdminServiceApi +} + +var ApiGroupApp = new(ApiGroup) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/api/service.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/api/service.go new file mode 100644 index 000000000..85dece9d9 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/api/service.go @@ -0,0 +1,484 @@ +package api + +import ( + "crypto/md5" + "encoding/hex" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/customerservice/model" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/customerservice/service" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/customerservice/tools" + "github.com/gin-gonic/gin" + "strconv" + "time" +) + +type AdminServiceApi struct{} + +// GetServiceList +// @Tags sysService +// @Summary 客服列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.PageInfo true "页码, 每页大小" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "分页客服列表,返回包括列表,总数,页码,每页数量" +// @Router /service/get_service_list [post] +func (ad *AdminServiceApi) GetServiceList(c *gin.Context) { + var pageInfo model.PageInfo + if err := c.ShouldBindQuery(&pageInfo); err != nil { + response.FailWithMessage("参数错误:"+err.Error(), c) + return + } + limit := pageInfo.Limit + offset := pageInfo.Limit * (pageInfo.Page - 1) + db := global.GVA_DB.Model(&model.SysService{}) + var list []model.SysService + var total int64 + db.Count(&total) + err := db.Omit("password").Order("add_time desc").Limit(limit).Offset(offset).Find(&list).Error + if err != nil { + response.FailWithMessage("查询失败:"+err.Error(), c) + return + } + response.OkWithDetailed(response.PageResult{ + List: list, + Total: total, + Page: pageInfo.Page, + PageSize: pageInfo.Limit, + }, "获取成功", c) +} + +// SaveService +// @Tags sysService +// @Summary 添加/更新客服 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request true "" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "" +// @Router /service/save_service [post] +func (ad *AdminServiceApi) SaveService(c *gin.Context) { + var serviceData model.SysService + if err := c.ShouldBindJSON(&serviceData); err != nil { + response.FailWithMessage("参数错误:"+err.Error(), c) + return + } + //校验数据 + ser := service.ServiceGroupApp + if err := ser.ValidateServiceData(&serviceData); err != nil { + response.FailWithMessage("操作失败:"+err.Error(), c) + return + } + var msg string + if serviceData.Password != "" { + hash := md5.Sum([]byte("gva-service" + serviceData.Password)) + serviceData.Password = hex.EncodeToString(hash[:]) + } + + if serviceData.Id == 0 { + serviceData.AddTime = time.Now().Unix() + if err := global.GVA_DB.Create(&serviceData).Error; err != nil { + response.FailWithMessage("添加失败:"+err.Error(), c) + return + } + msg = "添加成功" + } else { + if err := global.GVA_DB.Model(&model.SysService{}).Where("id = ?", serviceData.Id).Updates(serviceData).Error; err != nil { + response.FailWithMessage("更新失败:"+err.Error(), c) + return + } + msg = "更新成功" + } + response.OkWithMessage(msg, c) +} + +// DeleteService +// @Tags sysService +// @Summary 删除客服 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.id true "id" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "成功消息" +// @Router /service/delete_service?id=xx [delete] +func (ad *AdminServiceApi) DeleteService(c *gin.Context) { + idParam := c.Query("id") + id, err := strconv.Atoi(idParam) + if err != nil { + response.FailWithMessage("参数错误:"+err.Error(), c) + return + } + var ser model.SysService + if err := global.GVA_DB.First(&ser, id).Error; err != nil { + //if errors.Is(err, gorm.ErrRecordNotFound) { + // + //} + response.FailWithMessage("用户不存在:"+err.Error(), c) + return + } + // 删除用户 + if err := global.GVA_DB.Delete(&model.SysService{}, id).Error; err != nil { + response.FailWithMessage("删除失败:"+err.Error(), c) + return + } + response.OkWithMessage("删除成功", c) +} + +// FindService +// @Tags sysService +// @Summary 查找客服 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.id true "id" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "成功消息" +// @Router /service/find_service?id=xx [get] +func (ad *AdminServiceApi) FindService(c *gin.Context) { + idParam := c.Query("id") + id, err := strconv.Atoi(idParam) + if err != nil { + response.FailWithMessage("参数错误:"+err.Error(), c) + return + } + var ser model.SysService + if err := global.GVA_DB.First(&ser, id).Error; err != nil { + response.FailWithMessage("客服不存在:"+err.Error(), c) + return + } + ser.Password = "" + response.OkWithDetailed(ser, "success", c) +} + +// AdminServiceLogin +// @Tags sysService +// @Summary 进入工作台 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.id true "id" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "成功消息" +// @Router /service/delete_reply/:id [delete] +func (ad *AdminServiceApi) AdminServiceLogin(c *gin.Context) { + idParam := c.Query("id") + var ser model.SysService + if err := global.GVA_DB.First(&ser, idParam).Error; err != nil { + response.FailWithMessage("客服不存在:"+err.Error(), c) + return + } + data := map[string]interface{}{} + + expTime, token, err := tools.GenerateToken(ser.Id) + if err != nil { + response.FailWithMessage("登录失败:"+err.Error(), c) + return + } + data["token"] = token + data["exp_time"] = expTime + + response.OkWithDetailed(data, "success", c) +} + +// AccountServiceLogin +// @Tags sysService +// @Summary 账户密码登录 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.id true "id" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "成功消息" +// @Router /service/admin_login?id=xx [get] +func (ad *AdminServiceApi) AccountServiceLogin(c *gin.Context) { + var loginInfo model.LoginInfo + if err := c.ShouldBindJSON(&loginInfo); err != nil { + response.FailWithMessage("参数错误:"+err.Error(), c) + return + } + if loginInfo.Account == "" || loginInfo.Password == "" { + response.FailWithMessage("账户或密码为空", c) + return + } + var serviceInfo model.SysService + if err := global.GVA_DB.Limit(1).Where("account=?", loginInfo.Account).Find(&serviceInfo).Error; err != nil { + response.FailWithMessage("客服不存在:"+err.Error(), c) + return + } + hash := md5.Sum([]byte("gva-service" + loginInfo.Password)) + md5Pwd := hex.EncodeToString(hash[:]) + if md5Pwd != serviceInfo.Password { + response.FailWithMessage("密码不正确", c) + return + } + + data := map[string]interface{}{} + expTime, token, err := tools.GenerateToken(serviceInfo.Id) + if err != nil { + response.FailWithMessage("登录失败:"+err.Error(), c) + return + } + data["token"] = token + data["exp_time"] = expTime + response.OkWithDetailed(data, "success", c) +} + +// GetScriptList +// @Tags sysService +// @Summary 客服话术列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.PageInfo true "页码, 每页大小" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "分页客服列表,返回包括列表,总数,页码,每页数量" +// @Router /service/get_script_list [get] +func (ad *AdminServiceApi) GetScriptList(c *gin.Context) { + var pageInfo model.PageInfo + if err := c.ShouldBindQuery(&pageInfo); err != nil { + response.FailWithMessage("参数错误:"+err.Error(), c) + return + } + limit := pageInfo.Limit + offset := pageInfo.Limit * (pageInfo.Page - 1) + db := global.GVA_DB.Model(&model.SysServiceScript{}) + var list []model.SysServiceScript + var total int64 + db.Count(&total) + err := db.Order("sort desc,add_time desc").Limit(limit).Offset(offset).Find(&list).Error + if err != nil { + response.FailWithMessage("查询失败:"+err.Error(), c) + return + } + for k, v := range list { + t := time.Unix(v.AddTime, 0) + v.AddTimeStr = t.Format("2006-01-02 15:04:05") + list[k] = v + } + response.OkWithDetailed(response.PageResult{ + List: list, + Total: total, + Page: pageInfo.Page, + PageSize: pageInfo.Limit, + }, "获取成功", c) +} + +// SaveScript +// @Tags sysService +// @Summary 添加/更新客服话术 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request true "" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "" +// @Router /service/save_script [post] +func (ad *AdminServiceApi) SaveScript(c *gin.Context) { + var scriptData model.SysServiceScript + if err := c.ShouldBindJSON(&scriptData); err != nil { + response.FailWithMessage("参数错误:"+err.Error(), c) + return + } + //校验数据 + ser := service.ServiceGroupApp + if err := ser.ValidateScriptData(&scriptData); err != nil { + response.FailWithMessage("操作失败:"+err.Error(), c) + return + } + var msg string + if scriptData.Id == 0 { + scriptData.AddTime = time.Now().Unix() + if err := global.GVA_DB.Create(&scriptData).Error; err != nil { + response.FailWithMessage("添加失败:"+err.Error(), c) + return + } + msg = "添加成功" + } else { + if err := global.GVA_DB.Model(&model.SysServiceScript{}).Where("id = ?", scriptData.Id).Updates(scriptData).Error; err != nil { + response.FailWithMessage("更新失败:"+err.Error(), c) + return + } + msg = "更新成功" + } + response.OkWithMessage(msg, c) +} + +// DeleteScript +// @Tags sysService +// @Summary 删除客服话术 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.id true "id" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "成功消息" +// @Router /service/delete_script?id=xxx [delete] +func (ad *AdminServiceApi) DeleteScript(c *gin.Context) { + idParam := c.Query("id") + id, err := strconv.Atoi(idParam) + if err != nil { + response.FailWithMessage("参数错误:"+err.Error(), c) + return + } + var ser model.SysServiceScript + if err := global.GVA_DB.First(&ser, id).Error; err != nil { + response.FailWithMessage("话术不存在或已删除:"+err.Error(), c) + return + } + // 删除 + if err := global.GVA_DB.Delete(&model.SysServiceScript{}, id).Error; err != nil { + response.FailWithMessage("删除失败:"+err.Error(), c) + return + } + response.OkWithMessage("删除成功", c) +} + +// FindScript +// @Tags sysService +// @Summary 查找话术 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.id true "id" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "成功消息" +// @Router /service/find_script?id=xx [get] +func (ad *AdminServiceApi) FindScript(c *gin.Context) { + idParam := c.Query("id") + id, err := strconv.Atoi(idParam) + if err != nil { + response.FailWithMessage("参数错误:"+err.Error(), c) + return + } + var ser model.SysServiceScript + if err := global.GVA_DB.First(&ser, id).Error; err != nil { + response.FailWithMessage("话术不存在:"+err.Error(), c) + return + } + response.OkWithDetailed(ser, "success", c) +} + +// AutoReplyList +// @Tags sysService +// @Summary 自动回复列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.PageInfo true "页码, 每页大小" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "分页客服列表,返回包括列表,总数,页码,每页数量" +// @Router /service/auto_reply_list [get] +func (ad *AdminServiceApi) AutoReplyList(c *gin.Context) { + var pageInfo model.AutoPageInfo + if err := c.ShouldBindQuery(&pageInfo); err != nil { + response.FailWithMessage("参数错误:"+err.Error(), c) + return + } + limit := pageInfo.Limit + offset := pageInfo.Limit * (pageInfo.Page - 1) + db := global.GVA_DB.Model(&model.SysServiceReply{}) + var list []model.SysServiceReply + var total int64 + db.Count(&total) + err := db.Order("add_time desc").Limit(limit).Offset(offset).Find(&list).Error + if err != nil { + response.FailWithMessage("查询失败:"+err.Error(), c) + return + } + for k, v := range list { + t := time.Unix(v.AddTime, 0) + v.AddTimeStr = t.Format("2006-01-02 15:04:05") + list[k] = v + } + response.OkWithDetailed(response.PageResult{ + List: list, + Total: total, + Page: pageInfo.Page, + PageSize: pageInfo.Limit, + }, "获取成功", c) +} + +// SaveReply +// @Tags sysService +// @Summary 添加/更新自动回复 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request true "" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "" +// @Router /service/save_reply [post] +func (ad *AdminServiceApi) SaveReply(c *gin.Context) { + var replyData model.SysServiceReply + if err := c.ShouldBindJSON(&replyData); err != nil { + response.FailWithMessage("参数错误:"+err.Error(), c) + return + } + //校验数据 + ser := service.ServiceGroupApp + if err := ser.ValidateReplyData(&replyData); err != nil { + response.FailWithMessage("操作失败:"+err.Error(), c) + return + } + var msg string + if replyData.Id == 0 { + replyData.AddTime = time.Now().Unix() + if err := global.GVA_DB.Create(&replyData).Error; err != nil { + response.FailWithMessage("添加失败:"+err.Error(), c) + return + } + msg = "添加成功" + } else { + if err := global.GVA_DB.Model(&model.SysServiceReply{}).Where("id = ?", replyData.Id).Updates(replyData).Error; err != nil { + response.FailWithMessage("更新失败:"+err.Error(), c) + return + } + msg = "更新成功" + } + response.OkWithMessage(msg, c) +} + +// DeleteReply +// @Tags sysService +// @Summary 删除自动回复 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.id true "id" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "成功消息" +// @Router /service/delete_reply?id=xx [delete] +func (ad *AdminServiceApi) DeleteReply(c *gin.Context) { + idParam := c.Query("id") + id, err := strconv.Atoi(idParam) + if err != nil { + response.FailWithMessage("参数错误:"+err.Error(), c) + return + } + var ser model.SysServiceReply + if err := global.GVA_DB.First(&ser, id).Error; err != nil { + response.FailWithMessage("内容不存在或已删除:"+err.Error(), c) + return + } + // 删除数据 + if err := global.GVA_DB.Delete(&model.SysServiceReply{}, id).Error; err != nil { + response.FailWithMessage("删除失败:"+err.Error(), c) + return + } + response.OkWithMessage("删除成功", c) +} + +// FindReply +// @Tags sysService +// @Summary 查找自动回复详情 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.id true "id" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "成功消息" +// @Router /service/find_reply?id=xxx [get] +func (ad *AdminServiceApi) FindReply(c *gin.Context) { + idParam := c.Query("id") + id, err := strconv.Atoi(idParam) + if err != nil { + response.FailWithMessage("参数错误:"+err.Error(), c) + return + } + var ser model.SysServiceReply + if err := global.GVA_DB.First(&ser, id).Error; err != nil { + response.FailWithMessage("自动回复内容不存在:"+err.Error(), c) + return + } + response.OkWithDetailed(ser, "success", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/config/config.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/config/config.go new file mode 100644 index 000000000..63acfdde1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/config/config.go @@ -0,0 +1 @@ +package config \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/global/global.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/global/global.go new file mode 100644 index 000000000..2b46851e7 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/global/global.go @@ -0,0 +1 @@ +package global \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/main.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/main.go new file mode 100644 index 000000000..2ea40c6d8 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/main.go @@ -0,0 +1,206 @@ +package customerservice + +import ( + gvaGlobal "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/customerservice/model" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/customerservice/router" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/customerservice/service/ws" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/plugin-tool/utils" + "github.com/gin-gonic/gin" +) + +type CustomerServicePlugin struct { +} + +func CreateCustomerServicePlug() *CustomerServicePlugin { + go gvaGlobal.GVA_DB.AutoMigrate(model.SysService{}, + model.SysServiceMsg{}, + model.SysServiceRecord{}, + model.SysTestUser{}, + model.SysServiceReply{}, + model.SysServiceScript{}) // 此处可以把插件依赖的数据库结构体自动创建表 需要填写对应的结构体 + // 下方会自动注册菜单 第一个参数为菜单一级路由信息一般为定义好的组名 第二个参数为真实使用的web页面路由信息 + // 具体值请根据实际情况修改 + utils.RegisterMenus( + system.SysBaseMenu{ + Path: "service", + Name: "客服管理", + Hidden: false, + Component: "view/routerHolder.vue", + Sort: 4, + Meta: system.Meta{ + Title: "客服管理", + Icon: "service", + }, + }, + system.SysBaseMenu{ + Path: "index", + Name: "客服列表", + Hidden: false, + Component: "plugin/customerservice/view/service/index.vue", + Sort: 1, + Meta: system.Meta{ + Title: "客服列表", + Icon: "service", + }, + }, + system.SysBaseMenu{ + Path: "script/list", + Name: "客服话术", + Hidden: false, + Component: "plugin/customerservice/view/script/index.vue", + Sort: 2, + Meta: system.Meta{ + Title: "客服话术", + Icon: "document", + }, + }, + system.SysBaseMenu{ + Path: "reply/list", + Name: "自动回复", + Hidden: false, + Component: "plugin/customerservice/view/reply/index.vue", + Sort: 3, + Meta: system.Meta{ + Title: "自动回复", + Icon: "bell-filled", + }, + }, + ) + + // 下方会自动注册api 以下格式为示例格式,请按照实际情况修改 + utils.RegisterApis( + //system.SysApi{ + // Path: "/service/ws", + // Description: "用户连接接口", + // ApiGroup: "客服管理", + // Method: "GET", + //}, + //system.SysApi{ + // Path: "/service/serve_ws", + // Description: "客服连接接口", + // ApiGroup: "客服管理", + // Method: "GET", + //}, + //system.SysApi{ + // Path: "/service/send_msg", + // Description: "发送消息接口", + // ApiGroup: "客服管理", + // Method: "POST", + //}, + //system.SysApi{ + // Path: "/service/get_msg_list", + // Description: "消息列表", + // ApiGroup: "客服管理", + // Method: "GET", + //}, + //system.SysApi{ + // Path: "/service/get_msg_user", + // Description: "客服聊天用户列表", + // ApiGroup: "客服管理", + // Method: "GET", + //}, + //system.SysApi{ + // Path: "/service/get_kf_info", + // Description: "当前客服详情", + // ApiGroup: "客服管理", + // Method: "GET", + //}, + //system.SysApi{ + // Path: "/service/set_msg_view", + // Description: "设置已读", + // ApiGroup: "客服管理", + // Method: "GET", + //}, + system.SysApi{ + Path: "/service/get_service_list", + Description: "后台客服列表", + ApiGroup: "客服管理", + Method: "GET", + }, + system.SysApi{ + Path: "/service/save_service", + Description: "后台客服新增/更新", + ApiGroup: "客服管理", + Method: "POST", + }, + system.SysApi{ + Path: "/service/delete_service", + Description: "删除客服", + ApiGroup: "客服管理", + Method: "DELETE", + }, + system.SysApi{ + Path: "/service/find_service", + Description: "客服详情", + ApiGroup: "客服管理", + Method: "GET", + }, + system.SysApi{ + Path: "/service/get_script_list", + Description: "客服话术列表", + ApiGroup: "客服管理", + Method: "GET", + }, + system.SysApi{ + Path: "/service/save_script", + Description: "客服话术新增/更新", + ApiGroup: "客服管理", + Method: "POST", + }, + system.SysApi{ + Path: "/service/delete_script", + Description: "删除客服话术", + ApiGroup: "客服管理", + Method: "DELETE", + }, + system.SysApi{ + Path: "/service/find_script", + Description: "客服话术详情", + ApiGroup: "客服管理", + Method: "GET", + }, + system.SysApi{ + Path: "/service/auto_reply_list", + Description: "自动回复列表", + ApiGroup: "客服管理", + Method: "GET", + }, + system.SysApi{ + Path: "/service/save_reply", + Description: "自动回复新增/更新", + ApiGroup: "客服管理", + Method: "POST", + }, + system.SysApi{ + Path: "/service/delete_reply", + Description: "删除自动回复", + ApiGroup: "客服管理", + Method: "DELETE", + }, + system.SysApi{ + Path: "/service/find_reply", + Description: "自动回复详情", + ApiGroup: "客服管理", + Method: "GET", + }, + system.SysApi{ + Path: "/service/admin_login", + Description: "进入客服工作台", + ApiGroup: "客服管理", + Method: "GET", + }, + ) + go ws.Manager.Start() + go ws.Manager.CheckClientActivity() + return &CustomerServicePlugin{} +} + +func (*CustomerServicePlugin) Register(group *gin.RouterGroup) { + router.RouterGroupApp.InitCustomerServiceRouter(group) +} + +func (*CustomerServicePlugin) RouterPath() string { + return "" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/middleware/jwt.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/middleware/jwt.go new file mode 100644 index 000000000..bae4a1a68 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/middleware/jwt.go @@ -0,0 +1,45 @@ +package middleware + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/customerservice/tools" + "github.com/gin-gonic/gin" + "strings" +) + +func JWTAuthMiddleware() gin.HandlerFunc { + return func(c *gin.Context) { + // 从请求头获取 token + authHeader := c.GetHeader("chat-token") + userHeader := c.GetHeader("user-token") + if userHeader != "" { + c.Next() // 如果是前端发送的测试请求直接放行 + return + } + if authHeader == "" { + response.FailWithMessage("参数错误:"+"Authorization header is missing", c) + c.Abort() + return + } + + // 按照格式 "Bearer " 提取 token + tokenString := strings.TrimSpace(strings.TrimPrefix(authHeader, "Bearer ")) + if tokenString == "" { + response.FailWithMessage("参数错误:"+"Token is missing", c) + c.Abort() + return + } + // 验证 token + claims, err := tools.ValidateToken(tokenString) + if err != nil { + response.FailWithMessage("Invalid token:"+err.Error(), c) + c.Abort() + return + } + + // 将用户信息存储在上下文中,便于后续处理 + c.Set("service_id", claims.ServiceId) + //c.Request.URL.Query().Add("service_id", strconv.FormatInt(claims.ServiceId, 10)) + c.Next() // 继续处理请求 + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/model.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/model.go new file mode 100644 index 000000000..8c229488a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/model.go @@ -0,0 +1,25 @@ +package model + +type PageInfo struct { + Page int `json:"page" form:"page"` + Limit int `json:"limit" form:"limit"` + Keyword string `json:"keyword" form:"keyword"` +} + +type MsgPageInfo struct { + Page int `json:"page" form:"page"` + Limit int `json:"limit" form:"limit"` + FromId int `json:"from_id" form:"from_id"` +} + +type AutoPageInfo struct { + Page int `json:"page" form:"page"` + Limit int `json:"limit" form:"limit"` + Keyword string `json:"keyword" form:"keyword"` + ReplyType int `json:"reply_type" form:"reply_type"` +} + +type LoginInfo struct { + Account string `json:"account" form:"account"` + Password string `json:"password" form:"password"` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysService.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysService.go new file mode 100644 index 000000000..ea550d8d6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysService.go @@ -0,0 +1,18 @@ +package model + +type SysService struct { + Id int64 `json:"id" form:"id" gorm:"primarykey"` + MerchantId uint `json:"merchant_id" form:"merchant_id" gorm:"default:0;type:int;column:merchant_id;comment:商户id;"` + Uid uint `json:"uid" form:"uid" gorm:"default:0;type:int;column:uid;comment:用户id;"` + Online uint `json:"online" form:"online" gorm:"default:0;type:tinyint;column:online;comment:客服是否在线;"` + Account string `json:"account" form:"account" gorm:"default:'';type:varchar(255);column:account;comment:账户;"` + Password string `json:"password" form:"password" gorm:"default:'';type:varchar(255);column:password;comment:密码;"` + Avatar string `json:"avatar" form:"avatar" gorm:"default:'';type:varchar(255);column:avatar;comment:头像;"` + Nickname string `json:"nickname" form:"nickname" gorm:"default:'';type:varchar(255);column:nickname;comment:客服名称;"` + AddTime int64 `json:"add_time" form:"add_time" gorm:"default:0;type:int;column:add_time;comment:添加时间;"` + Status *uint `json:"status" form:"status" gorm:"default:0;type:tinyint(1);column:status;comment:是否显示;"` +} + +func (SysService) TableName() string { + return "sys_service" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysServiceMsg.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysServiceMsg.go new file mode 100644 index 000000000..3dbb2d2fc --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysServiceMsg.go @@ -0,0 +1,18 @@ +package model + +type SysServiceMsg struct { + Id uint `gorm:"primarykey" json:"id"` // 主键ID + MerchantId uint `json:"merchant_id" form:"merchant_id" gorm:"default:0;type:int;column:merchant_id;comment:商户id;"` + Content string `json:"content" form:"content" gorm:"default:'';type:text;column:content;comment:消息内容;"` + ServiceId int64 `json:"service_id" form:"service_id" gorm:"default:0;type:int;column:service_id;comment:客服id;"` + Uid int64 `json:"uid" form:"uid" gorm:"default:0;type:int;column:uid;comment:用户id;"` + IsTourist uint `json:"is_tourist" form:"is_tourist" gorm:"default:0;type:tinyint;column:is_tourist;comment:是否游客;"` + IsView uint `json:"is_view" form:"is_view" gorm:"default:0;type:tinyint;column:is_view;comment:是否已读;"` + AddTime int `json:"add_time" form:"add_time" gorm:"default:0;type:int;column:add_time;comment:添加时间;"` + MsgType int64 `json:"msg_type" form:"msg_type" gorm:"default:1;type:tinyint;column:msg_type;comment:消息类型 1=文字 2=表情 3=图片 4=语音 5=视频 6=商品;"` + IsKf int64 `json:"is_kf" form:"is_kf" gorm:"default:0;type:tinyint;column:is_kf;comment:是否客服消息;"` +} + +func (SysServiceMsg) TableName() string { + return "sys_service_msg" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysServiceRecord.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysServiceRecord.go new file mode 100644 index 000000000..8c4ecba57 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysServiceRecord.go @@ -0,0 +1,21 @@ +package model + +type SysServiceRecord struct { + Id uint `json:"id" form:"id" gorm:"primarykey"` + ServiceId int64 `json:"service_id" form:"service_id" gorm:"default:0;type:int;column:service_id;comment:客服id;"` + Uid int64 `json:"uid" form:"uid" gorm:"default:0;type:int;column:uid;comment:用户id;"` + Avatar string `json:"avatar" form:"avatar" gorm:"default:'';type:varchar(255);column:avatar;comment:用户头像;"` + Nickname string `json:"nickname" form:"nickname" gorm:"default:'';type:varchar(255);column:nickname;comment:用户昵称;"` + Online uint `json:"online" form:"online" gorm:"default:0;type:tinyint;column:online;comment:是否在线;"` + IsTourist uint `json:"is_tourist" form:"is_tourist" gorm:"default:0;type:tinyint;column:is_tourist;comment:是否游客0:否;1:是;"` + Message string `json:"message" form:"message" gorm:"default:'';type:text;column:message;comment:最新一条消息;"` + AddTime int64 `json:"add_time" form:"add_time" gorm:"default:0;type:int;column:add_time;comment:添加时间;"` + UpdateTime int64 `json:"update_time" form:"update_time" gorm:"default:0;type:int;column:update_time;comment:更新时间;"` + MessageType int64 `json:"message_type" form:"message_type" gorm:"default:0;type:tinyint(1);column:message_type;comment:消息类型:1=文字 2=表情 3=图片 4=语音 5=视频 6=商品;"` + NoRead int64 `json:"no_read" gorm:"-"` + AddTimeStr string `json:"add_time_str" gorm:"-"` +} + +func (SysServiceRecord) TableName() string { + return "sys_service_record" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysServiceReply.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysServiceReply.go new file mode 100644 index 000000000..ea92f129b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysServiceReply.go @@ -0,0 +1,16 @@ +package model + +type SysServiceReply struct { + Id int64 `json:"id" form:"id" gorm:"primarykey"` + ReplyType int64 `json:"reply_type" form:"reply_type" gorm:"default:1;type:int;column:reply_type;comment:回复类型1文本,2图片;"` + IsComplete int64 `json:"is_complete" form:"is_complete" gorm:"default:0;type:int;column:is_complete;comment:是否完全匹配0否1是;"` + Keyword string `json:"keyword" form:"keyword" gorm:"default:'';type:varchar(255);column:keyword;comment:关键字;"` + Content string `json:"content" form:"content" gorm:"default:'';type:text;column:content;comment:回复内容;"` + AddTime int64 `json:"add_time" form:"add_time" gorm:"default:0;type:int;column:add_time;comment:添加时间;"` + AddTimeStr string `json:"add_time_str" form:"add_time_str" gorm:"-"` + Status int64 `json:"status" form:"sort" gorm:"default:0;type:tinyint(1);column:status;comment:是否显示;"` +} + +func (SysServiceReply) TableName() string { + return "sys_service_reply" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysServiceScript.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysServiceScript.go new file mode 100644 index 000000000..7605d0d50 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysServiceScript.go @@ -0,0 +1,15 @@ +package model + +type SysServiceScript struct { + Id int64 `json:"id" form:"id" gorm:"primarykey"` + ServiceId int64 `json:"service_id" form:"service_id" gorm:"default:0;type:int;column:service_id;comment:客服id为0说明是公共话术;"` + Title string `json:"title" form:"title" gorm:"default:'';type:varchar(255);column:title;comment:话术标题;"` + Content string `json:"content" form:"content" gorm:"default:'';type:text;column:content;comment:话术内容;"` + AddTime int64 `json:"add_time" form:"add_time" gorm:"default:0;type:int;column:add_time;comment:添加时间;"` + AddTimeStr string `json:"add_time_str" form:"add_time_str" gorm:"-"` + Sort int64 `json:"sort" form:"sort" gorm:"default:0;type:int;column:sort;comment:排序;"` +} + +func (SysServiceScript) TableName() string { + return "sys_service_script" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysTestUser.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysTestUser.go new file mode 100644 index 000000000..1864e85a9 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/model/sysTestUser.go @@ -0,0 +1,11 @@ +package model + +type SysTestUser struct { + Id int64 `json:"id" form:"id" gorm:"primarykey"` + Avatar string `json:"avatar" form:"avatar" gorm:"default:'';type:varchar(255);column:avatar;comment:头像;"` + Nickname string `json:"nickname" form:"nickname" gorm:"default:'';type:varchar(255);column:nickname;comment:昵称;"` +} + +func (SysTestUser) TableName() string { + return "sys_test_user" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/router/enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/router/enter.go new file mode 100644 index 000000000..1ce0253ca --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/router/enter.go @@ -0,0 +1,7 @@ +package router + +type RouterGroup struct { + CustomerServiceRouter +} + +var RouterGroupApp = new(RouterGroup) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/router/router.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/router/router.go new file mode 100644 index 000000000..62590501e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/router/router.go @@ -0,0 +1,47 @@ +package router + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/customerservice/api" + serMiddleware "github.com/flipped-aurora/gin-vue-admin/server/plugin/customerservice/middleware" + "github.com/gin-gonic/gin" +) + +type CustomerServiceRouter struct { +} + +func (s *CustomerServiceRouter) InitCustomerServiceRouter(Router *gin.RouterGroup) { + wsRouter := Router.Group("") + plugRouter := Router.Group("").Use(serMiddleware.JWTAuthMiddleware()) + privateRouter := Router.Group("").Use(middleware.JWTAuth()).Use(middleware.CasbinHandler()) + plugAdminApi := api.ApiGroupApp.AdminServiceApi + { + privateRouter.GET("/service/get_service_list", plugAdminApi.GetServiceList) + privateRouter.POST("/service/save_service", plugAdminApi.SaveService) + privateRouter.DELETE("/service/delete_service", plugAdminApi.DeleteService) + privateRouter.GET("/service/find_service", plugAdminApi.FindService) + privateRouter.GET("/service/admin_login", plugAdminApi.AdminServiceLogin) + privateRouter.GET("/service/get_script_list", plugAdminApi.GetScriptList) + privateRouter.POST("/service/save_script", plugAdminApi.SaveScript) + privateRouter.DELETE("/service/delete_script", plugAdminApi.DeleteScript) + privateRouter.GET("/service/find_script", plugAdminApi.FindScript) + privateRouter.GET("/service/auto_reply_list", plugAdminApi.AutoReplyList) + privateRouter.POST("/service/save_reply", plugAdminApi.SaveReply) + privateRouter.DELETE("/service/delete_reply", plugAdminApi.DeleteReply) + privateRouter.GET("/service/find_reply", plugAdminApi.FindReply) + } + plugApi := api.ApiGroupApp.CustomerServiceApi + { + plugRouter.POST("/service/send_msg", plugApi.SendMsg) + plugRouter.GET("/service/get_msg_list", plugApi.GetMsgList) + plugRouter.GET("/service/get_msg_user", plugApi.GetMsgUser) + plugRouter.GET("/service/get_kf_info", plugApi.GetKefuInfo) + plugRouter.GET("/service/set_msg_view", plugApi.SetMsgView) + plugRouter.POST("/service/upload_file", plugApi.UploadFile) + plugRouter.GET("/service/get_user_info", plugApi.GetUserInfo) + plugRouter.GET("/service/get_service_script", plugApi.GetServiceScript) + } + wsRouter.GET("/service/serve_ws", plugApi.ServeWsForKefu) + wsRouter.GET("/service/ws", plugApi.ServeWs) + wsRouter.POST("/service/account_login", plugAdminApi.AccountServiceLogin) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/service/enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/service/enter.go new file mode 100644 index 000000000..d2feab111 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/service/enter.go @@ -0,0 +1,7 @@ +package service + +type ServiceGroup struct { + CustomerServiceService +} + +var ServiceGroupApp = new(ServiceGroup) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/service/service.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/service/service.go new file mode 100644 index 000000000..986d2c92d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/service/service.go @@ -0,0 +1,129 @@ +package service + +import ( + "encoding/base64" + "errors" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/customerservice/model" + "github.com/gin-gonic/gin" + "gorm.io/gorm" + "time" +) + +type CustomerServiceService struct{} + +func (e *CustomerServiceService) PlugService() (err error) { + // 写你的业务逻辑 + return nil +} + +func (e *CustomerServiceService) ValidateServiceData(sys *model.SysService) error { + if sys.Uid == 0 { + return errors.New("客服关联的用户id不能为空") + } else { + db := global.GVA_DB.Model(&model.SysService{}) + if sys.Id > 0 { + db = db.Where("uid=?", sys.Uid).Where("id<>?", sys.Id) + } else { + db = db.Where("uid=?", sys.Uid) + } + var dCount int64 + db.Count(&dCount) + if dCount > 0 { + return errors.New("用户id已关联其他客服,请重新输入") + } + } + db := global.GVA_DB.Model(&model.SysService{}) + if sys.Id == 0 { + if sys.Password == "" { + return errors.New("客服密码必须填写") + } + db = db.Where("account=?", sys.Account) + } else { + db = db.Where("account=?", sys.Account).Where("id<>?", sys.Id) + var dCount int64 + db.Count(&dCount) + if dCount > 0 { + return errors.New("账户已存在,请重新输入") + } + } + if sys.Account == "" { + return errors.New("客服账户必须填写") + } + if sys.Nickname == "" { + return errors.New("客服名称必须填写") + } + if sys.Avatar == "" { + return errors.New("客服头像必须选择") + } + + return nil +} + +func (e *CustomerServiceService) ValidateScriptData(sys *model.SysServiceScript) error { + if sys.Title == "" { + return errors.New("话术标题必须填写") + } + if sys.Content == "" { + return errors.New("话术内容必须填写") + } + return nil +} + +func (e *CustomerServiceService) ValidateReplyData(sys *model.SysServiceReply) error { + if sys.Keyword == "" { + return errors.New("关键字必须填写") + } + if sys.Content == "" { + return errors.New("回复内容必须填写") + } + return nil +} + +func (e *CustomerServiceService) GetUrlHost(c *gin.Context) string { + host := c.Request.Host + scheme := "http" + if c.Request.TLS != nil { + scheme = "https" + } + referer := c.Request.Referer() + if referer != "" { + return referer + } + return scheme + "://" + host + "/" +} + +func (e *CustomerServiceService) CreateMsg(kfInfo model.SysService, userInfo model.SysTestUser, msgType int64, content string, isKf string) (err error) { + msgRecord := &model.SysServiceRecord{ + ServiceId: kfInfo.Id, + Uid: userInfo.Id, + Message: base64.StdEncoding.EncodeToString([]byte(content)), + MessageType: msgType, + UpdateTime: time.Now().Unix(), + Avatar: userInfo.Avatar, + Nickname: userInfo.Nickname, + Online: 1, + } + var record model.SysServiceRecord + + eErr := global.GVA_DB.Where("service_id = ?", kfInfo.Id).Where("uid = ?", userInfo.Id).First(&record).Error + if errors.Is(eErr, gorm.ErrRecordNotFound) { + msgRecord.AddTime = time.Now().Unix() + global.GVA_DB.Create(msgRecord) + } else { + global.GVA_DB.Model(&model.SysServiceRecord{}).Where("id = ?", record.Id).Updates(msgRecord) + } + + //插入消息记录 + msg := map[string]interface{}{ + "service_id": kfInfo.Id, + "uid": userInfo.Id, + "content": base64.StdEncoding.EncodeToString([]byte(content)), + "msg_type": msgType, + "is_view": 0, + "add_time": time.Now().Unix(), + "is_kf": isKf, + } + err = global.GVA_DB.Model(&model.SysServiceMsg{}).Create(msg).Error + return err +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/service/ws/ws.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/service/ws/ws.go new file mode 100644 index 000000000..8bae71a40 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/service/ws/ws.go @@ -0,0 +1,259 @@ +package ws + +import ( + "encoding/json" + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + sysModel "github.com/flipped-aurora/gin-vue-admin/server/plugin/customerservice/model" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/customerservice/tools" + "github.com/gin-gonic/gin" + "github.com/gorilla/websocket" + "net/http" + "strconv" + "time" +) + +type Message struct { + Sender string `json:"sender"` + Receiver string `json:"receiver"` + Content string `json:"content"` + MsgType string `json:"msg_type"` //对应msg表的msg_type + Role string `json:"role"` + Timestamp int64 `json:"timestamp"` + Nickname string `json:"nickname"` + AvatarUrl string `json:"avatar_url"` + IsKf int64 `json:"is_kf"` +} + +type TypeMsg struct { + Type string `json:"type"` + Data interface{} `json:"data,omitempty"` +} + +type Client struct { + UserID string + Role string + Socket *websocket.Conn + Send chan []byte + LastPingTime time.Time +} + +type ClientManager struct { + Clients map[string]*Client + Broadcast chan TypeMsg + Register chan *Client + Unregister chan *Client +} + +var Manager = ClientManager{ + Clients: make(map[string]*Client), + Broadcast: make(chan TypeMsg), + Register: make(chan *Client), + Unregister: make(chan *Client), +} + +// 定时检查连接的活动状态 +func (manager *ClientManager) CheckClientActivity() { + ticker := time.NewTicker(5 * time.Second) + defer ticker.Stop() + + for { + <-ticker.C + now := time.Now() + + for ck, client := range manager.Clients { + // 如果超过一定时间没有收到ping,则断开连接 + fmt.Println(ck) + fmt.Println(now.Sub(client.LastPingTime)) + if now.Sub(client.LastPingTime) > 120*time.Second { + client.Socket.Close() + delete(manager.Clients, ck) + //设置离线 + if client.Role == "user" { + setUserOnline("offline", client.UserID) + } + } + } + } +} + +func (manager *ClientManager) Start() { + for { + select { + case conn := <-manager.Register: + key := conn.Role + conn.UserID + if existingConn, ok := manager.Clients[key]; ok { + existingConn.Socket.Close() + delete(manager.Clients, key) + } + fmt.Println(key) + manager.Clients[key] = conn + case conn := <-manager.Unregister: + key := conn.Role + conn.UserID + if existingConn, ok := manager.Clients[key]; ok && existingConn == conn { + delete(manager.Clients, key) + } + case message := <-manager.Broadcast: + data := message.Data.(map[string]interface{}) + receiver := data["receiver"].(string) + receiverKey := "user" + receiver + if data["role"].(string) == "user" { + receiverKey = "kf" + receiver + } + if client, ok := manager.Clients[receiverKey]; ok { + str, _ := json.Marshal(message) + client.Send <- str + } else { + fmt.Println(receiverKey + "链接不存在") + } + } + } +} + +func (c *Client) Read() { + defer func() { + Manager.Unregister <- c + c.Socket.Close() + }() + c.Socket.SetReadLimit(512) + + for { + _, message, err := c.Socket.ReadMessage() + if err != nil { + break + } + var msg TypeMsg + if err := json.Unmarshal(message, &msg); err != nil { + continue + } + switch msg.Type { + case "ping": + // 更新最后一次收到ping消息的时间 + c.LastPingTime = time.Now() + + // 回复pong消息 + pongMsg := TypeMsg{ + Type: "pong", + Data: time.Now().Unix(), + } + pongStr, _ := json.Marshal(pongMsg) + c.Send <- pongStr + + case "message": + //发送消息走的后台接口去触发广播,改成前端发送消息走这里 + Manager.Broadcast <- msg + } + } +} + +func (c *Client) Write() { + defer func() { + c.Socket.Close() + }() + for { + select { + case message, ok := <-c.Send: + c.Socket.SetWriteDeadline(time.Now().Add(10 * time.Second)) + if !ok { + c.Socket.WriteMessage(websocket.CloseMessage, []byte{}) + return + } + if err := c.Socket.WriteMessage(websocket.TextMessage, message); err != nil { + return + } + } + } +} + +var Upgrader = websocket.Upgrader{ + ReadBufferSize: 1024, + WriteBufferSize: 1024, + CheckOrigin: func(r *http.Request) bool { + return true + }, +} + +func WsServe(ctx *gin.Context) { + //token := ctx.Query("token") + userID := ctx.Query("user_id") + + conn, err := Upgrader.Upgrade(ctx.Writer, ctx.Request, nil) + if err != nil { + http.NotFound(ctx.Writer, ctx.Request) + return + } + client := &Client{ + UserID: userID, + Role: "user", + Socket: conn, + Send: make(chan []byte), + LastPingTime: time.Now(), + } + + Manager.Register <- client + setUserOnline("online", userID) + go client.Read() + go client.Write() +} + +func ServeWsForKefu(ctx *gin.Context) { + token := ctx.Query("token") + claims, err := tools.ValidateToken(token) + if err != nil { + response.FailWithMessage("token已失效", ctx) + return + } + kfId := claims.ServiceId + db := global.GVA_DB.Model(&sysModel.SysService{}) + var info sysModel.SysService + err = db.Find(&info).Error + if err != nil { + response.FailWithMessage("客服不存在", ctx) + return + } + conn, err2 := Upgrader.Upgrade(ctx.Writer, ctx.Request, nil) + if err2 != nil { + http.NotFound(ctx.Writer, ctx.Request) + return + } + client := &Client{ + UserID: fmt.Sprintf("%v", kfId), + Role: "kf", + Socket: conn, + Send: make(chan []byte), + LastPingTime: time.Now(), + } + Manager.Register <- client + + go client.Read() + go client.Write() +} + +func setUserOnline(cType string, Id string) { + //给用户在record表里的客服广播此用户离线 + var list []sysModel.SysServiceRecord + err := global.GVA_DB.Where("uid=?", Id).Find(&list).Error + if err == nil && len(list) > 0 { + for _, rec := range list { + strSerId := strconv.FormatInt(rec.ServiceId, 10) + roleKey := "kf" + strSerId + fmt.Println(roleKey) + serviceClient, ok := Manager.Clients[roleKey] + if serviceClient != nil && ok { + dataMsg := Message{ + MsgType: "1", + Sender: Id, + Receiver: strSerId, + Role: "user", + } + sendMsg := TypeMsg{ + Type: cType, + Data: dataMsg, + } + str, _ := json.Marshal(sendMsg) + serviceClient.Send <- str + } + } + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/tools/jwt.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/tools/jwt.go new file mode 100644 index 000000000..5e2a76146 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/tools/jwt.go @@ -0,0 +1,54 @@ +package tools + +import ( + "errors" + "github.com/golang-jwt/jwt/v4" + "time" +) + +var jwtKey = []byte("your-256-bit-secret") + +// CustomClaims 结构体可以根据需要添加自定义的声明 +type CustomClaims struct { + ServiceId int64 `json:"service_id"` + jwt.RegisteredClaims +} + +func GenerateToken(serviceId int64) (int64, string, error) { + // 设置JWT的声明 + claims := CustomClaims{ + ServiceId: serviceId, + RegisteredClaims: jwt.RegisteredClaims{ + Audience: jwt.ClaimStrings{"GVA"}, // 受众 + NotBefore: jwt.NewNumericDate(time.Now().Add(-1000)), // 签名生效时间 + Issuer: "gva", + ExpiresAt: jwt.NewNumericDate(time.Now().Add(72 * time.Hour)), // token 72小时后过期 + }, + } + // 生成JWT token + token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) + tokenStr, err := token.SignedString(jwtKey) + return time.Now().Add(72 * time.Hour).Unix(), tokenStr, err +} + +func ValidateToken(tokenString string) (*CustomClaims, error) { + claims := &CustomClaims{} + + token, err := jwt.ParseWithClaims(tokenString, claims, func(token *jwt.Token) (interface{}, error) { + // 验证签名方法 + if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { + return nil, errors.New("unexpected signing method") + } + return jwtKey, nil + }) + + if err != nil { + return nil, err + } + + if !token.Valid { + return nil, errors.New("invalid token") + } + + return claims, nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/tools/limits.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/tools/limits.go new file mode 100644 index 000000000..853010486 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/tools/limits.go @@ -0,0 +1,77 @@ +package tools + +import ( + "log" + "sync" + "time" +) + +type LimitQueeMap struct { + sync.RWMutex + LimitQueue map[string][]int64 +} + +func (l *LimitQueeMap) readMap(key string) ([]int64, bool) { + l.RLock() + value, ok := l.LimitQueue[key] + l.RUnlock() + return value, ok +} + +func (l *LimitQueeMap) writeMap(key string, value []int64) { + l.Lock() + l.LimitQueue[key] = value + l.Unlock() +} + +var LimitQueue = &LimitQueeMap{ + LimitQueue: make(map[string][]int64), +} +var ok bool + +func NewLimitQueue() { + cleanLimitQueue() +} +func cleanLimitQueue() { + go func() { + for { + log.Println("cleanLimitQueue start...") + LimitQueue.LimitQueue = nil + now := time.Now() + // 计算下一个零点 + next := now.Add(time.Hour * 24) + next = time.Date(next.Year(), next.Month(), next.Day(), 0, 0, 0, 0, next.Location()) + t := time.NewTimer(next.Sub(now)) + <-t.C + } + }() +} + +//单机时间滑动窗口限流法 +func LimitFreqSingle(queueName string, count uint, timeWindow int64) bool { + currTime := time.Now().Unix() + if LimitQueue.LimitQueue == nil { + LimitQueue.LimitQueue = make(map[string][]int64) + } + if _, ok = LimitQueue.readMap(queueName); !ok { + LimitQueue.writeMap(queueName, make([]int64, 0)) + return true + } + q, _ := LimitQueue.readMap(queueName) + //队列未满 + if uint(len(q)) < count { + LimitQueue.writeMap(queueName, append(q, currTime)) + return true + } + //队列满了,取出最早访问的时间 + earlyTime := q[0] + //说明最早期的时间还在时间窗口内,还没过期,所以不允许通过 + if currTime-earlyTime <= timeWindow { + return false + } else { + //说明最早期的访问应该过期了,去掉最早期的 + q = q[1:] + LimitQueue.writeMap(queueName, append(q, currTime)) + } + return true +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/tools/timeformat.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/tools/timeformat.go new file mode 100644 index 000000000..cd9b9407a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/customerservice/tools/timeformat.go @@ -0,0 +1,20 @@ +package tools + +import "time" + +func FormatTimestamp(timestamp int64) string { + t := time.Unix(timestamp, 0) + now := time.Now() + + // 格式化时间 + if t.Year() == now.Year() && t.YearDay() == now.YearDay() { + // 当天,返回 24 小时制的时和分 + return t.Format("15:04") + } else if t.Year() == now.Year() && t.YearDay() == now.YearDay()-1 { + // 昨天,返回 "昨天" + return "昨天" + } else { + // 其他时间,返回月和日 + return t.Format("01-02") + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/README.MD b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/README.MD new file mode 100644 index 000000000..17202838d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/README.MD @@ -0,0 +1,75 @@ +## GVA 邮件发送功能插件 +#### 开发者:GIN-VUE-ADMIN 官方 + +### 使用步骤 + +#### 1. 前往GVA主程序下的initialize/router.go 在Routers 方法最末尾按照你需要的及安全模式添加本插件 + 例: + 本插件可以采用gva的配置文件 也可以直接写死内容作为配置 建议为gva添加配置文件结构 然后将配置传入 + PluginInit(PrivateGroup, email.CreateEmailPlug( + global.GVA_CONFIG.Email.To, + global.GVA_CONFIG.Email.From, + global.GVA_CONFIG.Email.Host, + global.GVA_CONFIG.Email.Secret, + global.GVA_CONFIG.Email.Nickname, + global.GVA_CONFIG.Email.Port, + global.GVA_CONFIG.Email.IsSSL, + )) + + 同样也可以再传入时写死 + + PluginInit(PrivateGroup, email.CreateEmailPlug( + "a@qq.com", + "b@qq.com", + "smtp.qq.com", + "global.GVA_CONFIG.Email.Secret", + "登录密钥", + 465, + true, + )) + +### 2. 配置说明 + +#### 2-1 全局配置结构体说明 + //其中 Form 和 Secret 通常来说就是用户名和密码 + + type Email struct { + To string // 收件人:多个以英文逗号分隔 例:a@qq.com b@qq.com 正式开发中请把此项目作为参数使用 此处配置主要用于发送错误监控邮件 + From string // 发件人 你自己要发邮件的邮箱 + Host string // 服务器地址 例如 smtp.qq.com 请前往QQ或者你要发邮件的邮箱查看其smtp协议 + Secret string // 密钥 用于登录的密钥 最好不要用邮箱密码 去邮箱smtp申请一个用于登录的密钥 + Nickname string // 昵称 发件人昵称 自定义即可 可以不填 + Port int // 端口 请前往QQ或者你要发邮件的邮箱查看其smtp协议 大多为 465 + IsSSL bool // 是否SSL 是否开启SSL + } +#### 2-2 入参结构说明 + //其中 Form 和 Secret 通常来说就是用户名和密码 + + type Email struct { + To string `json:"to"` // 邮件发送给谁 + Subject string `json:"subject"` // 邮件标题 + Body string `json:"body"` // 邮件内容 + } + + +### 3. 方法API + + utils.EmailTest(邮件标题,邮件主体) 发送测试邮件 + 例:utils.EmailTest("测试邮件","测试邮件") + utils.ErrorToEmail(邮件标题,邮件主体) 错误监控 + 例:utils.ErrorToEmail("测试邮件","测试邮件") + utils.Email(目标邮箱多个的话用逗号分隔,邮件标题,邮件主体) 发送测试邮件 + 例:utils.Email(”a.qq.com,b.qq.com“,"测试邮件","测试邮件") + +### 4. 可直接调用的接口 + + 测试接口: /email/emailTest [post] 已配置swagger + + 发送邮件接口接口: /email/emailSend [post] 已配置swagger + 入参: + type Email struct { + To string `json:"to"` // 邮件发送给谁 + Subject string `json:"subject"` // 邮件标题 + Body string `json:"body"` // 邮件内容 + } + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/api/enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/api/enter.go new file mode 100644 index 000000000..353404d2c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/api/enter.go @@ -0,0 +1,7 @@ +package api + +type ApiGroup struct { + EmailApi +} + +var ApiGroupApp = new(ApiGroup) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/api/sys_email.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/api/sys_email.go new file mode 100644 index 000000000..fdc76ab64 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/api/sys_email.go @@ -0,0 +1,53 @@ +package api + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + email_response "github.com/flipped-aurora/gin-vue-admin/server/plugin/email/model/response" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/email/service" + "github.com/gin-gonic/gin" + "go.uber.org/zap" +) + +type EmailApi struct{} + +// EmailTest +// @Tags System +// @Summary 发送测试邮件 +// @Security ApiKeyAuth +// @Produce application/json +// @Success 200 {string} string "{"success":true,"data":{},"msg":"发送成功"}" +// @Router /email/emailTest [post] +func (s *EmailApi) EmailTest(c *gin.Context) { + err := service.ServiceGroupApp.EmailTest() + if err != nil { + global.GVA_LOG.Error("发送失败!", zap.Error(err)) + response.FailWithMessage("发送失败", c) + return + } + response.OkWithMessage("发送成功", c) +} + +// SendEmail +// @Tags System +// @Summary 发送邮件 +// @Security ApiKeyAuth +// @Produce application/json +// @Param data body email_response.Email true "发送邮件必须的参数" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"发送成功"}" +// @Router /email/sendEmail [post] +func (s *EmailApi) SendEmail(c *gin.Context) { + var email email_response.Email + err := c.ShouldBindJSON(&email) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + err = service.ServiceGroupApp.SendEmail(email.To, email.Subject, email.Body) + if err != nil { + global.GVA_LOG.Error("发送失败!", zap.Error(err)) + response.FailWithMessage("发送失败", c) + return + } + response.OkWithMessage("发送成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/config/email.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/config/email.go new file mode 100644 index 000000000..c535348c0 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/config/email.go @@ -0,0 +1,11 @@ +package config + +type Email struct { + To string `mapstructure:"to" json:"to" yaml:"to"` // 收件人:多个以英文逗号分隔 例:a@qq.com b@qq.com 正式开发中请把此项目作为参数使用 + From string `mapstructure:"from" json:"from" yaml:"from"` // 发件人 你自己要发邮件的邮箱 + Host string `mapstructure:"host" json:"host" yaml:"host"` // 服务器地址 例如 smtp.qq.com 请前往QQ或者你要发邮件的邮箱查看其smtp协议 + Secret string `mapstructure:"secret" json:"secret" yaml:"secret"` // 密钥 用于登录的密钥 最好不要用邮箱密码 去邮箱smtp申请一个用于登录的密钥 + Nickname string `mapstructure:"nickname" json:"nickname" yaml:"nickname"` // 昵称 发件人昵称 通常为自己的邮箱 + Port int `mapstructure:"port" json:"port" yaml:"port"` // 端口 请前往QQ或者你要发邮件的邮箱查看其smtp协议 大多为 465 + IsSSL bool `mapstructure:"is-ssl" json:"isSSL" yaml:"is-ssl"` // 是否SSL 是否开启SSL +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/global/gloabl.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/global/gloabl.go new file mode 100644 index 000000000..13082d0db --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/global/gloabl.go @@ -0,0 +1,5 @@ +package global + +import "github.com/flipped-aurora/gin-vue-admin/server/plugin/email/config" + +var GlobalConfig = new(config.Email) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/main.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/main.go new file mode 100644 index 000000000..cfc8c46b1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/main.go @@ -0,0 +1,28 @@ +package email + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/plugin/email/global" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/email/router" + "github.com/gin-gonic/gin" +) + +type emailPlugin struct{} + +func CreateEmailPlug(To, From, Host, Secret, Nickname string, Port int, IsSSL bool) *emailPlugin { + global.GlobalConfig.To = To + global.GlobalConfig.From = From + global.GlobalConfig.Host = Host + global.GlobalConfig.Secret = Secret + global.GlobalConfig.Nickname = Nickname + global.GlobalConfig.Port = Port + global.GlobalConfig.IsSSL = IsSSL + return &emailPlugin{} +} + +func (*emailPlugin) Register(group *gin.RouterGroup) { + router.RouterGroupApp.InitEmailRouter(group) +} + +func (*emailPlugin) RouterPath() string { + return "email" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/model/response/email.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/model/response/email.go new file mode 100644 index 000000000..ed2547507 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/model/response/email.go @@ -0,0 +1,7 @@ +package response + +type Email struct { + To string `json:"to"` // 邮件发送给谁 + Subject string `json:"subject"` // 邮件标题 + Body string `json:"body"` // 邮件内容 +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/router/enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/router/enter.go new file mode 100644 index 000000000..e081a54c3 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/router/enter.go @@ -0,0 +1,7 @@ +package router + +type RouterGroup struct { + EmailRouter +} + +var RouterGroupApp = new(RouterGroup) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/router/sys_email.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/router/sys_email.go new file mode 100644 index 000000000..1f9f07f0e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/router/sys_email.go @@ -0,0 +1,19 @@ +package router + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/email/api" + "github.com/gin-gonic/gin" +) + +type EmailRouter struct{} + +func (s *EmailRouter) InitEmailRouter(Router *gin.RouterGroup) { + emailRouter := Router.Use(middleware.OperationRecord()) + EmailApi := api.ApiGroupApp.EmailApi.EmailTest + SendEmail := api.ApiGroupApp.EmailApi.SendEmail + { + emailRouter.POST("emailTest", EmailApi) // 发送测试邮件 + emailRouter.POST("sendEmail", SendEmail) // 发送邮件 + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/service/enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/service/enter.go new file mode 100644 index 000000000..e96e267f5 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/service/enter.go @@ -0,0 +1,7 @@ +package service + +type ServiceGroup struct { + EmailService +} + +var ServiceGroupApp = new(ServiceGroup) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/service/sys_email.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/service/sys_email.go new file mode 100644 index 000000000..57042769c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/service/sys_email.go @@ -0,0 +1,32 @@ +package service + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/plugin/email/utils" +) + +type EmailService struct{} + +//@author: [maplepie](https://github.com/maplepie) +//@function: EmailTest +//@description: 发送邮件测试 +//@return: err error + +func (e *EmailService) EmailTest() (err error) { + subject := "test" + body := "test" + err = utils.EmailTest(subject, body) + return err +} + +//@author: [maplepie](https://github.com/maplepie) +//@function: EmailTest +//@description: 发送邮件测试 +//@return: err error +//@params to string 收件人 +//@params subject string 标题(主题) +//@params body string 邮件内容 + +func (e *EmailService) SendEmail(to, subject, body string) (err error) { + err = utils.Email(to, subject, body) + return err +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/utils/email.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/utils/email.go new file mode 100644 index 000000000..aa82e1c89 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/email/utils/email.go @@ -0,0 +1,82 @@ +package utils + +import ( + "crypto/tls" + "fmt" + "net/smtp" + "strings" + + "github.com/flipped-aurora/gin-vue-admin/server/plugin/email/global" + + "github.com/jordan-wright/email" +) + +//@author: [maplepie](https://github.com/maplepie) +//@function: Email +//@description: Email发送方法 +//@param: subject string, body string +//@return: error + +func Email(To, subject string, body string) error { + to := strings.Split(To, ",") + return send(to, subject, body) +} + +//@author: [SliverHorn](https://github.com/SliverHorn) +//@function: ErrorToEmail +//@description: 给email中间件错误发送邮件到指定邮箱 +//@param: subject string, body string +//@return: error + +func ErrorToEmail(subject string, body string) error { + to := strings.Split(global.GlobalConfig.To, ",") + if to[len(to)-1] == "" { // 判断切片的最后一个元素是否为空,为空则移除 + to = to[:len(to)-1] + } + return send(to, subject, body) +} + +//@author: [maplepie](https://github.com/maplepie) +//@function: EmailTest +//@description: Email测试方法 +//@param: subject string, body string +//@return: error + +func EmailTest(subject string, body string) error { + to := []string{global.GlobalConfig.To} + return send(to, subject, body) +} + +//@author: [maplepie](https://github.com/maplepie) +//@function: send +//@description: Email发送方法 +//@param: subject string, body string +//@return: error + +func send(to []string, subject string, body string) error { + from := global.GlobalConfig.From + nickname := global.GlobalConfig.Nickname + secret := global.GlobalConfig.Secret + host := global.GlobalConfig.Host + port := global.GlobalConfig.Port + isSSL := global.GlobalConfig.IsSSL + + auth := smtp.PlainAuth("", from, secret, host) + e := email.NewEmail() + if nickname != "" { + e.From = fmt.Sprintf("%s <%s>", nickname, from) + } else { + e.From = from + } + e.To = to + e.Subject = subject + e.HTML = []byte(body) + var err error + hostAddr := fmt.Sprintf("%s:%d", host, port) + if isSSL { + err = e.SendWithTLS(hostAddr, auth, &tls.Config{ServerName: host}) + } else { + err = e.Send(hostAddr, auth) + } + return err +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/plugin-tool/utils/check.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/plugin-tool/utils/check.go new file mode 100644 index 000000000..4ea21921e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/plugin/plugin-tool/utils/check.go @@ -0,0 +1,50 @@ +package utils + +import ( + "fmt" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" +) + +func RegisterApis(apis ...system.SysApi) { + var count int64 + var apiPaths []string + for i := range apis { + apiPaths = append(apiPaths, apis[i].Path) + } + global.GVA_DB.Find(&[]system.SysApi{}, "path in (?)", apiPaths).Count(&count) + if count > 0 { + return + } + err := global.GVA_DB.Create(&apis).Error + if err != nil { + fmt.Println(err) + } +} + +func RegisterMenus(menus ...system.SysBaseMenu) { + var count int64 + var menuNames []string + parentMenu := menus[0] + otherMenus := menus[1:] + for i := range menus { + menuNames = append(menuNames, menus[i].Name) + } + global.GVA_DB.Find(&[]system.SysBaseMenu{}, "name in (?)", menuNames).Count(&count) + if count > 0 { + return + } + err := global.GVA_DB.Create(&parentMenu).Error + if err != nil { + fmt.Println(err) + } + for i := range otherMenus { + pid := parentMenu.ID + otherMenus[i].ParentId = pid + } + err = global.GVA_DB.Create(&otherMenus).Error + if err != nil { + fmt.Println(err) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/function/api.go.tpl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/function/api.go.tpl new file mode 100644 index 000000000..1d276cff6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/function/api.go.tpl @@ -0,0 +1,40 @@ +{{if .IsPlugin}} +// {{.FuncName}} {{.FuncDesc}} +// @Tags {{.StructName}} +// @Summary {{.FuncDesc}} +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{data=object,msg=string} "获取成功" +// @Router /{{.Abbreviation}}/{{.Router}} [{{.Method}}] +func (a *{{.Abbreviation}}) {{.FuncName}}(c *gin.Context) { + // 请添加自己的业务逻辑 + err := service{{ .StructName }}.{{.FuncName}}() + if err != nil { + global.GVA_LOG.Error("失败!", zap.Error(err)) + response.FailWithMessage("失败", c) + return + } + response.OkWithData("返回数据",c) +} + +{{- else -}} + +// {{.FuncName}} {{.FuncDesc}} +// @Tags {{.StructName}} +// @Summary {{.FuncDesc}} +// @accept application/json +// @Produce application/json +// @Param data query {{.Package}}Req.{{.StructName}}Search true "成功" +// @Success 200 {object} response.Response{data=object,msg=string} "成功" +// @Router /{{.Abbreviation}}/{{.Router}} [{{.Method}}] +func ({{.Abbreviation}}Api *{{.StructName}}Api){{.FuncName}}(c *gin.Context) { + // 请添加自己的业务逻辑 + err := {{.Abbreviation}}Service.{{.FuncName}}() + if err != nil { + global.GVA_LOG.Error("失败!", zap.Error(err)) + response.FailWithMessage("失败", c) + return + } + response.OkWithData("返回数据",c) +} +{{end}} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/function/api.js.tpl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/function/api.js.tpl new file mode 100644 index 000000000..5cc491fe3 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/function/api.js.tpl @@ -0,0 +1,32 @@ +{{if .IsPlugin}} +// {{.FuncName}} {{.FuncDesc}} +// @Tags {{.StructName}} +// @Summary {{.FuncDesc}} +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{data=object,msg=string} "获取成功" +// @Router /{{.Abbreviation}}/{{.Router}} [{{.Method}}] +export const {{.Router}} = () => { + return service({ + url: '/{{.Abbreviation}}/{{.Router}}', + method: '{{.Method}}' + }) +} + +{{- else -}} + +// {{.FuncName}} {{.FuncDesc}} +// @Tags {{.StructName}} +// @Summary {{.FuncDesc}} +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{data=object,msg=string} "成功" +// @Router /{{.Abbreviation}}/{{.Router}} [{{.Method}}] +export const {{.Router}} = () => { + return service({ + url: '/{{.Abbreviation}}/{{.Router}}', + method: '{{.Method}}' + }) +} + +{{- end -}} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/function/server.go.tpl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/function/server.go.tpl new file mode 100644 index 000000000..1c5191c4b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/function/server.go.tpl @@ -0,0 +1,25 @@ +{{- $db := "" }} +{{- if eq .BusinessDB "" }} + {{- $db = "global.GVA_DB" }} +{{- else}} + {{- $db = printf "global.MustGetGlobalDBByDBName(\"%s\")" .BusinessDB }} +{{- end}} +{{if .IsPlugin}} + +// {{.FuncName}} {{.FuncDesc}} +// Author [yourname](https://github.com/yourname) +func (s *{{.Abbreviation}}) {{.FuncName}}() (err error) { + db := {{$db}}.Model(&model.{{.StructName}}{}) + return db.Error +} + +{{- else -}} + +// {{.FuncName}} {{.FuncDesc}} +// Author [yourname](https://github.com/yourname) +func ({{.Abbreviation}}Service *{{.StructName}}Service){{.FuncName}}() (err error) { + // 请在这里实现自己的业务逻辑 + db := {{$db}}.Model(&{{.Package}}.{{.StructName}}{}) + return db.Error +} +{{end}} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/readme.txt.tpl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/readme.txt.tpl new file mode 100644 index 000000000..25de23006 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/readme.txt.tpl @@ -0,0 +1,7 @@ +代码解压后把fe的api文件内容粘贴进前端api文件夹下并修改为自己想要的名字即可 + +后端代码解压后同理,放到自己想要的 mvc对应路径 并且到 initRouter中注册自动生成的路由 到registerTable中注册自动生成的model + +项目github:"https://github.com/piexlmax/github.com/flipped-aurora/gin-vue-admin/server" + +希望大家给个star多多鼓励 diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/api/api.go.tpl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/api/api.go.tpl new file mode 100644 index 000000000..43e727aa1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/api/api.go.tpl @@ -0,0 +1,212 @@ +package {{.Package}} + +import ( + {{if not .OnlyTemplate}} + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/model/{{.Package}}" + {{.Package}}Req "github.com/flipped-aurora/gin-vue-admin/server/model/{{.Package}}/request" + "github.com/gin-gonic/gin" + "go.uber.org/zap" + {{- if .AutoCreateResource}} + "github.com/flipped-aurora/gin-vue-admin/server/utils" + {{- end }} + {{- else}} + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/gin-gonic/gin" + {{- end}} +) + +type {{.StructName}}Api struct {} + +{{if not .OnlyTemplate}} + +// Create{{.StructName}} 创建{{.Description}} +// @Tags {{.StructName}} +// @Summary 创建{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body {{.Package}}.{{.StructName}} true "创建{{.Description}}" +// @Success 200 {object} response.Response{msg=string} "创建成功" +// @Router /{{.Abbreviation}}/create{{.StructName}} [post] +func ({{.Abbreviation}}Api *{{.StructName}}Api) Create{{.StructName}}(c *gin.Context) { + var {{.Abbreviation}} {{.Package}}.{{.StructName}} + err := c.ShouldBindJSON(&{{.Abbreviation}}) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + {{- if .AutoCreateResource }} + {{.Abbreviation}}.CreatedBy = utils.GetUserID(c) + {{- end }} + err = {{.Abbreviation}}Service.Create{{.StructName}}(&{{.Abbreviation}}) + if err != nil { + global.GVA_LOG.Error("创建失败!", zap.Error(err)) + response.FailWithMessage("创建失败:" + err.Error(), c) + return + } + response.OkWithMessage("创建成功", c) +} + +// Delete{{.StructName}} 删除{{.Description}} +// @Tags {{.StructName}} +// @Summary 删除{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body {{.Package}}.{{.StructName}} true "删除{{.Description}}" +// @Success 200 {object} response.Response{msg=string} "删除成功" +// @Router /{{.Abbreviation}}/delete{{.StructName}} [delete] +func ({{.Abbreviation}}Api *{{.StructName}}Api) Delete{{.StructName}}(c *gin.Context) { + {{.PrimaryField.FieldJson}} := c.Query("{{.PrimaryField.FieldJson}}") + {{- if .AutoCreateResource }} + userID := utils.GetUserID(c) + {{- end }} + err := {{.Abbreviation}}Service.Delete{{.StructName}}({{.PrimaryField.FieldJson}} {{- if .AutoCreateResource -}},userID{{- end -}}) + if err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage("删除失败:" + err.Error(), c) + return + } + response.OkWithMessage("删除成功", c) +} + +// Delete{{.StructName}}ByIds 批量删除{{.Description}} +// @Tags {{.StructName}} +// @Summary 批量删除{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{msg=string} "批量删除成功" +// @Router /{{.Abbreviation}}/delete{{.StructName}}ByIds [delete] +func ({{.Abbreviation}}Api *{{.StructName}}Api) Delete{{.StructName}}ByIds(c *gin.Context) { + {{.PrimaryField.FieldJson}}s := c.QueryArray("{{.PrimaryField.FieldJson}}s[]") + {{- if .AutoCreateResource }} + userID := utils.GetUserID(c) + {{- end }} + err := {{.Abbreviation}}Service.Delete{{.StructName}}ByIds({{.PrimaryField.FieldJson}}s{{- if .AutoCreateResource }},userID{{- end }}) + if err != nil { + global.GVA_LOG.Error("批量删除失败!", zap.Error(err)) + response.FailWithMessage("批量删除失败:" + err.Error(), c) + return + } + response.OkWithMessage("批量删除成功", c) +} + +// Update{{.StructName}} 更新{{.Description}} +// @Tags {{.StructName}} +// @Summary 更新{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body {{.Package}}.{{.StructName}} true "更新{{.Description}}" +// @Success 200 {object} response.Response{msg=string} "更新成功" +// @Router /{{.Abbreviation}}/update{{.StructName}} [put] +func ({{.Abbreviation}}Api *{{.StructName}}Api) Update{{.StructName}}(c *gin.Context) { + var {{.Abbreviation}} {{.Package}}.{{.StructName}} + err := c.ShouldBindJSON(&{{.Abbreviation}}) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + {{- if .AutoCreateResource }} + {{.Abbreviation}}.UpdatedBy = utils.GetUserID(c) + {{- end }} + err = {{.Abbreviation}}Service.Update{{.StructName}}({{.Abbreviation}}) + if err != nil { + global.GVA_LOG.Error("更新失败!", zap.Error(err)) + response.FailWithMessage("更新失败:" + err.Error(), c) + return + } + response.OkWithMessage("更新成功", c) +} + +// Find{{.StructName}} 用id查询{{.Description}} +// @Tags {{.StructName}} +// @Summary 用id查询{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query {{.Package}}.{{.StructName}} true "用id查询{{.Description}}" +// @Success 200 {object} response.Response{data={{.Package}}.{{.StructName}},msg=string} "查询成功" +// @Router /{{.Abbreviation}}/find{{.StructName}} [get] +func ({{.Abbreviation}}Api *{{.StructName}}Api) Find{{.StructName}}(c *gin.Context) { + {{.PrimaryField.FieldJson}} := c.Query("{{.PrimaryField.FieldJson}}") + re{{.Abbreviation}}, err := {{.Abbreviation}}Service.Get{{.StructName}}({{.PrimaryField.FieldJson}}) + if err != nil { + global.GVA_LOG.Error("查询失败!", zap.Error(err)) + response.FailWithMessage("查询失败:" + err.Error(), c) + return + } + response.OkWithData(re{{.Abbreviation}}, c) +} + +// Get{{.StructName}}List 分页获取{{.Description}}列表 +// @Tags {{.StructName}} +// @Summary 分页获取{{.Description}}列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query {{.Package}}Req.{{.StructName}}Search true "分页获取{{.Description}}列表" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "获取成功" +// @Router /{{.Abbreviation}}/get{{.StructName}}List [get] +func ({{.Abbreviation}}Api *{{.StructName}}Api) Get{{.StructName}}List(c *gin.Context) { + var pageInfo {{.Package}}Req.{{.StructName}}Search + err := c.ShouldBindQuery(&pageInfo) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + list, total, err := {{.Abbreviation}}Service.Get{{.StructName}}InfoList(pageInfo) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败:" + err.Error(), c) + return + } + response.OkWithDetailed(response.PageResult{ + List: list, + Total: total, + Page: pageInfo.Page, + PageSize: pageInfo.PageSize, + }, "获取成功", c) +} + +{{- if .HasDataSource }} +// Get{{.StructName}}DataSource 获取{{.StructName}}的数据源 +// @Tags {{.StructName}} +// @Summary 获取{{.StructName}}的数据源 +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{data=object,msg=string} "查询成功" +// @Router /{{.Abbreviation}}/get{{.StructName}}DataSource [get] +func ({{.Abbreviation}}Api *{{.StructName}}Api) Get{{.StructName}}DataSource(c *gin.Context) { + // 此接口为获取数据源定义的数据 + dataSource, err := {{.Abbreviation}}Service.Get{{.StructName}}DataSource() + if err != nil { + global.GVA_LOG.Error("查询失败!", zap.Error(err)) + response.FailWithMessage("查询失败:" + err.Error(), c) + return + } + response.OkWithData(dataSource, c) +} +{{- end }} + +{{- end }} + +// Get{{.StructName}}Public 不需要鉴权的{{.Description}}接口 +// @Tags {{.StructName}} +// @Summary 不需要鉴权的{{.Description}}接口 +// @accept application/json +// @Produce application/json +// @Param data query {{.Package}}Req.{{.StructName}}Search true "分页获取{{.Description}}列表" +// @Success 200 {object} response.Response{data=object,msg=string} "获取成功" +// @Router /{{.Abbreviation}}/get{{.StructName}}Public [get] +func ({{.Abbreviation}}Api *{{.StructName}}Api) Get{{.StructName}}Public(c *gin.Context) { + // 此接口不需要鉴权 + // 示例为返回了一个固定的消息接口,一般本接口用于C端服务,需要自己实现业务逻辑 + {{.Abbreviation}}Service.Get{{.StructName}}Public() + response.OkWithDetailed(gin.H{ + "info": "不需要鉴权的{{.Description}}接口信息", + }, "获取成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/api/enter.go.tpl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/api/enter.go.tpl new file mode 100644 index 000000000..778b3146e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/api/enter.go.tpl @@ -0,0 +1,4 @@ +package {{ .Package }} + +type ApiGroup struct { +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/model/model.go.tpl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/model/model.go.tpl new file mode 100644 index 000000000..36d903754 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/model/model.go.tpl @@ -0,0 +1,60 @@ +// 自动生成模板{{.StructName}} +package {{.Package}} + +{{- if not .OnlyTemplate}} +import ( + {{- if .GvaModel }} + "github.com/flipped-aurora/gin-vue-admin/server/global" + {{- end }} + {{- if or .HasTimer }} + "time" + {{- end }} + {{- if .NeedJSON }} + "gorm.io/datatypes" + {{- end }} +) +{{- end }} + +// {{.Description}} 结构体 {{.StructName}} +type {{.StructName}} struct { +{{- if not .OnlyTemplate}} +{{- if .GvaModel }} + global.GVA_MODEL +{{- end }} +{{- range .Fields}} + {{- if eq .FieldType "enum" }} + {{.FieldName}} string `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};type:enum({{.DataTypeLong}});comment:{{.Comment}};" {{- if .Require }} binding:"required"{{- end -}}` + {{- else if eq .FieldType "picture" }} + {{.FieldName}} string `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};comment:{{.Comment}};{{- if .DataTypeLong -}}size:{{.DataTypeLong}};{{- end -}}" {{- if .Require }} binding:"required"{{- end -}}` + {{- else if eq .FieldType "video" }} + {{.FieldName}} string `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};comment:{{.Comment}};{{- if .DataTypeLong -}}size:{{.DataTypeLong}};{{- end -}}" {{- if .Require }} binding:"required"{{- end -}}` + {{- else if eq .FieldType "file" }} + {{.FieldName}} datatypes.JSON `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};comment:{{.Comment}};{{- if .DataTypeLong -}}size:{{.DataTypeLong}};{{- end -}}" {{- if .Require }} binding:"required"{{- end -}} swaggertype:"array,object"` + {{- else if eq .FieldType "pictures" }} + {{.FieldName}} datatypes.JSON `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};comment:{{.Comment}};{{- if .DataTypeLong -}}size:{{.DataTypeLong}};{{- end -}}" {{- if .Require }} binding:"required"{{- end -}} swaggertype:"array,object"` + {{- else if eq .FieldType "richtext" }} + {{.FieldName}} string `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};comment:{{.Comment}};{{- if .DataTypeLong -}}size:{{.DataTypeLong}};{{- end -}}type:text;" {{- if .Require }} binding:"required"{{- end -}}` + {{- else if eq .FieldType "json" }} + {{.FieldName}} datatypes.JSON `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};comment:{{.Comment}};{{- if .DataTypeLong -}}size:{{.DataTypeLong}};{{- end -}}type:text;" {{- if .Require }} binding:"required"{{- end -}} swaggertype:"object"` + {{- else if eq .FieldType "array" }} + {{.FieldName}} datatypes.JSON `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};comment:{{.Comment}};{{- if .DataTypeLong -}}size:{{.DataTypeLong}};{{- end -}}type:text;" {{- if .Require }} binding:"required"{{- end -}} swaggertype:"array,object"` + {{- else if ne .FieldType "string" }} + {{.FieldName}} *{{.FieldType}} `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};comment:{{.Comment}};{{- if .DataTypeLong -}}size:{{.DataTypeLong}};{{- end -}}" {{- if .Require }} binding:"required"{{- end -}}` + {{- else }} + {{.FieldName}} {{.FieldType}} `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};comment:{{.Comment}};{{- if .DataTypeLong -}}size:{{.DataTypeLong}};{{- end -}}" {{- if .Require }} binding:"required"{{- end -}}` + {{- end }} {{ if .FieldDesc }}//{{.FieldDesc}} {{ end }} +{{- end }} + {{- if .AutoCreateResource }} + CreatedBy uint `gorm:"column:created_by;comment:创建者"` + UpdatedBy uint `gorm:"column:updated_by;comment:更新者"` + DeletedBy uint `gorm:"column:deleted_by;comment:删除者"` + {{- end }} +{{- end }} +} + +{{ if .TableName }} +// TableName {{.Description}} {{.StructName}}自定义表名 {{.TableName}} +func ({{.StructName}}) TableName() string { + return "{{.TableName}}" +} +{{ end }} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/model/request/request.go.tpl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/model/request/request.go.tpl new file mode 100644 index 000000000..e97a0fd7a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/model/request/request.go.tpl @@ -0,0 +1,38 @@ +package request + +import ( +{{- if not .OnlyTemplate }} + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + {{ if or .HasSearchTimer .GvaModel}}"time"{{ end }} +{{- end }} +) + +type {{.StructName}}Search struct{ +{{- if not .OnlyTemplate}} +{{- if .GvaModel }} + StartCreatedAt *time.Time `json:"startCreatedAt" form:"startCreatedAt"` + EndCreatedAt *time.Time `json:"endCreatedAt" form:"endCreatedAt"` +{{- end }} +{{- range .Fields}} + {{- if ne .FieldSearchType ""}} + {{- if eq .FieldSearchType "BETWEEN" "NOT BETWEEN"}} + Start{{.FieldName}} *{{.FieldType}} `json:"start{{.FieldName}}" form:"start{{.FieldName}}"` + End{{.FieldName}} *{{.FieldType}} `json:"end{{.FieldName}}" form:"end{{.FieldName}}"` + {{- else }} + {{- if or (eq .FieldType "enum") (eq .FieldType "picture") (eq .FieldType "pictures") (eq .FieldType "video") (eq .FieldType "richtext") (eq .FieldType "json") }} + {{.FieldName}} string `json:"{{.FieldJson}}" form:"{{.FieldJson}}" ` + {{- else if ne .FieldType "string" }} + {{.FieldName}} *{{.FieldType}} `json:"{{.FieldJson}}" form:"{{.FieldJson}}" ` + {{- else }} + {{.FieldName}} {{.FieldType}} `json:"{{.FieldJson}}" form:"{{.FieldJson}}" ` + {{- end }} + {{- end }} + {{- end}} +{{- end }} + request.PageInfo + {{- if .NeedSort}} + Sort string `json:"sort" form:"sort"` + Order string `json:"order" form:"order"` + {{- end}} +{{- end}} +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/router/enter.go.tpl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/router/enter.go.tpl new file mode 100644 index 000000000..178aecf3b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/router/enter.go.tpl @@ -0,0 +1,4 @@ +package {{ .Package }} + +type RouterGroup struct { +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/router/router.go.tpl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/router/router.go.tpl new file mode 100644 index 000000000..9a4ba9de0 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/router/router.go.tpl @@ -0,0 +1,42 @@ +package {{.Package}} + +import ( + {{if .OnlyTemplate}}// {{ end}}"github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/gin-gonic/gin" +) + +type {{.StructName}}Router struct {} + +// Init{{.StructName}}Router 初始化 {{.Description}} 路由信息 +func (s *{{.StructName}}Router) Init{{.StructName}}Router(Router *gin.RouterGroup,PublicRouter *gin.RouterGroup) { + {{- if not .OnlyTemplate}} + {{.Abbreviation}}Router := Router.Group("{{.Abbreviation}}").Use(middleware.OperationRecord()) + {{.Abbreviation}}RouterWithoutRecord := Router.Group("{{.Abbreviation}}") + {{- else }} + // {{.Abbreviation}}Router := Router.Group("{{.Abbreviation}}").Use(middleware.OperationRecord()) + // {{.Abbreviation}}RouterWithoutRecord := Router.Group("{{.Abbreviation}}") + {{- end}} + {{.Abbreviation}}RouterWithoutAuth := PublicRouter.Group("{{.Abbreviation}}") + {{- if not .OnlyTemplate}} + { + {{.Abbreviation}}Router.POST("create{{.StructName}}", {{.Abbreviation}}Api.Create{{.StructName}}) // 新建{{.Description}} + {{.Abbreviation}}Router.DELETE("delete{{.StructName}}", {{.Abbreviation}}Api.Delete{{.StructName}}) // 删除{{.Description}} + {{.Abbreviation}}Router.DELETE("delete{{.StructName}}ByIds", {{.Abbreviation}}Api.Delete{{.StructName}}ByIds) // 批量删除{{.Description}} + {{.Abbreviation}}Router.PUT("update{{.StructName}}", {{.Abbreviation}}Api.Update{{.StructName}}) // 更新{{.Description}} + } + { + {{.Abbreviation}}RouterWithoutRecord.GET("find{{.StructName}}", {{.Abbreviation}}Api.Find{{.StructName}}) // 根据ID获取{{.Description}} + {{.Abbreviation}}RouterWithoutRecord.GET("get{{.StructName}}List", {{.Abbreviation}}Api.Get{{.StructName}}List) // 获取{{.Description}}列表 + } + { + {{- if .HasDataSource}} + {{.Abbreviation}}RouterWithoutAuth.GET("get{{.StructName}}DataSource", {{.Abbreviation}}Api.Get{{.StructName}}DataSource) // 获取{{.Description}}数据源 + {{- end}} + {{.Abbreviation}}RouterWithoutAuth.GET("get{{.StructName}}Public", {{.Abbreviation}}Api.Get{{.StructName}}Public) // {{.Description}}开放接口 + } + {{- else}} + { + {{.Abbreviation}}RouterWithoutAuth.GET("get{{.StructName}}Public", {{.Abbreviation}}Api.Get{{.StructName}}Public) // {{.Description}}开放接口 + } + {{ end }} +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/service/enter.go.tpl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/service/enter.go.tpl new file mode 100644 index 000000000..adf1db02e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/service/enter.go.tpl @@ -0,0 +1,4 @@ +package {{ .Package }} + +type ServiceGroup struct { +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/service/service.go.tpl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/service/service.go.tpl new file mode 100644 index 000000000..1c44daf87 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/server/service/service.go.tpl @@ -0,0 +1,168 @@ +package {{.Package}} + +import ( +{{- if not .OnlyTemplate }} + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/{{.Package}}" + {{.Package}}Req "github.com/flipped-aurora/gin-vue-admin/server/model/{{.Package}}/request" + {{- if .AutoCreateResource }} + "gorm.io/gorm" + {{- end}} +{{- end }} +) + +type {{.StructName}}Service struct {} + +{{- $db := "" }} +{{- if eq .BusinessDB "" }} + {{- $db = "global.GVA_DB" }} +{{- else}} + {{- $db = printf "global.MustGetGlobalDBByDBName(\"%s\")" .BusinessDB }} +{{- end}} + +{{- if not .OnlyTemplate }} +// Create{{.StructName}} 创建{{.Description}}记录 +// Author [yourname](https://github.com/yourname) +func ({{.Abbreviation}}Service *{{.StructName}}Service) Create{{.StructName}}({{.Abbreviation}} *{{.Package}}.{{.StructName}}) (err error) { + err = {{$db}}.Create({{.Abbreviation}}).Error + return err +} + +// Delete{{.StructName}} 删除{{.Description}}记录 +// Author [yourname](https://github.com/yourname) +func ({{.Abbreviation}}Service *{{.StructName}}Service)Delete{{.StructName}}({{.PrimaryField.FieldJson}} string{{- if .AutoCreateResource -}},userID uint{{- end -}}) (err error) { + {{- if .AutoCreateResource }} + err = {{$db}}.Transaction(func(tx *gorm.DB) error { + if err := tx.Model(&{{.Package}}.{{.StructName}}{}).Where("{{.PrimaryField.ColumnName}} = ?", {{.PrimaryField.FieldJson}}).Update("deleted_by", userID).Error; err != nil { + return err + } + if err = tx.Delete(&{{.Package}}.{{.StructName}}{},"{{.PrimaryField.ColumnName}} = ?",{{.PrimaryField.FieldJson}}).Error; err != nil { + return err + } + return nil + }) + {{- else }} + err = {{$db}}.Delete(&{{.Package}}.{{.StructName}}{},"{{.PrimaryField.ColumnName}} = ?",{{.PrimaryField.FieldJson}}).Error + {{- end }} + return err +} + +// Delete{{.StructName}}ByIds 批量删除{{.Description}}记录 +// Author [yourname](https://github.com/yourname) +func ({{.Abbreviation}}Service *{{.StructName}}Service)Delete{{.StructName}}ByIds({{.PrimaryField.FieldJson}}s []string {{- if .AutoCreateResource }},deleted_by uint{{- end}}) (err error) { + {{- if .AutoCreateResource }} + err = {{$db}}.Transaction(func(tx *gorm.DB) error { + if err := tx.Model(&{{.Package}}.{{.StructName}}{}).Where("{{.PrimaryField.ColumnName}} in ?", {{.PrimaryField.FieldJson}}s).Update("deleted_by", deleted_by).Error; err != nil { + return err + } + if err := tx.Where("{{.PrimaryField.ColumnName}} in ?", {{.PrimaryField.FieldJson}}s).Delete(&{{.Package}}.{{.StructName}}{}).Error; err != nil { + return err + } + return nil + }) + {{- else}} + err = {{$db}}.Delete(&[]{{.Package}}.{{.StructName}}{},"{{.PrimaryField.ColumnName}} in ?",{{.PrimaryField.FieldJson}}s).Error + {{- end}} + return err +} + +// Update{{.StructName}} 更新{{.Description}}记录 +// Author [yourname](https://github.com/yourname) +func ({{.Abbreviation}}Service *{{.StructName}}Service)Update{{.StructName}}({{.Abbreviation}} {{.Package}}.{{.StructName}}) (err error) { + err = {{$db}}.Model(&{{.Package}}.{{.StructName}}{}).Where("{{.PrimaryField.ColumnName}} = ?",{{.Abbreviation}}.{{.PrimaryField.FieldName}}).Updates(&{{.Abbreviation}}).Error + return err +} + +// Get{{.StructName}} 根据{{.PrimaryField.FieldJson}}获取{{.Description}}记录 +// Author [yourname](https://github.com/yourname) +func ({{.Abbreviation}}Service *{{.StructName}}Service)Get{{.StructName}}({{.PrimaryField.FieldJson}} string) ({{.Abbreviation}} {{.Package}}.{{.StructName}}, err error) { + err = {{$db}}.Where("{{.PrimaryField.ColumnName}} = ?", {{.PrimaryField.FieldJson}}).First(&{{.Abbreviation}}).Error + return +} + +// Get{{.StructName}}InfoList 分页获取{{.Description}}记录 +// Author [yourname](https://github.com/yourname) +func ({{.Abbreviation}}Service *{{.StructName}}Service)Get{{.StructName}}InfoList(info {{.Package}}Req.{{.StructName}}Search) (list []{{.Package}}.{{.StructName}}, total int64, err error) { + limit := info.PageSize + offset := info.PageSize * (info.Page - 1) + // 创建db + db := {{$db}}.Model(&{{.Package}}.{{.StructName}}{}) + var {{.Abbreviation}}s []{{.Package}}.{{.StructName}} + // 如果有条件搜索 下方会自动创建搜索语句 +{{- if .GvaModel }} + if info.StartCreatedAt !=nil && info.EndCreatedAt !=nil { + db = db.Where("created_at BETWEEN ? AND ?", info.StartCreatedAt, info.EndCreatedAt) + } +{{- end }} + {{- range .Fields}} + {{- if .FieldSearchType}} + {{- if or (eq .FieldType "string") (eq .FieldType "enum") (eq .FieldType "pictures") (eq .FieldType "picture") (eq .FieldType "video") (eq .FieldType "richtext") (eq .FieldType "json") }} + if info.{{.FieldName}} != "" { + {{- if or (eq .FieldType "enum") (eq .FieldType "string") }} + db = db.Where("{{.ColumnName}} {{.FieldSearchType}} ?",{{if eq .FieldSearchType "LIKE"}}"%"+ {{ end }}info.{{.FieldName}}{{if eq .FieldSearchType "LIKE"}}+"%"{{ end }}) + {{- else}} + // 数据类型为复杂类型,请根据业务需求自行实现复杂类型的查询业务 + {{- end}} + } + {{- else if eq .FieldSearchType "BETWEEN" "NOT BETWEEN"}} + if info.Start{{.FieldName}} != nil && info.End{{.FieldName}} != nil { + db = db.Where("{{.ColumnName}} {{.FieldSearchType}} ? AND ? ",info.Start{{.FieldName}},info.End{{.FieldName}}) + } + {{- else}} + if info.{{.FieldName}} != nil { + db = db.Where("{{.ColumnName}} {{.FieldSearchType}} ?",{{if eq .FieldSearchType "LIKE"}}"%"+{{ end }}info.{{.FieldName}}{{if eq .FieldSearchType "LIKE"}}+"%"{{ end }}) + } + {{- end }} + {{- end }} + {{- end }} + err = db.Count(&total).Error + if err!=nil { + return + } + {{- if .NeedSort}} + var OrderStr string + orderMap := make(map[string]bool) + {{- range .Fields}} + {{- if .Sort}} + orderMap["{{.ColumnName}}"] = true + {{- end}} + {{- end}} + if orderMap[info.Sort] { + OrderStr = info.Sort + if info.Order == "descending" { + OrderStr = OrderStr + " desc" + } + db = db.Order(OrderStr) + } + {{- end}} + + if limit != 0 { + db = db.Limit(limit).Offset(offset) + } + + err = db.Find(&{{.Abbreviation}}s).Error + return {{.Abbreviation}}s, total, err +} + +{{- if .HasDataSource }} +func ({{.Abbreviation}}Service *{{.StructName}}Service)Get{{.StructName}}DataSource() (res map[string][]map[string]any, err error) { + res = make(map[string][]map[string]any) + {{range $key, $value := .DataSourceMap}} + {{$key}} := make([]map[string]any, 0) + {{ $dataDB := "" }} + {{- if eq $value.DBName "" }} + {{ $dataDB = $db }} + {{- else}} + {{ $dataDB = printf "global.MustGetGlobalDBByDBName(\"%s\")" $value.DBName }} + {{- end}} + {{$dataDB}}.Table("{{$value.Table}}").Select("{{$value.Label}} as label,{{$value.Value}} as value").Scan(&{{$key}}) + res["{{$key}}"] = {{$key}} + {{- end }} + return +} +{{- end }} +{{- end }} +func ({{.Abbreviation}}Service *{{.StructName}}Service)Get{{.StructName}}Public() { + // 此方法为获取数据源定义的数据 + // 请自行实现 +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/web/api/api.js.tpl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/web/api/api.js.tpl new file mode 100644 index 000000000..94085baa1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/web/api/api.js.tpl @@ -0,0 +1,130 @@ +import service from '@/utils/request' + +{{- if not .OnlyTemplate}} +// @Tags {{.StructName}} +// @Summary 创建{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.{{.StructName}} true "创建{{.Description}}" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}" +// @Router /{{.Abbreviation}}/create{{.StructName}} [post] +export const create{{.StructName}} = (data) => { + return service({ + url: '/{{.Abbreviation}}/create{{.StructName}}', + method: 'post', + data + }) +} + +// @Tags {{.StructName}} +// @Summary 删除{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.{{.StructName}} true "删除{{.Description}}" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /{{.Abbreviation}}/delete{{.StructName}} [delete] +export const delete{{.StructName}} = (params) => { + return service({ + url: '/{{.Abbreviation}}/delete{{.StructName}}', + method: 'delete', + params + }) +} + +// @Tags {{.StructName}} +// @Summary 批量删除{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.IdsReq true "批量删除{{.Description}}" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /{{.Abbreviation}}/delete{{.StructName}} [delete] +export const delete{{.StructName}}ByIds = (params) => { + return service({ + url: '/{{.Abbreviation}}/delete{{.StructName}}ByIds', + method: 'delete', + params + }) +} + +// @Tags {{.StructName}} +// @Summary 更新{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.{{.StructName}} true "更新{{.Description}}" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}" +// @Router /{{.Abbreviation}}/update{{.StructName}} [put] +export const update{{.StructName}} = (data) => { + return service({ + url: '/{{.Abbreviation}}/update{{.StructName}}', + method: 'put', + data + }) +} + +// @Tags {{.StructName}} +// @Summary 用id查询{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query model.{{.StructName}} true "用id查询{{.Description}}" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" +// @Router /{{.Abbreviation}}/find{{.StructName}} [get] +export const find{{.StructName}} = (params) => { + return service({ + url: '/{{.Abbreviation}}/find{{.StructName}}', + method: 'get', + params + }) +} + +// @Tags {{.StructName}} +// @Summary 分页获取{{.Description}}列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query request.PageInfo true "分页获取{{.Description}}列表" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /{{.Abbreviation}}/get{{.StructName}}List [get] +export const get{{.StructName}}List = (params) => { + return service({ + url: '/{{.Abbreviation}}/get{{.StructName}}List', + method: 'get', + params + }) +} + +{{- if .HasDataSource}} +// @Tags {{.StructName}} +// @Summary 获取数据源 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" +// @Router /{{.Abbreviation}}/find{{.StructName}}DataSource [get] +export const get{{.StructName}}DataSource = () => { + return service({ + url: '/{{.Abbreviation}}/get{{.StructName}}DataSource', + method: 'get', + }) +} +{{- end}} + +{{- end}} + +// @Tags {{.StructName}} +// @Summary 不需要鉴权的{{.Description}}接口 +// @accept application/json +// @Produce application/json +// @Param data query {{.Package}}Req.{{.StructName}}Search true "分页获取{{.Description}}列表" +// @Success 200 {object} response.Response{data=object,msg=string} "获取成功" +// @Router /{{.Abbreviation}}/get{{.StructName}}Public [get] +export const get{{.StructName}}Public = () => { + return service({ + url: '/{{.Abbreviation}}/get{{.StructName}}Public', + method: 'get', + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/web/view/form.vue.tpl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/web/view/form.vue.tpl new file mode 100644 index 000000000..6ad1a4369 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/web/view/form.vue.tpl @@ -0,0 +1,250 @@ +{{- if not .OnlyTemplate }} + + + + + +{{- else }} + + + +{{- end }} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/web/view/table.vue.tpl b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/web/view/table.vue.tpl new file mode 100644 index 000000000..556cb828f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/package/web/view/table.vue.tpl @@ -0,0 +1,909 @@ +{{- $global := . }} +{{- $templateID := printf "%s_%s" .Package .StructName }} +{{- if not .OnlyTemplate}} + + + + + +{{- else}} + + + +{{- end}} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/api/api.go.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/api/api.go.template new file mode 100644 index 000000000..03321c74f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/api/api.go.template @@ -0,0 +1,207 @@ +package api + +import ( +{{if not .OnlyTemplate}} + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/{{.Package}}/model" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/{{.Package}}/model/request" + "github.com/gin-gonic/gin" + "go.uber.org/zap" + {{- if .AutoCreateResource}} + "github.com/flipped-aurora/gin-vue-admin/server/utils" + {{- end }} +{{- else }} + "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" + "github.com/gin-gonic/gin" +{{- end }} +) + +var {{.StructName}} = new({{.Abbreviation}}) + +type {{.Abbreviation}} struct {} +{{if not .OnlyTemplate}} +// Create{{.StructName}} 创建{{.Description}} +// @Tags {{.StructName}} +// @Summary 创建{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.{{.StructName}} true "创建{{.Description}}" +// @Success 200 {object} response.Response{msg=string} "创建成功" +// @Router /{{.Abbreviation}}/create{{.StructName}} [post] +func (a *{{.Abbreviation}}) Create{{.StructName}}(c *gin.Context) { + var info model.{{.StructName}} + err := c.ShouldBindJSON(&info) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + {{- if .AutoCreateResource }} + info.CreatedBy = utils.GetUserID(c) + {{- end }} + err = service{{ .StructName }}.Create{{.StructName}}(&info) + if err != nil { + global.GVA_LOG.Error("创建失败!", zap.Error(err)) + response.FailWithMessage("创建失败:" + err.Error(), c) + return + } + response.OkWithMessage("创建成功", c) +} + +// Delete{{.StructName}} 删除{{.Description}} +// @Tags {{.StructName}} +// @Summary 删除{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.{{.StructName}} true "删除{{.Description}}" +// @Success 200 {object} response.Response{msg=string} "删除成功" +// @Router /{{.Abbreviation}}/delete{{.StructName}} [delete] +func (a *{{.Abbreviation}}) Delete{{.StructName}}(c *gin.Context) { + {{.PrimaryField.FieldJson}} := c.Query("{{.PrimaryField.FieldJson}}") +{{- if .AutoCreateResource }} + userID := utils.GetUserID(c) +{{- end }} + err := service{{ .StructName }}.Delete{{.StructName}}({{.PrimaryField.FieldJson}} {{- if .AutoCreateResource -}},userID{{- end -}}) + if err != nil { + global.GVA_LOG.Error("删除失败!", zap.Error(err)) + response.FailWithMessage("删除失败:" + err.Error(), c) + return + } + response.OkWithMessage("删除成功", c) +} + +// Delete{{.StructName}}ByIds 批量删除{{.Description}} +// @Tags {{.StructName}} +// @Summary 批量删除{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{msg=string} "批量删除成功" +// @Router /{{.Abbreviation}}/delete{{.StructName}}ByIds [delete] +func (a *{{.Abbreviation}}) Delete{{.StructName}}ByIds(c *gin.Context) { + {{.PrimaryField.FieldJson}}s := c.QueryArray("{{.PrimaryField.FieldJson}}s[]") +{{- if .AutoCreateResource }} + userID := utils.GetUserID(c) +{{- end }} + err := service{{ .StructName }}.Delete{{.StructName}}ByIds({{.PrimaryField.FieldJson}}s{{- if .AutoCreateResource }},userID{{- end }}) + if err != nil { + global.GVA_LOG.Error("批量删除失败!", zap.Error(err)) + response.FailWithMessage("批量删除失败:" + err.Error(), c) + return + } + response.OkWithMessage("批量删除成功", c) +} + +// Update{{.StructName}} 更新{{.Description}} +// @Tags {{.StructName}} +// @Summary 更新{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.{{.StructName}} true "更新{{.Description}}" +// @Success 200 {object} response.Response{msg=string} "更新成功" +// @Router /{{.Abbreviation}}/update{{.StructName}} [put] +func (a *{{.Abbreviation}}) Update{{.StructName}}(c *gin.Context) { + var info model.{{.StructName}} + err := c.ShouldBindJSON(&info) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } +{{- if .AutoCreateResource }} + info.UpdatedBy = utils.GetUserID(c) +{{- end }} + err = service{{ .StructName }}.Update{{.StructName}}(info) + if err != nil { + global.GVA_LOG.Error("更新失败!", zap.Error(err)) + response.FailWithMessage("更新失败:" + err.Error(), c) + return + } + response.OkWithMessage("更新成功", c) +} + +// Find{{.StructName}} 用id查询{{.Description}} +// @Tags {{.StructName}} +// @Summary 用id查询{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query model.{{.StructName}} true "用id查询{{.Description}}" +// @Success 200 {object} response.Response{data=model.{{.StructName}},msg=string} "查询成功" +// @Router /{{.Abbreviation}}/find{{.StructName}} [get] +func (a *{{.Abbreviation}}) Find{{.StructName}}(c *gin.Context) { + {{.PrimaryField.FieldJson}} := c.Query("{{.PrimaryField.FieldJson}}") + re{{.Abbreviation}}, err := service{{ .StructName }}.Get{{.StructName}}({{.PrimaryField.FieldJson}}) + if err != nil { + global.GVA_LOG.Error("查询失败!", zap.Error(err)) + response.FailWithMessage("查询失败:" + err.Error(), c) + return + } + response.OkWithData(re{{.Abbreviation}}, c) +} + +// Get{{.StructName}}List 分页获取{{.Description}}列表 +// @Tags {{.StructName}} +// @Summary 分页获取{{.Description}}列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query request.{{.StructName}}Search true "分页获取{{.Description}}列表" +// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "获取成功" +// @Router /{{.Abbreviation}}/get{{.StructName}}List [get] +func (a *{{.Abbreviation}}) Get{{.StructName}}List(c *gin.Context) { + var pageInfo request.{{.StructName}}Search + err := c.ShouldBindQuery(&pageInfo) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + list, total, err := service{{ .StructName }}.Get{{.StructName}}InfoList(pageInfo) + if err != nil { + global.GVA_LOG.Error("获取失败!", zap.Error(err)) + response.FailWithMessage("获取失败:" + err.Error(), c) + return + } + response.OkWithDetailed(response.PageResult{ + List: list, + Total: total, + Page: pageInfo.Page, + PageSize: pageInfo.PageSize, + }, "获取成功", c) +} + +{{- if .HasDataSource }} +// Get{{.StructName}}DataSource 获取{{.StructName}}的数据源 +// @Tags {{.StructName}} +// @Summary 获取{{.StructName}}的数据源 +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{data=object,msg=string} "查询成功" +// @Router /{{.Abbreviation}}/get{{.StructName}}DataSource [get] +func (a *{{.Abbreviation}}) Get{{.StructName}}DataSource(c *gin.Context) { + // 此接口为获取数据源定义的数据 + dataSource, err := service{{ .StructName }}.Get{{.StructName}}DataSource() + if err != nil { + global.GVA_LOG.Error("查询失败!", zap.Error(err)) + response.FailWithMessage("查询失败:" + err.Error(), c) + return + } + response.OkWithData(dataSource, c) +} +{{- end }} +{{- end }} +// Get{{.StructName}}Public 不需要鉴权的{{.Description}}接口 +// @Tags {{.StructName}} +// @Summary 不需要鉴权的{{.Description}}接口 +// @accept application/json +// @Produce application/json +// @Param data query request.{{.StructName}}Search true "分页获取{{.Description}}列表" +// @Success 200 {object} response.Response{data=object,msg=string} "获取成功" +// @Router /{{.Abbreviation}}/get{{.StructName}}Public [get] +func (a *{{.Abbreviation}}) Get{{.StructName}}Public(c *gin.Context) { + // 此接口不需要鉴权 示例为返回了一个固定的消息接口,一般本接口用于C端服务,需要自己实现业务逻辑 + service{{ .StructName }}.Get{{.StructName}}Public() + response.OkWithDetailed(gin.H{"info": "不需要鉴权的{{.Description}}接口信息"}, "获取成功", c) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/api/enter.go.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/api/enter.go.template new file mode 100644 index 000000000..989fb3507 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/api/enter.go.template @@ -0,0 +1,6 @@ +package api + +var Api = new(api) + +type api struct { +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/config/config.go.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/config/config.go.template new file mode 100644 index 000000000..809bc990f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/config/config.go.template @@ -0,0 +1,4 @@ +package config + +type Config struct { +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/gen/gen.go.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/gen/gen.go.template new file mode 100644 index 000000000..5639d4ab3 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/gen/gen.go.template @@ -0,0 +1,18 @@ +package main + +import ( + "gorm.io/gen" + "path/filepath" +) + +//go:generate go mod tidy +//go:generate go mod download +//go:generate go run gen.go +func main() { + g := gen.NewGenerator(gen.Config{ + OutPath: filepath.Join("..", "..", "..", "{{ .Package }}", "blender", "model", "dao"), + Mode: gen.WithoutContext | gen.WithDefaultQuery | gen.WithQueryInterface, + }) + g.ApplyBasic() + g.Execute() +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/api.go.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/api.go.template new file mode 100644 index 000000000..adf5d64cf --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/api.go.template @@ -0,0 +1,12 @@ +package initialize + +import ( + "context" + model "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/plugin-tool/utils" +) + +func Api(ctx context.Context) { + entities := []model.SysApi{} + utils.RegisterApis(entities...) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/gorm.go.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/gorm.go.template new file mode 100644 index 000000000..0988bccff --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/gorm.go.template @@ -0,0 +1,18 @@ +package initialize + +import ( + "context" + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + + "github.com/pkg/errors" + "go.uber.org/zap" +) + +func Gorm(ctx context.Context) { + err := global.GVA_DB.WithContext(ctx).AutoMigrate() + if err != nil { + err = errors.Wrap(err, "注册表失败!") + zap.L().Error(fmt.Sprintf("%+v", err)) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/menu.go.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/menu.go.template new file mode 100644 index 000000000..06993db3d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/menu.go.template @@ -0,0 +1,12 @@ +package initialize + +import ( + "context" + model "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/plugin-tool/utils" +) + +func Menu(ctx context.Context) { + entities := []model.SysBaseMenu{} + utils.RegisterMenus(entities...) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/router.go.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/router.go.template new file mode 100644 index 000000000..f7f8ed0fb --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/router.go.template @@ -0,0 +1,14 @@ +package initialize + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/gin-gonic/gin" +) + +func Router(engine *gin.Engine) { + public := engine.Group(global.GVA_CONFIG.System.RouterPrefix).Group("") + public.Use() + private := engine.Group(global.GVA_CONFIG.System.RouterPrefix).Group("") + private.Use(middleware.JWTAuth()).Use(middleware.CasbinHandler()) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/viper.go.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/viper.go.template new file mode 100644 index 000000000..a1887ac28 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/initialize/viper.go.template @@ -0,0 +1,17 @@ +package initialize + +import ( + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/{{ .Package }}/plugin" + "github.com/pkg/errors" + "go.uber.org/zap" +) + +func Viper() { + err := global.GVA_VP.UnmarshalKey("{{ .Package }}", &plugin.Config) + if err != nil { + err = errors.Wrap(err, "初始化配置文件失败!") + zap.L().Error(fmt.Sprintf("%+v", err)) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/model/model.go.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/model/model.go.template new file mode 100644 index 000000000..153ab3ba1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/model/model.go.template @@ -0,0 +1,59 @@ +package model + +{{- if not .OnlyTemplate}} +import ( + {{- if .GvaModel }} + "github.com/flipped-aurora/gin-vue-admin/server/global" + {{- end }} + {{- if or .HasTimer }} + "time" + {{- end }} + {{- if .NeedJSON }} + "gorm.io/datatypes" + {{- end }} +) +{{- end }} + +// {{.StructName}} {{.Description}} 结构体 +type {{.StructName}} struct { +{{- if not .OnlyTemplate}} +{{- if .GvaModel }} + global.GVA_MODEL +{{- end }} +{{- range .Fields}} + {{- if eq .FieldType "enum" }} + {{.FieldName}} string `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};type:enum({{.DataTypeLong}});comment:{{.Comment}};" {{- if .Require }} binding:"required"{{- end -}}` + {{- else if eq .FieldType "picture" }} + {{.FieldName}} string `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};comment:{{.Comment}};{{- if .DataTypeLong -}}size:{{.DataTypeLong}};{{- end -}}" {{- if .Require }} binding:"required"{{- end -}}` + {{- else if eq .FieldType "video" }} + {{.FieldName}} string `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};comment:{{.Comment}};{{- if .DataTypeLong -}}size:{{.DataTypeLong}};{{- end -}}" {{- if .Require }} binding:"required"{{- end -}}` + {{- else if eq .FieldType "file" }} + {{.FieldName}} datatypes.JSON `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};comment:{{.Comment}};{{- if .DataTypeLong -}}size:{{.DataTypeLong}};{{- end -}}" {{- if .Require }} binding:"required"{{- end -}} swaggertype:"array,object"` + {{- else if eq .FieldType "pictures" }} + {{.FieldName}} datatypes.JSON `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};comment:{{.Comment}};{{- if .DataTypeLong -}}size:{{.DataTypeLong}};{{- end -}}" {{- if .Require }} binding:"required"{{- end -}} swaggertype:"array,object"` + {{- else if eq .FieldType "richtext" }} + {{.FieldName}} string `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};comment:{{.Comment}};{{- if .DataTypeLong -}}size:{{.DataTypeLong}};{{- end -}}type:text;" {{- if .Require }} binding:"required"{{- end -}}` + {{- else if eq .FieldType "json" }} + {{.FieldName}} datatypes.JSON `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};comment:{{.Comment}};{{- if .DataTypeLong -}}size:{{.DataTypeLong}};{{- end -}}type:text;" {{- if .Require }} binding:"required"{{- end -}} swaggertype:"object"` + {{- else if eq .FieldType "array" }} + {{.FieldName}} datatypes.JSON `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};comment:{{.Comment}};{{- if .DataTypeLong -}}size:{{.DataTypeLong}};{{- end -}}type:text;" {{- if .Require }} binding:"required"{{- end -}} swaggertype:"array,object"` + {{- else if ne .FieldType "string" }} + {{.FieldName}} *{{.FieldType}} `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};comment:{{.Comment}};{{- if .DataTypeLong -}}size:{{.DataTypeLong}};{{- end -}}" {{- if .Require }} binding:"required"{{- end -}}` + {{- else }} + {{.FieldName}} {{.FieldType}} `json:"{{.FieldJson}}" form:"{{.FieldJson}}" gorm:"{{- if ne .FieldIndexType "" -}}{{ .FieldIndexType }};{{- end -}}{{- if .PrimaryKey -}}primarykey;{{- end -}}{{- if .DefaultValue -}}default:{{ .DefaultValue }};{{- end -}}column:{{.ColumnName}};comment:{{.Comment}};{{- if .DataTypeLong -}}size:{{.DataTypeLong}};{{- end -}}" {{- if .Require }} binding:"required"{{- end -}}` + {{- end }} {{ if .FieldDesc }}//{{.FieldDesc}}{{ end }} +{{- end }} + {{- if .AutoCreateResource }} + CreatedBy uint `gorm:"column:created_by;comment:创建者"` + UpdatedBy uint `gorm:"column:updated_by;comment:更新者"` + DeletedBy uint `gorm:"column:deleted_by;comment:删除者"` + {{- end }} + {{- end }} +} + +{{ if .TableName }} +// TableName {{.Description}} {{.StructName}}自定义表名 {{.TableName}} +func ({{.StructName}}) TableName() string { + return "{{.TableName}}" +} +{{ end }} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/model/request/request.go.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/model/request/request.go.template new file mode 100644 index 000000000..cf2a56944 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/model/request/request.go.template @@ -0,0 +1,37 @@ +package request +{{- if not .OnlyTemplate}} +import ( + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + {{ if or .HasSearchTimer .GvaModel}}"time"{{ end }} +) +{{- end}} +type {{.StructName}}Search struct{ +{{- if not .OnlyTemplate}} + +{{- if .GvaModel }} + StartCreatedAt *time.Time `json:"startCreatedAt" form:"startCreatedAt"` + EndCreatedAt *time.Time `json:"endCreatedAt" form:"endCreatedAt"` +{{- end }} +{{- range .Fields}} + {{- if ne .FieldSearchType ""}} + {{- if eq .FieldSearchType "BETWEEN" "NOT BETWEEN"}} + Start{{.FieldName}} *{{.FieldType}} `json:"start{{.FieldName}}" form:"start{{.FieldName}}"` + End{{.FieldName}} *{{.FieldType}} `json:"end{{.FieldName}}" form:"end{{.FieldName}}"` + {{- else }} + {{- if or (eq .FieldType "enum") (eq .FieldType "picture") (eq .FieldType "pictures") (eq .FieldType "video") (eq .FieldType "richtext") (eq .FieldType "json") }} + {{.FieldName}} string `json:"{{.FieldJson}}" form:"{{.FieldJson}}" ` + {{- else if ne .FieldType "string" }} + {{.FieldName}} *{{.FieldType}} `json:"{{.FieldJson}}" form:"{{.FieldJson}}" ` + {{- else }} + {{.FieldName}} {{.FieldType}} `json:"{{.FieldJson}}" form:"{{.FieldJson}}" ` + {{- end }} + {{- end }} + {{- end}} +{{- end }} + request.PageInfo + {{- if .NeedSort}} + Sort string `json:"sort" form:"sort"` + Order string `json:"order" form:"order"` + {{- end}} +{{- end}} +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/plugin.go.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/plugin.go.template new file mode 100644 index 000000000..42c59f599 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/plugin.go.template @@ -0,0 +1,26 @@ +package {{ .Package }} + +import ( + "context" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/{{ .Package }}/initialize" + interfaces "github.com/flipped-aurora/gin-vue-admin/server/utils/plugin/v2" + "github.com/gin-gonic/gin" +) + +var _ interfaces.Plugin = (*plugin)(nil) + +var Plugin = new(plugin) + +type plugin struct{} + +// 如果需要配置文件,请到config.Config中填充配置结构,且到下方发放中填入其在config.yaml中的key并添加如下方法 +// initialize.Viper() +// 安装插件时候自动注册的api数据请到下方法.Api方法中实现并添加如下方法 +// initialize.Api(ctx) +// 安装插件时候自动注册的api数据请到下方法.Menu方法中实现并添加如下方法 +// initialize.Menu(ctx) +func (p *plugin) Register(group *gin.Engine) { + ctx := context.Background() + initialize.Gorm(ctx) + initialize.Router(group) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/plugin/plugin.go.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/plugin/plugin.go.template new file mode 100644 index 000000000..9129584bb --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/plugin/plugin.go.template @@ -0,0 +1,5 @@ +package plugin + +import "github.com/flipped-aurora/gin-vue-admin/server/plugin/{{ .Package }}/config" + +var Config config.Config diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/router/enter.go.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/router/enter.go.template new file mode 100644 index 000000000..78517b371 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/router/enter.go.template @@ -0,0 +1,6 @@ +package router + +var Router = new(router) + +type router struct { +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/router/router.go.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/router/router.go.template new file mode 100644 index 000000000..cc5cd2677 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/router/router.go.template @@ -0,0 +1,46 @@ +package router + +import ( + {{if .OnlyTemplate }} // {{end}}"github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/gin-gonic/gin" +) + +var {{.StructName}} = new({{.Abbreviation}}) + +type {{.Abbreviation}} struct {} + +// Init 初始化 {{.Description}} 路由信息 +func (r *{{.Abbreviation}}) Init(public *gin.RouterGroup, private *gin.RouterGroup) { +{{- if not .OnlyTemplate }} + { + group := private.Group("{{.Abbreviation}}").Use(middleware.OperationRecord()) + group.POST("create{{.StructName}}", api{{.StructName}}.Create{{.StructName}}) // 新建{{.Description}} + group.DELETE("delete{{.StructName}}", api{{.StructName}}.Delete{{.StructName}}) // 删除{{.Description}} + group.DELETE("delete{{.StructName}}ByIds", api{{.StructName}}.Delete{{.StructName}}ByIds) // 批量删除{{.Description}} + group.PUT("update{{.StructName}}", api{{.StructName}}.Update{{.StructName}}) // 更新{{.Description}} + } + { + group := private.Group("{{.Abbreviation}}") + group.GET("find{{.StructName}}", api{{.StructName}}.Find{{.StructName}}) // 根据ID获取{{.Description}} + group.GET("get{{.StructName}}List", api{{.StructName}}.Get{{.StructName}}List) // 获取{{.Description}}列表 + } + { + group := public.Group("{{.Abbreviation}}") + {{- if .HasDataSource}} + group.GET("get{{.StructName}}DataSource", api{{.StructName}}.Get{{.StructName}}DataSource) // 获取{{.Description}}数据源 + {{- end}} + group.GET("get{{.StructName}}Public", api{{.StructName}}.Get{{.StructName}}Public) // {{.Description}}开放接口 + } +{{- else}} + // { + // group := private.Group("{{.Abbreviation}}").Use(middleware.OperationRecord()) + // } + // { + // group := private.Group("{{.Abbreviation}}") + // } + { + group := public.Group("{{.Abbreviation}}") + group.GET("get{{.StructName}}Public", api{{.StructName}}.Get{{.StructName}}Public) // {{.Description}}开放接口 + } +{{- end}} +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/service/enter.go.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/service/enter.go.template new file mode 100644 index 000000000..034facbaf --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/service/enter.go.template @@ -0,0 +1,7 @@ +package service + +var Service = new(service) + +type service struct { +} + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/service/service.go.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/service/service.go.template new file mode 100644 index 000000000..e62426d44 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/server/service/service.go.template @@ -0,0 +1,168 @@ +package service + +import ( +{{- if not .OnlyTemplate }} + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/{{.Package}}/model" + "github.com/flipped-aurora/gin-vue-admin/server/plugin/{{.Package}}/model/request" + {{- if .AutoCreateResource }} + "gorm.io/gorm" + {{- end}} +{{- end }} +) + +var {{.StructName}} = new({{.Abbreviation}}) + +type {{.Abbreviation}} struct {} + +{{- $db := "" }} +{{- if eq .BusinessDB "" }} + {{- $db = "global.GVA_DB" }} +{{- else}} + {{- $db = printf "global.MustGetGlobalDBByDBName(\"%s\")" .BusinessDB }} +{{- end}} +{{- if not .OnlyTemplate }} +// Create{{.StructName}} 创建{{.Description}}记录 +// Author [yourname](https://github.com/yourname) +func (s *{{.Abbreviation}}) Create{{.StructName}}({{.Abbreviation}} *model.{{.StructName}}) (err error) { + err = {{$db}}.Create({{.Abbreviation}}).Error + return err +} + +// Delete{{.StructName}} 删除{{.Description}}记录 +// Author [yourname](https://github.com/yourname) +func (s *{{.Abbreviation}}) Delete{{.StructName}}({{.PrimaryField.FieldJson}} string{{- if .AutoCreateResource -}},userID uint{{- end -}}) (err error) { + {{- if .AutoCreateResource }} + err = {{$db}}.Transaction(func(tx *gorm.DB) error { + if err := tx.Model(&model.{{.StructName}}{}).Where("{{.PrimaryField.ColumnName}} = ?", {{.PrimaryField.FieldJson}}).Update("deleted_by", userID).Error; err != nil { + return err + } + if err = tx.Delete(&model.{{.StructName}}{},"{{.PrimaryField.ColumnName}} = ?",{{.PrimaryField.FieldJson}}).Error; err != nil { + return err + } + return nil + }) + {{- else }} + err = {{$db}}.Delete(&model.{{.StructName}}{},"{{.PrimaryField.ColumnName}} = ?",{{.PrimaryField.FieldJson}}).Error + {{- end }} + return err +} + +// Delete{{.StructName}}ByIds 批量删除{{.Description}}记录 +// Author [yourname](https://github.com/yourname) +func (s *{{.Abbreviation}}) Delete{{.StructName}}ByIds({{.PrimaryField.FieldJson}}s []string {{- if .AutoCreateResource }},deleted_by uint{{- end}}) (err error) { + {{- if .AutoCreateResource }} + err = {{$db}}.Transaction(func(tx *gorm.DB) error { + if err := tx.Model(&model.{{.StructName}}{}).Where("{{.PrimaryField.ColumnName}} in ?", {{.PrimaryField.FieldJson}}s).Update("deleted_by", deleted_by).Error; err != nil { + return err + } + if err := tx.Where("{{.PrimaryField.ColumnName}} in ?", {{.PrimaryField.FieldJson}}s).Delete(&model.{{.StructName}}{}).Error; err != nil { + return err + } + return nil + }) + {{- else}} + err = {{$db}}.Delete(&[]model.{{.StructName}}{},"{{.PrimaryField.ColumnName}} in ?",{{.PrimaryField.FieldJson}}s).Error + {{- end}} + return err +} + +// Update{{.StructName}} 更新{{.Description}}记录 +// Author [yourname](https://github.com/yourname) +func (s *{{.Abbreviation}}) Update{{.StructName}}({{.Abbreviation}} model.{{.StructName}}) (err error) { + err = {{$db}}.Model(&model.{{.StructName}}{}).Where("{{.PrimaryField.ColumnName}} = ?",{{.Abbreviation}}.{{.PrimaryField.FieldName}}).Updates(&{{.Abbreviation}}).Error + return err +} + +// Get{{.StructName}} 根据{{.PrimaryField.FieldJson}}获取{{.Description}}记录 +// Author [yourname](https://github.com/yourname) +func (s *{{.Abbreviation}}) Get{{.StructName}}({{.PrimaryField.FieldJson}} string) ({{.Abbreviation}} model.{{.StructName}}, err error) { + err = {{$db}}.Where("{{.PrimaryField.ColumnName}} = ?", {{.PrimaryField.FieldJson}}).First(&{{.Abbreviation}}).Error + return +} + +// Get{{.StructName}}InfoList 分页获取{{.Description}}记录 +// Author [yourname](https://github.com/yourname) +func (s *{{.Abbreviation}}) Get{{.StructName}}InfoList(info request.{{.StructName}}Search) (list []model.{{.StructName}}, total int64, err error) { + limit := info.PageSize + offset := info.PageSize * (info.Page - 1) + // 创建db + db := {{$db}}.Model(&model.{{.StructName}}{}) + var {{.Abbreviation}}s []model.{{.StructName}} + // 如果有条件搜索 下方会自动创建搜索语句 +{{- if .GvaModel }} + if info.StartCreatedAt !=nil && info.EndCreatedAt !=nil { + db = db.Where("created_at BETWEEN ? AND ?", info.StartCreatedAt, info.EndCreatedAt) + } +{{- end }} + {{- range .Fields}} + {{- if .FieldSearchType}} + {{- if or (eq .FieldType "string") (eq .FieldType "enum") (eq .FieldType "pictures") (eq .FieldType "picture") (eq .FieldType "video") (eq .FieldType "richtext") (eq .FieldType "json") }} + if info.{{.FieldName}} != "" { + {{- if or (eq .FieldType "enum") (eq .FieldType "string") }} + db = db.Where("{{.ColumnName}} {{.FieldSearchType}} ?",{{if eq .FieldSearchType "LIKE"}}"%"+ {{ end }}info.{{.FieldName}}{{if eq .FieldSearchType "LIKE"}}+"%"{{ end }}) + {{- else}} + // 数据类型为复杂类型,请根据业务需求自行实现复杂类型的查询业务 + {{- end}} + } + {{- else if eq .FieldSearchType "BETWEEN" "NOT BETWEEN"}} + if info.Start{{.FieldName}} != nil && info.End{{.FieldName}} != nil { + db = db.Where("{{.ColumnName}} {{.FieldSearchType}} ? AND ? ",info.Start{{.FieldName}},info.End{{.FieldName}}) + } + {{- else}} + if info.{{.FieldName}} != nil { + db = db.Where("{{.ColumnName}} {{.FieldSearchType}} ?",{{if eq .FieldSearchType "LIKE"}}"%"+{{ end }}info.{{.FieldName}}{{if eq .FieldSearchType "LIKE"}}+"%"{{ end }}) + } + {{- end }} + {{- end }} + {{- end }} + err = db.Count(&total).Error + if err!=nil { + return + } + {{- if .NeedSort}} + var OrderStr string + orderMap := make(map[string]bool) + {{- range .Fields}} + {{- if .Sort}} + orderMap["{{.ColumnName}}"] = true + {{- end}} + {{- end}} + if orderMap[info.Sort] { + OrderStr = info.Sort + if info.Order == "descending" { + OrderStr = OrderStr + " desc" + } + db = db.Order(OrderStr) + } + {{- end}} + + if limit != 0 { + db = db.Limit(limit).Offset(offset) + } + err = db.Find(&{{.Abbreviation}}s).Error + return {{.Abbreviation}}s, total, err +} + +{{- if .HasDataSource }} +func (s *{{.Abbreviation}})Get{{.StructName}}DataSource() (res map[string][]map[string]any, err error) { + res = make(map[string][]map[string]any) + {{range $key, $value := .DataSourceMap}} + {{$key}} := make([]map[string]any, 0) + {{ $dataDB := "" }} + {{- if eq $value.DBName "" }} + {{ $dataDB = $db }} + {{- else}} + {{ $dataDB = printf "global.MustGetGlobalDBByDBName(\"%s\")" $value.DBName }} + {{- end}} + {{$dataDB}}.Table("{{$value.Table}}").Select("{{$value.Label}} as label,{{$value.Value}} as value").Scan(&{{$key}}) + res["{{$key}}"] = {{$key}} + {{- end }} + return +} +{{- end }} +{{- end }} + +func (s *{{.Abbreviation}})Get{{.StructName}}Public() { + +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/web/api/api.js.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/web/api/api.js.template new file mode 100644 index 000000000..208f386e4 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/web/api/api.js.template @@ -0,0 +1,127 @@ +import service from '@/utils/request' +{{- if not .OnlyTemplate}} +// @Tags {{.StructName}} +// @Summary 创建{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.{{.StructName}} true "创建{{.Description}}" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}" +// @Router /{{.Abbreviation}}/create{{.StructName}} [post] +export const create{{.StructName}} = (data) => { + return service({ + url: '/{{.Abbreviation}}/create{{.StructName}}', + method: 'post', + data + }) +} + +// @Tags {{.StructName}} +// @Summary 删除{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.{{.StructName}} true "删除{{.Description}}" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /{{.Abbreviation}}/delete{{.StructName}} [delete] +export const delete{{.StructName}} = (params) => { + return service({ + url: '/{{.Abbreviation}}/delete{{.StructName}}', + method: 'delete', + params + }) +} + +// @Tags {{.StructName}} +// @Summary 批量删除{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.IdsReq true "批量删除{{.Description}}" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /{{.Abbreviation}}/delete{{.StructName}} [delete] +export const delete{{.StructName}}ByIds = (params) => { + return service({ + url: '/{{.Abbreviation}}/delete{{.StructName}}ByIds', + method: 'delete', + params + }) +} + +// @Tags {{.StructName}} +// @Summary 更新{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.{{.StructName}} true "更新{{.Description}}" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}" +// @Router /{{.Abbreviation}}/update{{.StructName}} [put] +export const update{{.StructName}} = (data) => { + return service({ + url: '/{{.Abbreviation}}/update{{.StructName}}', + method: 'put', + data + }) +} + +// @Tags {{.StructName}} +// @Summary 用id查询{{.Description}} +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query model.{{.StructName}} true "用id查询{{.Description}}" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" +// @Router /{{.Abbreviation}}/find{{.StructName}} [get] +export const find{{.StructName}} = (params) => { + return service({ + url: '/{{.Abbreviation}}/find{{.StructName}}', + method: 'get', + params + }) +} + +// @Tags {{.StructName}} +// @Summary 分页获取{{.Description}}列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query request.PageInfo true "分页获取{{.Description}}列表" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /{{.Abbreviation}}/get{{.StructName}}List [get] +export const get{{.StructName}}List = (params) => { + return service({ + url: '/{{.Abbreviation}}/get{{.StructName}}List', + method: 'get', + params + }) +} + +{{- if .HasDataSource}} +// @Tags {{.StructName}} +// @Summary 获取数据源 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" +// @Router /{{.Abbreviation}}/find{{.StructName}}DataSource [get] +export const get{{.StructName}}DataSource = () => { + return service({ + url: '/{{.Abbreviation}}/get{{.StructName}}DataSource', + method: 'get', + }) +} +{{- end}} +{{- end}} +// @Tags {{.StructName}} +// @Summary 不需要鉴权的{{.Description}}接口 +// @accept application/json +// @Produce application/json +// @Param data query request.{{.StructName}}Search true "分页获取{{.Description}}列表" +// @Success 200 {object} response.Response{data=object,msg=string} "获取成功" +// @Router /{{.Abbreviation}}/get{{.StructName}}Public [get] +export const get{{.StructName}}Public = () => { + return service({ + url: '/{{.Abbreviation}}/get{{.StructName}}Public', + method: 'get', + }) +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/web/form/form.vue.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/web/form/form.vue.template new file mode 100644 index 000000000..882501e78 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/web/form/form.vue.template @@ -0,0 +1,251 @@ +{{- if not .OnlyTemplate}} + + + + + +{{- else }} + + + +{{- end }} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/web/view/view.vue.template b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/web/view/view.vue.template new file mode 100644 index 000000000..05a5fb924 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/resource/plugin/web/view/view.vue.template @@ -0,0 +1,915 @@ +{{- $global := . }} +{{- $templateID := printf "%s_%s" .Package .StructName }} +{{- if not .OnlyTemplate}} + + + + + +{{- else}} + + + +{{- end}} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/enter.go new file mode 100644 index 000000000..6e6d81166 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/enter.go @@ -0,0 +1,13 @@ +package router + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/router/example" + "github.com/flipped-aurora/gin-vue-admin/server/router/system" +) + +var RouterGroupApp = new(RouterGroup) + +type RouterGroup struct { + System system.RouterGroup + Example example.RouterGroup +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/example/enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/example/enter.go new file mode 100644 index 000000000..ce87aa2f9 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/example/enter.go @@ -0,0 +1,15 @@ +package example + +import ( + api "github.com/flipped-aurora/gin-vue-admin/server/api/v1" +) + +type RouterGroup struct { + CustomerRouter + FileUploadAndDownloadRouter +} + +var ( + exaCustomerApi = api.ApiGroupApp.ExampleApiGroup.CustomerApi + exaFileUploadAndDownloadApi = api.ApiGroupApp.ExampleApiGroup.FileUploadAndDownloadApi +) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/example/exa_customer.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/example/exa_customer.go new file mode 100644 index 000000000..acdf3c7e5 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/example/exa_customer.go @@ -0,0 +1,22 @@ +package example + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/gin-gonic/gin" +) + +type CustomerRouter struct{} + +func (e *CustomerRouter) InitCustomerRouter(Router *gin.RouterGroup) { + customerRouter := Router.Group("customer").Use(middleware.OperationRecord()) + customerRouterWithoutRecord := Router.Group("customer") + { + customerRouter.POST("customer", exaCustomerApi.CreateExaCustomer) // 创建客户 + customerRouter.PUT("customer", exaCustomerApi.UpdateExaCustomer) // 更新客户 + customerRouter.DELETE("customer", exaCustomerApi.DeleteExaCustomer) // 删除客户 + } + { + customerRouterWithoutRecord.GET("customer", exaCustomerApi.GetExaCustomer) // 获取单一客户信息 + customerRouterWithoutRecord.GET("customerList", exaCustomerApi.GetExaCustomerList) // 获取客户列表 + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/example/exa_file_upload_and_download.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/example/exa_file_upload_and_download.go new file mode 100644 index 000000000..84f6ecdb0 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/example/exa_file_upload_and_download.go @@ -0,0 +1,22 @@ +package example + +import ( + "github.com/gin-gonic/gin" +) + +type FileUploadAndDownloadRouter struct{} + +func (e *FileUploadAndDownloadRouter) InitFileUploadAndDownloadRouter(Router *gin.RouterGroup) { + fileUploadAndDownloadRouter := Router.Group("fileUploadAndDownload") + { + fileUploadAndDownloadRouter.POST("upload", exaFileUploadAndDownloadApi.UploadFile) // 上传文件 + fileUploadAndDownloadRouter.POST("getFileList", exaFileUploadAndDownloadApi.GetFileList) // 获取上传文件列表 + fileUploadAndDownloadRouter.POST("deleteFile", exaFileUploadAndDownloadApi.DeleteFile) // 删除指定文件 + fileUploadAndDownloadRouter.POST("editFileName", exaFileUploadAndDownloadApi.EditFileName) // 编辑文件名或者备注 + fileUploadAndDownloadRouter.POST("breakpointContinue", exaFileUploadAndDownloadApi.BreakpointContinue) // 断点续传 + fileUploadAndDownloadRouter.GET("findFile", exaFileUploadAndDownloadApi.FindFile) // 查询当前文件成功的切片 + fileUploadAndDownloadRouter.POST("breakpointContinueFinish", exaFileUploadAndDownloadApi.BreakpointContinueFinish) // 切片传输完成 + fileUploadAndDownloadRouter.POST("removeChunk", exaFileUploadAndDownloadApi.RemoveChunk) // 删除切片 + fileUploadAndDownloadRouter.POST("importURL", exaFileUploadAndDownloadApi.ImportURL) // 导入URL + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/enter.go new file mode 100644 index 000000000..7127d9e9f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/enter.go @@ -0,0 +1,44 @@ +package system + +import api "github.com/flipped-aurora/gin-vue-admin/server/api/v1" + +type RouterGroup struct { + ApiRouter + JwtRouter + SysRouter + BaseRouter + InitRouter + MenuRouter + UserRouter + CasbinRouter + AutoCodeRouter + AuthorityRouter + DictionaryRouter + OperationRecordRouter + DictionaryDetailRouter + AuthorityBtnRouter + SysExportTemplateRouter + SysParamsRouter +} + +var ( + dbApi = api.ApiGroupApp.SystemApiGroup.DBApi + jwtApi = api.ApiGroupApp.SystemApiGroup.JwtApi + baseApi = api.ApiGroupApp.SystemApiGroup.BaseApi + casbinApi = api.ApiGroupApp.SystemApiGroup.CasbinApi + systemApi = api.ApiGroupApp.SystemApiGroup.SystemApi + sysParamsApi = api.ApiGroupApp.SystemApiGroup.SysParamsApi + autoCodeApi = api.ApiGroupApp.SystemApiGroup.AutoCodeApi + authorityApi = api.ApiGroupApp.SystemApiGroup.AuthorityApi + apiRouterApi = api.ApiGroupApp.SystemApiGroup.SystemApiApi + dictionaryApi = api.ApiGroupApp.SystemApiGroup.DictionaryApi + authorityBtnApi = api.ApiGroupApp.SystemApiGroup.AuthorityBtnApi + authorityMenuApi = api.ApiGroupApp.SystemApiGroup.AuthorityMenuApi + autoCodePluginApi = api.ApiGroupApp.SystemApiGroup.AutoCodePluginApi + autocodeHistoryApi = api.ApiGroupApp.SystemApiGroup.AutoCodeHistoryApi + operationRecordApi = api.ApiGroupApp.SystemApiGroup.OperationRecordApi + autoCodePackageApi = api.ApiGroupApp.SystemApiGroup.AutoCodePackageApi + dictionaryDetailApi = api.ApiGroupApp.SystemApiGroup.DictionaryDetailApi + autoCodeTemplateApi = api.ApiGroupApp.SystemApiGroup.AutoCodeTemplateApi + exportTemplateApi = api.ApiGroupApp.SystemApiGroup.SysExportTemplateApi +) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_api.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_api.go new file mode 100644 index 000000000..c98785e94 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_api.go @@ -0,0 +1,33 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/gin-gonic/gin" +) + +type ApiRouter struct{} + +func (s *ApiRouter) InitApiRouter(Router *gin.RouterGroup, RouterPub *gin.RouterGroup) { + apiRouter := Router.Group("api").Use(middleware.OperationRecord()) + apiRouterWithoutRecord := Router.Group("api") + + apiPublicRouterWithoutRecord := RouterPub.Group("api") + { + apiRouter.GET("getApiGroups", apiRouterApi.GetApiGroups) // 获取路由组 + apiRouter.GET("syncApi", apiRouterApi.SyncApi) // 同步Api + apiRouter.POST("ignoreApi", apiRouterApi.IgnoreApi) // 忽略Api + apiRouter.POST("enterSyncApi", apiRouterApi.EnterSyncApi) // 确认同步Api + apiRouter.POST("createApi", apiRouterApi.CreateApi) // 创建Api + apiRouter.POST("deleteApi", apiRouterApi.DeleteApi) // 删除Api + apiRouter.POST("getApiById", apiRouterApi.GetApiById) // 获取单条Api消息 + apiRouter.POST("updateApi", apiRouterApi.UpdateApi) // 更新api + apiRouter.DELETE("deleteApisByIds", apiRouterApi.DeleteApisByIds) // 删除选中api + } + { + apiRouterWithoutRecord.POST("getAllApis", apiRouterApi.GetAllApis) // 获取所有api + apiRouterWithoutRecord.POST("getApiList", apiRouterApi.GetApiList) // 获取Api列表 + } + { + apiPublicRouterWithoutRecord.GET("freshCasbin", apiRouterApi.FreshCasbin) // 刷新casbin权限 + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_authority.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_authority.go new file mode 100644 index 000000000..9bef92ff1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_authority.go @@ -0,0 +1,23 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/gin-gonic/gin" +) + +type AuthorityRouter struct{} + +func (s *AuthorityRouter) InitAuthorityRouter(Router *gin.RouterGroup) { + authorityRouter := Router.Group("authority").Use(middleware.OperationRecord()) + authorityRouterWithoutRecord := Router.Group("authority") + { + authorityRouter.POST("createAuthority", authorityApi.CreateAuthority) // 创建角色 + authorityRouter.POST("deleteAuthority", authorityApi.DeleteAuthority) // 删除角色 + authorityRouter.PUT("updateAuthority", authorityApi.UpdateAuthority) // 更新角色 + authorityRouter.POST("copyAuthority", authorityApi.CopyAuthority) // 拷贝角色 + authorityRouter.POST("setDataAuthority", authorityApi.SetDataAuthority) // 设置角色资源权限 + } + { + authorityRouterWithoutRecord.POST("getAuthorityList", authorityApi.GetAuthorityList) // 获取角色列表 + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_authority_btn.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_authority_btn.go new file mode 100644 index 000000000..370db85f8 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_authority_btn.go @@ -0,0 +1,19 @@ +package system + +import ( + "github.com/gin-gonic/gin" +) + +type AuthorityBtnRouter struct{} + +var AuthorityBtnRouterApp = new(AuthorityBtnRouter) + +func (s *AuthorityBtnRouter) InitAuthorityBtnRouterRouter(Router *gin.RouterGroup) { + // authorityRouter := Router.Group("authorityBtn").Use(middleware.OperationRecord()) + authorityRouterWithoutRecord := Router.Group("authorityBtn") + { + authorityRouterWithoutRecord.POST("getAuthorityBtn", authorityBtnApi.GetAuthorityBtn) + authorityRouterWithoutRecord.POST("setAuthorityBtn", authorityBtnApi.SetAuthorityBtn) + authorityRouterWithoutRecord.POST("canRemoveAuthorityBtn", authorityBtnApi.CanRemoveAuthorityBtn) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_auto_code.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_auto_code.go new file mode 100644 index 000000000..e25e1cef8 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_auto_code.go @@ -0,0 +1,40 @@ +package system + +import ( + "github.com/gin-gonic/gin" +) + +type AutoCodeRouter struct{} + +func (s *AutoCodeRouter) InitAutoCodeRouter(Router *gin.RouterGroup, RouterPublic *gin.RouterGroup) { + autoCodeRouter := Router.Group("autoCode") + publicAutoCodeRouter := RouterPublic.Group("autoCode") + { + autoCodeRouter.GET("getDB", autoCodeApi.GetDB) // 获取数据库 + autoCodeRouter.GET("getTables", autoCodeApi.GetTables) // 获取对应数据库的表 + autoCodeRouter.GET("getColumn", autoCodeApi.GetColumn) // 获取指定表所有字段信息 + } + { + autoCodeRouter.POST("preview", autoCodeTemplateApi.Preview) // 获取自动创建代码预览 + autoCodeRouter.POST("createTemp", autoCodeTemplateApi.Create) // 创建自动化代码 + autoCodeRouter.POST("addFunc", autoCodeTemplateApi.AddFunc) // 为代码插入方法 + } + { + autoCodeRouter.POST("getPackage", autoCodePackageApi.All) // 获取package包 + autoCodeRouter.POST("delPackage", autoCodePackageApi.Delete) // 删除package包 + autoCodeRouter.POST("createPackage", autoCodePackageApi.Create) // 创建package包 + } + { + autoCodeRouter.GET("getTemplates", autoCodePackageApi.Templates) // 创建package包 + } + { + autoCodeRouter.POST("pubPlug", autoCodePluginApi.Packaged) // 打包插件 + autoCodeRouter.POST("installPlugin", autoCodePluginApi.Install) // 自动安装插件 + + } + { + publicAutoCodeRouter.POST("llmAuto", autoCodeApi.LLMAuto) + publicAutoCodeRouter.POST("initMenu", autoCodePluginApi.InitMenu) // 同步插件菜单 + publicAutoCodeRouter.POST("initAPI", autoCodePluginApi.InitAPI) // 同步插件API + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_auto_code_history.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_auto_code_history.go new file mode 100644 index 000000000..42a2bef86 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_auto_code_history.go @@ -0,0 +1,17 @@ +package system + +import ( + "github.com/gin-gonic/gin" +) + +type AutoCodeHistoryRouter struct{} + +func (s *AutoCodeRouter) InitAutoCodeHistoryRouter(Router *gin.RouterGroup) { + autoCodeHistoryRouter := Router.Group("autoCode") + { + autoCodeHistoryRouter.POST("getMeta", autocodeHistoryApi.First) // 根据id获取meta信息 + autoCodeHistoryRouter.POST("rollback", autocodeHistoryApi.RollBack) // 回滚 + autoCodeHistoryRouter.POST("delSysHistory", autocodeHistoryApi.Delete) // 删除回滚记录 + autoCodeHistoryRouter.POST("getSysHistory", autocodeHistoryApi.GetList) // 获取回滚记录分页 + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_base.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_base.go new file mode 100644 index 000000000..7d959bbc9 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_base.go @@ -0,0 +1,16 @@ +package system + +import ( + "github.com/gin-gonic/gin" +) + +type BaseRouter struct{} + +func (s *BaseRouter) InitBaseRouter(Router *gin.RouterGroup) (R gin.IRoutes) { + baseRouter := Router.Group("base") + { + baseRouter.POST("login", baseApi.Login) + baseRouter.POST("captcha", baseApi.Captcha) + } + return baseRouter +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_casbin.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_casbin.go new file mode 100644 index 000000000..e4a3eb12c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_casbin.go @@ -0,0 +1,19 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/gin-gonic/gin" +) + +type CasbinRouter struct{} + +func (s *CasbinRouter) InitCasbinRouter(Router *gin.RouterGroup) { + casbinRouter := Router.Group("casbin").Use(middleware.OperationRecord()) + casbinRouterWithoutRecord := Router.Group("casbin") + { + casbinRouter.POST("updateCasbin", casbinApi.UpdateCasbin) + } + { + casbinRouterWithoutRecord.POST("getPolicyPathByAuthorityId", casbinApi.GetPolicyPathByAuthorityId) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_dictionary.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_dictionary.go new file mode 100644 index 000000000..41ce85ec9 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_dictionary.go @@ -0,0 +1,22 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/gin-gonic/gin" +) + +type DictionaryRouter struct{} + +func (s *DictionaryRouter) InitSysDictionaryRouter(Router *gin.RouterGroup) { + sysDictionaryRouter := Router.Group("sysDictionary").Use(middleware.OperationRecord()) + sysDictionaryRouterWithoutRecord := Router.Group("sysDictionary") + { + sysDictionaryRouter.POST("createSysDictionary", dictionaryApi.CreateSysDictionary) // 新建SysDictionary + sysDictionaryRouter.DELETE("deleteSysDictionary", dictionaryApi.DeleteSysDictionary) // 删除SysDictionary + sysDictionaryRouter.PUT("updateSysDictionary", dictionaryApi.UpdateSysDictionary) // 更新SysDictionary + } + { + sysDictionaryRouterWithoutRecord.GET("findSysDictionary", dictionaryApi.FindSysDictionary) // 根据ID获取SysDictionary + sysDictionaryRouterWithoutRecord.GET("getSysDictionaryList", dictionaryApi.GetSysDictionaryList) // 获取SysDictionary列表 + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_dictionary_detail.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_dictionary_detail.go new file mode 100644 index 000000000..cde6bdcb6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_dictionary_detail.go @@ -0,0 +1,22 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/gin-gonic/gin" +) + +type DictionaryDetailRouter struct{} + +func (s *DictionaryDetailRouter) InitSysDictionaryDetailRouter(Router *gin.RouterGroup) { + dictionaryDetailRouter := Router.Group("sysDictionaryDetail").Use(middleware.OperationRecord()) + dictionaryDetailRouterWithoutRecord := Router.Group("sysDictionaryDetail") + { + dictionaryDetailRouter.POST("createSysDictionaryDetail", dictionaryDetailApi.CreateSysDictionaryDetail) // 新建SysDictionaryDetail + dictionaryDetailRouter.DELETE("deleteSysDictionaryDetail", dictionaryDetailApi.DeleteSysDictionaryDetail) // 删除SysDictionaryDetail + dictionaryDetailRouter.PUT("updateSysDictionaryDetail", dictionaryDetailApi.UpdateSysDictionaryDetail) // 更新SysDictionaryDetail + } + { + dictionaryDetailRouterWithoutRecord.GET("findSysDictionaryDetail", dictionaryDetailApi.FindSysDictionaryDetail) // 根据ID获取SysDictionaryDetail + dictionaryDetailRouterWithoutRecord.GET("getSysDictionaryDetailList", dictionaryDetailApi.GetSysDictionaryDetailList) // 获取SysDictionaryDetail列表 + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_export_template.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_export_template.go new file mode 100644 index 000000000..3e92a90c1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_export_template.go @@ -0,0 +1,28 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/gin-gonic/gin" +) + +type SysExportTemplateRouter struct { +} + +// InitSysExportTemplateRouter 初始化 导出模板 路由信息 +func (s *SysExportTemplateRouter) InitSysExportTemplateRouter(Router *gin.RouterGroup) { + sysExportTemplateRouter := Router.Group("sysExportTemplate").Use(middleware.OperationRecord()) + sysExportTemplateRouterWithoutRecord := Router.Group("sysExportTemplate") + { + sysExportTemplateRouter.POST("createSysExportTemplate", exportTemplateApi.CreateSysExportTemplate) // 新建导出模板 + sysExportTemplateRouter.DELETE("deleteSysExportTemplate", exportTemplateApi.DeleteSysExportTemplate) // 删除导出模板 + sysExportTemplateRouter.DELETE("deleteSysExportTemplateByIds", exportTemplateApi.DeleteSysExportTemplateByIds) // 批量删除导出模板 + sysExportTemplateRouter.PUT("updateSysExportTemplate", exportTemplateApi.UpdateSysExportTemplate) // 更新导出模板 + sysExportTemplateRouter.POST("importExcel", exportTemplateApi.ImportExcel) // 更新导出模板 + } + { + sysExportTemplateRouterWithoutRecord.GET("findSysExportTemplate", exportTemplateApi.FindSysExportTemplate) // 根据ID获取导出模板 + sysExportTemplateRouterWithoutRecord.GET("getSysExportTemplateList", exportTemplateApi.GetSysExportTemplateList) // 获取导出模板列表 + sysExportTemplateRouterWithoutRecord.GET("exportExcel", exportTemplateApi.ExportExcel) // 导出表格 + sysExportTemplateRouterWithoutRecord.GET("exportTemplate", exportTemplateApi.ExportTemplate) // 导出表格模板 + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_initdb.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_initdb.go new file mode 100644 index 000000000..3a6de5035 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_initdb.go @@ -0,0 +1,15 @@ +package system + +import ( + "github.com/gin-gonic/gin" +) + +type InitRouter struct{} + +func (s *InitRouter) InitInitRouter(Router *gin.RouterGroup) { + initRouter := Router.Group("init") + { + initRouter.POST("initdb", dbApi.InitDB) // 初始化数据库 + initRouter.POST("checkdb", dbApi.CheckDB) // 检测是否需要初始化数据库 + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_jwt.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_jwt.go new file mode 100644 index 000000000..471603158 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_jwt.go @@ -0,0 +1,14 @@ +package system + +import ( + "github.com/gin-gonic/gin" +) + +type JwtRouter struct{} + +func (s *JwtRouter) InitJwtRouter(Router *gin.RouterGroup) { + jwtRouter := Router.Group("jwt") + { + jwtRouter.POST("jsonInBlacklist", jwtApi.JsonInBlacklist) // jwt加入黑名单 + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_menu.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_menu.go new file mode 100644 index 000000000..09584f4f7 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_menu.go @@ -0,0 +1,27 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/gin-gonic/gin" +) + +type MenuRouter struct{} + +func (s *MenuRouter) InitMenuRouter(Router *gin.RouterGroup) (R gin.IRoutes) { + menuRouter := Router.Group("menu").Use(middleware.OperationRecord()) + menuRouterWithoutRecord := Router.Group("menu") + { + menuRouter.POST("addBaseMenu", authorityMenuApi.AddBaseMenu) // 新增菜单 + menuRouter.POST("addMenuAuthority", authorityMenuApi.AddMenuAuthority) // 增加menu和角色关联关系 + menuRouter.POST("deleteBaseMenu", authorityMenuApi.DeleteBaseMenu) // 删除菜单 + menuRouter.POST("updateBaseMenu", authorityMenuApi.UpdateBaseMenu) // 更新菜单 + } + { + menuRouterWithoutRecord.POST("getMenu", authorityMenuApi.GetMenu) // 获取菜单树 + menuRouterWithoutRecord.POST("getMenuList", authorityMenuApi.GetMenuList) // 分页获取基础menu列表 + menuRouterWithoutRecord.POST("getBaseMenuTree", authorityMenuApi.GetBaseMenuTree) // 获取用户动态路由 + menuRouterWithoutRecord.POST("getMenuAuthority", authorityMenuApi.GetMenuAuthority) // 获取指定角色menu + menuRouterWithoutRecord.POST("getBaseMenuById", authorityMenuApi.GetBaseMenuById) // 根据id获取菜单 + } + return menuRouter +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_operation_record.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_operation_record.go new file mode 100644 index 000000000..11b841db7 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_operation_record.go @@ -0,0 +1,19 @@ +package system + +import ( + "github.com/gin-gonic/gin" +) + +type OperationRecordRouter struct{} + +func (s *OperationRecordRouter) InitSysOperationRecordRouter(Router *gin.RouterGroup) { + operationRecordRouter := Router.Group("sysOperationRecord") + { + operationRecordRouter.POST("createSysOperationRecord", operationRecordApi.CreateSysOperationRecord) // 新建SysOperationRecord + operationRecordRouter.DELETE("deleteSysOperationRecord", operationRecordApi.DeleteSysOperationRecord) // 删除SysOperationRecord + operationRecordRouter.DELETE("deleteSysOperationRecordByIds", operationRecordApi.DeleteSysOperationRecordByIds) // 批量删除SysOperationRecord + operationRecordRouter.GET("findSysOperationRecord", operationRecordApi.FindSysOperationRecord) // 根据ID获取SysOperationRecord + operationRecordRouter.GET("getSysOperationRecordList", operationRecordApi.GetSysOperationRecordList) // 获取SysOperationRecord列表 + + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_params.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_params.go new file mode 100644 index 000000000..50dd2364e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_params.go @@ -0,0 +1,25 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/gin-gonic/gin" +) + +type SysParamsRouter struct{} + +// InitSysParamsRouter 初始化 参数 路由信息 +func (s *SysParamsRouter) InitSysParamsRouter(Router *gin.RouterGroup, PublicRouter *gin.RouterGroup) { + sysParamsRouter := Router.Group("sysParams").Use(middleware.OperationRecord()) + sysParamsRouterWithoutRecord := Router.Group("sysParams") + { + sysParamsRouter.POST("createSysParams", sysParamsApi.CreateSysParams) // 新建参数 + sysParamsRouter.DELETE("deleteSysParams", sysParamsApi.DeleteSysParams) // 删除参数 + sysParamsRouter.DELETE("deleteSysParamsByIds", sysParamsApi.DeleteSysParamsByIds) // 批量删除参数 + sysParamsRouter.PUT("updateSysParams", sysParamsApi.UpdateSysParams) // 更新参数 + } + { + sysParamsRouterWithoutRecord.GET("findSysParams", sysParamsApi.FindSysParams) // 根据ID获取参数 + sysParamsRouterWithoutRecord.GET("getSysParamsList", sysParamsApi.GetSysParamsList) // 获取参数列表 + sysParamsRouterWithoutRecord.GET("getSysParam", sysParamsApi.GetSysParam) // 根据Key获取参数 + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_system.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_system.go new file mode 100644 index 000000000..1a9643f35 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_system.go @@ -0,0 +1,22 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/gin-gonic/gin" +) + +type SysRouter struct{} + +func (s *SysRouter) InitSystemRouter(Router *gin.RouterGroup) { + sysRouter := Router.Group("system").Use(middleware.OperationRecord()) + sysRouterWithoutRecord := Router.Group("system") + + { + sysRouter.POST("setSystemConfig", systemApi.SetSystemConfig) // 设置配置文件内容 + sysRouter.POST("reloadSystem", systemApi.ReloadSystem) // 重启服务 + } + { + sysRouterWithoutRecord.POST("getSystemConfig", systemApi.GetSystemConfig) // 获取配置文件内容 + sysRouterWithoutRecord.POST("getServerInfo", systemApi.GetServerInfo) // 获取服务器信息 + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_user.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_user.go new file mode 100644 index 000000000..6c14b8200 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/router/system/sys_user.go @@ -0,0 +1,28 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/middleware" + "github.com/gin-gonic/gin" +) + +type UserRouter struct{} + +func (s *UserRouter) InitUserRouter(Router *gin.RouterGroup) { + userRouter := Router.Group("user").Use(middleware.OperationRecord()) + userRouterWithoutRecord := Router.Group("user") + { + userRouter.POST("admin_register", baseApi.Register) // 管理员注册账号 + userRouter.POST("changePassword", baseApi.ChangePassword) // 用户修改密码 + userRouter.POST("setUserAuthority", baseApi.SetUserAuthority) // 设置用户权限 + userRouter.DELETE("deleteUser", baseApi.DeleteUser) // 删除用户 + userRouter.PUT("setUserInfo", baseApi.SetUserInfo) // 设置用户信息 + userRouter.PUT("setSelfInfo", baseApi.SetSelfInfo) // 设置自身信息 + userRouter.POST("setUserAuthorities", baseApi.SetUserAuthorities) // 设置用户权限组 + userRouter.POST("resetPassword", baseApi.ResetPassword) // 设置用户权限组 + userRouter.PUT("setSelfSetting", baseApi.SetSelfSetting) // 用户界面配置 + } + { + userRouterWithoutRecord.POST("getUserList", baseApi.GetUserList) // 分页获取用户列表 + userRouterWithoutRecord.GET("getUserInfo", baseApi.GetUserInfo) // 获取自身信息 + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/enter.go new file mode 100644 index 000000000..4dc990e7c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/enter.go @@ -0,0 +1,13 @@ +package service + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/service/example" + "github.com/flipped-aurora/gin-vue-admin/server/service/system" +) + +var ServiceGroupApp = new(ServiceGroup) + +type ServiceGroup struct { + SystemServiceGroup system.ServiceGroup + ExampleServiceGroup example.ServiceGroup +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/example/enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/example/enter.go new file mode 100644 index 000000000..c5a7ddaa2 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/example/enter.go @@ -0,0 +1,6 @@ +package example + +type ServiceGroup struct { + CustomerService + FileUploadAndDownloadService +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/example/exa_breakpoint_continue.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/example/exa_breakpoint_continue.go new file mode 100644 index 000000000..d0363bb5d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/example/exa_breakpoint_continue.go @@ -0,0 +1,71 @@ +package example + +import ( + "errors" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/example" + "gorm.io/gorm" +) + +type FileUploadAndDownloadService struct{} + +var FileUploadAndDownloadServiceApp = new(FileUploadAndDownloadService) + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: FindOrCreateFile +//@description: 上传文件时检测当前文件属性,如果没有文件则创建,有则返回文件的当前切片 +//@param: fileMd5 string, fileName string, chunkTotal int +//@return: file model.ExaFile, err error + +func (e *FileUploadAndDownloadService) FindOrCreateFile(fileMd5 string, fileName string, chunkTotal int) (file example.ExaFile, err error) { + var cfile example.ExaFile + cfile.FileMd5 = fileMd5 + cfile.FileName = fileName + cfile.ChunkTotal = chunkTotal + + if errors.Is(global.GVA_DB.Where("file_md5 = ? AND is_finish = ?", fileMd5, true).First(&file).Error, gorm.ErrRecordNotFound) { + err = global.GVA_DB.Where("file_md5 = ? AND file_name = ?", fileMd5, fileName).Preload("ExaFileChunk").FirstOrCreate(&file, cfile).Error + return file, err + } + cfile.IsFinish = true + cfile.FilePath = file.FilePath + err = global.GVA_DB.Create(&cfile).Error + return cfile, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: CreateFileChunk +//@description: 创建文件切片记录 +//@param: id uint, fileChunkPath string, fileChunkNumber int +//@return: error + +func (e *FileUploadAndDownloadService) CreateFileChunk(id uint, fileChunkPath string, fileChunkNumber int) error { + var chunk example.ExaFileChunk + chunk.FileChunkPath = fileChunkPath + chunk.ExaFileID = id + chunk.FileChunkNumber = fileChunkNumber + err := global.GVA_DB.Create(&chunk).Error + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: DeleteFileChunk +//@description: 删除文件切片记录 +//@param: fileMd5 string, fileName string, filePath string +//@return: error + +func (e *FileUploadAndDownloadService) DeleteFileChunk(fileMd5 string, filePath string) error { + var chunks []example.ExaFileChunk + var file example.ExaFile + err := global.GVA_DB.Where("file_md5 = ? ", fileMd5).First(&file). + Updates(map[string]interface{}{ + "IsFinish": true, + "file_path": filePath, + }).Error + if err != nil { + return err + } + err = global.GVA_DB.Where("exa_file_id = ?", file.ID).Delete(&chunks).Unscoped().Error + return err +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/example/exa_customer.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/example/exa_customer.go new file mode 100644 index 000000000..cf816f5a3 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/example/exa_customer.go @@ -0,0 +1,87 @@ +package example + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/example" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + systemService "github.com/flipped-aurora/gin-vue-admin/server/service/system" +) + +type CustomerService struct{} + +var CustomerServiceApp = new(CustomerService) + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: CreateExaCustomer +//@description: 创建客户 +//@param: e model.ExaCustomer +//@return: err error + +func (exa *CustomerService) CreateExaCustomer(e example.ExaCustomer) (err error) { + err = global.GVA_DB.Create(&e).Error + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: DeleteFileChunk +//@description: 删除客户 +//@param: e model.ExaCustomer +//@return: err error + +func (exa *CustomerService) DeleteExaCustomer(e example.ExaCustomer) (err error) { + err = global.GVA_DB.Delete(&e).Error + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: UpdateExaCustomer +//@description: 更新客户 +//@param: e *model.ExaCustomer +//@return: err error + +func (exa *CustomerService) UpdateExaCustomer(e *example.ExaCustomer) (err error) { + err = global.GVA_DB.Save(e).Error + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetExaCustomer +//@description: 获取客户信息 +//@param: id uint +//@return: customer model.ExaCustomer, err error + +func (exa *CustomerService) GetExaCustomer(id uint) (customer example.ExaCustomer, err error) { + err = global.GVA_DB.Where("id = ?", id).First(&customer).Error + return +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetCustomerInfoList +//@description: 分页获取客户列表 +//@param: sysUserAuthorityID string, info request.PageInfo +//@return: list interface{}, total int64, err error + +func (exa *CustomerService) GetCustomerInfoList(sysUserAuthorityID uint, info request.PageInfo) (list interface{}, total int64, err error) { + limit := info.PageSize + offset := info.PageSize * (info.Page - 1) + db := global.GVA_DB.Model(&example.ExaCustomer{}) + var a system.SysAuthority + a.AuthorityId = sysUserAuthorityID + auth, err := systemService.AuthorityServiceApp.GetAuthorityInfo(a) + if err != nil { + return + } + var dataId []uint + for _, v := range auth.DataAuthorityId { + dataId = append(dataId, v.AuthorityId) + } + var CustomerList []example.ExaCustomer + err = db.Where("sys_user_authority_id in ?", dataId).Count(&total).Error + if err != nil { + return CustomerList, total, err + } else { + err = db.Limit(limit).Offset(offset).Preload("SysUser").Where("sys_user_authority_id in ?", dataId).Find(&CustomerList).Error + } + return CustomerList, total, err +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/example/exa_file_upload_download.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/example/exa_file_upload_download.go new file mode 100644 index 000000000..cca3ec516 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/example/exa_file_upload_download.go @@ -0,0 +1,118 @@ +package example + +import ( + "errors" + "mime/multipart" + "strings" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/example" + "github.com/flipped-aurora/gin-vue-admin/server/utils/upload" +) + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: Upload +//@description: 创建文件上传记录 +//@param: file model.ExaFileUploadAndDownload +//@return: error + +func (e *FileUploadAndDownloadService) Upload(file example.ExaFileUploadAndDownload) error { + return global.GVA_DB.Create(&file).Error +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: FindFile +//@description: 查询文件记录 +//@param: id uint +//@return: model.ExaFileUploadAndDownload, error + +func (e *FileUploadAndDownloadService) FindFile(id uint) (example.ExaFileUploadAndDownload, error) { + var file example.ExaFileUploadAndDownload + err := global.GVA_DB.Where("id = ?", id).First(&file).Error + return file, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: DeleteFile +//@description: 删除文件记录 +//@param: file model.ExaFileUploadAndDownload +//@return: err error + +func (e *FileUploadAndDownloadService) DeleteFile(file example.ExaFileUploadAndDownload) (err error) { + var fileFromDb example.ExaFileUploadAndDownload + fileFromDb, err = e.FindFile(file.ID) + if err != nil { + return + } + oss := upload.NewOss() + if err = oss.DeleteFile(fileFromDb.Key); err != nil { + return errors.New("文件删除失败") + } + err = global.GVA_DB.Where("id = ?", file.ID).Unscoped().Delete(&file).Error + return err +} + +// EditFileName 编辑文件名或者备注 +func (e *FileUploadAndDownloadService) EditFileName(file example.ExaFileUploadAndDownload) (err error) { + var fileFromDb example.ExaFileUploadAndDownload + return global.GVA_DB.Where("id = ?", file.ID).First(&fileFromDb).Update("name", file.Name).Error +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetFileRecordInfoList +//@description: 分页获取数据 +//@param: info request.PageInfo +//@return: list interface{}, total int64, err error + +func (e *FileUploadAndDownloadService) GetFileRecordInfoList(info request.PageInfo) (list interface{}, total int64, err error) { + limit := info.PageSize + offset := info.PageSize * (info.Page - 1) + keyword := info.Keyword + db := global.GVA_DB.Model(&example.ExaFileUploadAndDownload{}) + var fileLists []example.ExaFileUploadAndDownload + if len(keyword) > 0 { + db = db.Where("name LIKE ?", "%"+keyword+"%") + } + err = db.Count(&total).Error + if err != nil { + return + } + err = db.Limit(limit).Offset(offset).Order("updated_at desc").Find(&fileLists).Error + return fileLists, total, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: UploadFile +//@description: 根据配置文件判断是文件上传到本地或者七牛云 +//@param: header *multipart.FileHeader, noSave string +//@return: file model.ExaFileUploadAndDownload, err error + +func (e *FileUploadAndDownloadService) UploadFile(header *multipart.FileHeader, noSave string) (file example.ExaFileUploadAndDownload, err error) { + oss := upload.NewOss() + filePath, key, uploadErr := oss.UploadFile(header) + if uploadErr != nil { + return file, uploadErr + } + s := strings.Split(header.Filename, ".") + f := example.ExaFileUploadAndDownload{ + Url: filePath, + Name: header.Filename, + Tag: s[len(s)-1], + Key: key, + } + if noSave == "0" { + return f, e.Upload(f) + } + return f, nil +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: ImportURL +//@description: 导入URL +//@param: file model.ExaFileUploadAndDownload +//@return: error + +func (e *FileUploadAndDownloadService) ImportURL(file *[]example.ExaFileUploadAndDownload) error { + return global.GVA_DB.Create(&file).Error +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_history.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_history.go new file mode 100644 index 000000000..8d1ec4ba4 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_history.go @@ -0,0 +1,217 @@ +package system + +import ( + "context" + "encoding/json" + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/utils/ast" + "github.com/pkg/errors" + "path" + "path/filepath" + "strconv" + "strings" + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + common "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + model "github.com/flipped-aurora/gin-vue-admin/server/model/system" + request "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + + "go.uber.org/zap" +) + +var AutocodeHistory = new(autoCodeHistory) + +type autoCodeHistory struct{} + +// Create 创建代码生成器历史记录 +// Author [SliverHorn](https://github.com/SliverHorn) +// Author [songzhibin97](https://github.com/songzhibin97) +func (s *autoCodeHistory) Create(ctx context.Context, info request.SysAutoHistoryCreate) error { + create := info.Create() + err := global.GVA_DB.WithContext(ctx).Create(&create).Error + if err != nil { + return errors.Wrap(err, "创建失败!") + } + return nil +} + +// First 根据id获取代码生成器历史的数据 +// Author [SliverHorn](https://github.com/SliverHorn) +// Author [songzhibin97](https://github.com/songzhibin97) +func (s *autoCodeHistory) First(ctx context.Context, info common.GetById) (string, error) { + var meta string + err := global.GVA_DB.WithContext(ctx).Model(model.SysAutoCodeHistory{}).Where("id = ?", info.ID).Pluck("request", &meta).Error + if err != nil { + return "", errors.Wrap(err, "获取失败!") + } + return meta, nil +} + +// Repeat 检测重复 +// Author [SliverHorn](https://github.com/SliverHorn) +// Author [songzhibin97](https://github.com/songzhibin97) +func (s *autoCodeHistory) Repeat(businessDB, structName, Package string) bool { + var count int64 + global.GVA_DB.Model(&model.SysAutoCodeHistory{}).Where("business_db = ? and struct_name = ? and package = ? and flag = 0", businessDB, structName, Package).Count(&count) + return count > 0 +} + +// RollBack 回滚 +// Author [SliverHorn](https://github.com/SliverHorn) +// Author [songzhibin97](https://github.com/songzhibin97) +func (s *autoCodeHistory) RollBack(ctx context.Context, info request.SysAutoHistoryRollBack) error { + var history model.SysAutoCodeHistory + err := global.GVA_DB.Where("id = ?", info.ID).First(&history).Error + if err != nil { + return err + } + if history.ExportTemplateID != 0 { + err = global.GVA_DB.Delete(&model.SysExportTemplate{}, "id = ?", history.ExportTemplateID).Error + if err != nil { + return err + } + } + if info.DeleteApi { + ids := info.ApiIds(history) + err = ApiServiceApp.DeleteApisByIds(ids) + if err != nil { + global.GVA_LOG.Error("ClearTag DeleteApiByIds:", zap.Error(err)) + } + } // 清除API表 + if info.DeleteMenu { + err = BaseMenuServiceApp.DeleteBaseMenu(int(history.MenuID)) + if err != nil { + return errors.Wrap(err, "删除菜单失败!") + } + } // 清除菜单表 + if info.DeleteTable { + err = s.DropTable(history.BusinessDB, history.Table) + if err != nil { + return errors.Wrap(err, "删除表失败!") + } + } // 删除表 + templates := make(map[string]string, len(history.Templates)) + for key, template := range history.Templates { + { + server := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server) + keys := strings.Split(key, "/") + key = filepath.Join(keys...) + key = strings.TrimPrefix(key, server) + } // key + { + web := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.WebRoot()) + server := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server) + slices := strings.Split(template, "/") + template = filepath.Join(slices...) + ext := path.Ext(template) + switch ext { + case ".js", ".vue": + template = filepath.Join(web, template) + case ".go": + template = filepath.Join(server, template) + } + } // value + templates[key] = template + } + history.Templates = templates + for key, value := range history.Injections { + var injection ast.Ast + switch key { + case ast.TypePackageApiEnter, ast.TypePackageRouterEnter, ast.TypePackageServiceEnter: + + case ast.TypePackageApiModuleEnter, ast.TypePackageRouterModuleEnter, ast.TypePackageServiceModuleEnter: + var entity ast.PackageModuleEnter + _ = json.Unmarshal([]byte(value), &entity) + injection = &entity + case ast.TypePackageInitializeGorm: + var entity ast.PackageInitializeGorm + _ = json.Unmarshal([]byte(value), &entity) + injection = &entity + case ast.TypePackageInitializeRouter: + var entity ast.PackageInitializeRouter + _ = json.Unmarshal([]byte(value), &entity) + injection = &entity + case ast.TypePluginGen: + var entity ast.PluginGen + _ = json.Unmarshal([]byte(value), &entity) + injection = &entity + case ast.TypePluginApiEnter, ast.TypePluginRouterEnter, ast.TypePluginServiceEnter: + var entity ast.PluginEnter + _ = json.Unmarshal([]byte(value), &entity) + injection = &entity + case ast.TypePluginInitializeGorm: + var entity ast.PluginInitializeGorm + _ = json.Unmarshal([]byte(value), &entity) + injection = &entity + case ast.TypePluginInitializeRouter: + var entity ast.PluginInitializeRouter + _ = json.Unmarshal([]byte(value), &entity) + injection = &entity + } + if injection == nil { + continue + } + file, _ := injection.Parse("", nil) + if file != nil { + _ = injection.Rollback(file) + err = injection.Format("", nil, file) + if err != nil { + return err + } + fmt.Printf("[filepath:%s]回滚注入代码成功!\n", key) + } + } // 清除注入代码 + removeBasePath := filepath.Join(global.GVA_CONFIG.AutoCode.Root, "rm_file", strconv.FormatInt(int64(time.Now().Nanosecond()), 10)) + for _, value := range history.Templates { + if !filepath.IsAbs(value) { + continue + } + removePath := filepath.Join(removeBasePath, strings.TrimPrefix(value, global.GVA_CONFIG.AutoCode.Root)) + err = utils.FileMove(value, removePath) + if err != nil { + return errors.Wrapf(err, "[src:%s][dst:%s]文件移动失败!", value, removePath) + } + } // 移动文件 + err = global.GVA_DB.WithContext(ctx).Model(&model.SysAutoCodeHistory{}).Where("id = ?", info.ID).Update("flag", 1).Error + if err != nil { + return errors.Wrap(err, "更新失败!") + } + return nil +} + +// Delete 删除历史数据 +// Author [SliverHorn](https://github.com/SliverHorn) +// Author [songzhibin97](https://github.com/songzhibin97) +func (s *autoCodeHistory) Delete(ctx context.Context, info common.GetById) error { + err := global.GVA_DB.WithContext(ctx).Where("id = ?", info.Uint()).Delete(&model.SysAutoCodeHistory{}).Error + if err != nil { + return errors.Wrap(err, "删除失败!") + } + return nil +} + +// GetList 获取系统历史数据 +// Author [SliverHorn](https://github.com/SliverHorn) +// Author [songzhibin97](https://github.com/songzhibin97) +func (s *autoCodeHistory) GetList(ctx context.Context, info common.PageInfo) (list []model.SysAutoCodeHistory, total int64, err error) { + var entities []model.SysAutoCodeHistory + db := global.GVA_DB.WithContext(ctx).Model(&model.SysAutoCodeHistory{}) + err = db.Count(&total).Error + if err != nil { + return nil, total, err + } + err = db.Scopes(info.Paginate()).Order("updated_at desc").Find(&entities).Error + return entities, total, err +} + +// DropTable 获取指定数据库和指定数据表的所有字段名,类型值等 +// @author: [piexlmax](https://github.com/piexlmax) +func (s *autoCodeHistory) DropTable(BusinessDb, tableName string) error { + if BusinessDb != "" { + return global.MustGetGlobalDBByDBName(BusinessDb).Exec("DROP TABLE " + tableName).Error + } else { + return global.GVA_DB.Exec("DROP TABLE " + tableName).Error + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_package.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_package.go new file mode 100644 index 000000000..218ff5388 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_package.go @@ -0,0 +1,584 @@ +package system + +import ( + "context" + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + common "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + model "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/flipped-aurora/gin-vue-admin/server/utils/ast" + "github.com/pkg/errors" + "go/token" + "gorm.io/gorm" + "os" + "path/filepath" + "strings" + "text/template" +) + +var AutoCodePackage = new(autoCodePackage) + +type autoCodePackage struct{} + +// Create 创建包信息 +// @author: [piexlmax](https://github.com/piexlmax) +// @author: [SliverHorn](https://github.com/SliverHorn) +func (s *autoCodePackage) Create(ctx context.Context, info *request.SysAutoCodePackageCreate) error { + switch { + case info.Template == "": + return errors.New("模板不能为空!") + case info.Template == "page": + return errors.New("page为表单生成器!") + case info.PackageName == "": + return errors.New("PackageName不能为空!") + case token.IsKeyword(info.PackageName): + return errors.Errorf("%s为go的关键字!", info.PackageName) + case info.Template == "package": + if info.PackageName == "system" || info.PackageName == "example" { + return errors.New("不能使用已保留的package name") + } + default: + break + } + if !errors.Is(global.GVA_DB.Where("package_name = ? and template = ?", info.PackageName, info.Template).First(&model.SysAutoCodePackage{}).Error, gorm.ErrRecordNotFound) { + return errors.New("存在相同PackageName") + } + create := info.Create() + return global.GVA_DB.WithContext(ctx).Transaction(func(tx *gorm.DB) error { + err := tx.Create(&create).Error + if err != nil { + return errors.Wrap(err, "创建失败!") + } + code := info.AutoCode() + _, asts, creates, err := s.templates(ctx, create, code) + if err != nil { + return err + } + for key, value := range creates { // key 为 模版绝对路径 + var files *template.Template + files, err = template.ParseFiles(key) + if err != nil { + return errors.Wrapf(err, "[filepath:%s]读取模版文件失败!", key) + } + err = os.MkdirAll(filepath.Dir(value), os.ModePerm) + if err != nil { + return errors.Wrapf(err, "[filepath:%s]创建文件夹失败!", value) + } + var file *os.File + file, err = os.Create(value) + if err != nil { + return errors.Wrapf(err, "[filepath:%s]创建文件夹失败!", value) + } + err = files.Execute(file, code) + _ = file.Close() + if err != nil { + return errors.Wrapf(err, "[filepath:%s]生成失败!", value) + } + fmt.Printf("[template:%s][filepath:%s]生成成功!\n", key, value) + } + for key, value := range asts { + keys := strings.Split(key, "=>") + if len(keys) == 2 { + switch keys[1] { + case ast.TypePluginInitializeV2, ast.TypePackageApiEnter, ast.TypePackageRouterEnter, ast.TypePackageServiceEnter: + file, _ := value.Parse("", nil) + if file != nil { + err = value.Injection(file) + if err != nil { + return err + } + err = value.Format("", nil, file) + if err != nil { + return err + } + } + fmt.Printf("[type:%s]注入成功!\n", key) + } + } + } + return nil + }) +} + +// Delete 删除包记录 +// @author: [piexlmax](https://github.com/piexlmax) +// @author: [SliverHorn](https://github.com/SliverHorn) +func (s *autoCodePackage) Delete(ctx context.Context, info common.GetById) error { + err := global.GVA_DB.WithContext(ctx).Delete(&model.SysAutoCodePackage{}, info.Uint()).Error + if err != nil { + return errors.Wrap(err, "删除失败!") + } + return nil +} + +// All 获取所有包 +// @author: [piexlmax](https://github.com/piexlmax) +// @author: [SliverHorn](https://github.com/SliverHorn) +func (s *autoCodePackage) All(ctx context.Context) (entities []model.SysAutoCodePackage, err error) { + err = global.GVA_DB.WithContext(ctx).Find(&entities).Error + if err != nil { + return nil, errors.Wrap(err, "获取所有包失败!") + } + return entities, nil +} + +// Templates 获取所有模版文件夹 +// @author: [SliverHorn](https://github.com/SliverHorn) +func (s *autoCodePackage) Templates(ctx context.Context) ([]string, error) { + templates := make([]string, 0) + entries, err := os.ReadDir("resource") + if err != nil { + return nil, errors.Wrap(err, "读取模版文件夹失败!") + } + for i := 0; i < len(entries); i++ { + if entries[i].IsDir() { + if entries[i].Name() == "page" { + continue + } // page 为表单生成器 + if entries[i].Name() == "function" { + continue + } // function 为函数生成器 + if entries[i].Name() == "preview" { + continue + } // preview 为预览代码生成器的代码 + templates = append(templates, entries[i].Name()) + } + } + return templates, nil +} + +func (s *autoCodePackage) templates(ctx context.Context, entity model.SysAutoCodePackage, info request.AutoCode) (code map[string]string, asts map[string]ast.Ast, creates map[string]string, err error) { + code = make(map[string]string) + asts = make(map[string]ast.Ast) + creates = make(map[string]string) + templateDir := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "resource", entity.Template) + templateDirs, err := os.ReadDir(templateDir) + if err != nil { + return nil, nil, nil, errors.Wrapf(err, "读取模版文件夹[%s]失败!", templateDir) + } + for i := 0; i < len(templateDirs); i++ { + second := filepath.Join(templateDir, templateDirs[i].Name()) + switch templateDirs[i].Name() { + case "server": + var secondDirs []os.DirEntry + secondDirs, err = os.ReadDir(second) + if err != nil { + return nil, nil, nil, errors.Wrapf(err, "读取模版文件夹[%s]失败!", second) + } + for j := 0; j < len(secondDirs); j++ { + if secondDirs[j].Name() == ".DS_Store" { + continue + } + three := filepath.Join(second, secondDirs[j].Name()) + if !secondDirs[j].IsDir() { + ext := filepath.Ext(secondDirs[j].Name()) + if ext != ".template" && ext != ".tpl" { + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版后缀!", three) + } + name := strings.TrimSuffix(secondDirs[j].Name(), ext) + if name == "main.go" || name == "plugin.go" { + pluginInitialize := &ast.PluginInitializeV2{ + Type: ast.TypePluginInitializeV2, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", entity.PackageName, name), + PluginPath: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "plugin_biz_v2.go"), + ImportPath: fmt.Sprintf(`"%s/plugin/%s"`, global.GVA_CONFIG.AutoCode.Module, entity.PackageName), + PackageName: entity.PackageName, + } + asts[pluginInitialize.PluginPath+"=>"+pluginInitialize.Type.String()] = pluginInitialize + creates[three] = pluginInitialize.Path + continue + } + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版文件!", three) + } + switch secondDirs[j].Name() { + case "api", "router", "service": + var threeDirs []os.DirEntry + threeDirs, err = os.ReadDir(three) + if err != nil { + return nil, nil, nil, errors.Wrapf(err, "读取模版文件夹[%s]失败!", three) + } + for k := 0; k < len(threeDirs); k++ { + if threeDirs[k].Name() == ".DS_Store" { + continue + } + four := filepath.Join(three, threeDirs[k].Name()) + if threeDirs[k].IsDir() { + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版文件夹!", four) + } + ext := filepath.Ext(four) + if ext != ".template" && ext != ".tpl" { + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版后缀!", four) + } + api := strings.Index(threeDirs[k].Name(), "api") + hasEnter := strings.Index(threeDirs[k].Name(), "enter") + router := strings.Index(threeDirs[k].Name(), "router") + service := strings.Index(threeDirs[k].Name(), "service") + if router == -1 && api == -1 && service == -1 && hasEnter == -1 { + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版文件!", four) + } + if entity.Template == "package" { + create := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, secondDirs[j].Name(), entity.PackageName, info.HumpPackageName+".go") + if api != -1 { + create = filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, secondDirs[j].Name(), "v1", entity.PackageName, info.HumpPackageName+".go") + } + if hasEnter != -1 { + isApi := strings.Index(secondDirs[j].Name(), "api") + isRouter := strings.Index(secondDirs[j].Name(), "router") + isService := strings.Index(secondDirs[j].Name(), "service") + if isApi != -1 { + packageApiEnter := &ast.PackageEnter{ + Type: ast.TypePackageApiEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, secondDirs[j].Name(), "v1", "enter.go"), + ImportPath: fmt.Sprintf(`"%s/%s/%s/%s"`, global.GVA_CONFIG.AutoCode.Module, "api", "v1", entity.PackageName), + StructName: utils.FirstUpper(entity.PackageName) + "ApiGroup", + PackageName: entity.PackageName, + PackageStructName: "ApiGroup", + } + asts[packageApiEnter.Path+"=>"+packageApiEnter.Type.String()] = packageApiEnter + packageApiModuleEnter := &ast.PackageModuleEnter{ + Type: ast.TypePackageApiModuleEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, secondDirs[j].Name(), "v1", entity.PackageName, "enter.go"), + ImportPath: fmt.Sprintf(`"%s/service"`, global.GVA_CONFIG.AutoCode.Module), + StructName: info.StructName + "Api", + AppName: "ServiceGroupApp", + GroupName: utils.FirstUpper(entity.PackageName) + "ServiceGroup", + ModuleName: info.Abbreviation + "Service", + PackageName: "service", + ServiceName: info.StructName + "Service", + } + asts[packageApiModuleEnter.Path+"=>"+packageApiModuleEnter.Type.String()] = packageApiModuleEnter + creates[four] = packageApiModuleEnter.Path + } + if isRouter != -1 { + packageRouterEnter := &ast.PackageEnter{ + Type: ast.TypePackageRouterEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, secondDirs[j].Name(), "enter.go"), + ImportPath: fmt.Sprintf(`"%s/%s/%s"`, global.GVA_CONFIG.AutoCode.Module, secondDirs[j].Name(), entity.PackageName), + StructName: utils.FirstUpper(entity.PackageName), + PackageName: entity.PackageName, + PackageStructName: "RouterGroup", + } + asts[packageRouterEnter.Path+"=>"+packageRouterEnter.Type.String()] = packageRouterEnter + packageRouterModuleEnter := &ast.PackageModuleEnter{ + Type: ast.TypePackageRouterModuleEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, secondDirs[j].Name(), entity.PackageName, "enter.go"), + ImportPath: fmt.Sprintf(`api "%s/api/v1"`, global.GVA_CONFIG.AutoCode.Module), + StructName: info.StructName + "Router", + AppName: "ApiGroupApp", + GroupName: utils.FirstUpper(entity.PackageName) + "ApiGroup", + ModuleName: info.Abbreviation + "Api", + PackageName: "api", + ServiceName: info.StructName + "Api", + } + creates[four] = packageRouterModuleEnter.Path + asts[packageRouterModuleEnter.Path+"=>"+packageRouterModuleEnter.Type.String()] = packageRouterModuleEnter + packageInitializeRouter := &ast.PackageInitializeRouter{ + Type: ast.TypePackageInitializeRouter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "router_biz.go"), + ImportPath: fmt.Sprintf(`"%s/router"`, global.GVA_CONFIG.AutoCode.Module), + AppName: "RouterGroupApp", + GroupName: utils.FirstUpper(entity.PackageName), + ModuleName: entity.PackageName + "Router", + PackageName: "router", + FunctionName: "Init" + info.StructName + "Router", + LeftRouterGroupName: "privateGroup", + RightRouterGroupName: "publicGroup", + } + asts[packageInitializeRouter.Path+"=>"+packageInitializeRouter.Type.String()] = packageInitializeRouter + } + if isService != -1 { + path := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, secondDirs[j].Name(), strings.TrimSuffix(threeDirs[k].Name(), ext)) + importPath := fmt.Sprintf(`"%s/service/%s"`, global.GVA_CONFIG.AutoCode.Module, entity.PackageName) + packageServiceEnter := &ast.PackageEnter{ + Type: ast.TypePackageServiceEnter, + Path: path, + ImportPath: importPath, + StructName: utils.FirstUpper(entity.PackageName) + "ServiceGroup", + PackageName: entity.PackageName, + PackageStructName: "ServiceGroup", + } + asts[packageServiceEnter.Path+"=>"+packageServiceEnter.Type.String()] = packageServiceEnter + packageServiceModuleEnter := &ast.PackageModuleEnter{ + Type: ast.TypePackageServiceModuleEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, secondDirs[j].Name(), entity.PackageName, "enter.go"), + StructName: info.StructName + "Service", + } + asts[packageServiceModuleEnter.Path+"=>"+packageServiceModuleEnter.Type.String()] = packageServiceModuleEnter + creates[four] = packageServiceModuleEnter.Path + } + continue + } + code[four] = create + continue + } + if hasEnter != -1 { + isApi := strings.Index(secondDirs[j].Name(), "api") + isRouter := strings.Index(secondDirs[j].Name(), "router") + isService := strings.Index(secondDirs[j].Name(), "service") + if isRouter != -1 { + pluginRouterEnter := &ast.PluginEnter{ + Type: ast.TypePluginRouterEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", entity.PackageName, secondDirs[j].Name(), strings.TrimSuffix(threeDirs[k].Name(), ext)), + ImportPath: fmt.Sprintf(`"%s/plugin/%s/api"`, global.GVA_CONFIG.AutoCode.Module, entity.PackageName), + StructName: info.StructName, + StructCamelName: info.Abbreviation, + ModuleName: "api" + info.StructName, + GroupName: "Api", + PackageName: "api", + ServiceName: info.StructName, + } + asts[pluginRouterEnter.Path+"=>"+pluginRouterEnter.Type.String()] = pluginRouterEnter + creates[four] = pluginRouterEnter.Path + } + if isApi != -1 { + pluginApiEnter := &ast.PluginEnter{ + Type: ast.TypePluginApiEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", entity.PackageName, secondDirs[j].Name(), strings.TrimSuffix(threeDirs[k].Name(), ext)), + ImportPath: fmt.Sprintf(`"%s/plugin/%s/service"`, global.GVA_CONFIG.AutoCode.Module, entity.PackageName), + StructName: info.StructName, + StructCamelName: info.Abbreviation, + ModuleName: "service" + info.StructName, + GroupName: "Service", + PackageName: "service", + ServiceName: info.StructName, + } + asts[pluginApiEnter.Path+"=>"+pluginApiEnter.Type.String()] = pluginApiEnter + creates[four] = pluginApiEnter.Path + } + if isService != -1 { + pluginServiceEnter := &ast.PluginEnter{ + Type: ast.TypePluginServiceEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", entity.PackageName, secondDirs[j].Name(), strings.TrimSuffix(threeDirs[k].Name(), ext)), + StructName: info.StructName, + StructCamelName: info.Abbreviation, + } + asts[pluginServiceEnter.Path+"=>"+pluginServiceEnter.Type.String()] = pluginServiceEnter + creates[four] = pluginServiceEnter.Path + } + continue + } // enter.go + create := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", entity.PackageName, secondDirs[j].Name(), info.HumpPackageName+".go") + code[four] = create + } + case "gen", "config", "initialize", "plugin", "response": + if entity.Template == "package" { + continue + } // package模板不需要生成gen, config, initialize + var threeDirs []os.DirEntry + threeDirs, err = os.ReadDir(three) + if err != nil { + return nil, nil, nil, errors.Wrapf(err, "读取模版文件夹[%s]失败!", three) + } + for k := 0; k < len(threeDirs); k++ { + if threeDirs[k].Name() == ".DS_Store" { + continue + } + four := filepath.Join(three, threeDirs[k].Name()) + if threeDirs[k].IsDir() { + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版文件夹!", four) + } + ext := filepath.Ext(four) + if ext != ".template" && ext != ".tpl" { + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版后缀!", four) + } + gen := strings.Index(threeDirs[k].Name(), "gen") + api := strings.Index(threeDirs[k].Name(), "api") + menu := strings.Index(threeDirs[k].Name(), "menu") + viper := strings.Index(threeDirs[k].Name(), "viper") + plugin := strings.Index(threeDirs[k].Name(), "plugin") + config := strings.Index(threeDirs[k].Name(), "config") + router := strings.Index(threeDirs[k].Name(), "router") + hasGorm := strings.Index(threeDirs[k].Name(), "gorm") + response := strings.Index(threeDirs[k].Name(), "response") + if gen != -1 && api != -1 && menu != -1 && viper != -1 && plugin != -1 && config != -1 && router != -1 && hasGorm != -1 && response != -1 { + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版文件!", four) + } + if api != -1 || menu != -1 || viper != -1 || response != -1 || plugin != -1 || config != -1 { + creates[four] = filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", entity.PackageName, secondDirs[j].Name(), strings.TrimSuffix(threeDirs[k].Name(), ext)) + } + if gen != -1 { + pluginGen := &ast.PluginGen{ + Type: ast.TypePluginGen, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", entity.PackageName, secondDirs[j].Name(), strings.TrimSuffix(threeDirs[k].Name(), ext)), + ImportPath: fmt.Sprintf(`"%s/plugin/%s/model"`, global.GVA_CONFIG.AutoCode.Module, entity.PackageName), + StructName: info.StructName, + PackageName: "model", + IsNew: true, + } + asts[pluginGen.Path+"=>"+pluginGen.Type.String()] = pluginGen + creates[four] = pluginGen.Path + } + if hasGorm != -1 { + pluginInitializeGorm := &ast.PluginInitializeGorm{ + Type: ast.TypePluginInitializeGorm, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", entity.PackageName, secondDirs[j].Name(), strings.TrimSuffix(threeDirs[k].Name(), ext)), + ImportPath: fmt.Sprintf(`"%s/plugin/%s/model"`, global.GVA_CONFIG.AutoCode.Module, entity.PackageName), + StructName: info.StructName, + PackageName: "model", + IsNew: true, + } + asts[pluginInitializeGorm.Path+"=>"+pluginInitializeGorm.Type.String()] = pluginInitializeGorm + creates[four] = pluginInitializeGorm.Path + } + if router != -1 { + pluginInitializeRouter := &ast.PluginInitializeRouter{ + Type: ast.TypePluginInitializeRouter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", entity.PackageName, secondDirs[j].Name(), strings.TrimSuffix(threeDirs[k].Name(), ext)), + ImportPath: fmt.Sprintf(`"%s/plugin/%s/router"`, global.GVA_CONFIG.AutoCode.Module, entity.PackageName), + AppName: "Router", + GroupName: info.StructName, + PackageName: "router", + FunctionName: "Init", + LeftRouterGroupName: "public", + RightRouterGroupName: "private", + } + asts[pluginInitializeRouter.Path+"=>"+pluginInitializeRouter.Type.String()] = pluginInitializeRouter + creates[four] = pluginInitializeRouter.Path + } + } + case "model": + var threeDirs []os.DirEntry + threeDirs, err = os.ReadDir(three) + if err != nil { + return nil, nil, nil, errors.Wrapf(err, "读取模版文件夹[%s]失败!", three) + } + for k := 0; k < len(threeDirs); k++ { + if threeDirs[k].Name() == ".DS_Store" { + continue + } + four := filepath.Join(three, threeDirs[k].Name()) + if threeDirs[k].IsDir() { + var fourDirs []os.DirEntry + fourDirs, err = os.ReadDir(four) + if err != nil { + return nil, nil, nil, errors.Wrapf(err, "读取模版文件夹[%s]失败!", four) + } + for l := 0; l < len(fourDirs); l++ { + if fourDirs[l].Name() == ".DS_Store" { + continue + } + five := filepath.Join(four, fourDirs[l].Name()) + if fourDirs[l].IsDir() { + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版文件夹!", five) + } + ext := filepath.Ext(five) + if ext != ".template" && ext != ".tpl" { + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版后缀!", five) + } + hasRequest := strings.Index(fourDirs[l].Name(), "request") + if hasRequest == -1 { + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版文件!", five) + } + create := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", entity.PackageName, secondDirs[j].Name(), threeDirs[k].Name(), info.HumpPackageName+".go") + if entity.Template == "package" { + create = filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, secondDirs[j].Name(), entity.PackageName, threeDirs[k].Name(), info.HumpPackageName+".go") + } + code[five] = create + } + continue + } + ext := filepath.Ext(threeDirs[k].Name()) + if ext != ".template" && ext != ".tpl" { + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版后缀!", four) + } + hasModel := strings.Index(threeDirs[k].Name(), "model") + if hasModel == -1 { + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版文件!", four) + } + create := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", entity.PackageName, secondDirs[j].Name(), info.HumpPackageName+".go") + if entity.Template == "package" { + packageInitializeGorm := &ast.PackageInitializeGorm{ + Type: ast.TypePackageInitializeGorm, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "gorm_biz.go"), + ImportPath: fmt.Sprintf(`"%s/model/%s"`, global.GVA_CONFIG.AutoCode.Module, entity.PackageName), + Business: info.BusinessDB, + StructName: info.StructName, + PackageName: entity.PackageName, + IsNew: true, + } + code[four] = packageInitializeGorm.Path + asts[packageInitializeGorm.Path+"=>"+packageInitializeGorm.Type.String()] = packageInitializeGorm + create = filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, secondDirs[j].Name(), entity.PackageName, info.HumpPackageName+".go") + } + code[four] = create + } + default: + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版文件夹!", three) + } + } + case "web": + var secondDirs []os.DirEntry + secondDirs, err = os.ReadDir(second) + if err != nil { + return nil, nil, nil, errors.Wrapf(err, "读取模版文件夹[%s]失败!", second) + } + for j := 0; j < len(secondDirs); j++ { + if secondDirs[j].Name() == ".DS_Store" { + continue + } + three := filepath.Join(second, secondDirs[j].Name()) + if !secondDirs[j].IsDir() { + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版文件!", three) + } + switch secondDirs[j].Name() { + case "api", "form", "view", "table": + var threeDirs []os.DirEntry + threeDirs, err = os.ReadDir(three) + if err != nil { + return nil, nil, nil, errors.Wrapf(err, "读取模版文件夹[%s]失败!", three) + } + for k := 0; k < len(threeDirs); k++ { + if threeDirs[k].Name() == ".DS_Store" { + continue + } + four := filepath.Join(three, threeDirs[k].Name()) + if threeDirs[k].IsDir() { + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版文件夹!", four) + } + ext := filepath.Ext(four) + if ext != ".template" && ext != ".tpl" { + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版后缀!", four) + } + api := strings.Index(threeDirs[k].Name(), "api") + form := strings.Index(threeDirs[k].Name(), "form") + view := strings.Index(threeDirs[k].Name(), "view") + table := strings.Index(threeDirs[k].Name(), "table") + if api == -1 && form == -1 && view == -1 && table == -1 { + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版文件!", four) + } + if entity.Template == "package" { + if view != -1 || table != -1 { + formPath := filepath.Join(three, "form.vue"+ext) + value, ok := code[formPath] + if ok { + value = filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.WebRoot(), secondDirs[j].Name(), entity.PackageName, info.PackageName, info.PackageName+"Form"+filepath.Ext(strings.TrimSuffix(threeDirs[k].Name(), ext))) + code[formPath] = value + } + } + create := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.WebRoot(), secondDirs[j].Name(), entity.PackageName, info.PackageName, info.PackageName+filepath.Ext(strings.TrimSuffix(threeDirs[k].Name(), ext))) + if api != -1 { + create = filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.WebRoot(), secondDirs[j].Name(), entity.PackageName, info.PackageName+filepath.Ext(strings.TrimSuffix(threeDirs[k].Name(), ext))) + } + code[four] = create + continue + } + create := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.WebRoot(), "plugin", entity.PackageName, secondDirs[j].Name(), info.PackageName+filepath.Ext(strings.TrimSuffix(threeDirs[k].Name(), ext))) + code[four] = create + } + default: + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版文件夹!", three) + } + } + case "readme.txt.tpl", "readme.txt.template": + continue + default: + if templateDirs[i].Name() == ".DS_Store" { + continue + } + return nil, nil, nil, errors.Errorf("[filpath:%s]非法模版文件!", second) + } + } + return code, asts, creates, nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_package_test.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_package_test.go new file mode 100644 index 000000000..94285e979 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_package_test.go @@ -0,0 +1,105 @@ +package system + +import ( + "context" + model "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "reflect" + "testing" +) + +func Test_autoCodePackage_Create(t *testing.T) { + type args struct { + ctx context.Context + info *request.SysAutoCodePackageCreate + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "测试 package", + args: args{ + ctx: context.Background(), + info: &request.SysAutoCodePackageCreate{ + Template: "package", + PackageName: "gva", + }, + }, + wantErr: false, + }, + { + name: "测试 plugin", + args: args{ + ctx: context.Background(), + info: &request.SysAutoCodePackageCreate{ + Template: "plugin", + PackageName: "gva", + }, + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := &autoCodePackage{} + if err := a.Create(tt.args.ctx, tt.args.info); (err != nil) != tt.wantErr { + t.Errorf("Create() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func Test_autoCodePackage_templates(t *testing.T) { + type args struct { + ctx context.Context + entity model.SysAutoCodePackage + info request.AutoCode + } + tests := []struct { + name string + args args + wantCode map[string]string + wantEnter map[string]map[string]string + wantErr bool + }{ + { + name: "测试1", + args: args{ + ctx: context.Background(), + entity: model.SysAutoCodePackage{ + Desc: "描述", + Label: "展示名", + Template: "plugin", + PackageName: "preview", + }, + info: request.AutoCode{ + Abbreviation: "user", + HumpPackageName: "user", + }, + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + s := &autoCodePackage{} + gotCode, gotEnter, gotCreates, err := s.templates(tt.args.ctx, tt.args.entity, tt.args.info) + if (err != nil) != tt.wantErr { + t.Errorf("templates() error = %v, wantErr %v", err, tt.wantErr) + return + } + for key, value := range gotCode { + t.Logf("\n") + t.Logf(key) + t.Logf(value) + t.Logf("\n") + } + t.Log(gotCreates) + if !reflect.DeepEqual(gotEnter, tt.wantEnter) { + t.Errorf("templates() gotEnter = %v, want %v", gotEnter, tt.wantEnter) + } + }) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_plugin.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_plugin.go new file mode 100644 index 000000000..a626d0941 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_plugin.go @@ -0,0 +1,249 @@ +package system + +import ( + "bytes" + "context" + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/flipped-aurora/gin-vue-admin/server/utils/ast" + "github.com/mholt/archiver/v4" + cp "github.com/otiai10/copy" + "github.com/pkg/errors" + "go.uber.org/zap" + "go/parser" + "go/printer" + "go/token" + "io" + "mime/multipart" + "os" + "path/filepath" + "strings" +) + +var AutoCodePlugin = new(autoCodePlugin) + +type autoCodePlugin struct{} + +// Install 插件安装 +func (s *autoCodePlugin) Install(file *multipart.FileHeader) (web, server int, err error) { + const GVAPLUGPINATH = "./gva-plug-temp/" + defer os.RemoveAll(GVAPLUGPINATH) + _, err = os.Stat(GVAPLUGPINATH) + if os.IsNotExist(err) { + os.Mkdir(GVAPLUGPINATH, os.ModePerm) + } + + src, err := file.Open() + if err != nil { + return -1, -1, err + } + defer src.Close() + + out, err := os.Create(GVAPLUGPINATH + file.Filename) + if err != nil { + return -1, -1, err + } + defer out.Close() + + _, err = io.Copy(out, src) + + paths, err := utils.Unzip(GVAPLUGPINATH+file.Filename, GVAPLUGPINATH) + paths = filterFile(paths) + var webIndex = -1 + var serverIndex = -1 + webPlugin := "" + serverPlugin := "" + + for i := range paths { + paths[i] = filepath.ToSlash(paths[i]) + pathArr := strings.Split(paths[i], "/") + ln := len(pathArr) + + if ln < 4 { + continue + } + if pathArr[2]+"/"+pathArr[3] == `server/plugin` && len(serverPlugin) == 0 { + serverPlugin = filepath.Join(pathArr[0], pathArr[1], pathArr[2], pathArr[3]) + } + if pathArr[2]+"/"+pathArr[3] == `web/plugin` && len(webPlugin) == 0 { + webPlugin = filepath.Join(pathArr[0], pathArr[1], pathArr[2], pathArr[3]) + } + } + if len(serverPlugin) == 0 && len(webPlugin) == 0 { + zap.L().Error("非标准插件,请按照文档自动迁移使用") + return webIndex, serverIndex, errors.New("非标准插件,请按照文档自动迁移使用") + } + + if len(serverPlugin) != 0 { + err = installation(serverPlugin, global.GVA_CONFIG.AutoCode.Server, global.GVA_CONFIG.AutoCode.Server) + if err != nil { + return webIndex, serverIndex, err + } + } + + if len(webPlugin) != 0 { + err = installation(webPlugin, global.GVA_CONFIG.AutoCode.Server, global.GVA_CONFIG.AutoCode.Web) + if err != nil { + return webIndex, serverIndex, err + } + } + + return 1, 1, err +} + +func installation(path string, formPath string, toPath string) error { + arr := strings.Split(filepath.ToSlash(path), "/") + ln := len(arr) + if ln < 3 { + return errors.New("arr") + } + name := arr[ln-3] + + var form = filepath.Join(global.GVA_CONFIG.AutoCode.Root, formPath, path) + var to = filepath.Join(global.GVA_CONFIG.AutoCode.Root, toPath, "plugin") + _, err := os.Stat(to + name) + if err == nil { + zap.L().Error("autoPath 已存在同名插件,请自行手动安装", zap.String("to", to)) + return errors.New(toPath + "已存在同名插件,请自行手动安装") + } + return cp.Copy(form, to, cp.Options{Skip: skipMacSpecialDocument}) +} + +func filterFile(paths []string) []string { + np := make([]string, 0, len(paths)) + for _, path := range paths { + if ok, _ := skipMacSpecialDocument(nil, path, ""); ok { + continue + } + np = append(np, path) + } + return np +} + +func skipMacSpecialDocument(_ os.FileInfo, src, _ string) (bool, error) { + if strings.Contains(src, ".DS_Store") || strings.Contains(src, "__MACOSX") { + return true, nil + } + return false, nil +} + +func (s *autoCodePlugin) PubPlug(plugName string) (zipPath string, err error) { + if plugName == "" { + return "", errors.New("插件名称不能为空") + } + + // 防止路径穿越 + plugName = filepath.Clean(plugName) + + webPath := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Web, "plugin", plugName) + serverPath := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", plugName) + // 创建一个新的zip文件 + + // 判断目录是否存在 + _, err = os.Stat(webPath) + if err != nil { + return "", errors.New("web路径不存在") + } + _, err = os.Stat(serverPath) + if err != nil { + return "", errors.New("server路径不存在") + } + + fileName := plugName + ".zip" + // 创建一个新的zip文件 + files, err := archiver.FilesFromDisk(nil, map[string]string{ + webPath: plugName + "/web/plugin/" + plugName, + serverPath: plugName + "/server/plugin/" + plugName, + }) + + // create the output file we'll write to + out, err := os.Create(fileName) + if err != nil { + return + } + defer out.Close() + + // we can use the CompressedArchive type to gzip a tarball + // (compression is not required; you could use Tar directly) + format := archiver.CompressedArchive{ + Archival: archiver.Zip{}, + } + + // create the archive + err = format.Archive(context.Background(), out, files) + if err != nil { + return + } + + return filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, fileName), nil +} + +func (s *autoCodePlugin) InitMenu(menuInfo request.InitMenu) (err error) { + menuPath := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", menuInfo.PlugName, "initialize", "menu.go") + src, err := os.ReadFile(menuPath) + if err != nil { + fmt.Println(err) + } + fileSet := token.NewFileSet() + astFile, err := parser.ParseFile(fileSet, "", src, 0) + arrayAst := ast.FindArray(astFile, "model", "SysBaseMenu") + var menus []system.SysBaseMenu + + parentMenu := []system.SysBaseMenu{ + { + ParentId: 0, + Path: menuInfo.PlugName + "Menu", + Name: menuInfo.PlugName + "Menu", + Hidden: false, + Component: "view/routerHolder.vue", + Sort: 0, + Meta: system.Meta{ + Title: menuInfo.ParentMenu, + Icon: "school", + }, + }, + } + + err = global.GVA_DB.Find(&menus, "id in (?)", menuInfo.Menus).Error + if err != nil { + return err + } + menus = append(parentMenu, menus...) + menuExpr := ast.CreateMenuStructAst(menus) + arrayAst.Elts = *menuExpr + + var out []byte + bf := bytes.NewBuffer(out) + printer.Fprint(bf, fileSet, astFile) + + os.WriteFile(menuPath, bf.Bytes(), 0666) + return nil +} + +func (s *autoCodePlugin) InitAPI(apiInfo request.InitApi) (err error) { + apiPath := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", apiInfo.PlugName, "initialize", "api.go") + src, err := os.ReadFile(apiPath) + if err != nil { + fmt.Println(err) + } + fileSet := token.NewFileSet() + astFile, err := parser.ParseFile(fileSet, "", src, 0) + arrayAst := ast.FindArray(astFile, "model", "SysApi") + var apis []system.SysApi + err = global.GVA_DB.Find(&apis, "id in (?)", apiInfo.APIs).Error + if err != nil { + return err + } + apisExpr := ast.CreateApiStructAst(apis) + arrayAst.Elts = *apisExpr + + var out []byte + bf := bytes.NewBuffer(out) + printer.Fprint(bf, fileSet, astFile) + + os.WriteFile(apiPath, bf.Bytes(), 0666) + return nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_template.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_template.go new file mode 100644 index 000000000..542072ec7 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_template.go @@ -0,0 +1,409 @@ +package system + +import ( + "context" + "encoding/json" + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + model "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + utilsAst "github.com/flipped-aurora/gin-vue-admin/server/utils/ast" + "github.com/pkg/errors" + "go/ast" + "go/format" + "go/parser" + "go/token" + "gorm.io/gorm" + "os" + "path/filepath" + "strings" + "text/template" +) + +var AutoCodeTemplate = new(autoCodeTemplate) + +type autoCodeTemplate struct{} + +func (s *autoCodeTemplate) checkPackage(Pkg string, template string) (err error) { + switch template { + case "package": + apiEnter := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "api", "v1", Pkg, "enter.go") + _, err = os.Stat(apiEnter) + if err != nil { + return fmt.Errorf("package结构异常,缺少api/v1/%s/enter.go", Pkg) + } + serviceEnter := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "service", Pkg, "enter.go") + _, err = os.Stat(serviceEnter) + if err != nil { + return fmt.Errorf("package结构异常,缺少service/%s/enter.go", Pkg) + } + routerEnter := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "router", Pkg, "enter.go") + _, err = os.Stat(routerEnter) + if err != nil { + return fmt.Errorf("package结构异常,缺少router/%s/enter.go", Pkg) + } + case "plugin": + pluginEnter := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", Pkg, "plugin.go") + _, err = os.Stat(pluginEnter) + if err != nil { + return fmt.Errorf("plugin结构异常,缺少plugin/%s/plugin.go", Pkg) + } + } + return nil +} + +// Create 创建生成自动化代码 +func (s *autoCodeTemplate) Create(ctx context.Context, info request.AutoCode) error { + history := info.History() + var autoPkg model.SysAutoCodePackage + err := global.GVA_DB.WithContext(ctx).Where("package_name = ?", info.Package).First(&autoPkg).Error + if err != nil { + return errors.Wrap(err, "查询包失败!") + } + err = s.checkPackage(info.Package, autoPkg.Template) + if err != nil { + return err + } + // 增加判断: 重复创建struct + if AutocodeHistory.Repeat(info.BusinessDB, info.StructName, info.Package) { + return errors.New("已经创建过此数据结构,请勿重复创建!") + } + + generate, templates, injections, err := s.generate(ctx, info, autoPkg) + if err != nil { + return err + } + for key, builder := range generate { + err = os.MkdirAll(filepath.Dir(key), os.ModePerm) + if err != nil { + return errors.Wrapf(err, "[filepath:%s]创建文件夹失败!", key) + } + err = os.WriteFile(key, []byte(builder.String()), 0666) + if err != nil { + return errors.Wrapf(err, "[filepath:%s]写入文件失败!", key) + } + } + + // 自动创建api + if info.AutoCreateApiToSql && !info.OnlyTemplate { + apis := info.Apis() + err := global.GVA_DB.WithContext(ctx).Transaction(func(tx *gorm.DB) error { + for _, v := range apis { + var api model.SysApi + var id uint + err := tx.Where("path = ? AND method = ?", v.Path, v.Method).First(&api).Error + if errors.Is(err, gorm.ErrRecordNotFound) { + if err = tx.Create(&v).Error; err != nil { // 遇到错误时回滚事务 + return err + } + id = v.ID + } else { + id = api.ID + } + history.ApiIDs = append(history.ApiIDs, id) + } + return nil + }) + if err != nil { + return err + } + } + + // 自动创建menu + if info.AutoCreateMenuToSql { + var entity model.SysBaseMenu + var id uint + err := global.GVA_DB.WithContext(ctx).First(&entity, "name = ?", info.Abbreviation).Error + if err == nil { + id = entity.ID + } else { + entity = info.Menu(autoPkg.Template) + if info.AutoCreateBtnAuth && !info.OnlyTemplate { + entity.MenuBtn = []model.SysBaseMenuBtn{ + {SysBaseMenuID: entity.ID, Name: "add", Desc: "新增"}, + {SysBaseMenuID: entity.ID, Name: "batchDelete", Desc: "批量删除"}, + {SysBaseMenuID: entity.ID, Name: "delete", Desc: "删除"}, + {SysBaseMenuID: entity.ID, Name: "edit", Desc: "编辑"}, + {SysBaseMenuID: entity.ID, Name: "info", Desc: "详情"}, + } + if info.HasExcel { + excelBtn := []model.SysBaseMenuBtn{ + {SysBaseMenuID: entity.ID, Name: "exportTemplate", Desc: "导出模板"}, + {SysBaseMenuID: entity.ID, Name: "exportExcel", Desc: "导出Excel"}, + {SysBaseMenuID: entity.ID, Name: "importExcel", Desc: "导入Excel"}, + } + entity.MenuBtn = append(entity.MenuBtn, excelBtn...) + } + } + err = global.GVA_DB.WithContext(ctx).Create(&entity).Error + id = entity.ID + if err != nil { + return errors.Wrap(err, "创建菜单失败!") + } + } + history.MenuID = id + } + + if info.HasExcel { + dbName := info.BusinessDB + name := info.Package + "_" + info.StructName + tableName := info.TableName + fieldsMap := make(map[string]string, len(info.Fields)) + for _, field := range info.Fields { + if field.Excel { + fieldsMap[field.ColumnName] = field.FieldDesc + } + } + templateInfo, _ := json.Marshal(fieldsMap) + sysExportTemplate := model.SysExportTemplate{ + DBName: dbName, + Name: name, + TableName: tableName, + TemplateID: name, + TemplateInfo: string(templateInfo), + } + err = SysExportTemplateServiceApp.CreateSysExportTemplate(&sysExportTemplate) + if err != nil { + return err + } + history.ExportTemplateID = sysExportTemplate.ID + } + + // 创建历史记录 + history.Templates = templates + history.Injections = make(map[string]string, len(injections)) + for key, value := range injections { + bytes, _ := json.Marshal(value) + history.Injections[key] = string(bytes) + } + err = AutocodeHistory.Create(ctx, history) + if err != nil { + return err + } + return nil +} + +// Preview 预览自动化代码 +func (s *autoCodeTemplate) Preview(ctx context.Context, info request.AutoCode) (map[string]string, error) { + var entity model.SysAutoCodePackage + err := global.GVA_DB.WithContext(ctx).Where("package_name = ?", info.Package).First(&entity).Error + if err != nil { + return nil, errors.Wrap(err, "查询包失败!") + } + codes := make(map[string]strings.Builder) + preview := make(map[string]string) + codes, _, _, err = s.generate(ctx, info, entity) + if err != nil { + return nil, err + } + for key, writer := range codes { + if len(key) > len(global.GVA_CONFIG.AutoCode.Root) { + key, _ = filepath.Rel(global.GVA_CONFIG.AutoCode.Root, key) + } + // 获取key的后缀 取消. + suffix := filepath.Ext(key)[1:] + var builder strings.Builder + builder.WriteString("```" + suffix + "\n\n") + builder.WriteString(writer.String()) + builder.WriteString("\n\n```") + preview[key] = builder.String() + } + return preview, nil +} + +func (s *autoCodeTemplate) generate(ctx context.Context, info request.AutoCode, entity model.SysAutoCodePackage) (map[string]strings.Builder, map[string]string, map[string]utilsAst.Ast, error) { + templates, asts, _, err := AutoCodePackage.templates(ctx, entity, info) + if err != nil { + return nil, nil, nil, err + } + code := make(map[string]strings.Builder) + for key, create := range templates { + var files *template.Template + files, err = template.ParseFiles(key) + if err != nil { + return nil, nil, nil, errors.Wrapf(err, "[filpath:%s]读取模版文件失败!", key) + } + var builder strings.Builder + err = files.Execute(&builder, info) + if err != nil { + return nil, nil, nil, errors.Wrapf(err, "[filpath:%s]生成文件失败!", create) + } + code[create] = builder + } // 生成文件 + injections := make(map[string]utilsAst.Ast, len(asts)) + for key, value := range asts { + keys := strings.Split(key, "=>") + if len(keys) == 2 { + if keys[1] == utilsAst.TypePluginInitializeV2 { + continue + } + if info.OnlyTemplate { + if keys[1] == utilsAst.TypePackageInitializeGorm || keys[1] == utilsAst.TypePluginInitializeGorm { + continue + } + } + if !info.AutoMigrate { + if keys[1] == utilsAst.TypePackageInitializeGorm || keys[1] == utilsAst.TypePluginInitializeGorm { + continue + } + } + var builder strings.Builder + parse, _ := value.Parse("", &builder) + if parse != nil { + _ = value.Injection(parse) + err = value.Format("", &builder, parse) + if err != nil { + return nil, nil, nil, err + } + code[keys[0]] = builder + injections[keys[1]] = value + fmt.Println(keys[0], "注入成功!") + } + } + } + // 注入代码 + return code, templates, injections, nil +} + +func (s *autoCodeTemplate) AddFunc(info request.AutoFunc) error { + autoPkg := model.SysAutoCodePackage{} + err := global.GVA_DB.First(&autoPkg, "package_name = ?", info.Package).Error + if err != nil { + return err + } + if autoPkg.Template != "package" { + info.IsPlugin = true + } + err = s.addTemplateToFile("api.go", info) + if err != nil { + return err + } + err = s.addTemplateToFile("server.go", info) + if err != nil { + return err + } + err = s.addTemplateToFile("api.js", info) + if err != nil { + return err + } + err = s.addTemplateToAst("router", info) + return nil +} + +func (s *autoCodeTemplate) getTemplateStr(t string, info request.AutoFunc) (string, error) { + tempPath := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "resource", "function", t+".tpl") + files, err := template.ParseFiles(tempPath) + if err != nil { + return "", errors.Wrapf(err, "[filepath:%s]读取模版文件失败!", tempPath) + } + var builder strings.Builder + err = files.Execute(&builder, info) + if err != nil { + fmt.Println(err.Error()) + return "", errors.Wrapf(err, "[filpath:%s]生成文件失败!", tempPath) + } + return builder.String(), nil +} + +func (s *autoCodeTemplate) addTemplateToAst(t string, info request.AutoFunc) error { + tPath := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "router", info.Package, info.HumpPackageName+".go") + funcName := fmt.Sprintf("Init%sRouter", info.StructName) + + routerStr := "RouterWithoutAuth" + if info.IsAuth { + routerStr = "Router" + } + + stmtStr := fmt.Sprintf("%s%s.%s(\"%s\", %sApi.%s)", info.Abbreviation, routerStr, info.Method, info.Router, info.Abbreviation, info.FuncName) + if info.IsPlugin { + tPath = filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", info.Package, "router", info.HumpPackageName+".go") + stmtStr = fmt.Sprintf("group.%s(\"%s\", api%s.%s)", info.Method, info.Router, info.StructName, info.FuncName) + funcName = "Init" + } + + src, err := os.ReadFile(tPath) + fileSet := token.NewFileSet() + astFile, err := parser.ParseFile(fileSet, "", src, 0) + if err != nil { + fmt.Println(err) + } + funcDecl := utilsAst.FindFunction(astFile, funcName) + stmtNode := utilsAst.CreateStmt(stmtStr) + + if info.IsAuth { + for i := 0; i < len(funcDecl.Body.List); i++ { + st := funcDecl.Body.List[i] + // 使用类型断言来检查stmt是否是一个块语句 + if blockStmt, ok := st.(*ast.BlockStmt); ok { + // 如果是,插入代码 跳出 + blockStmt.List = append(blockStmt.List, stmtNode) + break + } + } + } else { + for i := len(funcDecl.Body.List) - 1; i >= 0; i-- { + st := funcDecl.Body.List[i] + // 使用类型断言来检查stmt是否是一个块语句 + if blockStmt, ok := st.(*ast.BlockStmt); ok { + // 如果是,插入代码 跳出 + blockStmt.List = append(blockStmt.List, stmtNode) + break + } + } + } + + // 创建一个新的文件 + f, err := os.Create(tPath) + if err != nil { + return err + } + defer f.Close() + + if err := format.Node(f, fileSet, astFile); err != nil { + return err + } + return err +} + +func (s *autoCodeTemplate) addTemplateToFile(t string, info request.AutoFunc) error { + getTemplateStr, err := s.getTemplateStr(t, info) + if err != nil { + return err + } + var target string + + switch t { + case "api.go": + target = filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "api", "v1", info.Package, info.HumpPackageName+".go") + case "server.go": + target = filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "service", info.Package, info.HumpPackageName+".go") + case "api.js": + target = filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Web, "api", info.Package, info.PackageName+".js") + } + if info.IsPlugin { + switch t { + case "api.go": + target = filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", info.Package, "api", info.HumpPackageName+".go") + case "server.go": + target = filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", info.Package, "service", info.HumpPackageName+".go") + case "api.js": + target = filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Web, "plugin", info.Package, "api", info.PackageName+".js") + } + } + + // 打开文件,如果不存在则返回错误 + file, err := os.OpenFile(target, os.O_WRONLY|os.O_APPEND, 0644) + if err != nil { + return err + } + defer file.Close() + + // 写入内容 + _, err = fmt.Fprintln(file, getTemplateStr) + if err != nil { + fmt.Printf("写入文件失败: %s\n", err.Error()) + return err + } + + return nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_template_test.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_template_test.go new file mode 100644 index 000000000..09d8191dd --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/auto_code_template_test.go @@ -0,0 +1,84 @@ +package system + +import ( + "context" + "encoding/json" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "reflect" + "testing" +) + +func Test_autoCodeTemplate_Create(t *testing.T) { + type args struct { + ctx context.Context + info request.AutoCode + } + tests := []struct { + name string + args args + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + s := &autoCodeTemplate{} + if err := s.Create(tt.args.ctx, tt.args.info); (err != nil) != tt.wantErr { + t.Errorf("Create() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func Test_autoCodeTemplate_Preview(t *testing.T) { + type args struct { + ctx context.Context + info request.AutoCode + } + tests := []struct { + name string + args args + want map[string]string + wantErr bool + }{ + { + name: "测试 package", + args: args{ + ctx: context.Background(), + info: request.AutoCode{}, + }, + wantErr: false, + }, + { + name: "测试 plugin", + args: args{ + ctx: context.Background(), + info: request.AutoCode{}, + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + testJson := `{"structName":"SysUser","tableName":"sys_users","packageName":"sysUsers","package":"gva","abbreviation":"sysUsers","description":"sysUsers表","businessDB":"","autoCreateApiToSql":true,"autoCreateMenuToSql":true,"autoMigrate":true,"gvaModel":true,"autoCreateResource":false,"fields":[{"fieldName":"Uuid","fieldDesc":"用户UUID","fieldType":"string","dataType":"varchar","fieldJson":"uuid","primaryKey":false,"dataTypeLong":"191","columnName":"uuid","comment":"用户UUID","require":false,"errorText":"","clearable":true,"fieldSearchType":"","fieldIndexType":"","dictType":"","front":true,"dataSource":{"association":1,"table":"","label":"","value":""}},{"fieldName":"Username","fieldDesc":"用户登录名","fieldType":"string","dataType":"varchar","fieldJson":"username","primaryKey":false,"dataTypeLong":"191","columnName":"username","comment":"用户登录名","require":false,"errorText":"","clearable":true,"fieldSearchType":"","fieldIndexType":"","dictType":"","front":true,"dataSource":{"association":1,"table":"","label":"","value":""}},{"fieldName":"Password","fieldDesc":"用户登录密码","fieldType":"string","dataType":"varchar","fieldJson":"password","primaryKey":false,"dataTypeLong":"191","columnName":"password","comment":"用户登录密码","require":false,"errorText":"","clearable":true,"fieldSearchType":"","fieldIndexType":"","dictType":"","front":true,"dataSource":{"association":1,"table":"","label":"","value":""}},{"fieldName":"NickName","fieldDesc":"用户昵称","fieldType":"string","dataType":"varchar","fieldJson":"nickName","primaryKey":false,"dataTypeLong":"191","columnName":"nick_name","comment":"用户昵称","require":false,"errorText":"","clearable":true,"fieldSearchType":"","fieldIndexType":"","dictType":"","front":true,"dataSource":{"association":1,"table":"","label":"","value":""}},{"fieldName":"SideMode","fieldDesc":"用户侧边主题","fieldType":"string","dataType":"varchar","fieldJson":"sideMode","primaryKey":false,"dataTypeLong":"191","columnName":"side_mode","comment":"用户侧边主题","require":false,"errorText":"","clearable":true,"fieldSearchType":"","fieldIndexType":"","dictType":"","front":true,"dataSource":{"association":1,"table":"","label":"","value":""}},{"fieldName":"HeaderImg","fieldDesc":"用户头像","fieldType":"string","dataType":"varchar","fieldJson":"headerImg","primaryKey":false,"dataTypeLong":"191","columnName":"header_img","comment":"用户头像","require":false,"errorText":"","clearable":true,"fieldSearchType":"","fieldIndexType":"","dictType":"","front":true,"dataSource":{"association":1,"table":"","label":"","value":""}},{"fieldName":"BaseColor","fieldDesc":"基础颜色","fieldType":"string","dataType":"varchar","fieldJson":"baseColor","primaryKey":false,"dataTypeLong":"191","columnName":"base_color","comment":"基础颜色","require":false,"errorText":"","clearable":true,"fieldSearchType":"","fieldIndexType":"","dictType":"","front":true,"dataSource":{"association":1,"table":"","label":"","value":""}},{"fieldName":"AuthorityId","fieldDesc":"用户角色ID","fieldType":"int","dataType":"bigint","fieldJson":"authorityId","primaryKey":false,"dataTypeLong":"20","columnName":"authority_id","comment":"用户角色ID","require":false,"errorText":"","clearable":true,"fieldSearchType":"","fieldIndexType":"","dictType":"","front":true,"dataSource":{"association":1,"table":"","label":"","value":""}},{"fieldName":"Phone","fieldDesc":"用户手机号","fieldType":"string","dataType":"varchar","fieldJson":"phone","primaryKey":false,"dataTypeLong":"191","columnName":"phone","comment":"用户手机号","require":false,"errorText":"","clearable":true,"fieldSearchType":"","fieldIndexType":"","dictType":"","front":true,"dataSource":{"association":1,"table":"","label":"","value":""}},{"fieldName":"Email","fieldDesc":"用户邮箱","fieldType":"string","dataType":"varchar","fieldJson":"email","primaryKey":false,"dataTypeLong":"191","columnName":"email","comment":"用户邮箱","require":false,"errorText":"","clearable":true,"fieldSearchType":"","fieldIndexType":"","dictType":"","front":true,"dataSource":{"association":1,"table":"","label":"","value":""}},{"fieldName":"Enable","fieldDesc":"用户是否被冻结 1正常 2冻结","fieldType":"int","dataType":"bigint","fieldJson":"enable","primaryKey":false,"dataTypeLong":"19","columnName":"enable","comment":"用户是否被冻结 1正常 2冻结","require":false,"errorText":"","clearable":true,"fieldSearchType":"","fieldIndexType":"","dictType":"","front":true,"dataSource":{"association":1,"table":"","label":"","value":""}}],"humpPackageName":"sys_users"}` + err := json.Unmarshal([]byte(testJson), &tt.args.info) + if err != nil { + t.Error(err) + return + } + err = tt.args.info.Pretreatment() + if err != nil { + t.Error(err) + return + } + got, err := AutoCodeTemplate.Preview(tt.args.ctx, tt.args.info) + if (err != nil) != tt.wantErr { + t.Errorf("Preview() error = %+v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("Preview() got = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/enter.go new file mode 100644 index 000000000..634cd0017 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/enter.go @@ -0,0 +1,24 @@ +package system + +type ServiceGroup struct { + JwtService + ApiService + MenuService + UserService + CasbinService + InitDBService + AutoCodeService + BaseMenuService + AuthorityService + DictionaryService + SystemConfigService + OperationRecordService + DictionaryDetailService + AuthorityBtnService + SysExportTemplateService + SysParamsService + AutoCodePlugin autoCodePlugin + AutoCodePackage autoCodePackage + AutoCodeHistory autoCodeHistory + AutoCodeTemplate autoCodeTemplate +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/jwt_black_list.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/jwt_black_list.go new file mode 100644 index 000000000..78ae38a7e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/jwt_black_list.go @@ -0,0 +1,84 @@ +package system + +import ( + "context" + + "go.uber.org/zap" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/utils" +) + +type JwtService struct{} + +var JwtServiceApp = new(JwtService) + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: JsonInBlacklist +//@description: 拉黑jwt +//@param: jwtList model.JwtBlacklist +//@return: err error + +func (jwtService *JwtService) JsonInBlacklist(jwtList system.JwtBlacklist) (err error) { + err = global.GVA_DB.Create(&jwtList).Error + if err != nil { + return + } + global.BlackCache.SetDefault(jwtList.Jwt, struct{}{}) + return +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: IsBlacklist +//@description: 判断JWT是否在黑名单内部 +//@param: jwt string +//@return: bool + +func (jwtService *JwtService) IsBlacklist(jwt string) bool { + _, ok := global.BlackCache.Get(jwt) + return ok + // err := global.GVA_DB.Where("jwt = ?", jwt).First(&system.JwtBlacklist{}).Error + // isNotFound := errors.Is(err, gorm.ErrRecordNotFound) + // return !isNotFound +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetRedisJWT +//@description: 从redis取jwt +//@param: userName string +//@return: redisJWT string, err error + +func (jwtService *JwtService) GetRedisJWT(userName string) (redisJWT string, err error) { + redisJWT, err = global.GVA_REDIS.Get(context.Background(), userName).Result() + return redisJWT, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: SetRedisJWT +//@description: jwt存入redis并设置过期时间 +//@param: jwt string, userName string +//@return: err error + +func (jwtService *JwtService) SetRedisJWT(jwt string, userName string) (err error) { + // 此处过期时间等于jwt过期时间 + dr, err := utils.ParseDuration(global.GVA_CONFIG.JWT.ExpiresTime) + if err != nil { + return err + } + timer := dr + err = global.GVA_REDIS.Set(context.Background(), userName, jwt, timer).Err() + return err +} + +func LoadAll() { + var data []string + err := global.GVA_DB.Model(&system.JwtBlacklist{}).Select("jwt").Find(&data).Error + if err != nil { + global.GVA_LOG.Error("加载数据库jwt黑名单失败!", zap.Error(err)) + return + } + for i := 0; i < len(data); i++ { + global.BlackCache.SetDefault(data[i], struct{}{}) + } // jwt黑名单 加入 BlackCache 中 +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_api.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_api.go new file mode 100644 index 000000000..92c995109 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_api.go @@ -0,0 +1,325 @@ +package system + +import ( + "errors" + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + systemRes "github.com/flipped-aurora/gin-vue-admin/server/model/system/response" + "gorm.io/gorm" + "strings" +) + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: CreateApi +//@description: 新增基础api +//@param: api model.SysApi +//@return: err error + +type ApiService struct{} + +var ApiServiceApp = new(ApiService) + +func (apiService *ApiService) CreateApi(api system.SysApi) (err error) { + if !errors.Is(global.GVA_DB.Where("path = ? AND method = ?", api.Path, api.Method).First(&system.SysApi{}).Error, gorm.ErrRecordNotFound) { + return errors.New("存在相同api") + } + return global.GVA_DB.Create(&api).Error +} + +func (apiService *ApiService) GetApiGroups() (groups []string, groupApiMap map[string]string, err error) { + var apis []system.SysApi + err = global.GVA_DB.Find(&apis).Error + if err != nil { + return + } + groupApiMap = make(map[string]string, 0) + for i := range apis { + pathArr := strings.Split(apis[i].Path, "/") + newGroup := true + for i2 := range groups { + if groups[i2] == apis[i].ApiGroup { + newGroup = false + } + } + if newGroup { + groups = append(groups, apis[i].ApiGroup) + } + groupApiMap[pathArr[1]] = apis[i].ApiGroup + } + return +} + +func (apiService *ApiService) SyncApi() (newApis, deleteApis, ignoreApis []system.SysApi, err error) { + newApis = make([]system.SysApi, 0) + deleteApis = make([]system.SysApi, 0) + ignoreApis = make([]system.SysApi, 0) + var apis []system.SysApi + err = global.GVA_DB.Find(&apis).Error + if err != nil { + return + } + var ignores []system.SysIgnoreApi + err = global.GVA_DB.Find(&ignores).Error + if err != nil { + return + } + + for i := range ignores { + ignoreApis = append(ignoreApis, system.SysApi{ + Path: ignores[i].Path, + Description: "", + ApiGroup: "", + Method: ignores[i].Method, + }) + } + + var cacheApis []system.SysApi + for i := range global.GVA_ROUTERS { + ignoresFlag := false + for j := range ignores { + if ignores[j].Path == global.GVA_ROUTERS[i].Path && ignores[j].Method == global.GVA_ROUTERS[i].Method { + ignoresFlag = true + } + } + if !ignoresFlag { + cacheApis = append(cacheApis, system.SysApi{ + Path: global.GVA_ROUTERS[i].Path, + Method: global.GVA_ROUTERS[i].Method, + }) + } + } + + //对比数据库中的api和内存中的api,如果数据库中的api不存在于内存中,则把api放入删除数组,如果内存中的api不存在于数据库中,则把api放入新增数组 + for i := range cacheApis { + var flag bool + // 如果存在于内存不存在于api数组中 + for j := range apis { + if cacheApis[i].Path == apis[j].Path && cacheApis[i].Method == apis[j].Method { + flag = true + } + } + if !flag { + newApis = append(newApis, system.SysApi{ + Path: cacheApis[i].Path, + Description: "", + ApiGroup: "", + Method: cacheApis[i].Method, + }) + } + } + + for i := range apis { + var flag bool + // 如果存在于api数组不存在于内存 + for j := range cacheApis { + if cacheApis[j].Path == apis[i].Path && cacheApis[j].Method == apis[i].Method { + flag = true + } + } + if !flag { + deleteApis = append(deleteApis, apis[i]) + } + } + return +} + +func (apiService *ApiService) IgnoreApi(ignoreApi system.SysIgnoreApi) (err error) { + if ignoreApi.Flag { + return global.GVA_DB.Create(&ignoreApi).Error + } + return global.GVA_DB.Unscoped().Delete(&ignoreApi, "path = ? AND method = ?", ignoreApi.Path, ignoreApi.Method).Error +} + +func (apiService *ApiService) EnterSyncApi(syncApis systemRes.SysSyncApis) (err error) { + return global.GVA_DB.Transaction(func(tx *gorm.DB) error { + var txErr error + if syncApis.NewApis != nil && len(syncApis.NewApis) > 0 { + txErr = tx.Create(&syncApis.NewApis).Error + if txErr != nil { + return txErr + } + } + for i := range syncApis.DeleteApis { + CasbinServiceApp.ClearCasbin(1, syncApis.DeleteApis[i].Path, syncApis.DeleteApis[i].Method) + txErr = tx.Delete(&system.SysApi{}, "path = ? AND method = ?", syncApis.DeleteApis[i].Path, syncApis.DeleteApis[i].Method).Error + if txErr != nil { + return txErr + } + } + return nil + }) +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: DeleteApi +//@description: 删除基础api +//@param: api model.SysApi +//@return: err error + +func (apiService *ApiService) DeleteApi(api system.SysApi) (err error) { + var entity system.SysApi + err = global.GVA_DB.First(&entity, "id = ?", api.ID).Error // 根据id查询api记录 + if errors.Is(err, gorm.ErrRecordNotFound) { // api记录不存在 + return err + } + err = global.GVA_DB.Delete(&entity).Error + if err != nil { + return err + } + CasbinServiceApp.ClearCasbin(1, entity.Path, entity.Method) + return nil +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetAPIInfoList +//@description: 分页获取数据, +//@param: api model.SysApi, info request.PageInfo, order string, desc bool +//@return: list interface{}, total int64, err error + +func (apiService *ApiService) GetAPIInfoList(api system.SysApi, info request.PageInfo, order string, desc bool) (list interface{}, total int64, err error) { + limit := info.PageSize + offset := info.PageSize * (info.Page - 1) + db := global.GVA_DB.Model(&system.SysApi{}) + var apiList []system.SysApi + + if api.Path != "" { + db = db.Where("path LIKE ?", "%"+api.Path+"%") + } + + if api.Description != "" { + db = db.Where("description LIKE ?", "%"+api.Description+"%") + } + + if api.Method != "" { + db = db.Where("method = ?", api.Method) + } + + if api.ApiGroup != "" { + db = db.Where("api_group = ?", api.ApiGroup) + } + + err = db.Count(&total).Error + + if err != nil { + return apiList, total, err + } + + db = db.Limit(limit).Offset(offset) + OrderStr := "id desc" + if order != "" { + orderMap := make(map[string]bool, 5) + orderMap["id"] = true + orderMap["path"] = true + orderMap["api_group"] = true + orderMap["description"] = true + orderMap["method"] = true + if !orderMap[order] { + err = fmt.Errorf("非法的排序字段: %v", order) + return apiList, total, err + } + OrderStr = order + if desc { + OrderStr = order + " desc" + } + } + err = db.Order(OrderStr).Find(&apiList).Error + return apiList, total, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetAllApis +//@description: 获取所有的api +//@return: apis []model.SysApi, err error + +func (apiService *ApiService) GetAllApis(authorityID uint) (apis []system.SysApi, err error) { + parentAuthorityID, err := AuthorityServiceApp.GetParentAuthorityID(authorityID) + if err != nil { + return nil, err + } + err = global.GVA_DB.Order("id desc").Find(&apis).Error + if parentAuthorityID == 0 || !global.GVA_CONFIG.System.UseStrictAuth { + return + } + paths := CasbinServiceApp.GetPolicyPathByAuthorityId(authorityID) + // 挑选 apis里面的path和method也在paths里面的api + var authApis []system.SysApi + for i := range apis { + for j := range paths { + if paths[j].Path == apis[i].Path && paths[j].Method == apis[i].Method { + authApis = append(authApis, apis[i]) + } + } + } + return authApis, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetApiById +//@description: 根据id获取api +//@param: id float64 +//@return: api model.SysApi, err error + +func (apiService *ApiService) GetApiById(id int) (api system.SysApi, err error) { + err = global.GVA_DB.First(&api, "id = ?", id).Error + return +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: UpdateApi +//@description: 根据id更新api +//@param: api model.SysApi +//@return: err error + +func (apiService *ApiService) UpdateApi(api system.SysApi) (err error) { + var oldA system.SysApi + err = global.GVA_DB.First(&oldA, "id = ?", api.ID).Error + if oldA.Path != api.Path || oldA.Method != api.Method { + var duplicateApi system.SysApi + if ferr := global.GVA_DB.First(&duplicateApi, "path = ? AND method = ?", api.Path, api.Method).Error; ferr != nil { + if !errors.Is(ferr, gorm.ErrRecordNotFound) { + return ferr + } + } else { + if duplicateApi.ID != api.ID { + return errors.New("存在相同api路径") + } + } + + } + if err != nil { + return err + } + + err = CasbinServiceApp.UpdateCasbinApi(oldA.Path, api.Path, oldA.Method, api.Method) + if err != nil { + return err + } + + return global.GVA_DB.Save(&api).Error +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: DeleteApisByIds +//@description: 删除选中API +//@param: apis []model.SysApi +//@return: err error + +func (apiService *ApiService) DeleteApisByIds(ids request.IdsReq) (err error) { + return global.GVA_DB.Transaction(func(tx *gorm.DB) error { + var apis []system.SysApi + err = tx.Find(&apis, "id in ?", ids.Ids).Error + if err != nil { + return err + } + err = tx.Delete(&[]system.SysApi{}, "id in ?", ids.Ids).Error + if err != nil { + return err + } + for _, sysApi := range apis { + CasbinServiceApp.ClearCasbin(1, sysApi.Path, sysApi.Method) + } + return err + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_authority.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_authority.go new file mode 100644 index 000000000..087da6a4e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_authority.go @@ -0,0 +1,327 @@ +package system + +import ( + "errors" + "strconv" + + systemReq "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/response" + "gorm.io/gorm" +) + +var ErrRoleExistence = errors.New("存在相同角色id") + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: CreateAuthority +//@description: 创建一个角色 +//@param: auth model.SysAuthority +//@return: authority system.SysAuthority, err error + +type AuthorityService struct{} + +var AuthorityServiceApp = new(AuthorityService) + +func (authorityService *AuthorityService) CreateAuthority(auth system.SysAuthority) (authority system.SysAuthority, err error) { + + if err = global.GVA_DB.Where("authority_id = ?", auth.AuthorityId).First(&system.SysAuthority{}).Error; !errors.Is(err, gorm.ErrRecordNotFound) { + return auth, ErrRoleExistence + } + + e := global.GVA_DB.Transaction(func(tx *gorm.DB) error { + + if err = tx.Create(&auth).Error; err != nil { + return err + } + + auth.SysBaseMenus = systemReq.DefaultMenu() + if err = tx.Model(&auth).Association("SysBaseMenus").Replace(&auth.SysBaseMenus); err != nil { + return err + } + casbinInfos := systemReq.DefaultCasbin() + authorityId := strconv.Itoa(int(auth.AuthorityId)) + rules := [][]string{} + for _, v := range casbinInfos { + rules = append(rules, []string{authorityId, v.Path, v.Method}) + } + return CasbinServiceApp.AddPolicies(tx, rules) + }) + + return auth, e +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: CopyAuthority +//@description: 复制一个角色 +//@param: copyInfo response.SysAuthorityCopyResponse +//@return: authority system.SysAuthority, err error + +func (authorityService *AuthorityService) CopyAuthority(adminAuthorityID uint, copyInfo response.SysAuthorityCopyResponse) (authority system.SysAuthority, err error) { + var authorityBox system.SysAuthority + if !errors.Is(global.GVA_DB.Where("authority_id = ?", copyInfo.Authority.AuthorityId).First(&authorityBox).Error, gorm.ErrRecordNotFound) { + return authority, ErrRoleExistence + } + copyInfo.Authority.Children = []system.SysAuthority{} + menus, err := MenuServiceApp.GetMenuAuthority(&request.GetAuthorityId{AuthorityId: copyInfo.OldAuthorityId}) + if err != nil { + return + } + var baseMenu []system.SysBaseMenu + for _, v := range menus { + intNum := v.MenuId + v.SysBaseMenu.ID = uint(intNum) + baseMenu = append(baseMenu, v.SysBaseMenu) + } + copyInfo.Authority.SysBaseMenus = baseMenu + err = global.GVA_DB.Create(©Info.Authority).Error + if err != nil { + return + } + + var btns []system.SysAuthorityBtn + + err = global.GVA_DB.Find(&btns, "authority_id = ?", copyInfo.OldAuthorityId).Error + if err != nil { + return + } + if len(btns) > 0 { + for i := range btns { + btns[i].AuthorityId = copyInfo.Authority.AuthorityId + } + err = global.GVA_DB.Create(&btns).Error + + if err != nil { + return + } + } + paths := CasbinServiceApp.GetPolicyPathByAuthorityId(copyInfo.OldAuthorityId) + err = CasbinServiceApp.UpdateCasbin(adminAuthorityID, copyInfo.Authority.AuthorityId, paths) + if err != nil { + _ = authorityService.DeleteAuthority(©Info.Authority) + } + return copyInfo.Authority, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: UpdateAuthority +//@description: 更改一个角色 +//@param: auth model.SysAuthority +//@return: authority system.SysAuthority, err error + +func (authorityService *AuthorityService) UpdateAuthority(auth system.SysAuthority) (authority system.SysAuthority, err error) { + var oldAuthority system.SysAuthority + err = global.GVA_DB.Where("authority_id = ?", auth.AuthorityId).First(&oldAuthority).Error + if err != nil { + global.GVA_LOG.Debug(err.Error()) + return system.SysAuthority{}, errors.New("查询角色数据失败") + } + err = global.GVA_DB.Model(&oldAuthority).Updates(&auth).Error + return auth, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: DeleteAuthority +//@description: 删除角色 +//@param: auth *model.SysAuthority +//@return: err error + +func (authorityService *AuthorityService) DeleteAuthority(auth *system.SysAuthority) error { + if errors.Is(global.GVA_DB.Debug().Preload("Users").First(&auth).Error, gorm.ErrRecordNotFound) { + return errors.New("该角色不存在") + } + if len(auth.Users) != 0 { + return errors.New("此角色有用户正在使用禁止删除") + } + if !errors.Is(global.GVA_DB.Where("authority_id = ?", auth.AuthorityId).First(&system.SysUser{}).Error, gorm.ErrRecordNotFound) { + return errors.New("此角色有用户正在使用禁止删除") + } + if !errors.Is(global.GVA_DB.Where("parent_id = ?", auth.AuthorityId).First(&system.SysAuthority{}).Error, gorm.ErrRecordNotFound) { + return errors.New("此角色存在子角色不允许删除") + } + + return global.GVA_DB.Transaction(func(tx *gorm.DB) error { + var err error + if err = tx.Preload("SysBaseMenus").Preload("DataAuthorityId").Where("authority_id = ?", auth.AuthorityId).First(auth).Unscoped().Delete(auth).Error; err != nil { + return err + } + + if len(auth.SysBaseMenus) > 0 { + if err = tx.Model(auth).Association("SysBaseMenus").Delete(auth.SysBaseMenus); err != nil { + return err + } + // err = db.Association("SysBaseMenus").Delete(&auth) + } + if len(auth.DataAuthorityId) > 0 { + if err = tx.Model(auth).Association("DataAuthorityId").Delete(auth.DataAuthorityId); err != nil { + return err + } + } + + if err = tx.Delete(&system.SysUserAuthority{}, "sys_authority_authority_id = ?", auth.AuthorityId).Error; err != nil { + return err + } + if err = tx.Where("authority_id = ?", auth.AuthorityId).Delete(&[]system.SysAuthorityBtn{}).Error; err != nil { + return err + } + + authorityId := strconv.Itoa(int(auth.AuthorityId)) + + if err = CasbinServiceApp.RemoveFilteredPolicy(tx, authorityId); err != nil { + return err + } + + return nil + }) +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetAuthorityInfoList +//@description: 分页获取数据 +//@param: info request.PageInfo +//@return: list interface{}, total int64, err error + +func (authorityService *AuthorityService) GetAuthorityInfoList(authorityID uint) (list []system.SysAuthority, err error) { + var authority system.SysAuthority + err = global.GVA_DB.Where("authority_id = ?", authorityID).First(&authority).Error + if err != nil { + return nil, err + } + var authorities []system.SysAuthority + db := global.GVA_DB.Model(&system.SysAuthority{}) + if global.GVA_CONFIG.System.UseStrictAuth { + // 当开启了严格树形结构后 + if *authority.ParentId == 0 { + // 只有顶级角色可以修改自己的权限和以下权限 + err = db.Preload("DataAuthorityId").Where("authority_id = ?", authorityID).Find(&authorities).Error + } else { + // 非顶级角色只能修改以下权限 + err = db.Debug().Preload("DataAuthorityId").Where("parent_id = ?", authorityID).Find(&authorities).Error + } + } else { + err = db.Preload("DataAuthorityId").Where("parent_id = ?", "0").Find(&authorities).Error + } + + for k := range authorities { + err = authorityService.findChildrenAuthority(&authorities[k]) + } + return authorities, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetAuthorityInfoList +//@description: 分页获取数据 +//@param: info request.PageInfo +//@return: list interface{}, total int64, err error + +func (authorityService *AuthorityService) GetStructAuthorityList(authorityID uint) (list []uint, err error) { + var auth system.SysAuthority + _ = global.GVA_DB.First(&auth, "authority_id = ?", authorityID).Error + var authorities []system.SysAuthority + err = global.GVA_DB.Preload("DataAuthorityId").Where("parent_id = ?", authorityID).Find(&authorities).Error + if len(authorities) > 0 { + for k := range authorities { + list = append(list, authorities[k].AuthorityId) + _, err = authorityService.GetStructAuthorityList(authorities[k].AuthorityId) + } + } + if *auth.ParentId == 0 { + list = append(list, authorityID) + } + return list, err +} + +func (authorityService *AuthorityService) CheckAuthorityIDAuth(authorityID, targetID uint) (err error) { + if !global.GVA_CONFIG.System.UseStrictAuth { + return nil + } + authIDS, err := authorityService.GetStructAuthorityList(authorityID) + if err != nil { + return err + } + hasAuth := false + for _, v := range authIDS { + if v == targetID { + hasAuth = true + break + } + } + if !hasAuth { + return errors.New("您提交的角色ID不合法") + } + return nil +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetAuthorityInfo +//@description: 获取所有角色信息 +//@param: auth model.SysAuthority +//@return: sa system.SysAuthority, err error + +func (authorityService *AuthorityService) GetAuthorityInfo(auth system.SysAuthority) (sa system.SysAuthority, err error) { + err = global.GVA_DB.Preload("DataAuthorityId").Where("authority_id = ?", auth.AuthorityId).First(&sa).Error + return sa, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: SetDataAuthority +//@description: 设置角色资源权限 +//@param: auth model.SysAuthority +//@return: error + +func (authorityService *AuthorityService) SetDataAuthority(adminAuthorityID uint, auth system.SysAuthority) error { + var checkIDs []uint + checkIDs = append(checkIDs, auth.AuthorityId) + for i := range auth.DataAuthorityId { + checkIDs = append(checkIDs, auth.DataAuthorityId[i].AuthorityId) + } + + for i := range checkIDs { + err := authorityService.CheckAuthorityIDAuth(adminAuthorityID, checkIDs[i]) + if err != nil { + return err + } + } + + var s system.SysAuthority + global.GVA_DB.Preload("DataAuthorityId").First(&s, "authority_id = ?", auth.AuthorityId) + err := global.GVA_DB.Model(&s).Association("DataAuthorityId").Replace(&auth.DataAuthorityId) + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: SetMenuAuthority +//@description: 菜单与角色绑定 +//@param: auth *model.SysAuthority +//@return: error + +func (authorityService *AuthorityService) SetMenuAuthority(auth *system.SysAuthority) error { + var s system.SysAuthority + global.GVA_DB.Preload("SysBaseMenus").First(&s, "authority_id = ?", auth.AuthorityId) + err := global.GVA_DB.Model(&s).Association("SysBaseMenus").Replace(&auth.SysBaseMenus) + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: findChildrenAuthority +//@description: 查询子角色 +//@param: authority *model.SysAuthority +//@return: err error + +func (authorityService *AuthorityService) findChildrenAuthority(authority *system.SysAuthority) (err error) { + err = global.GVA_DB.Preload("DataAuthorityId").Where("parent_id = ?", authority.AuthorityId).Find(&authority.Children).Error + if len(authority.Children) > 0 { + for k := range authority.Children { + err = authorityService.findChildrenAuthority(&authority.Children[k]) + } + } + return err +} + +func (authorityService *AuthorityService) GetParentAuthorityID(authorityID uint) (parentID uint, err error) { + var authority system.SysAuthority + err = global.GVA_DB.Where("authority_id = ?", authorityID).First(&authority).Error + return *authority.ParentId, err +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_authority_btn.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_authority_btn.go new file mode 100644 index 000000000..1cc8f1fc7 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_authority_btn.go @@ -0,0 +1,60 @@ +package system + +import ( + "errors" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/response" + "gorm.io/gorm" +) + +type AuthorityBtnService struct{} + +var AuthorityBtnServiceApp = new(AuthorityBtnService) + +func (a *AuthorityBtnService) GetAuthorityBtn(req request.SysAuthorityBtnReq) (res response.SysAuthorityBtnRes, err error) { + var authorityBtn []system.SysAuthorityBtn + err = global.GVA_DB.Find(&authorityBtn, "authority_id = ? and sys_menu_id = ?", req.AuthorityId, req.MenuID).Error + if err != nil { + return + } + var selected []uint + for _, v := range authorityBtn { + selected = append(selected, v.SysBaseMenuBtnID) + } + res.Selected = selected + return res, err +} + +func (a *AuthorityBtnService) SetAuthorityBtn(req request.SysAuthorityBtnReq) (err error) { + return global.GVA_DB.Transaction(func(tx *gorm.DB) error { + var authorityBtn []system.SysAuthorityBtn + err = tx.Delete(&[]system.SysAuthorityBtn{}, "authority_id = ? and sys_menu_id = ?", req.AuthorityId, req.MenuID).Error + if err != nil { + return err + } + for _, v := range req.Selected { + authorityBtn = append(authorityBtn, system.SysAuthorityBtn{ + AuthorityId: req.AuthorityId, + SysMenuID: req.MenuID, + SysBaseMenuBtnID: v, + }) + } + if len(authorityBtn) > 0 { + err = tx.Create(&authorityBtn).Error + } + if err != nil { + return err + } + return err + }) +} + +func (a *AuthorityBtnService) CanRemoveAuthorityBtn(ID string) (err error) { + fErr := global.GVA_DB.First(&system.SysAuthorityBtn{}, "sys_base_menu_btn_id = ?", ID).Error + if errors.Is(fErr, gorm.ErrRecordNotFound) { + return nil + } + return errors.New("此按钮正在被使用无法删除") +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_interface.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_interface.go new file mode 100644 index 000000000..7939f14c1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_interface.go @@ -0,0 +1,55 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/response" +) + +type AutoCodeService struct{} + +type Database interface { + GetDB(businessDB string) (data []response.Db, err error) + GetTables(businessDB string, dbName string) (data []response.Table, err error) + GetColumn(businessDB string, tableName string, dbName string) (data []response.Column, err error) +} + +func (autoCodeService *AutoCodeService) Database(businessDB string) Database { + + if businessDB == "" { + switch global.GVA_CONFIG.System.DbType { + case "mysql": + return AutoCodeMysql + case "pgsql": + return AutoCodePgsql + case "mssql": + return AutoCodeMssql + case "oracle": + return AutoCodeOracle + case "sqlite": + return AutoCodeSqlite + default: + return AutoCodeMysql + } + } else { + for _, info := range global.GVA_CONFIG.DBList { + if info.AliasName == businessDB { + switch info.Type { + case "mysql": + return AutoCodeMysql + case "mssql": + return AutoCodeMssql + case "pgsql": + return AutoCodePgsql + case "oracle": + return AutoCodeOracle + case "sqlite": + return AutoCodeSqlite + default: + return AutoCodeMysql + } + } + } + return AutoCodeMysql + } + +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_mssql.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_mssql.go new file mode 100644 index 000000000..68a916054 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_mssql.go @@ -0,0 +1,83 @@ +package system + +import ( + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/response" +) + +var AutoCodeMssql = new(autoCodeMssql) + +type autoCodeMssql struct{} + +// GetDB 获取数据库的所有数据库名 +// Author [piexlmax](https://github.com/piexlmax) +// Author [SliverHorn](https://github.com/SliverHorn) +func (s *autoCodeMssql) GetDB(businessDB string) (data []response.Db, err error) { + var entities []response.Db + sql := "select name AS 'database' from sysdatabases;" + if businessDB == "" { + err = global.GVA_DB.Raw(sql).Scan(&entities).Error + } else { + err = global.GVA_DBList[businessDB].Raw(sql).Scan(&entities).Error + } + return entities, err +} + +// GetTables 获取数据库的所有表名 +// Author [piexlmax](https://github.com/piexlmax) +// Author [SliverHorn](https://github.com/SliverHorn) +func (s *autoCodeMssql) GetTables(businessDB string, dbName string) (data []response.Table, err error) { + var entities []response.Table + + sql := fmt.Sprintf(`select name as 'table_name' from %s.DBO.sysobjects where xtype='U'`, dbName) + if businessDB == "" { + err = global.GVA_DB.Raw(sql).Scan(&entities).Error + } else { + err = global.GVA_DBList[businessDB].Raw(sql).Scan(&entities).Error + } + + return entities, err +} + +// GetColumn 获取指定数据库和指定数据表的所有字段名,类型值等 +// Author [piexlmax](https://github.com/piexlmax) +// Author [SliverHorn](https://github.com/SliverHorn) +func (s *autoCodeMssql) GetColumn(businessDB string, tableName string, dbName string) (data []response.Column, err error) { + var entities []response.Column + sql := fmt.Sprintf(` +SELECT + sc.name AS column_name, + st.name AS data_type, + sc.max_length AS data_type_long, + CASE + WHEN pk.object_id IS NOT NULL THEN 1 + ELSE 0 + END AS primary_key, + sc.column_id +FROM + %s.sys.columns sc +JOIN + sys.types st ON sc.user_type_id=st.user_type_id +LEFT JOIN + %s.sys.objects so ON so.name='%s' AND so.type='U' +LEFT JOIN + %s.sys.indexes si ON si.object_id = so.object_id AND si.is_primary_key = 1 +LEFT JOIN + %s.sys.index_columns sic ON sic.object_id = si.object_id AND sic.index_id = si.index_id AND sic.column_id = sc.column_id +LEFT JOIN + %s.sys.key_constraints pk ON pk.object_id = si.object_id +WHERE + st.is_user_defined=0 AND sc.object_id = so.object_id +ORDER BY + sc.column_id +`, dbName, dbName, tableName, dbName, dbName, dbName) + + if businessDB == "" { + err = global.GVA_DB.Raw(sql).Scan(&entities).Error + } else { + err = global.GVA_DBList[businessDB].Raw(sql).Scan(&entities).Error + } + + return entities, err +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_mysql.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_mysql.go new file mode 100644 index 000000000..c7f0f1bc4 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_mysql.go @@ -0,0 +1,83 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/response" +) + +var AutoCodeMysql = new(autoCodeMysql) + +type autoCodeMysql struct{} + +// GetDB 获取数据库的所有数据库名 +// Author [piexlmax](https://github.com/piexlmax) +// Author [SliverHorn](https://github.com/SliverHorn) +func (s *autoCodeMysql) GetDB(businessDB string) (data []response.Db, err error) { + var entities []response.Db + sql := "SELECT SCHEMA_NAME AS `database` FROM INFORMATION_SCHEMA.SCHEMATA;" + if businessDB == "" { + err = global.GVA_DB.Raw(sql).Scan(&entities).Error + } else { + err = global.GVA_DBList[businessDB].Raw(sql).Scan(&entities).Error + } + return entities, err +} + +// GetTables 获取数据库的所有表名 +// Author [piexlmax](https://github.com/piexlmax) +// Author [SliverHorn](https://github.com/SliverHorn) +func (s *autoCodeMysql) GetTables(businessDB string, dbName string) (data []response.Table, err error) { + var entities []response.Table + sql := `select table_name as table_name from information_schema.tables where table_schema = ?` + if businessDB == "" { + err = global.GVA_DB.Raw(sql, dbName).Scan(&entities).Error + } else { + err = global.GVA_DBList[businessDB].Raw(sql, dbName).Scan(&entities).Error + } + + return entities, err +} + +// GetColumn 获取指定数据库和指定数据表的所有字段名,类型值等 +// Author [piexlmax](https://github.com/piexlmax) +// Author [SliverHorn](https://github.com/SliverHorn) +func (s *autoCodeMysql) GetColumn(businessDB string, tableName string, dbName string) (data []response.Column, err error) { + var entities []response.Column + sql := ` + SELECT + c.COLUMN_NAME column_name, + c.DATA_TYPE data_type, + CASE c.DATA_TYPE + WHEN 'longtext' THEN c.CHARACTER_MAXIMUM_LENGTH + WHEN 'varchar' THEN c.CHARACTER_MAXIMUM_LENGTH + WHEN 'double' THEN CONCAT_WS(',', c.NUMERIC_PRECISION, c.NUMERIC_SCALE) + WHEN 'decimal' THEN CONCAT_WS(',', c.NUMERIC_PRECISION, c.NUMERIC_SCALE) + WHEN 'int' THEN c.NUMERIC_PRECISION + WHEN 'bigint' THEN c.NUMERIC_PRECISION + ELSE '' + END AS data_type_long, + c.COLUMN_COMMENT column_comment, + CASE WHEN kcu.COLUMN_NAME IS NOT NULL THEN 1 ELSE 0 END AS primary_key, + c.ORDINAL_POSITION +FROM + INFORMATION_SCHEMA.COLUMNS c +LEFT JOIN + INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu +ON + c.TABLE_SCHEMA = kcu.TABLE_SCHEMA + AND c.TABLE_NAME = kcu.TABLE_NAME + AND c.COLUMN_NAME = kcu.COLUMN_NAME + AND kcu.CONSTRAINT_NAME = 'PRIMARY' +WHERE + c.TABLE_NAME = ? + AND c.TABLE_SCHEMA = ? +ORDER BY + c.ORDINAL_POSITION;` + if businessDB == "" { + err = global.GVA_DB.Raw(sql, tableName, dbName).Scan(&entities).Error + } else { + err = global.GVA_DBList[businessDB].Raw(sql, tableName, dbName).Scan(&entities).Error + } + + return entities, err +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_oracle.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_oracle.go new file mode 100644 index 000000000..3cdb362e9 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_oracle.go @@ -0,0 +1,72 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/response" +) + +var AutoCodeOracle = new(autoCodeOracle) + +type autoCodeOracle struct{} + +// GetDB 获取数据库的所有数据库名 +// Author [piexlmax](https://github.com/piexlmax) +// Author [SliverHorn](https://github.com/SliverHorn) +func (s *autoCodeOracle) GetDB(businessDB string) (data []response.Db, err error) { + var entities []response.Db + sql := `SELECT lower(username) AS "database" FROM all_users` + err = global.GVA_DBList[businessDB].Raw(sql).Scan(&entities).Error + return entities, err +} + +// GetTables 获取数据库的所有表名 +// Author [piexlmax](https://github.com/piexlmax) +// Author [SliverHorn](https://github.com/SliverHorn) +func (s *autoCodeOracle) GetTables(businessDB string, dbName string) (data []response.Table, err error) { + var entities []response.Table + sql := `select lower(table_name) as "table_name" from all_tables where lower(owner) = ?` + + err = global.GVA_DBList[businessDB].Raw(sql, dbName).Scan(&entities).Error + return entities, err +} + +// GetColumn 获取指定数据库和指定数据表的所有字段名,类型值等 +// Author [piexlmax](https://github.com/piexlmax) +// Author [SliverHorn](https://github.com/SliverHorn) +func (s *autoCodeOracle) GetColumn(businessDB string, tableName string, dbName string) (data []response.Column, err error) { + var entities []response.Column + sql := ` + SELECT + lower(a.COLUMN_NAME) as "column_name", + (CASE WHEN a.DATA_TYPE = 'NUMBER' AND a.DATA_SCALE=0 THEN 'int' else lower(a.DATA_TYPE) end) as "data_type", + (CASE WHEN a.DATA_TYPE = 'NUMBER' THEN a.DATA_PRECISION else a.DATA_LENGTH end) as "data_type_long", + b.COMMENTS as "column_comment", + (CASE WHEN pk.COLUMN_NAME IS NOT NULL THEN 1 ELSE 0 END) as "primary_key", + a.COLUMN_ID +FROM + all_tab_columns a +JOIN + all_col_comments b ON a.OWNER = b.OWNER AND a.TABLE_NAME = b.TABLE_NAME AND a.COLUMN_NAME = b.COLUMN_NAME +LEFT JOIN + ( + SELECT + acc.OWNER, + acc.TABLE_NAME, + acc.COLUMN_NAME + FROM + all_cons_columns acc + JOIN + all_constraints ac ON acc.OWNER = ac.OWNER AND acc.CONSTRAINT_NAME = ac.CONSTRAINT_NAME + WHERE + ac.CONSTRAINT_TYPE = 'P' + ) pk ON a.OWNER = pk.OWNER AND a.TABLE_NAME = pk.TABLE_NAME AND a.COLUMN_NAME = pk.COLUMN_NAME +WHERE + lower(a.table_name) = ? + AND lower(a.OWNER) = ? +ORDER BY + a.COLUMN_ID; +` + + err = global.GVA_DBList[businessDB].Raw(sql, tableName, dbName).Scan(&entities).Error + return entities, err +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_pgsql.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_pgsql.go new file mode 100644 index 000000000..fae16fb95 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_pgsql.go @@ -0,0 +1,135 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/response" +) + +var AutoCodePgsql = new(autoCodePgsql) + +type autoCodePgsql struct{} + +// GetDB 获取数据库的所有数据库名 +// Author [piexlmax](https://github.com/piexlmax) +// Author [SliverHorn](https://github.com/SliverHorn) +func (a *autoCodePgsql) GetDB(businessDB string) (data []response.Db, err error) { + var entities []response.Db + sql := `SELECT datname as database FROM pg_database WHERE datistemplate = false` + if businessDB == "" { + err = global.GVA_DB.Raw(sql).Scan(&entities).Error + } else { + err = global.GVA_DBList[businessDB].Raw(sql).Scan(&entities).Error + } + + return entities, err +} + +// GetTables 获取数据库的所有表名 +// Author [piexlmax](https://github.com/piexlmax) +// Author [SliverHorn](https://github.com/SliverHorn) +func (a *autoCodePgsql) GetTables(businessDB string, dbName string) (data []response.Table, err error) { + var entities []response.Table + sql := `select table_name as table_name from information_schema.tables where table_catalog = ? and table_schema = ?` + + db := global.GVA_DB + if businessDB != "" { + db = global.GVA_DBList[businessDB] + } + + err = db.Raw(sql, dbName, "public").Scan(&entities).Error + return entities, err +} + +// GetColumn 获取指定数据库和指定数据表的所有字段名,类型值等 +// Author [piexlmax](https://github.com/piexlmax) +// Author [SliverHorn](https://github.com/SliverHorn) +func (a *autoCodePgsql) GetColumn(businessDB string, tableName string, dbName string) (data []response.Column, err error) { + // todo 数据获取不全, 待完善sql + sql := ` +SELECT + psc.COLUMN_NAME AS COLUMN_NAME, + psc.udt_name AS data_type, + CASE + psc.udt_name + WHEN 'text' THEN + concat_ws ( '', '', psc.CHARACTER_MAXIMUM_LENGTH ) + WHEN 'varchar' THEN + concat_ws ( '', '', psc.CHARACTER_MAXIMUM_LENGTH ) + WHEN 'smallint' THEN + concat_ws ( ',', psc.NUMERIC_PRECISION, psc.NUMERIC_SCALE ) + WHEN 'decimal' THEN + concat_ws ( ',', psc.NUMERIC_PRECISION, psc.NUMERIC_SCALE ) + WHEN 'integer' THEN + concat_ws ( '', '', psc.NUMERIC_PRECISION ) + WHEN 'int4' THEN + concat_ws ( '', '', psc.NUMERIC_PRECISION ) + WHEN 'int8' THEN + concat_ws ( '', '', psc.NUMERIC_PRECISION ) + WHEN 'bigint' THEN + concat_ws ( '', '', psc.NUMERIC_PRECISION ) + WHEN 'timestamp' THEN + concat_ws ( '', '', psc.datetime_precision ) + ELSE '' + END AS data_type_long, + ( + SELECT + pd.description + FROM + pg_description pd + WHERE + (pd.objoid,pd.objsubid) in ( + SELECT pa.attrelid,pa.attnum + FROM + pg_attribute pa + WHERE pa.attrelid = ( SELECT oid FROM pg_class pc WHERE + pc.relname = psc.table_name + ) + and attname = psc.column_name + ) + ) AS column_comment, + ( + SELECT + COUNT(*) + FROM + pg_constraint + WHERE + contype = 'p' + AND conrelid = ( + SELECT + oid + FROM + pg_class + WHERE + relname = psc.table_name + ) + AND conkey::int[] @> ARRAY[( + SELECT + attnum::integer + FROM + pg_attribute + WHERE + attrelid = conrelid + AND attname = psc.column_name + )] + ) > 0 AS primary_key, + psc.ordinal_position +FROM + INFORMATION_SCHEMA.COLUMNS psc +WHERE + table_catalog = ? + AND table_schema = 'public' + AND TABLE_NAME = ? +ORDER BY + psc.ordinal_position; +` + var entities []response.Column + //sql = strings.ReplaceAll(sql, "@table_catalog", dbName) + //sql = strings.ReplaceAll(sql, "@table_name", tableName) + db := global.GVA_DB + if businessDB != "" { + db = global.GVA_DBList[businessDB] + } + + err = db.Raw(sql, dbName, tableName).Scan(&entities).Error + return entities, err +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_sqlite.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_sqlite.go new file mode 100644 index 000000000..59bcfce70 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_auto_code_sqlite.go @@ -0,0 +1,84 @@ +package system + +import ( + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/response" + "path/filepath" + "strings" +) + +var AutoCodeSqlite = new(autoCodeSqlite) + +type autoCodeSqlite struct{} + +// GetDB 获取数据库的所有数据库名 +// Author [piexlmax](https://github.com/piexlmax) +// Author [SliverHorn](https://github.com/SliverHorn) +func (a *autoCodeSqlite) GetDB(businessDB string) (data []response.Db, err error) { + var entities []response.Db + sql := "PRAGMA database_list;" + var databaseList []struct { + File string `gorm:"column:file"` + } + if businessDB == "" { + err = global.GVA_DB.Raw(sql).Find(&databaseList).Error + } else { + err = global.GVA_DBList[businessDB].Raw(sql).Find(&databaseList).Error + } + for _, database := range databaseList { + if database.File != "" { + fileName := filepath.Base(database.File) + fileExt := filepath.Ext(fileName) + fileNameWithoutExt := strings.TrimSuffix(fileName, fileExt) + + entities = append(entities, response.Db{fileNameWithoutExt}) + } + } + // entities = append(entities, response.Db{global.GVA_CONFIG.Sqlite.Dbname}) + return entities, err +} + +// GetTables 获取数据库的所有表名 +// Author [piexlmax](https://github.com/piexlmax) +// Author [SliverHorn](https://github.com/SliverHorn) +func (a *autoCodeSqlite) GetTables(businessDB string, dbName string) (data []response.Table, err error) { + var entities []response.Table + sql := `SELECT name FROM sqlite_master WHERE type='table'` + tabelNames := []string{} + if businessDB == "" { + err = global.GVA_DB.Raw(sql).Find(&tabelNames).Error + } else { + err = global.GVA_DBList[businessDB].Raw(sql).Find(&tabelNames).Error + } + for _, tabelName := range tabelNames { + entities = append(entities, response.Table{tabelName}) + } + return entities, err +} + +// GetColumn 获取指定数据表的所有字段名,类型值等 +// Author [piexlmax](https://github.com/piexlmax) +// Author [SliverHorn](https://github.com/SliverHorn) +func (a *autoCodeSqlite) GetColumn(businessDB string, tableName string, dbName string) (data []response.Column, err error) { + var entities []response.Column + sql := fmt.Sprintf("PRAGMA table_info(%s);", tableName) + var columnInfos []struct { + Name string `gorm:"column:name"` + Type string `gorm:"column:type"` + Pk int `gorm:"column:pk"` + } + if businessDB == "" { + err = global.GVA_DB.Raw(sql).Scan(&columnInfos).Error + } else { + err = global.GVA_DBList[businessDB].Raw(sql).Scan(&columnInfos).Error + } + for _, columnInfo := range columnInfos { + entities = append(entities, response.Column{ + ColumnName: columnInfo.Name, + DataType: columnInfo.Type, + PrimaryKey: columnInfo.Pk == 1, + }) + } + return entities, err +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_base_menu.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_base_menu.go new file mode 100644 index 000000000..913bab2f3 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_base_menu.go @@ -0,0 +1,146 @@ +package system + +import ( + "errors" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "gorm.io/gorm" +) + +type BaseMenuService struct{} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: DeleteBaseMenu +//@description: 删除基础路由 +//@param: id float64 +//@return: err error + +var BaseMenuServiceApp = new(BaseMenuService) + +func (baseMenuService *BaseMenuService) DeleteBaseMenu(id int) (err error) { + err = global.GVA_DB.First(&system.SysBaseMenu{}, "parent_id = ?", id).Error + if err == nil { + return errors.New("此菜单存在子菜单不可删除") + } + var menu system.SysBaseMenu + err = global.GVA_DB.First(&menu, id).Error + if err != nil { + return errors.New("记录不存在") + } + err = global.GVA_DB.First(&system.SysAuthority{}, "default_router = ?", menu.Name).Error + if err == nil { + return errors.New("此菜单有角色正在作为首页,不可删除") + } + return global.GVA_DB.Transaction(func(tx *gorm.DB) error { + + err = tx.Delete(&system.SysBaseMenu{}, "id = ?", id).Error + if err != nil { + return err + } + + err = tx.Delete(&system.SysBaseMenuParameter{}, "sys_base_menu_id = ?", id).Error + if err != nil { + return err + } + + err = tx.Delete(&system.SysBaseMenuBtn{}, "sys_base_menu_id = ?", id).Error + if err != nil { + return err + } + err = tx.Delete(&system.SysAuthorityBtn{}, "sys_menu_id = ?", id).Error + if err != nil { + return err + } + + err = tx.Delete(&system.SysAuthorityMenu{}, "sys_base_menu_id = ?", id).Error + if err != nil { + return err + } + return nil + }) + +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: UpdateBaseMenu +//@description: 更新路由 +//@param: menu model.SysBaseMenu +//@return: err error + +func (baseMenuService *BaseMenuService) UpdateBaseMenu(menu system.SysBaseMenu) (err error) { + var oldMenu system.SysBaseMenu + upDateMap := make(map[string]interface{}) + upDateMap["keep_alive"] = menu.KeepAlive + upDateMap["close_tab"] = menu.CloseTab + upDateMap["default_menu"] = menu.DefaultMenu + upDateMap["parent_id"] = menu.ParentId + upDateMap["path"] = menu.Path + upDateMap["name"] = menu.Name + upDateMap["hidden"] = menu.Hidden + upDateMap["component"] = menu.Component + upDateMap["title"] = menu.Title + upDateMap["active_name"] = menu.ActiveName + upDateMap["icon"] = menu.Icon + upDateMap["sort"] = menu.Sort + + err = global.GVA_DB.Transaction(func(tx *gorm.DB) error { + tx.Where("id = ?", menu.ID).Find(&oldMenu) + if oldMenu.Name != menu.Name { + if !errors.Is(tx.Where("id <> ? AND name = ?", menu.ID, menu.Name).First(&system.SysBaseMenu{}).Error, gorm.ErrRecordNotFound) { + global.GVA_LOG.Debug("存在相同name修改失败") + return errors.New("存在相同name修改失败") + } + } + txErr := tx.Unscoped().Delete(&system.SysBaseMenuParameter{}, "sys_base_menu_id = ?", menu.ID).Error + if txErr != nil { + global.GVA_LOG.Debug(txErr.Error()) + return txErr + } + txErr = tx.Unscoped().Delete(&system.SysBaseMenuBtn{}, "sys_base_menu_id = ?", menu.ID).Error + if txErr != nil { + global.GVA_LOG.Debug(txErr.Error()) + return txErr + } + if len(menu.Parameters) > 0 { + for k := range menu.Parameters { + menu.Parameters[k].SysBaseMenuID = menu.ID + } + txErr = tx.Create(&menu.Parameters).Error + if txErr != nil { + global.GVA_LOG.Debug(txErr.Error()) + return txErr + } + } + + if len(menu.MenuBtn) > 0 { + for k := range menu.MenuBtn { + menu.MenuBtn[k].SysBaseMenuID = menu.ID + } + txErr = tx.Create(&menu.MenuBtn).Error + if txErr != nil { + global.GVA_LOG.Debug(txErr.Error()) + return txErr + } + } + + txErr = tx.Model(&oldMenu).Updates(upDateMap).Error + if txErr != nil { + global.GVA_LOG.Debug(txErr.Error()) + return txErr + } + return nil + }) + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetBaseMenuById +//@description: 返回当前选中menu +//@param: id float64 +//@return: menu system.SysBaseMenu, err error + +func (baseMenuService *BaseMenuService) GetBaseMenuById(id int) (menu system.SysBaseMenu, err error) { + err = global.GVA_DB.Preload("MenuBtn").Preload("Parameters").Where("id = ?", id).First(&menu).Error + return +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_casbin.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_casbin.go new file mode 100644 index 000000000..32edc579e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_casbin.go @@ -0,0 +1,221 @@ +package system + +import ( + "errors" + "strconv" + "sync" + + "gorm.io/gorm" + + "github.com/casbin/casbin/v2" + "github.com/casbin/casbin/v2/model" + gormadapter "github.com/casbin/gorm-adapter/v3" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + _ "github.com/go-sql-driver/mysql" + "go.uber.org/zap" +) + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: UpdateCasbin +//@description: 更新casbin权限 +//@param: authorityId string, casbinInfos []request.CasbinInfo +//@return: error + +type CasbinService struct{} + +var CasbinServiceApp = new(CasbinService) + +func (casbinService *CasbinService) UpdateCasbin(adminAuthorityID, AuthorityID uint, casbinInfos []request.CasbinInfo) error { + + err := AuthorityServiceApp.CheckAuthorityIDAuth(adminAuthorityID, AuthorityID) + if err != nil { + return err + } + + if global.GVA_CONFIG.System.UseStrictAuth { + apis, e := ApiServiceApp.GetAllApis(adminAuthorityID) + if e != nil { + return e + } + + for i := range casbinInfos { + hasApi := false + for j := range apis { + if apis[j].Path == casbinInfos[i].Path && apis[j].Method == casbinInfos[i].Method { + hasApi = true + break + } + } + if !hasApi { + return errors.New("存在api不在权限列表中") + } + } + } + + authorityId := strconv.Itoa(int(AuthorityID)) + casbinService.ClearCasbin(0, authorityId) + rules := [][]string{} + //做权限去重处理 + deduplicateMap := make(map[string]bool) + for _, v := range casbinInfos { + key := authorityId + v.Path + v.Method + if _, ok := deduplicateMap[key]; !ok { + deduplicateMap[key] = true + rules = append(rules, []string{authorityId, v.Path, v.Method}) + } + } + if len(rules) == 0 { + return nil + } // 设置空权限无需调用 AddPolicies 方法 + e := casbinService.Casbin() + success, _ := e.AddPolicies(rules) + if !success { + return errors.New("存在相同api,添加失败,请联系管理员") + } + return nil +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: UpdateCasbinApi +//@description: API更新随动 +//@param: oldPath string, newPath string, oldMethod string, newMethod string +//@return: error + +func (casbinService *CasbinService) UpdateCasbinApi(oldPath string, newPath string, oldMethod string, newMethod string) error { + err := global.GVA_DB.Model(&gormadapter.CasbinRule{}).Where("v1 = ? AND v2 = ?", oldPath, oldMethod).Updates(map[string]interface{}{ + "v1": newPath, + "v2": newMethod, + }).Error + e := casbinService.Casbin() + err = e.LoadPolicy() + if err != nil { + return err + } + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetPolicyPathByAuthorityId +//@description: 获取权限列表 +//@param: authorityId string +//@return: pathMaps []request.CasbinInfo + +func (casbinService *CasbinService) GetPolicyPathByAuthorityId(AuthorityID uint) (pathMaps []request.CasbinInfo) { + e := casbinService.Casbin() + authorityId := strconv.Itoa(int(AuthorityID)) + list, _ := e.GetFilteredPolicy(0, authorityId) + for _, v := range list { + pathMaps = append(pathMaps, request.CasbinInfo{ + Path: v[1], + Method: v[2], + }) + } + return pathMaps +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: ClearCasbin +//@description: 清除匹配的权限 +//@param: v int, p ...string +//@return: bool + +func (casbinService *CasbinService) ClearCasbin(v int, p ...string) bool { + e := casbinService.Casbin() + success, _ := e.RemoveFilteredPolicy(v, p...) + return success +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: RemoveFilteredPolicy +//@description: 使用数据库方法清理筛选的politicy 此方法需要调用FreshCasbin方法才可以在系统中即刻生效 +//@param: db *gorm.DB, authorityId string +//@return: error + +func (casbinService *CasbinService) RemoveFilteredPolicy(db *gorm.DB, authorityId string) error { + return db.Delete(&gormadapter.CasbinRule{}, "v0 = ?", authorityId).Error +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: SyncPolicy +//@description: 同步目前数据库的policy 此方法需要调用FreshCasbin方法才可以在系统中即刻生效 +//@param: db *gorm.DB, authorityId string, rules [][]string +//@return: error + +func (casbinService *CasbinService) SyncPolicy(db *gorm.DB, authorityId string, rules [][]string) error { + err := casbinService.RemoveFilteredPolicy(db, authorityId) + if err != nil { + return err + } + return casbinService.AddPolicies(db, rules) +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: AddPolicies +//@description: 添加匹配的权限 +//@param: v int, p ...string +//@return: bool + +func (casbinService *CasbinService) AddPolicies(db *gorm.DB, rules [][]string) error { + var casbinRules []gormadapter.CasbinRule + for i := range rules { + casbinRules = append(casbinRules, gormadapter.CasbinRule{ + Ptype: "p", + V0: rules[i][0], + V1: rules[i][1], + V2: rules[i][2], + }) + } + return db.Create(&casbinRules).Error +} + +func (CasbinService *CasbinService) FreshCasbin() (err error) { + e := CasbinService.Casbin() + err = e.LoadPolicy() + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: Casbin +//@description: 持久化到数据库 引入自定义规则 +//@return: *casbin.Enforcer + +var ( + syncedCachedEnforcer *casbin.SyncedCachedEnforcer + once sync.Once +) + +func (casbinService *CasbinService) Casbin() *casbin.SyncedCachedEnforcer { + once.Do(func() { + a, err := gormadapter.NewAdapterByDB(global.GVA_DB) + if err != nil { + zap.L().Error("适配数据库失败请检查casbin表是否为InnoDB引擎!", zap.Error(err)) + return + } + text := ` + [request_definition] + r = sub, obj, act + + [policy_definition] + p = sub, obj, act + + [role_definition] + g = _, _ + + [policy_effect] + e = some(where (p.eft == allow)) + + [matchers] + m = r.sub == p.sub && keyMatch2(r.obj,p.obj) && r.act == p.act + ` + m, err := model.NewModelFromString(text) + if err != nil { + zap.L().Error("字符串加载模型失败!", zap.Error(err)) + return + } + syncedCachedEnforcer, _ = casbin.NewSyncedCachedEnforcer(m, a) + syncedCachedEnforcer.SetExpireTime(60 * 60) + _ = syncedCachedEnforcer.LoadPolicy() + }) + return syncedCachedEnforcer +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_dictionary.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_dictionary.go new file mode 100644 index 000000000..d540a9602 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_dictionary.go @@ -0,0 +1,112 @@ +package system + +import ( + "errors" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "gorm.io/gorm" +) + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: CreateSysDictionary +//@description: 创建字典数据 +//@param: sysDictionary model.SysDictionary +//@return: err error + +type DictionaryService struct{} + +var DictionaryServiceApp = new(DictionaryService) + +func (dictionaryService *DictionaryService) CreateSysDictionary(sysDictionary system.SysDictionary) (err error) { + if (!errors.Is(global.GVA_DB.First(&system.SysDictionary{}, "type = ?", sysDictionary.Type).Error, gorm.ErrRecordNotFound)) { + return errors.New("存在相同的type,不允许创建") + } + err = global.GVA_DB.Create(&sysDictionary).Error + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: DeleteSysDictionary +//@description: 删除字典数据 +//@param: sysDictionary model.SysDictionary +//@return: err error + +func (dictionaryService *DictionaryService) DeleteSysDictionary(sysDictionary system.SysDictionary) (err error) { + err = global.GVA_DB.Where("id = ?", sysDictionary.ID).Preload("SysDictionaryDetails").First(&sysDictionary).Error + if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { + return errors.New("请不要搞事") + } + if err != nil { + return err + } + err = global.GVA_DB.Delete(&sysDictionary).Error + if err != nil { + return err + } + + if sysDictionary.SysDictionaryDetails != nil { + return global.GVA_DB.Where("sys_dictionary_id=?", sysDictionary.ID).Delete(sysDictionary.SysDictionaryDetails).Error + } + return +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: UpdateSysDictionary +//@description: 更新字典数据 +//@param: sysDictionary *model.SysDictionary +//@return: err error + +func (dictionaryService *DictionaryService) UpdateSysDictionary(sysDictionary *system.SysDictionary) (err error) { + var dict system.SysDictionary + sysDictionaryMap := map[string]interface{}{ + "Name": sysDictionary.Name, + "Type": sysDictionary.Type, + "Status": sysDictionary.Status, + "Desc": sysDictionary.Desc, + } + err = global.GVA_DB.Where("id = ?", sysDictionary.ID).First(&dict).Error + if err != nil { + global.GVA_LOG.Debug(err.Error()) + return errors.New("查询字典数据失败") + } + if dict.Type != sysDictionary.Type { + if !errors.Is(global.GVA_DB.First(&system.SysDictionary{}, "type = ?", sysDictionary.Type).Error, gorm.ErrRecordNotFound) { + return errors.New("存在相同的type,不允许创建") + } + } + err = global.GVA_DB.Model(&dict).Updates(sysDictionaryMap).Error + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetSysDictionary +//@description: 根据id或者type获取字典单条数据 +//@param: Type string, Id uint +//@return: err error, sysDictionary model.SysDictionary + +func (dictionaryService *DictionaryService) GetSysDictionary(Type string, Id uint, status *bool) (sysDictionary system.SysDictionary, err error) { + var flag = false + if status == nil { + flag = true + } else { + flag = *status + } + err = global.GVA_DB.Where("(type = ? OR id = ?) and status = ?", Type, Id, flag).Preload("SysDictionaryDetails", func(db *gorm.DB) *gorm.DB { + return db.Where("status = ?", true).Order("sort") + }).First(&sysDictionary).Error + return +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@author: [SliverHorn](https://github.com/SliverHorn) +//@function: GetSysDictionaryInfoList +//@description: 分页获取字典列表 +//@param: info request.SysDictionarySearch +//@return: err error, list interface{}, total int64 + +func (dictionaryService *DictionaryService) GetSysDictionaryInfoList() (list interface{}, err error) { + var sysDictionarys []system.SysDictionary + err = global.GVA_DB.Find(&sysDictionarys).Error + return sysDictionarys, err +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_dictionary_detail.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_dictionary_detail.go new file mode 100644 index 000000000..18042c788 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_dictionary_detail.go @@ -0,0 +1,118 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" +) + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: CreateSysDictionaryDetail +//@description: 创建字典详情数据 +//@param: sysDictionaryDetail model.SysDictionaryDetail +//@return: err error + +type DictionaryDetailService struct{} + +var DictionaryDetailServiceApp = new(DictionaryDetailService) + +func (dictionaryDetailService *DictionaryDetailService) CreateSysDictionaryDetail(sysDictionaryDetail system.SysDictionaryDetail) (err error) { + err = global.GVA_DB.Create(&sysDictionaryDetail).Error + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: DeleteSysDictionaryDetail +//@description: 删除字典详情数据 +//@param: sysDictionaryDetail model.SysDictionaryDetail +//@return: err error + +func (dictionaryDetailService *DictionaryDetailService) DeleteSysDictionaryDetail(sysDictionaryDetail system.SysDictionaryDetail) (err error) { + err = global.GVA_DB.Delete(&sysDictionaryDetail).Error + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: UpdateSysDictionaryDetail +//@description: 更新字典详情数据 +//@param: sysDictionaryDetail *model.SysDictionaryDetail +//@return: err error + +func (dictionaryDetailService *DictionaryDetailService) UpdateSysDictionaryDetail(sysDictionaryDetail *system.SysDictionaryDetail) (err error) { + err = global.GVA_DB.Save(sysDictionaryDetail).Error + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetSysDictionaryDetail +//@description: 根据id获取字典详情单条数据 +//@param: id uint +//@return: sysDictionaryDetail system.SysDictionaryDetail, err error + +func (dictionaryDetailService *DictionaryDetailService) GetSysDictionaryDetail(id uint) (sysDictionaryDetail system.SysDictionaryDetail, err error) { + err = global.GVA_DB.Where("id = ?", id).First(&sysDictionaryDetail).Error + return +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetSysDictionaryDetailInfoList +//@description: 分页获取字典详情列表 +//@param: info request.SysDictionaryDetailSearch +//@return: list interface{}, total int64, err error + +func (dictionaryDetailService *DictionaryDetailService) GetSysDictionaryDetailInfoList(info request.SysDictionaryDetailSearch) (list interface{}, total int64, err error) { + limit := info.PageSize + offset := info.PageSize * (info.Page - 1) + // 创建db + db := global.GVA_DB.Model(&system.SysDictionaryDetail{}) + var sysDictionaryDetails []system.SysDictionaryDetail + // 如果有条件搜索 下方会自动创建搜索语句 + if info.Label != "" { + db = db.Where("label LIKE ?", "%"+info.Label+"%") + } + if info.Value != "" { + db = db.Where("value = ?", info.Value) + } + if info.Status != nil { + db = db.Where("status = ?", info.Status) + } + if info.SysDictionaryID != 0 { + db = db.Where("sys_dictionary_id = ?", info.SysDictionaryID) + } + err = db.Count(&total).Error + if err != nil { + return + } + err = db.Limit(limit).Offset(offset).Order("sort").Find(&sysDictionaryDetails).Error + return sysDictionaryDetails, total, err +} + +// 按照字典id获取字典全部内容的方法 +func (dictionaryDetailService *DictionaryDetailService) GetDictionaryList(dictionaryID uint) (list []system.SysDictionaryDetail, err error) { + var sysDictionaryDetails []system.SysDictionaryDetail + err = global.GVA_DB.Find(&sysDictionaryDetails, "sys_dictionary_id = ?", dictionaryID).Error + return sysDictionaryDetails, err +} + +// 按照字典type获取字典全部内容的方法 +func (dictionaryDetailService *DictionaryDetailService) GetDictionaryListByType(t string) (list []system.SysDictionaryDetail, err error) { + var sysDictionaryDetails []system.SysDictionaryDetail + db := global.GVA_DB.Model(&system.SysDictionaryDetail{}).Joins("JOIN sys_dictionaries ON sys_dictionaries.id = sys_dictionary_details.sys_dictionary_id") + err = db.Debug().Find(&sysDictionaryDetails, "type = ?", t).Error + return sysDictionaryDetails, err +} + +// 按照字典id+字典内容value获取单条字典内容 +func (dictionaryDetailService *DictionaryDetailService) GetDictionaryInfoByValue(dictionaryID uint, value string) (detail system.SysDictionaryDetail, err error) { + var sysDictionaryDetail system.SysDictionaryDetail + err = global.GVA_DB.First(&sysDictionaryDetail, "sys_dictionary_id = ? and value = ?", dictionaryID, value).Error + return sysDictionaryDetail, err +} + +// 按照字典type+字典内容value获取单条字典内容 +func (dictionaryDetailService *DictionaryDetailService) GetDictionaryInfoByTypeValue(t string, value string) (detail system.SysDictionaryDetail, err error) { + var sysDictionaryDetails system.SysDictionaryDetail + db := global.GVA_DB.Model(&system.SysDictionaryDetail{}).Joins("JOIN sys_dictionaries ON sys_dictionaries.id = sys_dictionary_details.sys_dictionary_id") + err = db.First(&sysDictionaryDetails, "sys_dictionaries.type = ? and sys_dictionary_details.value = ?", t, value).Error + return sysDictionaryDetails, err +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_export_template.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_export_template.go new file mode 100644 index 000000000..868c07e7d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_export_template.go @@ -0,0 +1,421 @@ +package system + +import ( + "bytes" + "encoding/json" + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + systemReq "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/xuri/excelize/v2" + "gorm.io/gorm" + "mime/multipart" + "net/url" + "strconv" + "strings" + "time" +) + +type SysExportTemplateService struct { +} + +var SysExportTemplateServiceApp = new(SysExportTemplateService) + +// CreateSysExportTemplate 创建导出模板记录 +// Author [piexlmax](https://github.com/piexlmax) +func (sysExportTemplateService *SysExportTemplateService) CreateSysExportTemplate(sysExportTemplate *system.SysExportTemplate) (err error) { + err = global.GVA_DB.Create(sysExportTemplate).Error + return err +} + +// DeleteSysExportTemplate 删除导出模板记录 +// Author [piexlmax](https://github.com/piexlmax) +func (sysExportTemplateService *SysExportTemplateService) DeleteSysExportTemplate(sysExportTemplate system.SysExportTemplate) (err error) { + err = global.GVA_DB.Delete(&sysExportTemplate).Error + return err +} + +// DeleteSysExportTemplateByIds 批量删除导出模板记录 +// Author [piexlmax](https://github.com/piexlmax) +func (sysExportTemplateService *SysExportTemplateService) DeleteSysExportTemplateByIds(ids request.IdsReq) (err error) { + err = global.GVA_DB.Delete(&[]system.SysExportTemplate{}, "id in ?", ids.Ids).Error + return err +} + +// UpdateSysExportTemplate 更新导出模板记录 +// Author [piexlmax](https://github.com/piexlmax) +func (sysExportTemplateService *SysExportTemplateService) UpdateSysExportTemplate(sysExportTemplate system.SysExportTemplate) (err error) { + return global.GVA_DB.Transaction(func(tx *gorm.DB) error { + conditions := sysExportTemplate.Conditions + e := tx.Delete(&[]system.Condition{}, "template_id = ?", sysExportTemplate.TemplateID).Error + if e != nil { + return e + } + sysExportTemplate.Conditions = nil + + joins := sysExportTemplate.JoinTemplate + e = tx.Delete(&[]system.JoinTemplate{}, "template_id = ?", sysExportTemplate.TemplateID).Error + if e != nil { + return e + } + sysExportTemplate.JoinTemplate = nil + + e = tx.Updates(&sysExportTemplate).Error + if e != nil { + return e + } + if len(conditions) > 0 { + for i := range conditions { + conditions[i].ID = 0 + } + e = tx.Create(&conditions).Error + } + if len(joins) > 0 { + for i := range joins { + joins[i].ID = 0 + } + e = tx.Create(&joins).Error + } + return e + }) +} + +// GetSysExportTemplate 根据id获取导出模板记录 +// Author [piexlmax](https://github.com/piexlmax) +func (sysExportTemplateService *SysExportTemplateService) GetSysExportTemplate(id uint) (sysExportTemplate system.SysExportTemplate, err error) { + err = global.GVA_DB.Where("id = ?", id).Preload("JoinTemplate").Preload("Conditions").First(&sysExportTemplate).Error + return +} + +// GetSysExportTemplateInfoList 分页获取导出模板记录 +// Author [piexlmax](https://github.com/piexlmax) +func (sysExportTemplateService *SysExportTemplateService) GetSysExportTemplateInfoList(info systemReq.SysExportTemplateSearch) (list []system.SysExportTemplate, total int64, err error) { + limit := info.PageSize + offset := info.PageSize * (info.Page - 1) + // 创建db + db := global.GVA_DB.Model(&system.SysExportTemplate{}) + var sysExportTemplates []system.SysExportTemplate + // 如果有条件搜索 下方会自动创建搜索语句 + if info.StartCreatedAt != nil && info.EndCreatedAt != nil { + db = db.Where("created_at BETWEEN ? AND ?", info.StartCreatedAt, info.EndCreatedAt) + } + if info.Name != "" { + db = db.Where("name LIKE ?", "%"+info.Name+"%") + } + if info.TableName != "" { + db = db.Where("table_name = ?", info.TableName) + } + if info.TemplateID != "" { + db = db.Where("template_id = ?", info.TemplateID) + } + err = db.Count(&total).Error + if err != nil { + return + } + + if limit != 0 { + db = db.Limit(limit).Offset(offset) + } + + err = db.Find(&sysExportTemplates).Error + return sysExportTemplates, total, err +} + +// ExportExcel 导出Excel +// Author [piexlmax](https://github.com/piexlmax) +func (sysExportTemplateService *SysExportTemplateService) ExportExcel(templateID string, values url.Values) (file *bytes.Buffer, name string, err error) { + var template system.SysExportTemplate + err = global.GVA_DB.Preload("Conditions").Preload("JoinTemplate").First(&template, "template_id = ?", templateID).Error + if err != nil { + return nil, "", err + } + f := excelize.NewFile() + defer func() { + if err := f.Close(); err != nil { + fmt.Println(err) + } + }() + // Create a new sheet. + index, err := f.NewSheet("Sheet1") + if err != nil { + fmt.Println(err) + return + } + var templateInfoMap = make(map[string]string) + columns, err := utils.GetJSONKeys(template.TemplateInfo) + if err != nil { + return nil, "", err + } + err = json.Unmarshal([]byte(template.TemplateInfo), &templateInfoMap) + if err != nil { + return nil, "", err + } + var tableTitle []string + var selectKeyFmt []string + for _, key := range columns { + selectKeyFmt = append(selectKeyFmt, fmt.Sprintf("`%s`", key)) + tableTitle = append(tableTitle, templateInfoMap[key]) + } + + selects := strings.Join(selectKeyFmt, ", ") + var tableMap []map[string]interface{} + db := global.GVA_DB + if template.DBName != "" { + db = global.MustGetGlobalDBByDBName(template.DBName) + } + + if len(template.JoinTemplate) > 0 { + for _, join := range template.JoinTemplate { + db = db.Joins(join.JOINS + "`" + join.Table + "`" + " ON " + join.ON) + } + } + + db = db.Select(selects).Table(template.TableName) + + if len(template.Conditions) > 0 { + for _, condition := range template.Conditions { + sql := fmt.Sprintf("%s %s ?", condition.Column, condition.Operator) + value := values.Get(condition.From) + if value != "" { + if condition.Operator == "LIKE" { + value = "%" + value + "%" + } + db = db.Where(sql, value) + } + } + } + // 通过参数传入limit + limit := values.Get("limit") + if limit != "" { + l, e := strconv.Atoi(limit) + if e == nil { + db = db.Limit(l) + } + } + // 模板的默认limit + if limit == "" && template.Limit != nil && *template.Limit != 0 { + db = db.Limit(*template.Limit) + } + + // 通过参数传入offset + offset := values.Get("offset") + if offset != "" { + o, e := strconv.Atoi(offset) + if e == nil { + db = db.Offset(o) + } + } + + // 获取当前表的所有字段 + table := template.TableName + orderColumns, err := db.Migrator().ColumnTypes(table) + if err != nil { + return nil, "", err + } + + // 创建一个 map 来存储字段名 + fields := make(map[string]bool) + + for _, column := range orderColumns { + fields[column.Name()] = true + } + + // 通过参数传入order + order := values.Get("order") + + if order == "" && template.Order != "" { + // 如果没有order入参,这里会使用模板的默认排序 + order = template.Order + } + + if order != "" { + checkOrderArr := strings.Split(order, " ") + orderStr := "" + // 检查请求的排序字段是否在字段列表中 + if _, ok := fields[checkOrderArr[0]]; !ok { + return nil, "", fmt.Errorf("order by %s is not in the fields", order) + } + orderStr = checkOrderArr[0] + if len(checkOrderArr) > 1 { + if checkOrderArr[1] != "asc" && checkOrderArr[1] != "desc" { + return nil, "", fmt.Errorf("order by %s is not secure", order) + } + orderStr = orderStr + " " + checkOrderArr[1] + } + db = db.Order(orderStr) + } + + err = db.Debug().Find(&tableMap).Error + if err != nil { + return nil, "", err + } + var rows [][]string + rows = append(rows, tableTitle) + for _, exTable := range tableMap { + var row []string + for _, column := range columns { + if len(template.JoinTemplate) > 0 { + columnAs := strings.Split(column, " as ") + if len(columnAs) > 1 { + column = strings.TrimSpace(strings.Split(column, " as ")[1]) + } else { + columnArr := strings.Split(column, ".") + if len(columnArr) > 1 { + column = strings.Split(column, ".")[1] + } + } + } + // 需要对时间类型特殊处理 + if t, ok := exTable[column].(time.Time); ok { + row = append(row, t.Format("2006-01-02 15:04:05")) + } else { + row = append(row, fmt.Sprintf("%v", exTable[column])) + } + } + rows = append(rows, row) + } + for i, row := range rows { + for j, colCell := range row { + sErr := f.SetCellValue("Sheet1", fmt.Sprintf("%s%d", getColumnName(j+1), i+1), colCell) + if sErr != nil { + return nil, "", sErr + } + } + } + f.SetActiveSheet(index) + file, err = f.WriteToBuffer() + if err != nil { + return nil, "", err + } + + return file, template.Name, nil +} + +// ExportTemplate 导出Excel模板 +// Author [piexlmax](https://github.com/piexlmax) +func (sysExportTemplateService *SysExportTemplateService) ExportTemplate(templateID string) (file *bytes.Buffer, name string, err error) { + var template system.SysExportTemplate + err = global.GVA_DB.First(&template, "template_id = ?", templateID).Error + if err != nil { + return nil, "", err + } + f := excelize.NewFile() + defer func() { + if err := f.Close(); err != nil { + fmt.Println(err) + } + }() + // Create a new sheet. + index, err := f.NewSheet("Sheet1") + if err != nil { + fmt.Println(err) + return + } + var templateInfoMap = make(map[string]string) + + columns, err := utils.GetJSONKeys(template.TemplateInfo) + + err = json.Unmarshal([]byte(template.TemplateInfo), &templateInfoMap) + if err != nil { + return nil, "", err + } + var tableTitle []string + for _, key := range columns { + tableTitle = append(tableTitle, templateInfoMap[key]) + } + + for i := range tableTitle { + fErr := f.SetCellValue("Sheet1", fmt.Sprintf("%s%d", getColumnName(i+1), 1), tableTitle[i]) + if fErr != nil { + return nil, "", fErr + } + } + f.SetActiveSheet(index) + file, err = f.WriteToBuffer() + if err != nil { + return nil, "", err + } + + return file, template.Name, nil +} + +// ImportExcel 导入Excel +// Author [piexlmax](https://github.com/piexlmax) +func (sysExportTemplateService *SysExportTemplateService) ImportExcel(templateID string, file *multipart.FileHeader) (err error) { + var template system.SysExportTemplate + err = global.GVA_DB.First(&template, "template_id = ?", templateID).Error + if err != nil { + return err + } + + src, err := file.Open() + if err != nil { + return err + } + defer src.Close() + + f, err := excelize.OpenReader(src) + if err != nil { + return err + } + + rows, err := f.GetRows("Sheet1") + if err != nil { + return err + } + + var templateInfoMap = make(map[string]string) + err = json.Unmarshal([]byte(template.TemplateInfo), &templateInfoMap) + if err != nil { + return err + } + + var titleKeyMap = make(map[string]string) + for key, title := range templateInfoMap { + titleKeyMap[title] = key + } + + db := global.GVA_DB + if template.DBName != "" { + db = global.MustGetGlobalDBByDBName(template.DBName) + } + + return db.Transaction(func(tx *gorm.DB) error { + excelTitle := rows[0] + values := rows[1:] + items := make([]map[string]interface{}, 0, len(values)) + for _, row := range values { + var item = make(map[string]interface{}) + for ii, value := range row { + key := titleKeyMap[excelTitle[ii]] + item[key] = value + } + + needCreated := tx.Migrator().HasColumn(template.TableName, "created_at") + needUpdated := tx.Migrator().HasColumn(template.TableName, "updated_at") + + if item["created_at"] == nil && needCreated { + item["created_at"] = time.Now() + } + if item["updated_at"] == nil && needUpdated { + item["updated_at"] = time.Now() + } + + items = append(items, item) + } + cErr := tx.Table(template.TableName).CreateInBatches(&items, 1000).Error + return cErr + }) +} + +func getColumnName(n int) string { + columnName := "" + for n > 0 { + n-- + columnName = string(rune('A'+n%26)) + columnName + n /= 26 + } + return columnName +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb.go new file mode 100644 index 000000000..eac74a09d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb.go @@ -0,0 +1,189 @@ +package system + +import ( + "context" + "database/sql" + "errors" + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "gorm.io/gorm" + "sort" +) + +const ( + Mysql = "mysql" + Pgsql = "pgsql" + Sqlite = "sqlite" + Mssql = "mssql" + InitSuccess = "\n[%v] --> 初始数据成功!\n" + InitDataExist = "\n[%v] --> %v 的初始数据已存在!\n" + InitDataFailed = "\n[%v] --> %v 初始数据失败! \nerr: %+v\n" + InitDataSuccess = "\n[%v] --> %v 初始数据成功!\n" +) + +const ( + InitOrderSystem = 10 + InitOrderInternal = 1000 + InitOrderExternal = 100000 +) + +var ( + ErrMissingDBContext = errors.New("missing db in context") + ErrMissingDependentContext = errors.New("missing dependent value in context") + ErrDBTypeMismatch = errors.New("db type mismatch") +) + +// SubInitializer 提供 source/*/init() 使用的接口,每个 initializer 完成一个初始化过程 +type SubInitializer interface { + InitializerName() string // 不一定代表单独一个表,所以改成了更宽泛的语义 + MigrateTable(ctx context.Context) (next context.Context, err error) + InitializeData(ctx context.Context) (next context.Context, err error) + TableCreated(ctx context.Context) bool + DataInserted(ctx context.Context) bool +} + +// TypedDBInitHandler 执行传入的 initializer +type TypedDBInitHandler interface { + EnsureDB(ctx context.Context, conf *request.InitDB) (context.Context, error) // 建库,失败属于 fatal error,因此让它 panic + WriteConfig(ctx context.Context) error // 回写配置 + InitTables(ctx context.Context, inits initSlice) error // 建表 handler + InitData(ctx context.Context, inits initSlice) error // 建数据 handler +} + +// orderedInitializer 组合一个顺序字段,以供排序 +type orderedInitializer struct { + order int + SubInitializer +} + +// initSlice 供 initializer 排序依赖时使用 +type initSlice []*orderedInitializer + +var ( + initializers initSlice + cache map[string]*orderedInitializer +) + +// RegisterInit 注册要执行的初始化过程,会在 InitDB() 时调用 +func RegisterInit(order int, i SubInitializer) { + if initializers == nil { + initializers = initSlice{} + } + if cache == nil { + cache = map[string]*orderedInitializer{} + } + name := i.InitializerName() + if _, existed := cache[name]; existed { + panic(fmt.Sprintf("Name conflict on %s", name)) + } + ni := orderedInitializer{order, i} + initializers = append(initializers, &ni) + cache[name] = &ni +} + +/* ---- * service * ---- */ + +type InitDBService struct{} + +// InitDB 创建数据库并初始化 总入口 +func (initDBService *InitDBService) InitDB(conf request.InitDB) (err error) { + ctx := context.TODO() + ctx = context.WithValue(ctx, "adminPassword", conf.AdminPassword) + if len(initializers) == 0 { + return errors.New("无可用初始化过程,请检查初始化是否已执行完成") + } + sort.Sort(&initializers) // 保证有依赖的 initializer 排在后面执行 + // Note: 若 initializer 只有单一依赖,可以写为 B=A+1, C=A+1; 由于 BC 之间没有依赖关系,所以谁先谁后并不影响初始化 + // 若存在多个依赖,可以写为 C=A+B, D=A+B+C, E=A+1; + // C必然>A|B,因此在AB之后执行,D必然>A|B|C,因此在ABC后执行,而E只依赖A,顺序与CD无关,因此E与CD哪个先执行并不影响 + var initHandler TypedDBInitHandler + switch conf.DBType { + case "mysql": + initHandler = NewMysqlInitHandler() + ctx = context.WithValue(ctx, "dbtype", "mysql") + case "pgsql": + initHandler = NewPgsqlInitHandler() + ctx = context.WithValue(ctx, "dbtype", "pgsql") + case "sqlite": + initHandler = NewSqliteInitHandler() + ctx = context.WithValue(ctx, "dbtype", "sqlite") + case "mssql": + initHandler = NewMssqlInitHandler() + ctx = context.WithValue(ctx, "dbtype", "mssql") + default: + initHandler = NewMysqlInitHandler() + ctx = context.WithValue(ctx, "dbtype", "mysql") + } + ctx, err = initHandler.EnsureDB(ctx, &conf) + if err != nil { + return err + } + + db := ctx.Value("db").(*gorm.DB) + global.GVA_DB = db + + if err = initHandler.InitTables(ctx, initializers); err != nil { + return err + } + if err = initHandler.InitData(ctx, initializers); err != nil { + return err + } + + if err = initHandler.WriteConfig(ctx); err != nil { + return err + } + initializers = initSlice{} + cache = map[string]*orderedInitializer{} + return nil +} + +// createDatabase 创建数据库( EnsureDB() 中调用 ) +func createDatabase(dsn string, driver string, createSql string) error { + db, err := sql.Open(driver, dsn) + if err != nil { + return err + } + defer func(db *sql.DB) { + err = db.Close() + if err != nil { + fmt.Println(err) + } + }(db) + if err = db.Ping(); err != nil { + return err + } + _, err = db.Exec(createSql) + return err +} + +// createTables 创建表(默认 dbInitHandler.initTables 行为) +func createTables(ctx context.Context, inits initSlice) error { + next, cancel := context.WithCancel(ctx) + defer func(c func()) { c() }(cancel) + for _, init := range inits { + if init.TableCreated(next) { + continue + } + if n, err := init.MigrateTable(next); err != nil { + return err + } else { + next = n + } + } + return nil +} + +/* -- sortable interface -- */ + +func (a initSlice) Len() int { + return len(a) +} + +func (a initSlice) Less(i, j int) bool { + return a[i].order < a[j].order +} + +func (a initSlice) Swap(i, j int) { + a[i], a[j] = a[j], a[i] +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb_mssql.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb_mssql.go new file mode 100644 index 000000000..eeeeb514f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb_mssql.go @@ -0,0 +1,92 @@ +package system + +import ( + "context" + "errors" + "github.com/flipped-aurora/gin-vue-admin/server/config" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/gofrs/uuid/v5" + "github.com/gookit/color" + "gorm.io/driver/sqlserver" + "gorm.io/gorm" + "path/filepath" +) + +type MssqlInitHandler struct{} + +func NewMssqlInitHandler() *MssqlInitHandler { + return &MssqlInitHandler{} +} + +// WriteConfig mssql回写配置 +func (h MssqlInitHandler) WriteConfig(ctx context.Context) error { + c, ok := ctx.Value("config").(config.Mssql) + if !ok { + return errors.New("mssql config invalid") + } + global.GVA_CONFIG.System.DbType = "mssql" + global.GVA_CONFIG.Mssql = c + global.GVA_CONFIG.JWT.SigningKey = uuid.Must(uuid.NewV4()).String() + cs := utils.StructToMap(global.GVA_CONFIG) + for k, v := range cs { + global.GVA_VP.Set(k, v) + } + global.GVA_ACTIVE_DBNAME = &c.Dbname + return global.GVA_VP.WriteConfig() +} + +// EnsureDB 创建数据库并初始化 mssql +func (h MssqlInitHandler) EnsureDB(ctx context.Context, conf *request.InitDB) (next context.Context, err error) { + if s, ok := ctx.Value("dbtype").(string); !ok || s != "mssql" { + return ctx, ErrDBTypeMismatch + } + + c := conf.ToMssqlConfig() + next = context.WithValue(ctx, "config", c) + if c.Dbname == "" { + return ctx, nil + } // 如果没有数据库名, 则跳出初始化数据 + + dsn := conf.MssqlEmptyDsn() + + mssqlConfig := sqlserver.Config{ + DSN: dsn, // DSN data source name + DefaultStringSize: 191, // string 类型字段的默认长度 + } + + var db *gorm.DB + + if db, err = gorm.Open(sqlserver.New(mssqlConfig), &gorm.Config{DisableForeignKeyConstraintWhenMigrating: true}); err != nil { + return nil, err + } + + global.GVA_CONFIG.AutoCode.Root, _ = filepath.Abs("..") + next = context.WithValue(next, "db", db) + return next, err +} + +func (h MssqlInitHandler) InitTables(ctx context.Context, inits initSlice) error { + return createTables(ctx, inits) +} + +func (h MssqlInitHandler) InitData(ctx context.Context, inits initSlice) error { + next, cancel := context.WithCancel(ctx) + defer func(c func()) { c() }(cancel) + for _, init := range inits { + if init.DataInserted(next) { + color.Info.Printf(InitDataExist, Mssql, init.InitializerName()) + continue + } + if n, err := init.InitializeData(next); err != nil { + color.Info.Printf(InitDataFailed, Mssql, init.InitializerName(), err) + return err + } else { + next = n + color.Info.Printf(InitDataSuccess, Mssql, init.InitializerName()) + } + } + color.Info.Printf(InitSuccess, Mssql) + return nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb_mysql.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb_mysql.go new file mode 100644 index 000000000..62575d385 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb_mysql.go @@ -0,0 +1,97 @@ +package system + +import ( + "context" + "errors" + "fmt" + "path/filepath" + + "github.com/flipped-aurora/gin-vue-admin/server/config" + "github.com/gookit/color" + + "github.com/flipped-aurora/gin-vue-admin/server/utils" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/gofrs/uuid/v5" + "gorm.io/driver/mysql" + "gorm.io/gorm" +) + +type MysqlInitHandler struct{} + +func NewMysqlInitHandler() *MysqlInitHandler { + return &MysqlInitHandler{} +} + +// WriteConfig mysql回写配置 +func (h MysqlInitHandler) WriteConfig(ctx context.Context) error { + c, ok := ctx.Value("config").(config.Mysql) + if !ok { + return errors.New("mysql config invalid") + } + global.GVA_CONFIG.System.DbType = "mysql" + global.GVA_CONFIG.Mysql = c + global.GVA_CONFIG.JWT.SigningKey = uuid.Must(uuid.NewV4()).String() + cs := utils.StructToMap(global.GVA_CONFIG) + for k, v := range cs { + global.GVA_VP.Set(k, v) + } + global.GVA_ACTIVE_DBNAME = &c.Dbname + return global.GVA_VP.WriteConfig() +} + +// EnsureDB 创建数据库并初始化 mysql +func (h MysqlInitHandler) EnsureDB(ctx context.Context, conf *request.InitDB) (next context.Context, err error) { + if s, ok := ctx.Value("dbtype").(string); !ok || s != "mysql" { + return ctx, ErrDBTypeMismatch + } + + c := conf.ToMysqlConfig() + next = context.WithValue(ctx, "config", c) + if c.Dbname == "" { + return ctx, nil + } // 如果没有数据库名, 则跳出初始化数据 + + dsn := conf.MysqlEmptyDsn() + createSql := fmt.Sprintf("CREATE DATABASE IF NOT EXISTS `%s` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;", c.Dbname) + if err = createDatabase(dsn, "mysql", createSql); err != nil { + return nil, err + } // 创建数据库 + + var db *gorm.DB + if db, err = gorm.Open(mysql.New(mysql.Config{ + DSN: c.Dsn(), // DSN data source name + DefaultStringSize: 191, // string 类型字段的默认长度 + SkipInitializeWithVersion: true, // 根据版本自动配置 + }), &gorm.Config{DisableForeignKeyConstraintWhenMigrating: true}); err != nil { + return ctx, err + } + global.GVA_CONFIG.AutoCode.Root, _ = filepath.Abs("..") + next = context.WithValue(next, "db", db) + return next, err +} + +func (h MysqlInitHandler) InitTables(ctx context.Context, inits initSlice) error { + return createTables(ctx, inits) +} + +func (h MysqlInitHandler) InitData(ctx context.Context, inits initSlice) error { + next, cancel := context.WithCancel(ctx) + defer func(c func()) { c() }(cancel) + for _, init := range inits { + if init.DataInserted(next) { + color.Info.Printf(InitDataExist, Mysql, init.InitializerName()) + continue + } + if n, err := init.InitializeData(next); err != nil { + color.Info.Printf(InitDataFailed, Mysql, init.InitializerName(), err) + return err + } else { + next = n + color.Info.Printf(InitDataSuccess, Mysql, init.InitializerName()) + } + } + color.Info.Printf(InitSuccess, Mysql) + return nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb_pgsql.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb_pgsql.go new file mode 100644 index 000000000..f1a482f0c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb_pgsql.go @@ -0,0 +1,96 @@ +package system + +import ( + "context" + "errors" + "fmt" + "path/filepath" + + "github.com/flipped-aurora/gin-vue-admin/server/config" + "github.com/gookit/color" + + "github.com/flipped-aurora/gin-vue-admin/server/utils" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/gofrs/uuid/v5" + "gorm.io/driver/postgres" + "gorm.io/gorm" +) + +type PgsqlInitHandler struct{} + +func NewPgsqlInitHandler() *PgsqlInitHandler { + return &PgsqlInitHandler{} +} + +// WriteConfig pgsql 回写配置 +func (h PgsqlInitHandler) WriteConfig(ctx context.Context) error { + c, ok := ctx.Value("config").(config.Pgsql) + if !ok { + return errors.New("postgresql config invalid") + } + global.GVA_CONFIG.System.DbType = "pgsql" + global.GVA_CONFIG.Pgsql = c + global.GVA_CONFIG.JWT.SigningKey = uuid.Must(uuid.NewV4()).String() + cs := utils.StructToMap(global.GVA_CONFIG) + for k, v := range cs { + global.GVA_VP.Set(k, v) + } + global.GVA_ACTIVE_DBNAME = &c.Dbname + return global.GVA_VP.WriteConfig() +} + +// EnsureDB 创建数据库并初始化 pg +func (h PgsqlInitHandler) EnsureDB(ctx context.Context, conf *request.InitDB) (next context.Context, err error) { + if s, ok := ctx.Value("dbtype").(string); !ok || s != "pgsql" { + return ctx, ErrDBTypeMismatch + } + + c := conf.ToPgsqlConfig() + next = context.WithValue(ctx, "config", c) + if c.Dbname == "" { + return ctx, nil + } // 如果没有数据库名, 则跳出初始化数据 + + dsn := conf.PgsqlEmptyDsn() + createSql := fmt.Sprintf("CREATE DATABASE %s;", c.Dbname) + if err = createDatabase(dsn, "pgx", createSql); err != nil { + return nil, err + } // 创建数据库 + + var db *gorm.DB + if db, err = gorm.Open(postgres.New(postgres.Config{ + DSN: c.Dsn(), // DSN data source name + PreferSimpleProtocol: false, + }), &gorm.Config{DisableForeignKeyConstraintWhenMigrating: true}); err != nil { + return ctx, err + } + global.GVA_CONFIG.AutoCode.Root, _ = filepath.Abs("..") + next = context.WithValue(next, "db", db) + return next, err +} + +func (h PgsqlInitHandler) InitTables(ctx context.Context, inits initSlice) error { + return createTables(ctx, inits) +} + +func (h PgsqlInitHandler) InitData(ctx context.Context, inits initSlice) error { + next, cancel := context.WithCancel(ctx) + defer func(c func()) { c() }(cancel) + for i := 0; i < len(inits); i++ { + if inits[i].DataInserted(next) { + color.Info.Printf(InitDataExist, Pgsql, inits[i].InitializerName()) + continue + } + if n, err := inits[i].InitializeData(next); err != nil { + color.Info.Printf(InitDataFailed, Pgsql, inits[i].InitializerName(), err) + return err + } else { + next = n + color.Info.Printf(InitDataSuccess, Pgsql, inits[i].InitializerName()) + } + } + color.Info.Printf(InitSuccess, Pgsql) + return nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb_sqlite.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb_sqlite.go new file mode 100644 index 000000000..d7a97eba5 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_initdb_sqlite.go @@ -0,0 +1,88 @@ +package system + +import ( + "context" + "errors" + "github.com/glebarez/sqlite" + "github.com/gofrs/uuid/v5" + "github.com/gookit/color" + "gorm.io/gorm" + "path/filepath" + + "github.com/flipped-aurora/gin-vue-admin/server/config" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/flipped-aurora/gin-vue-admin/server/utils" +) + +type SqliteInitHandler struct{} + +func NewSqliteInitHandler() *SqliteInitHandler { + return &SqliteInitHandler{} +} + +// WriteConfig mysql回写配置 +func (h SqliteInitHandler) WriteConfig(ctx context.Context) error { + c, ok := ctx.Value("config").(config.Sqlite) + if !ok { + return errors.New("sqlite config invalid") + } + global.GVA_CONFIG.System.DbType = "sqlite" + global.GVA_CONFIG.Sqlite = c + global.GVA_CONFIG.JWT.SigningKey = uuid.Must(uuid.NewV4()).String() + cs := utils.StructToMap(global.GVA_CONFIG) + for k, v := range cs { + global.GVA_VP.Set(k, v) + } + global.GVA_ACTIVE_DBNAME = &c.Dbname + return global.GVA_VP.WriteConfig() +} + +// EnsureDB 创建数据库并初始化 sqlite +func (h SqliteInitHandler) EnsureDB(ctx context.Context, conf *request.InitDB) (next context.Context, err error) { + if s, ok := ctx.Value("dbtype").(string); !ok || s != "sqlite" { + return ctx, ErrDBTypeMismatch + } + + c := conf.ToSqliteConfig() + next = context.WithValue(ctx, "config", c) + if c.Dbname == "" { + return ctx, nil + } // 如果没有数据库名, 则跳出初始化数据 + + dsn := conf.SqliteEmptyDsn() + + var db *gorm.DB + if db, err = gorm.Open(sqlite.Open(dsn), &gorm.Config{ + DisableForeignKeyConstraintWhenMigrating: true, + }); err != nil { + return ctx, err + } + global.GVA_CONFIG.AutoCode.Root, _ = filepath.Abs("..") + next = context.WithValue(next, "db", db) + return next, err +} + +func (h SqliteInitHandler) InitTables(ctx context.Context, inits initSlice) error { + return createTables(ctx, inits) +} + +func (h SqliteInitHandler) InitData(ctx context.Context, inits initSlice) error { + next, cancel := context.WithCancel(ctx) + defer func(c func()) { c() }(cancel) + for _, init := range inits { + if init.DataInserted(next) { + color.Info.Printf(InitDataExist, Sqlite, init.InitializerName()) + continue + } + if n, err := init.InitializeData(next); err != nil { + color.Info.Printf(InitDataFailed, Sqlite, init.InitializerName(), err) + return err + } else { + next = n + color.Info.Printf(InitDataSuccess, Sqlite, init.InitializerName()) + } + } + color.Info.Printf(InitSuccess, Sqlite) + return nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_menu.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_menu.go new file mode 100644 index 000000000..4d5a0ea71 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_menu.go @@ -0,0 +1,289 @@ +package system + +import ( + "errors" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "gorm.io/gorm" + "strconv" +) + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: getMenuTreeMap +//@description: 获取路由总树map +//@param: authorityId string +//@return: treeMap map[string][]system.SysMenu, err error + +type MenuService struct{} + +var MenuServiceApp = new(MenuService) + +func (menuService *MenuService) getMenuTreeMap(authorityId uint) (treeMap map[uint][]system.SysMenu, err error) { + var allMenus []system.SysMenu + var baseMenu []system.SysBaseMenu + var btns []system.SysAuthorityBtn + treeMap = make(map[uint][]system.SysMenu) + + var SysAuthorityMenus []system.SysAuthorityMenu + err = global.GVA_DB.Where("sys_authority_authority_id = ?", authorityId).Find(&SysAuthorityMenus).Error + if err != nil { + return + } + + var MenuIds []string + + for i := range SysAuthorityMenus { + MenuIds = append(MenuIds, SysAuthorityMenus[i].MenuId) + } + + err = global.GVA_DB.Where("id in (?)", MenuIds).Order("sort").Preload("Parameters").Find(&baseMenu).Error + if err != nil { + return + } + + for i := range baseMenu { + allMenus = append(allMenus, system.SysMenu{ + SysBaseMenu: baseMenu[i], + AuthorityId: authorityId, + MenuId: baseMenu[i].ID, + Parameters: baseMenu[i].Parameters, + }) + } + + err = global.GVA_DB.Where("authority_id = ?", authorityId).Preload("SysBaseMenuBtn").Find(&btns).Error + if err != nil { + return + } + var btnMap = make(map[uint]map[string]uint) + for _, v := range btns { + if btnMap[v.SysMenuID] == nil { + btnMap[v.SysMenuID] = make(map[string]uint) + } + btnMap[v.SysMenuID][v.SysBaseMenuBtn.Name] = authorityId + } + for _, v := range allMenus { + v.Btns = btnMap[v.SysBaseMenu.ID] + treeMap[v.ParentId] = append(treeMap[v.ParentId], v) + } + return treeMap, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetMenuTree +//@description: 获取动态菜单树 +//@param: authorityId string +//@return: menus []system.SysMenu, err error + +func (menuService *MenuService) GetMenuTree(authorityId uint) (menus []system.SysMenu, err error) { + menuTree, err := menuService.getMenuTreeMap(authorityId) + menus = menuTree[0] + for i := 0; i < len(menus); i++ { + err = menuService.getChildrenList(&menus[i], menuTree) + } + return menus, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: getChildrenList +//@description: 获取子菜单 +//@param: menu *model.SysMenu, treeMap map[string][]model.SysMenu +//@return: err error + +func (menuService *MenuService) getChildrenList(menu *system.SysMenu, treeMap map[uint][]system.SysMenu) (err error) { + menu.Children = treeMap[menu.MenuId] + for i := 0; i < len(menu.Children); i++ { + err = menuService.getChildrenList(&menu.Children[i], treeMap) + } + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetInfoList +//@description: 获取路由分页 +//@return: list interface{}, total int64,err error + +func (menuService *MenuService) GetInfoList(authorityID uint) (list interface{}, err error) { + var menuList []system.SysBaseMenu + treeMap, err := menuService.getBaseMenuTreeMap(authorityID) + menuList = treeMap[0] + for i := 0; i < len(menuList); i++ { + err = menuService.getBaseChildrenList(&menuList[i], treeMap) + } + return menuList, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: getBaseChildrenList +//@description: 获取菜单的子菜单 +//@param: menu *model.SysBaseMenu, treeMap map[string][]model.SysBaseMenu +//@return: err error + +func (menuService *MenuService) getBaseChildrenList(menu *system.SysBaseMenu, treeMap map[uint][]system.SysBaseMenu) (err error) { + menu.Children = treeMap[menu.ID] + for i := 0; i < len(menu.Children); i++ { + err = menuService.getBaseChildrenList(&menu.Children[i], treeMap) + } + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: AddBaseMenu +//@description: 添加基础路由 +//@param: menu model.SysBaseMenu +//@return: error + +func (menuService *MenuService) AddBaseMenu(menu system.SysBaseMenu) error { + if !errors.Is(global.GVA_DB.Where("name = ?", menu.Name).First(&system.SysBaseMenu{}).Error, gorm.ErrRecordNotFound) { + return errors.New("存在重复name,请修改name") + } + return global.GVA_DB.Create(&menu).Error +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: getBaseMenuTreeMap +//@description: 获取路由总树map +//@return: treeMap map[string][]system.SysBaseMenu, err error + +func (menuService *MenuService) getBaseMenuTreeMap(authorityID uint) (treeMap map[uint][]system.SysBaseMenu, err error) { + parentAuthorityID, err := AuthorityServiceApp.GetParentAuthorityID(authorityID) + if err != nil { + return nil, err + } + + var allMenus []system.SysBaseMenu + treeMap = make(map[uint][]system.SysBaseMenu) + db := global.GVA_DB.Order("sort").Preload("MenuBtn").Preload("Parameters") + + // 当开启了严格的树角色并且父角色不为0时需要进行菜单筛选 + if global.GVA_CONFIG.System.UseStrictAuth && parentAuthorityID != 0 { + var authorityMenus []system.SysAuthorityMenu + err = global.GVA_DB.Where("sys_authority_authority_id = ?", authorityID).Find(&authorityMenus).Error + if err != nil { + return nil, err + } + var menuIds []string + for i := range authorityMenus { + menuIds = append(menuIds, authorityMenus[i].MenuId) + } + db = db.Where("id in (?)", menuIds) + } + + err = db.Find(&allMenus).Error + for _, v := range allMenus { + treeMap[v.ParentId] = append(treeMap[v.ParentId], v) + } + return treeMap, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetBaseMenuTree +//@description: 获取基础路由树 +//@return: menus []system.SysBaseMenu, err error + +func (menuService *MenuService) GetBaseMenuTree(authorityID uint) (menus []system.SysBaseMenu, err error) { + treeMap, err := menuService.getBaseMenuTreeMap(authorityID) + menus = treeMap[0] + for i := 0; i < len(menus); i++ { + err = menuService.getBaseChildrenList(&menus[i], treeMap) + } + return menus, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: AddMenuAuthority +//@description: 为角色增加menu树 +//@param: menus []model.SysBaseMenu, authorityId string +//@return: err error + +func (menuService *MenuService) AddMenuAuthority(menus []system.SysBaseMenu, adminAuthorityID, authorityId uint) (err error) { + var auth system.SysAuthority + auth.AuthorityId = authorityId + auth.SysBaseMenus = menus + + err = AuthorityServiceApp.CheckAuthorityIDAuth(adminAuthorityID, authorityId) + if err != nil { + return err + } + + var authority system.SysAuthority + _ = global.GVA_DB.First(&authority, "authority_id = ?", adminAuthorityID).Error + var menuIds []string + + // 当开启了严格的树角色并且父角色不为0时需要进行菜单筛选 + if global.GVA_CONFIG.System.UseStrictAuth && *authority.ParentId != 0 { + var authorityMenus []system.SysAuthorityMenu + err = global.GVA_DB.Where("sys_authority_authority_id = ?", adminAuthorityID).Find(&authorityMenus).Error + if err != nil { + return err + } + for i := range authorityMenus { + menuIds = append(menuIds, authorityMenus[i].MenuId) + } + + for i := range menus { + hasMenu := false + for j := range menuIds { + idStr := strconv.Itoa(int(menus[i].ID)) + if idStr == menuIds[j] { + hasMenu = true + } + } + if !hasMenu { + return errors.New("添加失败,请勿跨级操作") + } + } + } + + err = AuthorityServiceApp.SetMenuAuthority(&auth) + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetMenuAuthority +//@description: 查看当前角色树 +//@param: info *request.GetAuthorityId +//@return: menus []system.SysMenu, err error + +func (menuService *MenuService) GetMenuAuthority(info *request.GetAuthorityId) (menus []system.SysMenu, err error) { + var baseMenu []system.SysBaseMenu + var SysAuthorityMenus []system.SysAuthorityMenu + err = global.GVA_DB.Where("sys_authority_authority_id = ?", info.AuthorityId).Find(&SysAuthorityMenus).Error + if err != nil { + return + } + + var MenuIds []string + + for i := range SysAuthorityMenus { + MenuIds = append(MenuIds, SysAuthorityMenus[i].MenuId) + } + + err = global.GVA_DB.Where("id in (?) ", MenuIds).Order("sort").Find(&baseMenu).Error + + for i := range baseMenu { + menus = append(menus, system.SysMenu{ + SysBaseMenu: baseMenu[i], + AuthorityId: info.AuthorityId, + MenuId: baseMenu[i].ID, + Parameters: baseMenu[i].Parameters, + }) + } + return menus, err +} + +// UserAuthorityDefaultRouter 用户角色默认路由检查 +// +// Author [SliverHorn](https://github.com/SliverHorn) +func (menuService *MenuService) UserAuthorityDefaultRouter(user *system.SysUser) { + var menuIds []string + err := global.GVA_DB.Model(&system.SysAuthorityMenu{}).Where("sys_authority_authority_id = ?", user.AuthorityId).Pluck("sys_base_menu_id", &menuIds).Error + if err != nil { + return + } + var am system.SysBaseMenu + err = global.GVA_DB.First(&am, "name = ? and id in (?)", user.Authority.DefaultRouter, menuIds).Error + if errors.Is(err, gorm.ErrRecordNotFound) { + user.Authority.DefaultRouter = "404" + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_operation_record.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_operation_record.go new file mode 100644 index 000000000..adfc25efd --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_operation_record.go @@ -0,0 +1,88 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + systemReq "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" +) + +//@author: [granty1](https://github.com/granty1) +//@function: CreateSysOperationRecord +//@description: 创建记录 +//@param: sysOperationRecord model.SysOperationRecord +//@return: err error + +type OperationRecordService struct{} + +var OperationRecordServiceApp = new(OperationRecordService) + +func (operationRecordService *OperationRecordService) CreateSysOperationRecord(sysOperationRecord system.SysOperationRecord) (err error) { + err = global.GVA_DB.Create(&sysOperationRecord).Error + return err +} + +//@author: [granty1](https://github.com/granty1) +//@author: [piexlmax](https://github.com/piexlmax) +//@function: DeleteSysOperationRecordByIds +//@description: 批量删除记录 +//@param: ids request.IdsReq +//@return: err error + +func (operationRecordService *OperationRecordService) DeleteSysOperationRecordByIds(ids request.IdsReq) (err error) { + err = global.GVA_DB.Delete(&[]system.SysOperationRecord{}, "id in (?)", ids.Ids).Error + return err +} + +//@author: [granty1](https://github.com/granty1) +//@function: DeleteSysOperationRecord +//@description: 删除操作记录 +//@param: sysOperationRecord model.SysOperationRecord +//@return: err error + +func (operationRecordService *OperationRecordService) DeleteSysOperationRecord(sysOperationRecord system.SysOperationRecord) (err error) { + err = global.GVA_DB.Delete(&sysOperationRecord).Error + return err +} + +//@author: [granty1](https://github.com/granty1) +//@function: GetSysOperationRecord +//@description: 根据id获取单条操作记录 +//@param: id uint +//@return: sysOperationRecord system.SysOperationRecord, err error + +func (operationRecordService *OperationRecordService) GetSysOperationRecord(id uint) (sysOperationRecord system.SysOperationRecord, err error) { + err = global.GVA_DB.Where("id = ?", id).First(&sysOperationRecord).Error + return +} + +//@author: [granty1](https://github.com/granty1) +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetSysOperationRecordInfoList +//@description: 分页获取操作记录列表 +//@param: info systemReq.SysOperationRecordSearch +//@return: list interface{}, total int64, err error + +func (operationRecordService *OperationRecordService) GetSysOperationRecordInfoList(info systemReq.SysOperationRecordSearch) (list interface{}, total int64, err error) { + limit := info.PageSize + offset := info.PageSize * (info.Page - 1) + // 创建db + db := global.GVA_DB.Model(&system.SysOperationRecord{}) + var sysOperationRecords []system.SysOperationRecord + // 如果有条件搜索 下方会自动创建搜索语句 + if info.Method != "" { + db = db.Where("method = ?", info.Method) + } + if info.Path != "" { + db = db.Where("path LIKE ?", "%"+info.Path+"%") + } + if info.Status != 0 { + db = db.Where("status = ?", info.Status) + } + err = db.Count(&total).Error + if err != nil { + return + } + err = db.Order("id desc").Limit(limit).Offset(offset).Preload("User").Find(&sysOperationRecords).Error + return sysOperationRecords, total, err +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_params.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_params.go new file mode 100644 index 000000000..7391ec016 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_params.go @@ -0,0 +1,82 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + systemReq "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" +) + +type SysParamsService struct{} + +// CreateSysParams 创建参数记录 +// Author [Mr.奇淼](https://github.com/pixelmaxQm) +func (sysParamsService *SysParamsService) CreateSysParams(sysParams *system.SysParams) (err error) { + err = global.GVA_DB.Create(sysParams).Error + return err +} + +// DeleteSysParams 删除参数记录 +// Author [Mr.奇淼](https://github.com/pixelmaxQm) +func (sysParamsService *SysParamsService) DeleteSysParams(ID string) (err error) { + err = global.GVA_DB.Delete(&system.SysParams{}, "id = ?", ID).Error + return err +} + +// DeleteSysParamsByIds 批量删除参数记录 +// Author [Mr.奇淼](https://github.com/pixelmaxQm) +func (sysParamsService *SysParamsService) DeleteSysParamsByIds(IDs []string) (err error) { + err = global.GVA_DB.Delete(&[]system.SysParams{}, "id in ?", IDs).Error + return err +} + +// UpdateSysParams 更新参数记录 +// Author [Mr.奇淼](https://github.com/pixelmaxQm) +func (sysParamsService *SysParamsService) UpdateSysParams(sysParams system.SysParams) (err error) { + err = global.GVA_DB.Model(&system.SysParams{}).Where("id = ?", sysParams.ID).Updates(&sysParams).Error + return err +} + +// GetSysParams 根据ID获取参数记录 +// Author [Mr.奇淼](https://github.com/pixelmaxQm) +func (sysParamsService *SysParamsService) GetSysParams(ID string) (sysParams system.SysParams, err error) { + err = global.GVA_DB.Where("id = ?", ID).First(&sysParams).Error + return +} + +// GetSysParamsInfoList 分页获取参数记录 +// Author [Mr.奇淼](https://github.com/pixelmaxQm) +func (sysParamsService *SysParamsService) GetSysParamsInfoList(info systemReq.SysParamsSearch) (list []system.SysParams, total int64, err error) { + limit := info.PageSize + offset := info.PageSize * (info.Page - 1) + // 创建db + db := global.GVA_DB.Model(&system.SysParams{}) + var sysParamss []system.SysParams + // 如果有条件搜索 下方会自动创建搜索语句 + if info.StartCreatedAt != nil && info.EndCreatedAt != nil { + db = db.Where("created_at BETWEEN ? AND ?", info.StartCreatedAt, info.EndCreatedAt) + } + if info.Name != "" { + db = db.Where("name LIKE ?", "%"+info.Name+"%") + } + if info.Key != "" { + db = db.Where("key LIKE ?", "%"+info.Key+"%") + } + err = db.Count(&total).Error + if err != nil { + return + } + + if limit != 0 { + db = db.Limit(limit).Offset(offset) + } + + err = db.Find(&sysParamss).Error + return sysParamss, total, err +} + +// GetSysParam 根据key获取参数value +// Author [Mr.奇淼](https://github.com/pixelmaxQm) +func (sysParamsService *SysParamsService) GetSysParam(key string) (param system.SysParams, err error) { + err = global.GVA_DB.Where(system.SysParams{Key: key}).First(¶m).Error + return +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_system.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_system.go new file mode 100644 index 000000000..a4415f041 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_system.go @@ -0,0 +1,62 @@ +package system + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/config" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "go.uber.org/zap" +) + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetSystemConfig +//@description: 读取配置文件 +//@return: conf config.Server, err error + +type SystemConfigService struct{} + +var SystemConfigServiceApp = new(SystemConfigService) + +func (systemConfigService *SystemConfigService) GetSystemConfig() (conf config.Server, err error) { + return global.GVA_CONFIG, nil +} + +// @description set system config, +//@author: [piexlmax](https://github.com/piexlmax) +//@function: SetSystemConfig +//@description: 设置配置文件 +//@param: system model.System +//@return: err error + +func (systemConfigService *SystemConfigService) SetSystemConfig(system system.System) (err error) { + cs := utils.StructToMap(system.Config) + for k, v := range cs { + global.GVA_VP.Set(k, v) + } + err = global.GVA_VP.WriteConfig() + return err +} + +//@author: [SliverHorn](https://github.com/SliverHorn) +//@function: GetServerInfo +//@description: 获取服务器信息 +//@return: server *utils.Server, err error + +func (systemConfigService *SystemConfigService) GetServerInfo() (server *utils.Server, err error) { + var s utils.Server + s.Os = utils.InitOS() + if s.Cpu, err = utils.InitCPU(); err != nil { + global.GVA_LOG.Error("func utils.InitCPU() Failed", zap.String("err", err.Error())) + return &s, err + } + if s.Ram, err = utils.InitRAM(); err != nil { + global.GVA_LOG.Error("func utils.InitRAM() Failed", zap.String("err", err.Error())) + return &s, err + } + if s.Disk, err = utils.InitDisk(); err != nil { + global.GVA_LOG.Error("func utils.InitDisk() Failed", zap.String("err", err.Error())) + return &s, err + } + + return &s, nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_user.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_user.go new file mode 100644 index 000000000..65a94bbe8 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/service/system/sys_user.go @@ -0,0 +1,317 @@ +package system + +import ( + "errors" + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/model/common" + systemReq "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/gofrs/uuid/v5" + "gorm.io/gorm" +) + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: Register +//@description: 用户注册 +//@param: u model.SysUser +//@return: userInter system.SysUser, err error + +type UserService struct{} + +var UserServiceApp = new(UserService) + +func (userService *UserService) Register(u system.SysUser) (userInter system.SysUser, err error) { + var user system.SysUser + if !errors.Is(global.GVA_DB.Where("username = ?", u.Username).First(&user).Error, gorm.ErrRecordNotFound) { // 判断用户名是否注册 + return userInter, errors.New("用户名已注册") + } + // 否则 附加uuid 密码hash加密 注册 + u.Password = utils.BcryptHash(u.Password) + u.UUID = uuid.Must(uuid.NewV4()) + err = global.GVA_DB.Create(&u).Error + return u, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@author: [SliverHorn](https://github.com/SliverHorn) +//@function: Login +//@description: 用户登录 +//@param: u *model.SysUser +//@return: err error, userInter *model.SysUser + +func (userService *UserService) Login(u *system.SysUser) (userInter *system.SysUser, err error) { + if nil == global.GVA_DB { + return nil, fmt.Errorf("db not init") + } + + var user system.SysUser + err = global.GVA_DB.Where("username = ?", u.Username).Preload("Authorities").Preload("Authority").First(&user).Error + if err == nil { + if ok := utils.BcryptCheck(u.Password, user.Password); !ok { + return nil, errors.New("密码错误") + } + MenuServiceApp.UserAuthorityDefaultRouter(&user) + } + return &user, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: ChangePassword +//@description: 修改用户密码 +//@param: u *model.SysUser, newPassword string +//@return: userInter *model.SysUser,err error + +func (userService *UserService) ChangePassword(u *system.SysUser, newPassword string) (userInter *system.SysUser, err error) { + var user system.SysUser + if err = global.GVA_DB.Where("id = ?", u.ID).First(&user).Error; err != nil { + return nil, err + } + if ok := utils.BcryptCheck(u.Password, user.Password); !ok { + return nil, errors.New("原密码错误") + } + user.Password = utils.BcryptHash(newPassword) + err = global.GVA_DB.Save(&user).Error + return &user, err + +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: GetUserInfoList +//@description: 分页获取数据 +//@param: info request.PageInfo +//@return: err error, list interface{}, total int64 + +func (userService *UserService) GetUserInfoList(info systemReq.GetUserList) (list interface{}, total int64, err error) { + limit := info.PageSize + offset := info.PageSize * (info.Page - 1) + db := global.GVA_DB.Model(&system.SysUser{}) + var userList []system.SysUser + + if info.NickName != "" { + db = db.Where("nick_name LIKE ?", "%"+info.NickName+"%") + } + if info.Phone != "" { + db = db.Where("phone LIKE ?", "%"+info.Phone+"%") + } + if info.Username != "" { + db = db.Where("username LIKE ?", "%"+info.Username+"%") + } + if info.Email != "" { + db = db.Where("email LIKE ?", "%"+info.Email+"%") + } + + err = db.Count(&total).Error + if err != nil { + return + } + err = db.Limit(limit).Offset(offset).Preload("Authorities").Preload("Authority").Find(&userList).Error + return userList, total, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: SetUserAuthority +//@description: 设置一个用户的权限 +//@param: uuid uuid.UUID, authorityId string +//@return: err error + +func (userService *UserService) SetUserAuthority(id uint, authorityId uint) (err error) { + + assignErr := global.GVA_DB.Where("sys_user_id = ? AND sys_authority_authority_id = ?", id, authorityId).First(&system.SysUserAuthority{}).Error + if errors.Is(assignErr, gorm.ErrRecordNotFound) { + return errors.New("该用户无此角色") + } + + var authority system.SysAuthority + err = global.GVA_DB.Where("authority_id = ?", authorityId).First(&authority).Error + if err != nil { + return err + } + var authorityMenu []system.SysAuthorityMenu + var authorityMenuIDs []string + err = global.GVA_DB.Where("sys_authority_authority_id = ?", authorityId).Find(&authorityMenu).Error + if err != nil { + return err + } + + for i := range authorityMenu { + authorityMenuIDs = append(authorityMenuIDs, authorityMenu[i].MenuId) + } + + var authorityMenus []system.SysBaseMenu + err = global.GVA_DB.Preload("Parameters").Where("id in (?)", authorityMenuIDs).Find(&authorityMenus).Error + if err != nil { + return err + } + hasMenu := false + for i := range authorityMenus { + if authorityMenus[i].Name == authority.DefaultRouter { + hasMenu = true + break + } + } + if !hasMenu { + return errors.New("找不到默认路由,无法切换本角色") + } + + err = global.GVA_DB.Model(&system.SysUser{}).Where("id = ?", id).Update("authority_id", authorityId).Error + return err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: SetUserAuthorities +//@description: 设置一个用户的权限 +//@param: id uint, authorityIds []string +//@return: err error + +func (userService *UserService) SetUserAuthorities(adminAuthorityID, id uint, authorityIds []uint) (err error) { + return global.GVA_DB.Transaction(func(tx *gorm.DB) error { + var user system.SysUser + TxErr := tx.Where("id = ?", id).First(&user).Error + if TxErr != nil { + global.GVA_LOG.Debug(TxErr.Error()) + return errors.New("查询用户数据失败") + } + TxErr = tx.Delete(&[]system.SysUserAuthority{}, "sys_user_id = ?", id).Error + if TxErr != nil { + return TxErr + } + var useAuthority []system.SysUserAuthority + for _, v := range authorityIds { + e := AuthorityServiceApp.CheckAuthorityIDAuth(adminAuthorityID, v) + if e != nil { + return e + } + useAuthority = append(useAuthority, system.SysUserAuthority{ + SysUserId: id, SysAuthorityAuthorityId: v, + }) + } + TxErr = tx.Create(&useAuthority).Error + if TxErr != nil { + return TxErr + } + TxErr = tx.Model(&user).Update("authority_id", authorityIds[0]).Error + if TxErr != nil { + return TxErr + } + // 返回 nil 提交事务 + return nil + }) +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: DeleteUser +//@description: 删除用户 +//@param: id float64 +//@return: err error + +func (userService *UserService) DeleteUser(id int) (err error) { + return global.GVA_DB.Transaction(func(tx *gorm.DB) error { + if err := tx.Where("id = ?", id).Delete(&system.SysUser{}).Error; err != nil { + return err + } + if err := tx.Delete(&[]system.SysUserAuthority{}, "sys_user_id = ?", id).Error; err != nil { + return err + } + return nil + }) +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: SetUserInfo +//@description: 设置用户信息 +//@param: reqUser model.SysUser +//@return: err error, user model.SysUser + +func (userService *UserService) SetUserInfo(req system.SysUser) error { + return global.GVA_DB.Model(&system.SysUser{}). + Select("updated_at", "nick_name", "header_img", "phone", "email", "enable"). + Where("id=?", req.ID). + Updates(map[string]interface{}{ + "updated_at": time.Now(), + "nick_name": req.NickName, + "header_img": req.HeaderImg, + "phone": req.Phone, + "email": req.Email, + "enable": req.Enable, + }).Error +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: SetSelfInfo +//@description: 设置用户信息 +//@param: reqUser model.SysUser +//@return: err error, user model.SysUser + +func (userService *UserService) SetSelfInfo(req system.SysUser) error { + return global.GVA_DB.Model(&system.SysUser{}). + Where("id=?", req.ID). + Updates(req).Error +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: SetSelfSetting +//@description: 设置用户配置 +//@param: req datatypes.JSON, uid uint +//@return: err error + +func (userService *UserService) SetSelfSetting(req common.JSONMap, uid uint) error { + return global.GVA_DB.Model(&system.SysUser{}).Where("id = ?", uid).Update("origin_setting", req).Error +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@author: [SliverHorn](https://github.com/SliverHorn) +//@function: GetUserInfo +//@description: 获取用户信息 +//@param: uuid uuid.UUID +//@return: err error, user system.SysUser + +func (userService *UserService) GetUserInfo(uuid uuid.UUID) (user system.SysUser, err error) { + var reqUser system.SysUser + err = global.GVA_DB.Preload("Authorities").Preload("Authority").First(&reqUser, "uuid = ?", uuid).Error + if err != nil { + return reqUser, err + } + MenuServiceApp.UserAuthorityDefaultRouter(&reqUser) + return reqUser, err +} + +//@author: [SliverHorn](https://github.com/SliverHorn) +//@function: FindUserById +//@description: 通过id获取用户信息 +//@param: id int +//@return: err error, user *model.SysUser + +func (userService *UserService) FindUserById(id int) (user *system.SysUser, err error) { + var u system.SysUser + err = global.GVA_DB.Where("id = ?", id).First(&u).Error + return &u, err +} + +//@author: [SliverHorn](https://github.com/SliverHorn) +//@function: FindUserByUuid +//@description: 通过uuid获取用户信息 +//@param: uuid string +//@return: err error, user *model.SysUser + +func (userService *UserService) FindUserByUuid(uuid string) (user *system.SysUser, err error) { + var u system.SysUser + if err = global.GVA_DB.Where("uuid = ?", uuid).First(&u).Error; err != nil { + return &u, errors.New("用户不存在") + } + return &u, nil +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: ResetPassword +//@description: 修改用户密码 +//@param: ID uint +//@return: err error + +func (userService *UserService) ResetPassword(ID uint) (err error) { + err = global.GVA_DB.Model(&system.SysUser{}).Where("id = ?", ID).Update("password", utils.BcryptHash("123456")).Error + return err +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/example/file_upload_download.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/example/file_upload_download.go new file mode 100644 index 000000000..bc6b16f6d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/example/file_upload_download.go @@ -0,0 +1,65 @@ +package example + +import ( + "context" + + "github.com/flipped-aurora/gin-vue-admin/server/model/example" + "github.com/flipped-aurora/gin-vue-admin/server/service/system" + "github.com/pkg/errors" + "gorm.io/gorm" +) + +const initOrderExaFile = system.InitOrderInternal + 1 + +type initExaFileMysql struct{} + +// auto run +func init() { + system.RegisterInit(initOrderExaFile, &initExaFileMysql{}) +} + +func (i *initExaFileMysql) MigrateTable(ctx context.Context) (context.Context, error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + return ctx, db.AutoMigrate(&example.ExaFileUploadAndDownload{}) +} + +func (i *initExaFileMysql) TableCreated(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + return db.Migrator().HasTable(&example.ExaFileUploadAndDownload{}) +} + +func (i initExaFileMysql) InitializerName() string { + return example.ExaFileUploadAndDownload{}.TableName() +} + +func (i *initExaFileMysql) InitializeData(ctx context.Context) (context.Context, error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + entities := []example.ExaFileUploadAndDownload{ + {Name: "neko", Url: "https://pic4.zhimg.com/100/v2-71172f3051b5f85c32d51a7a35bc3399_qhd.jpg", Tag: "png", Key: "158787308910.png"}, + } + if err := db.Create(&entities).Error; err != nil { + return ctx, errors.Wrap(err, example.ExaFileUploadAndDownload{}.TableName()+"表数据初始化失败!") + } + return ctx, nil +} + +func (i *initExaFileMysql) DataInserted(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + lookup := example.ExaFileUploadAndDownload{Name: "logo.png", Key: "1587973709logo.png"} + if errors.Is(db.First(&lookup, &lookup).Error, gorm.ErrRecordNotFound) { + return false + } + return true +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/api.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/api.go new file mode 100644 index 000000000..89c591d48 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/api.go @@ -0,0 +1,203 @@ +package system + +import ( + "context" + sysModel "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/service/system" + "github.com/pkg/errors" + "gorm.io/gorm" +) + +type initApi struct{} + +const initOrderApi = system.InitOrderSystem + 1 + +// auto run +func init() { + system.RegisterInit(initOrderApi, &initApi{}) +} + +func (i initApi) InitializerName() string { + return sysModel.SysApi{}.TableName() +} + +func (i *initApi) MigrateTable(ctx context.Context) (context.Context, error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + return ctx, db.AutoMigrate(&sysModel.SysApi{}) +} + +func (i *initApi) TableCreated(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + return db.Migrator().HasTable(&sysModel.SysApi{}) +} + +func (i *initApi) InitializeData(ctx context.Context) (context.Context, error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + entities := []sysModel.SysApi{ + {ApiGroup: "jwt", Method: "POST", Path: "/jwt/jsonInBlacklist", Description: "jwt加入黑名单(退出,必选)"}, + + {ApiGroup: "系统用户", Method: "DELETE", Path: "/user/deleteUser", Description: "删除用户"}, + {ApiGroup: "系统用户", Method: "POST", Path: "/user/admin_register", Description: "用户注册"}, + {ApiGroup: "系统用户", Method: "POST", Path: "/user/getUserList", Description: "获取用户列表"}, + {ApiGroup: "系统用户", Method: "PUT", Path: "/user/setUserInfo", Description: "设置用户信息"}, + {ApiGroup: "系统用户", Method: "PUT", Path: "/user/setSelfInfo", Description: "设置自身信息(必选)"}, + {ApiGroup: "系统用户", Method: "GET", Path: "/user/getUserInfo", Description: "获取自身信息(必选)"}, + {ApiGroup: "系统用户", Method: "POST", Path: "/user/setUserAuthorities", Description: "设置权限组"}, + {ApiGroup: "系统用户", Method: "POST", Path: "/user/changePassword", Description: "修改密码(建议选择)"}, + {ApiGroup: "系统用户", Method: "POST", Path: "/user/setUserAuthority", Description: "修改用户角色(必选)"}, + {ApiGroup: "系统用户", Method: "POST", Path: "/user/resetPassword", Description: "重置用户密码"}, + {ApiGroup: "系统用户", Method: "PUT", Path: "/user/setSelfSetting", Description: "用户界面配置"}, + + {ApiGroup: "api", Method: "POST", Path: "/api/createApi", Description: "创建api"}, + {ApiGroup: "api", Method: "POST", Path: "/api/deleteApi", Description: "删除Api"}, + {ApiGroup: "api", Method: "POST", Path: "/api/updateApi", Description: "更新Api"}, + {ApiGroup: "api", Method: "POST", Path: "/api/getApiList", Description: "获取api列表"}, + {ApiGroup: "api", Method: "POST", Path: "/api/getAllApis", Description: "获取所有api"}, + {ApiGroup: "api", Method: "POST", Path: "/api/getApiById", Description: "获取api详细信息"}, + {ApiGroup: "api", Method: "DELETE", Path: "/api/deleteApisByIds", Description: "批量删除api"}, + {ApiGroup: "api", Method: "GET", Path: "/api/syncApi", Description: "获取待同步API"}, + {ApiGroup: "api", Method: "GET", Path: "/api/getApiGroups", Description: "获取路由组"}, + {ApiGroup: "api", Method: "POST", Path: "/api/enterSyncApi", Description: "确认同步API"}, + {ApiGroup: "api", Method: "POST", Path: "/api/ignoreApi", Description: "忽略API"}, + + {ApiGroup: "角色", Method: "POST", Path: "/authority/copyAuthority", Description: "拷贝角色"}, + {ApiGroup: "角色", Method: "POST", Path: "/authority/createAuthority", Description: "创建角色"}, + {ApiGroup: "角色", Method: "POST", Path: "/authority/deleteAuthority", Description: "删除角色"}, + {ApiGroup: "角色", Method: "PUT", Path: "/authority/updateAuthority", Description: "更新角色信息"}, + {ApiGroup: "角色", Method: "POST", Path: "/authority/getAuthorityList", Description: "获取角色列表"}, + {ApiGroup: "角色", Method: "POST", Path: "/authority/setDataAuthority", Description: "设置角色资源权限"}, + + {ApiGroup: "casbin", Method: "POST", Path: "/casbin/updateCasbin", Description: "更改角色api权限"}, + {ApiGroup: "casbin", Method: "POST", Path: "/casbin/getPolicyPathByAuthorityId", Description: "获取权限列表"}, + + {ApiGroup: "菜单", Method: "POST", Path: "/menu/addBaseMenu", Description: "新增菜单"}, + {ApiGroup: "菜单", Method: "POST", Path: "/menu/getMenu", Description: "获取菜单树(必选)"}, + {ApiGroup: "菜单", Method: "POST", Path: "/menu/deleteBaseMenu", Description: "删除菜单"}, + {ApiGroup: "菜单", Method: "POST", Path: "/menu/updateBaseMenu", Description: "更新菜单"}, + {ApiGroup: "菜单", Method: "POST", Path: "/menu/getBaseMenuById", Description: "根据id获取菜单"}, + {ApiGroup: "菜单", Method: "POST", Path: "/menu/getMenuList", Description: "分页获取基础menu列表"}, + {ApiGroup: "菜单", Method: "POST", Path: "/menu/getBaseMenuTree", Description: "获取用户动态路由"}, + {ApiGroup: "菜单", Method: "POST", Path: "/menu/getMenuAuthority", Description: "获取指定角色menu"}, + {ApiGroup: "菜单", Method: "POST", Path: "/menu/addMenuAuthority", Description: "增加menu和角色关联关系"}, + + {ApiGroup: "分片上传", Method: "GET", Path: "/fileUploadAndDownload/findFile", Description: "寻找目标文件(秒传)"}, + {ApiGroup: "分片上传", Method: "POST", Path: "/fileUploadAndDownload/breakpointContinue", Description: "断点续传"}, + {ApiGroup: "分片上传", Method: "POST", Path: "/fileUploadAndDownload/breakpointContinueFinish", Description: "断点续传完成"}, + {ApiGroup: "分片上传", Method: "POST", Path: "/fileUploadAndDownload/removeChunk", Description: "上传完成移除文件"}, + + {ApiGroup: "文件上传与下载", Method: "POST", Path: "/fileUploadAndDownload/upload", Description: "文件上传(建议选择)"}, + {ApiGroup: "文件上传与下载", Method: "POST", Path: "/fileUploadAndDownload/deleteFile", Description: "删除文件"}, + {ApiGroup: "文件上传与下载", Method: "POST", Path: "/fileUploadAndDownload/editFileName", Description: "文件名或者备注编辑"}, + {ApiGroup: "文件上传与下载", Method: "POST", Path: "/fileUploadAndDownload/getFileList", Description: "获取上传文件列表"}, + {ApiGroup: "文件上传与下载", Method: "POST", Path: "/fileUploadAndDownload/importURL", Description: "导入URL"}, + + {ApiGroup: "系统服务", Method: "POST", Path: "/system/getServerInfo", Description: "获取服务器信息"}, + {ApiGroup: "系统服务", Method: "POST", Path: "/system/getSystemConfig", Description: "获取配置文件内容"}, + {ApiGroup: "系统服务", Method: "POST", Path: "/system/setSystemConfig", Description: "设置配置文件内容"}, + + {ApiGroup: "客户", Method: "PUT", Path: "/customer/customer", Description: "更新客户"}, + {ApiGroup: "客户", Method: "POST", Path: "/customer/customer", Description: "创建客户"}, + {ApiGroup: "客户", Method: "DELETE", Path: "/customer/customer", Description: "删除客户"}, + {ApiGroup: "客户", Method: "GET", Path: "/customer/customer", Description: "获取单一客户"}, + {ApiGroup: "客户", Method: "GET", Path: "/customer/customerList", Description: "获取客户列表"}, + + {ApiGroup: "代码生成器", Method: "GET", Path: "/autoCode/getDB", Description: "获取所有数据库"}, + {ApiGroup: "代码生成器", Method: "GET", Path: "/autoCode/getTables", Description: "获取数据库表"}, + {ApiGroup: "代码生成器", Method: "POST", Path: "/autoCode/createTemp", Description: "自动化代码"}, + {ApiGroup: "代码生成器", Method: "POST", Path: "/autoCode/preview", Description: "预览自动化代码"}, + {ApiGroup: "代码生成器", Method: "GET", Path: "/autoCode/getColumn", Description: "获取所选table的所有字段"}, + {ApiGroup: "代码生成器", Method: "POST", Path: "/autoCode/installPlugin", Description: "安装插件"}, + {ApiGroup: "代码生成器", Method: "POST", Path: "/autoCode/pubPlug", Description: "打包插件"}, + + {ApiGroup: "模板配置", Method: "POST", Path: "/autoCode/createPackage", Description: "配置模板"}, + {ApiGroup: "模板配置", Method: "GET", Path: "/autoCode/getTemplates", Description: "获取模板文件"}, + {ApiGroup: "模板配置", Method: "POST", Path: "/autoCode/getPackage", Description: "获取所有模板"}, + {ApiGroup: "模板配置", Method: "POST", Path: "/autoCode/delPackage", Description: "删除模板"}, + + {ApiGroup: "代码生成器历史", Method: "POST", Path: "/autoCode/getMeta", Description: "获取meta信息"}, + {ApiGroup: "代码生成器历史", Method: "POST", Path: "/autoCode/rollback", Description: "回滚自动生成代码"}, + {ApiGroup: "代码生成器历史", Method: "POST", Path: "/autoCode/getSysHistory", Description: "查询回滚记录"}, + {ApiGroup: "代码生成器历史", Method: "POST", Path: "/autoCode/delSysHistory", Description: "删除回滚记录"}, + {ApiGroup: "代码生成器历史", Method: "POST", Path: "/autoCode/addFunc", Description: "增加模板方法"}, + + {ApiGroup: "系统字典详情", Method: "PUT", Path: "/sysDictionaryDetail/updateSysDictionaryDetail", Description: "更新字典内容"}, + {ApiGroup: "系统字典详情", Method: "POST", Path: "/sysDictionaryDetail/createSysDictionaryDetail", Description: "新增字典内容"}, + {ApiGroup: "系统字典详情", Method: "DELETE", Path: "/sysDictionaryDetail/deleteSysDictionaryDetail", Description: "删除字典内容"}, + {ApiGroup: "系统字典详情", Method: "GET", Path: "/sysDictionaryDetail/findSysDictionaryDetail", Description: "根据ID获取字典内容"}, + {ApiGroup: "系统字典详情", Method: "GET", Path: "/sysDictionaryDetail/getSysDictionaryDetailList", Description: "获取字典内容列表"}, + + {ApiGroup: "系统字典", Method: "POST", Path: "/sysDictionary/createSysDictionary", Description: "新增字典"}, + {ApiGroup: "系统字典", Method: "DELETE", Path: "/sysDictionary/deleteSysDictionary", Description: "删除字典"}, + {ApiGroup: "系统字典", Method: "PUT", Path: "/sysDictionary/updateSysDictionary", Description: "更新字典"}, + {ApiGroup: "系统字典", Method: "GET", Path: "/sysDictionary/findSysDictionary", Description: "根据ID获取字典(建议选择)"}, + {ApiGroup: "系统字典", Method: "GET", Path: "/sysDictionary/getSysDictionaryList", Description: "获取字典列表"}, + + {ApiGroup: "操作记录", Method: "POST", Path: "/sysOperationRecord/createSysOperationRecord", Description: "新增操作记录"}, + {ApiGroup: "操作记录", Method: "GET", Path: "/sysOperationRecord/findSysOperationRecord", Description: "根据ID获取操作记录"}, + {ApiGroup: "操作记录", Method: "GET", Path: "/sysOperationRecord/getSysOperationRecordList", Description: "获取操作记录列表"}, + {ApiGroup: "操作记录", Method: "DELETE", Path: "/sysOperationRecord/deleteSysOperationRecord", Description: "删除操作记录"}, + {ApiGroup: "操作记录", Method: "DELETE", Path: "/sysOperationRecord/deleteSysOperationRecordByIds", Description: "批量删除操作历史"}, + + {ApiGroup: "断点续传(插件版)", Method: "POST", Path: "/simpleUploader/upload", Description: "插件版分片上传"}, + {ApiGroup: "断点续传(插件版)", Method: "GET", Path: "/simpleUploader/checkFileMd5", Description: "文件完整度验证"}, + {ApiGroup: "断点续传(插件版)", Method: "GET", Path: "/simpleUploader/mergeFileMd5", Description: "上传完成合并文件"}, + + {ApiGroup: "email", Method: "POST", Path: "/email/emailTest", Description: "发送测试邮件"}, + {ApiGroup: "email", Method: "POST", Path: "/email/sendEmail", Description: "发送邮件"}, + + {ApiGroup: "按钮权限", Method: "POST", Path: "/authorityBtn/setAuthorityBtn", Description: "设置按钮权限"}, + {ApiGroup: "按钮权限", Method: "POST", Path: "/authorityBtn/getAuthorityBtn", Description: "获取已有按钮权限"}, + {ApiGroup: "按钮权限", Method: "POST", Path: "/authorityBtn/canRemoveAuthorityBtn", Description: "删除按钮"}, + + {ApiGroup: "表格模板", Method: "POST", Path: "/sysExportTemplate/createSysExportTemplate", Description: "新增导出模板"}, + {ApiGroup: "表格模板", Method: "DELETE", Path: "/sysExportTemplate/deleteSysExportTemplate", Description: "删除导出模板"}, + {ApiGroup: "表格模板", Method: "DELETE", Path: "/sysExportTemplate/deleteSysExportTemplateByIds", Description: "批量删除导出模板"}, + {ApiGroup: "表格模板", Method: "PUT", Path: "/sysExportTemplate/updateSysExportTemplate", Description: "更新导出模板"}, + {ApiGroup: "表格模板", Method: "GET", Path: "/sysExportTemplate/findSysExportTemplate", Description: "根据ID获取导出模板"}, + {ApiGroup: "表格模板", Method: "GET", Path: "/sysExportTemplate/getSysExportTemplateList", Description: "获取导出模板列表"}, + {ApiGroup: "表格模板", Method: "GET", Path: "/sysExportTemplate/exportExcel", Description: "导出Excel"}, + {ApiGroup: "表格模板", Method: "GET", Path: "/sysExportTemplate/exportTemplate", Description: "下载模板"}, + {ApiGroup: "表格模板", Method: "POST", Path: "/sysExportTemplate/importExcel", Description: "导入Excel"}, + + {ApiGroup: "公告", Method: "POST", Path: "/info/createInfo", Description: "新建公告"}, + {ApiGroup: "公告", Method: "DELETE", Path: "/info/deleteInfo", Description: "删除公告"}, + {ApiGroup: "公告", Method: "DELETE", Path: "/info/deleteInfoByIds", Description: "批量删除公告"}, + {ApiGroup: "公告", Method: "PUT", Path: "/info/updateInfo", Description: "更新公告"}, + {ApiGroup: "公告", Method: "GET", Path: "/info/findInfo", Description: "根据ID获取公告"}, + {ApiGroup: "公告", Method: "GET", Path: "/info/getInfoList", Description: "获取公告列表"}, + + {ApiGroup: "参数管理", Method: "POST", Path: "/sysParams/createSysParams", Description: "新建参数"}, + {ApiGroup: "参数管理", Method: "DELETE", Path: "/sysParams/deleteSysParams", Description: "删除参数"}, + {ApiGroup: "参数管理", Method: "DELETE", Path: "/sysParams/deleteSysParamsByIds", Description: "批量删除参数"}, + {ApiGroup: "参数管理", Method: "PUT", Path: "/sysParams/updateSysParams", Description: "更新参数"}, + {ApiGroup: "参数管理", Method: "GET", Path: "/sysParams/findSysParams", Description: "根据ID获取参数"}, + {ApiGroup: "参数管理", Method: "GET", Path: "/sysParams/getSysParamsList", Description: "获取参数列表"}, + {ApiGroup: "参数管理", Method: "GET", Path: "/sysParams/getSysParam", Description: "获取参数列表"}, + } + if err := db.Create(&entities).Error; err != nil { + return ctx, errors.Wrap(err, sysModel.SysApi{}.TableName()+"表数据初始化失败!") + } + next := context.WithValue(ctx, i.InitializerName(), entities) + return next, nil +} + +func (i *initApi) DataInserted(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + if errors.Is(db.Where("path = ? AND method = ?", "/authorityBtn/canRemoveAuthorityBtn", "POST"). + First(&sysModel.SysApi{}).Error, gorm.ErrRecordNotFound) { + return false + } + return true +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/api_ignore.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/api_ignore.go new file mode 100644 index 000000000..284a1cc0c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/api_ignore.go @@ -0,0 +1,77 @@ +package system + +import ( + "context" + sysModel "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/service/system" + "github.com/pkg/errors" + "gorm.io/gorm" +) + +type initApiIgnore struct{} + +const initOrderApiIgnore = initOrderApi + 1 + +// auto run +func init() { + system.RegisterInit(initOrderApiIgnore, &initApiIgnore{}) +} + +func (i initApiIgnore) InitializerName() string { + return sysModel.SysIgnoreApi{}.TableName() +} + +func (i *initApiIgnore) MigrateTable(ctx context.Context) (context.Context, error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + return ctx, db.AutoMigrate(&sysModel.SysIgnoreApi{}) +} + +func (i *initApiIgnore) TableCreated(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + return db.Migrator().HasTable(&sysModel.SysIgnoreApi{}) +} + +func (i *initApiIgnore) InitializeData(ctx context.Context) (context.Context, error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + entities := []sysModel.SysIgnoreApi{ + {Method: "GET", Path: "/swagger/*any"}, + {Method: "GET", Path: "/api/freshCasbin"}, + {Method: "GET", Path: "/uploads/file/*filepath"}, + {Method: "GET", Path: "/health"}, + {Method: "HEAD", Path: "/uploads/file/*filepath"}, + {Method: "POST", Path: "/autoCode/llmAuto"}, + {Method: "POST", Path: "/system/reloadSystem"}, + {Method: "POST", Path: "/base/login"}, + {Method: "POST", Path: "/base/captcha"}, + {Method: "POST", Path: "/init/initdb"}, + {Method: "POST", Path: "/init/checkdb"}, + {Method: "GET", Path: "/info/getInfoDataSource"}, + {Method: "GET", Path: "/info/getInfoPublic"}, + } + if err := db.Create(&entities).Error; err != nil { + return ctx, errors.Wrap(err, sysModel.SysIgnoreApi{}.TableName()+"表数据初始化失败!") + } + next := context.WithValue(ctx, i.InitializerName(), entities) + return next, nil +} + +func (i *initApiIgnore) DataInserted(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + if errors.Is(db.Where("path = ? AND method = ?", "/swagger/*any", "GET"). + First(&sysModel.SysIgnoreApi{}).Error, gorm.ErrRecordNotFound) { + return false + } + return true +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/authorities_menus.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/authorities_menus.go new file mode 100644 index 000000000..1c9058b88 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/authorities_menus.go @@ -0,0 +1,83 @@ +package system + +import ( + "context" + + sysModel "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/service/system" + "github.com/pkg/errors" + "gorm.io/gorm" +) + +const initOrderMenuAuthority = initOrderMenu + initOrderAuthority + +type initMenuAuthority struct{} + +// auto run +func init() { + system.RegisterInit(initOrderMenuAuthority, &initMenuAuthority{}) +} + +func (i *initMenuAuthority) MigrateTable(ctx context.Context) (context.Context, error) { + return ctx, nil // do nothing +} + +func (i *initMenuAuthority) TableCreated(ctx context.Context) bool { + return false // always replace +} + +func (i initMenuAuthority) InitializerName() string { + return "sys_menu_authorities" +} + +func (i *initMenuAuthority) InitializeData(ctx context.Context) (next context.Context, err error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + authorities, ok := ctx.Value(initAuthority{}.InitializerName()).([]sysModel.SysAuthority) + if !ok { + return ctx, errors.Wrap(system.ErrMissingDependentContext, "创建 [菜单-权限] 关联失败, 未找到权限表初始化数据") + } + menus, ok := ctx.Value(initMenu{}.InitializerName()).([]sysModel.SysBaseMenu) + if !ok { + return next, errors.Wrap(errors.New(""), "创建 [菜单-权限] 关联失败, 未找到菜单表初始化数据") + } + next = ctx + // 888 + if err = db.Model(&authorities[0]).Association("SysBaseMenus").Replace(menus); err != nil { + return next, err + } + + // 8881 + menu8881 := menus[:2] + menu8881 = append(menu8881, menus[7]) + if err = db.Model(&authorities[1]).Association("SysBaseMenus").Replace(menu8881); err != nil { + return next, err + } + + // 9528 + if err = db.Model(&authorities[2]).Association("SysBaseMenus").Replace(menus[:11]); err != nil { + return next, err + } + if err = db.Model(&authorities[2]).Association("SysBaseMenus").Append(menus[12:17]); err != nil { + return next, err + } + return next, nil +} + +func (i *initMenuAuthority) DataInserted(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + auth := &sysModel.SysAuthority{} + if ret := db.Model(auth). + Where("authority_id = ?", 9528).Preload("SysBaseMenus").Find(auth); ret != nil { + if ret.Error != nil { + return false + } + return len(auth.SysBaseMenus) > 0 + } + return false +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/authority.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/authority.go new file mode 100644 index 000000000..0426f2a4f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/authority.go @@ -0,0 +1,88 @@ +package system + +import ( + "context" + sysModel "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/service/system" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/pkg/errors" + "gorm.io/gorm" +) + +const initOrderAuthority = initOrderCasbin + 1 + +type initAuthority struct{} + +// auto run +func init() { + system.RegisterInit(initOrderAuthority, &initAuthority{}) +} + +func (i *initAuthority) MigrateTable(ctx context.Context) (context.Context, error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + return ctx, db.AutoMigrate(&sysModel.SysAuthority{}) +} + +func (i *initAuthority) TableCreated(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + return db.Migrator().HasTable(&sysModel.SysAuthority{}) +} + +func (i initAuthority) InitializerName() string { + return sysModel.SysAuthority{}.TableName() +} + +func (i *initAuthority) InitializeData(ctx context.Context) (context.Context, error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + entities := []sysModel.SysAuthority{ + {AuthorityId: 888, AuthorityName: "普通用户", ParentId: utils.Pointer[uint](0), DefaultRouter: "dashboard"}, + {AuthorityId: 9528, AuthorityName: "测试角色", ParentId: utils.Pointer[uint](0), DefaultRouter: "dashboard"}, + {AuthorityId: 8881, AuthorityName: "普通用户子角色", ParentId: utils.Pointer[uint](888), DefaultRouter: "dashboard"}, + } + + if err := db.Create(&entities).Error; err != nil { + return ctx, errors.Wrapf(err, "%s表数据初始化失败!", sysModel.SysAuthority{}.TableName()) + } + // data authority + if err := db.Model(&entities[0]).Association("DataAuthorityId").Replace( + []*sysModel.SysAuthority{ + {AuthorityId: 888}, + {AuthorityId: 9528}, + {AuthorityId: 8881}, + }); err != nil { + return ctx, errors.Wrapf(err, "%s表数据初始化失败!", + db.Model(&entities[0]).Association("DataAuthorityId").Relationship.JoinTable.Name) + } + if err := db.Model(&entities[1]).Association("DataAuthorityId").Replace( + []*sysModel.SysAuthority{ + {AuthorityId: 9528}, + {AuthorityId: 8881}, + }); err != nil { + return ctx, errors.Wrapf(err, "%s表数据初始化失败!", + db.Model(&entities[1]).Association("DataAuthorityId").Relationship.JoinTable.Name) + } + + next := context.WithValue(ctx, i.InitializerName(), entities) + return next, nil +} + +func (i *initAuthority) DataInserted(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + if errors.Is(db.Where("authority_id = ?", "8881"). + First(&sysModel.SysAuthority{}).Error, gorm.ErrRecordNotFound) { // 判断是否存在数据 + return false + } + return true +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/casbin.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/casbin.go new file mode 100644 index 000000000..5a9cdbec1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/casbin.go @@ -0,0 +1,289 @@ +package system + +import ( + "context" + + adapter "github.com/casbin/gorm-adapter/v3" + "github.com/flipped-aurora/gin-vue-admin/server/service/system" + "github.com/pkg/errors" + "gorm.io/gorm" +) + +const initOrderCasbin = initOrderApiIgnore + 1 + +type initCasbin struct{} + +// auto run +func init() { + system.RegisterInit(initOrderCasbin, &initCasbin{}) +} + +func (i *initCasbin) MigrateTable(ctx context.Context) (context.Context, error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + return ctx, db.AutoMigrate(&adapter.CasbinRule{}) +} + +func (i *initCasbin) TableCreated(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + return db.Migrator().HasTable(&adapter.CasbinRule{}) +} + +func (i initCasbin) InitializerName() string { + var entity adapter.CasbinRule + return entity.TableName() +} + +func (i *initCasbin) InitializeData(ctx context.Context) (context.Context, error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + entities := []adapter.CasbinRule{ + {Ptype: "p", V0: "888", V1: "/user/admin_register", V2: "POST"}, + + {Ptype: "p", V0: "888", V1: "/api/createApi", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/api/getApiList", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/api/getApiById", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/api/deleteApi", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/api/updateApi", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/api/getAllApis", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/api/deleteApisByIds", V2: "DELETE"}, + {Ptype: "p", V0: "888", V1: "/api/syncApi", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/api/getApiGroups", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/api/enterSyncApi", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/api/ignoreApi", V2: "POST"}, + + {Ptype: "p", V0: "888", V1: "/authority/copyAuthority", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/authority/updateAuthority", V2: "PUT"}, + {Ptype: "p", V0: "888", V1: "/authority/createAuthority", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/authority/deleteAuthority", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/authority/getAuthorityList", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/authority/setDataAuthority", V2: "POST"}, + + {Ptype: "p", V0: "888", V1: "/menu/getMenu", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/menu/getMenuList", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/menu/addBaseMenu", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/menu/getBaseMenuTree", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/menu/addMenuAuthority", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/menu/getMenuAuthority", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/menu/deleteBaseMenu", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/menu/updateBaseMenu", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/menu/getBaseMenuById", V2: "POST"}, + + {Ptype: "p", V0: "888", V1: "/user/getUserInfo", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/user/setUserInfo", V2: "PUT"}, + {Ptype: "p", V0: "888", V1: "/user/setSelfInfo", V2: "PUT"}, + {Ptype: "p", V0: "888", V1: "/user/getUserList", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/user/deleteUser", V2: "DELETE"}, + {Ptype: "p", V0: "888", V1: "/user/changePassword", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/user/setUserAuthority", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/user/setUserAuthorities", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/user/resetPassword", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/user/setSelfSetting", V2: "PUT"}, + + {Ptype: "p", V0: "888", V1: "/fileUploadAndDownload/findFile", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/fileUploadAndDownload/breakpointContinueFinish", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/fileUploadAndDownload/breakpointContinue", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/fileUploadAndDownload/removeChunk", V2: "POST"}, + + {Ptype: "p", V0: "888", V1: "/fileUploadAndDownload/upload", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/fileUploadAndDownload/deleteFile", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/fileUploadAndDownload/editFileName", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/fileUploadAndDownload/getFileList", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/fileUploadAndDownload/importURL", V2: "POST"}, + + {Ptype: "p", V0: "888", V1: "/casbin/updateCasbin", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/casbin/getPolicyPathByAuthorityId", V2: "POST"}, + + {Ptype: "p", V0: "888", V1: "/jwt/jsonInBlacklist", V2: "POST"}, + + {Ptype: "p", V0: "888", V1: "/system/getSystemConfig", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/system/setSystemConfig", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/system/getServerInfo", V2: "POST"}, + + {Ptype: "p", V0: "888", V1: "/customer/customer", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/customer/customer", V2: "PUT"}, + {Ptype: "p", V0: "888", V1: "/customer/customer", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/customer/customer", V2: "DELETE"}, + {Ptype: "p", V0: "888", V1: "/customer/customerList", V2: "GET"}, + + {Ptype: "p", V0: "888", V1: "/autoCode/getDB", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/autoCode/getMeta", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/autoCode/preview", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/autoCode/getTables", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/autoCode/getColumn", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/autoCode/rollback", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/autoCode/createTemp", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/autoCode/delSysHistory", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/autoCode/getSysHistory", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/autoCode/createPackage", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/autoCode/getTemplates", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/autoCode/getPackage", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/autoCode/delPackage", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/autoCode/createPlug", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/autoCode/installPlugin", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/autoCode/pubPlug", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/autoCode/addFunc", V2: "POST"}, + + {Ptype: "p", V0: "888", V1: "/sysDictionaryDetail/findSysDictionaryDetail", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/sysDictionaryDetail/updateSysDictionaryDetail", V2: "PUT"}, + {Ptype: "p", V0: "888", V1: "/sysDictionaryDetail/createSysDictionaryDetail", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/sysDictionaryDetail/getSysDictionaryDetailList", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/sysDictionaryDetail/deleteSysDictionaryDetail", V2: "DELETE"}, + + {Ptype: "p", V0: "888", V1: "/sysDictionary/findSysDictionary", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/sysDictionary/updateSysDictionary", V2: "PUT"}, + {Ptype: "p", V0: "888", V1: "/sysDictionary/getSysDictionaryList", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/sysDictionary/createSysDictionary", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/sysDictionary/deleteSysDictionary", V2: "DELETE"}, + + {Ptype: "p", V0: "888", V1: "/sysOperationRecord/findSysOperationRecord", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/sysOperationRecord/updateSysOperationRecord", V2: "PUT"}, + {Ptype: "p", V0: "888", V1: "/sysOperationRecord/createSysOperationRecord", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/sysOperationRecord/getSysOperationRecordList", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/sysOperationRecord/deleteSysOperationRecord", V2: "DELETE"}, + {Ptype: "p", V0: "888", V1: "/sysOperationRecord/deleteSysOperationRecordByIds", V2: "DELETE"}, + + {Ptype: "p", V0: "888", V1: "/email/emailTest", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/email/sendEmail", V2: "POST"}, + + {Ptype: "p", V0: "888", V1: "/simpleUploader/upload", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/simpleUploader/checkFileMd5", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/simpleUploader/mergeFileMd5", V2: "GET"}, + + {Ptype: "p", V0: "888", V1: "/authorityBtn/setAuthorityBtn", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/authorityBtn/getAuthorityBtn", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/authorityBtn/canRemoveAuthorityBtn", V2: "POST"}, + + {Ptype: "p", V0: "888", V1: "/sysExportTemplate/createSysExportTemplate", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/sysExportTemplate/deleteSysExportTemplate", V2: "DELETE"}, + {Ptype: "p", V0: "888", V1: "/sysExportTemplate/deleteSysExportTemplateByIds", V2: "DELETE"}, + {Ptype: "p", V0: "888", V1: "/sysExportTemplate/updateSysExportTemplate", V2: "PUT"}, + {Ptype: "p", V0: "888", V1: "/sysExportTemplate/findSysExportTemplate", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/sysExportTemplate/getSysExportTemplateList", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/sysExportTemplate/exportExcel", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/sysExportTemplate/exportTemplate", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/sysExportTemplate/importExcel", V2: "POST"}, + + {Ptype: "p", V0: "888", V1: "/info/createInfo", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/info/deleteInfo", V2: "DELETE"}, + {Ptype: "p", V0: "888", V1: "/info/deleteInfoByIds", V2: "DELETE"}, + {Ptype: "p", V0: "888", V1: "/info/updateInfo", V2: "PUT"}, + {Ptype: "p", V0: "888", V1: "/info/findInfo", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/info/getInfoList", V2: "GET"}, + + {Ptype: "p", V0: "888", V1: "/sysParams/createSysParams", V2: "POST"}, + {Ptype: "p", V0: "888", V1: "/sysParams/deleteSysParams", V2: "DELETE"}, + {Ptype: "p", V0: "888", V1: "/sysParams/deleteSysParamsByIds", V2: "DELETE"}, + {Ptype: "p", V0: "888", V1: "/sysParams/updateSysParams", V2: "PUT"}, + {Ptype: "p", V0: "888", V1: "/sysParams/findSysParams", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/sysParams/getSysParamsList", V2: "GET"}, + {Ptype: "p", V0: "888", V1: "/sysParams/getSysParam", V2: "GET"}, + + {Ptype: "p", V0: "8881", V1: "/user/admin_register", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/api/createApi", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/api/getApiList", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/api/getApiById", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/api/deleteApi", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/api/updateApi", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/api/getAllApis", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/authority/createAuthority", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/authority/deleteAuthority", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/authority/getAuthorityList", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/authority/setDataAuthority", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/menu/getMenu", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/menu/getMenuList", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/menu/addBaseMenu", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/menu/getBaseMenuTree", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/menu/addMenuAuthority", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/menu/getMenuAuthority", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/menu/deleteBaseMenu", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/menu/updateBaseMenu", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/menu/getBaseMenuById", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/user/changePassword", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/user/getUserList", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/user/setUserAuthority", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/fileUploadAndDownload/upload", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/fileUploadAndDownload/getFileList", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/fileUploadAndDownload/deleteFile", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/fileUploadAndDownload/editFileName", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/fileUploadAndDownload/importURL", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/casbin/updateCasbin", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/casbin/getPolicyPathByAuthorityId", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/jwt/jsonInBlacklist", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/system/getSystemConfig", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/system/setSystemConfig", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/customer/customer", V2: "POST"}, + {Ptype: "p", V0: "8881", V1: "/customer/customer", V2: "PUT"}, + {Ptype: "p", V0: "8881", V1: "/customer/customer", V2: "DELETE"}, + {Ptype: "p", V0: "8881", V1: "/customer/customer", V2: "GET"}, + {Ptype: "p", V0: "8881", V1: "/customer/customerList", V2: "GET"}, + {Ptype: "p", V0: "8881", V1: "/user/getUserInfo", V2: "GET"}, + + {Ptype: "p", V0: "9528", V1: "/user/admin_register", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/api/createApi", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/api/getApiList", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/api/getApiById", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/api/deleteApi", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/api/updateApi", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/api/getAllApis", V2: "POST"}, + + {Ptype: "p", V0: "9528", V1: "/authority/createAuthority", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/authority/deleteAuthority", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/authority/getAuthorityList", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/authority/setDataAuthority", V2: "POST"}, + + {Ptype: "p", V0: "9528", V1: "/menu/getMenu", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/menu/getMenuList", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/menu/addBaseMenu", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/menu/getBaseMenuTree", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/menu/addMenuAuthority", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/menu/getMenuAuthority", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/menu/deleteBaseMenu", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/menu/updateBaseMenu", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/menu/getBaseMenuById", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/user/changePassword", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/user/getUserList", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/user/setUserAuthority", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/fileUploadAndDownload/upload", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/fileUploadAndDownload/getFileList", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/fileUploadAndDownload/deleteFile", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/fileUploadAndDownload/editFileName", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/fileUploadAndDownload/importURL", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/casbin/updateCasbin", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/casbin/getPolicyPathByAuthorityId", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/jwt/jsonInBlacklist", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/system/getSystemConfig", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/system/setSystemConfig", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/customer/customer", V2: "PUT"}, + {Ptype: "p", V0: "9528", V1: "/customer/customer", V2: "GET"}, + {Ptype: "p", V0: "9528", V1: "/customer/customer", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/customer/customer", V2: "DELETE"}, + {Ptype: "p", V0: "9528", V1: "/customer/customerList", V2: "GET"}, + {Ptype: "p", V0: "9528", V1: "/autoCode/createTemp", V2: "POST"}, + {Ptype: "p", V0: "9528", V1: "/user/getUserInfo", V2: "GET"}, + } + if err := db.Create(&entities).Error; err != nil { + return ctx, errors.Wrap(err, "Casbin 表 ("+i.InitializerName()+") 数据初始化失败!") + } + next := context.WithValue(ctx, i.InitializerName(), entities) + return next, nil +} + +func (i *initCasbin) DataInserted(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + if errors.Is(db.Where(adapter.CasbinRule{Ptype: "p", V0: "9528", V1: "/user/getUserInfo", V2: "GET"}). + First(&adapter.CasbinRule{}).Error, gorm.ErrRecordNotFound) { // 判断是否存在数据 + return false + } + return true +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/dictionary.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/dictionary.go new file mode 100644 index 000000000..001496327 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/dictionary.go @@ -0,0 +1,71 @@ +package system + +import ( + "context" + sysModel "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/service/system" + "github.com/pkg/errors" + "gorm.io/gorm" +) + +const initOrderDict = initOrderCasbin + 1 + +type initDict struct{} + +// auto run +func init() { + system.RegisterInit(initOrderDict, &initDict{}) +} + +func (i *initDict) MigrateTable(ctx context.Context) (context.Context, error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + return ctx, db.AutoMigrate(&sysModel.SysDictionary{}) +} + +func (i *initDict) TableCreated(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + return db.Migrator().HasTable(&sysModel.SysDictionary{}) +} + +func (i initDict) InitializerName() string { + return sysModel.SysDictionary{}.TableName() +} + +func (i *initDict) InitializeData(ctx context.Context) (next context.Context, err error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + True := true + entities := []sysModel.SysDictionary{ + {Name: "性别", Type: "gender", Status: &True, Desc: "性别字典"}, + {Name: "数据库int类型", Type: "int", Status: &True, Desc: "int类型对应的数据库类型"}, + {Name: "数据库时间日期类型", Type: "time.Time", Status: &True, Desc: "数据库时间日期类型"}, + {Name: "数据库浮点型", Type: "float64", Status: &True, Desc: "数据库浮点型"}, + {Name: "数据库字符串", Type: "string", Status: &True, Desc: "数据库字符串"}, + {Name: "数据库bool类型", Type: "bool", Status: &True, Desc: "数据库bool类型"}, + } + + if err = db.Create(&entities).Error; err != nil { + return ctx, errors.Wrap(err, sysModel.SysDictionary{}.TableName()+"表数据初始化失败!") + } + next = context.WithValue(ctx, i.InitializerName(), entities) + return next, nil +} + +func (i *initDict) DataInserted(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + if errors.Is(db.Where("type = ?", "bool").First(&sysModel.SysDictionary{}).Error, gorm.ErrRecordNotFound) { // 判断是否存在数据 + return false + } + return true +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/dictionary_detail.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/dictionary_detail.go new file mode 100644 index 000000000..3dea8b70f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/dictionary_detail.go @@ -0,0 +1,121 @@ +package system + +import ( + "context" + "fmt" + sysModel "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/service/system" + "github.com/pkg/errors" + "gorm.io/gorm" +) + +const initOrderDictDetail = initOrderDict + 1 + +type initDictDetail struct{} + +// auto run +func init() { + system.RegisterInit(initOrderDictDetail, &initDictDetail{}) +} + +func (i *initDictDetail) MigrateTable(ctx context.Context) (context.Context, error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + return ctx, db.AutoMigrate(&sysModel.SysDictionaryDetail{}) +} + +func (i *initDictDetail) TableCreated(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + return db.Migrator().HasTable(&sysModel.SysDictionaryDetail{}) +} + +func (i initDictDetail) InitializerName() string { + return sysModel.SysDictionaryDetail{}.TableName() +} + +func (i *initDictDetail) InitializeData(ctx context.Context) (context.Context, error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + dicts, ok := ctx.Value(initDict{}.InitializerName()).([]sysModel.SysDictionary) + if !ok { + return ctx, errors.Wrap(system.ErrMissingDependentContext, + fmt.Sprintf("未找到 %s 表初始化数据", sysModel.SysDictionary{}.TableName())) + } + True := true + dicts[0].SysDictionaryDetails = []sysModel.SysDictionaryDetail{ + {Label: "男", Value: "1", Status: &True, Sort: 1}, + {Label: "女", Value: "2", Status: &True, Sort: 2}, + } + + dicts[1].SysDictionaryDetails = []sysModel.SysDictionaryDetail{ + {Label: "smallint", Value: "1", Status: &True, Extend: "mysql", Sort: 1}, + {Label: "mediumint", Value: "2", Status: &True, Extend: "mysql", Sort: 2}, + {Label: "int", Value: "3", Status: &True, Extend: "mysql", Sort: 3}, + {Label: "bigint", Value: "4", Status: &True, Extend: "mysql", Sort: 4}, + {Label: "int2", Value: "5", Status: &True, Extend: "pgsql", Sort: 5}, + {Label: "int4", Value: "6", Status: &True, Extend: "pgsql", Sort: 6}, + {Label: "int6", Value: "7", Status: &True, Extend: "pgsql", Sort: 7}, + {Label: "int8", Value: "8", Status: &True, Extend: "pgsql", Sort: 8}, + } + + dicts[2].SysDictionaryDetails = []sysModel.SysDictionaryDetail{ + {Label: "date", Status: &True}, + {Label: "time", Value: "1", Status: &True, Extend: "mysql", Sort: 1}, + {Label: "year", Value: "2", Status: &True, Extend: "mysql", Sort: 2}, + {Label: "datetime", Value: "3", Status: &True, Extend: "mysql", Sort: 3}, + {Label: "timestamp", Value: "5", Status: &True, Extend: "mysql", Sort: 5}, + {Label: "timestamptz", Value: "6", Status: &True, Extend: "pgsql", Sort: 5}, + } + dicts[3].SysDictionaryDetails = []sysModel.SysDictionaryDetail{ + {Label: "float", Status: &True}, + {Label: "double", Value: "1", Status: &True, Extend: "mysql", Sort: 1}, + {Label: "decimal", Value: "2", Status: &True, Extend: "mysql", Sort: 2}, + {Label: "numeric", Value: "3", Status: &True, Extend: "pgsql", Sort: 3}, + {Label: "smallserial", Value: "4", Status: &True, Extend: "pgsql", Sort: 4}, + } + + dicts[4].SysDictionaryDetails = []sysModel.SysDictionaryDetail{ + {Label: "char", Status: &True}, + {Label: "varchar", Value: "1", Status: &True, Extend: "mysql", Sort: 1}, + {Label: "tinyblob", Value: "2", Status: &True, Extend: "mysql", Sort: 2}, + {Label: "tinytext", Value: "3", Status: &True, Extend: "mysql", Sort: 3}, + {Label: "text", Value: "4", Status: &True, Extend: "mysql", Sort: 4}, + {Label: "blob", Value: "5", Status: &True, Extend: "mysql", Sort: 5}, + {Label: "mediumblob", Value: "6", Status: &True, Extend: "mysql", Sort: 6}, + {Label: "mediumtext", Value: "7", Status: &True, Extend: "mysql", Sort: 7}, + {Label: "longblob", Value: "8", Status: &True, Extend: "mysql", Sort: 8}, + {Label: "longtext", Value: "9", Status: &True, Extend: "mysql", Sort: 9}, + } + + dicts[5].SysDictionaryDetails = []sysModel.SysDictionaryDetail{ + {Label: "tinyint", Value: "1", Extend: "mysql", Status: &True}, + {Label: "bool", Value: "2", Extend: "pgsql", Status: &True}, + } + for _, dict := range dicts { + if err := db.Model(&dict).Association("SysDictionaryDetails"). + Replace(dict.SysDictionaryDetails); err != nil { + return ctx, errors.Wrap(err, sysModel.SysDictionaryDetail{}.TableName()+"表数据初始化失败!") + } + } + return ctx, nil +} + +func (i *initDictDetail) DataInserted(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + var dict sysModel.SysDictionary + if err := db.Preload("SysDictionaryDetails"). + First(&dict, &sysModel.SysDictionary{Name: "数据库bool类型"}).Error; err != nil { + return false + } + return len(dict.SysDictionaryDetails) > 0 && dict.SysDictionaryDetails[0].Label == "tinyint" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/excel_template.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/excel_template.go new file mode 100644 index 000000000..00f3ed5f1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/excel_template.go @@ -0,0 +1,75 @@ +package system + +import ( + "context" + sysModel "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/service/system" + "github.com/pkg/errors" + "gorm.io/gorm" +) + +type initExcelTemplate struct{} + +const initOrderExcelTemplate = initOrderDictDetail + 1 + +// auto run +func init() { + system.RegisterInit(initOrderExcelTemplate, &initExcelTemplate{}) +} + +func (i initExcelTemplate) InitializerName() string { + return "sys_export_templates" +} + +func (i *initExcelTemplate) MigrateTable(ctx context.Context) (context.Context, error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + return ctx, db.AutoMigrate(&sysModel.SysExportTemplate{}) +} + +func (i *initExcelTemplate) TableCreated(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + return db.Migrator().HasTable(&sysModel.SysExportTemplate{}) +} + +func (i *initExcelTemplate) InitializeData(ctx context.Context) (context.Context, error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + + entities := []sysModel.SysExportTemplate{ + { + Name: "api", + TableName: "sys_apis", + TemplateID: "api", + TemplateInfo: `{ +"path":"路径", +"method":"方法(大写)", +"description":"方法介绍", +"api_group":"方法分组" +}`, + }, + } + if err := db.Create(&entities).Error; err != nil { + return ctx, errors.Wrap(err, "sys_export_templates"+"表数据初始化失败!") + } + next := context.WithValue(ctx, i.InitializerName(), entities) + return next, nil +} + +func (i *initExcelTemplate) DataInserted(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + if errors.Is(db.First(&sysModel.SysExportTemplate{}).Error, gorm.ErrRecordNotFound) { + return false + } + return true +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/menu.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/menu.go new file mode 100644 index 000000000..28a918758 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/menu.go @@ -0,0 +1,102 @@ +package system + +import ( + "context" + + . "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/service/system" + "github.com/pkg/errors" + "gorm.io/gorm" +) + +const initOrderMenu = initOrderAuthority + 1 + +type initMenu struct{} + +// auto run +func init() { + system.RegisterInit(initOrderMenu, &initMenu{}) +} + +func (i initMenu) InitializerName() string { + return SysBaseMenu{}.TableName() +} + +func (i *initMenu) MigrateTable(ctx context.Context) (context.Context, error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + return ctx, db.AutoMigrate( + &SysBaseMenu{}, + &SysBaseMenuParameter{}, + &SysBaseMenuBtn{}, + ) +} + +func (i *initMenu) TableCreated(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + m := db.Migrator() + return m.HasTable(&SysBaseMenu{}) && + m.HasTable(&SysBaseMenuParameter{}) && + m.HasTable(&SysBaseMenuBtn{}) +} + +func (i *initMenu) InitializeData(ctx context.Context) (next context.Context, err error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + entities := []SysBaseMenu{ + {MenuLevel: 0, Hidden: false, ParentId: 0, Path: "dashboard", Name: "dashboard", Component: "view/dashboard/index.vue", Sort: 1, Meta: Meta{Title: "仪表盘", Icon: "odometer"}}, + {MenuLevel: 0, Hidden: false, ParentId: 0, Path: "about", Name: "about", Component: "view/about/index.vue", Sort: 9, Meta: Meta{Title: "关于我们", Icon: "info-filled"}}, + {MenuLevel: 0, Hidden: false, ParentId: 0, Path: "admin", Name: "superAdmin", Component: "view/superAdmin/index.vue", Sort: 3, Meta: Meta{Title: "超级管理员", Icon: "user"}}, + {MenuLevel: 0, Hidden: false, ParentId: 3, Path: "authority", Name: "authority", Component: "view/superAdmin/authority/authority.vue", Sort: 1, Meta: Meta{Title: "角色管理", Icon: "avatar"}}, + {MenuLevel: 0, Hidden: false, ParentId: 3, Path: "menu", Name: "menu", Component: "view/superAdmin/menu/menu.vue", Sort: 2, Meta: Meta{Title: "菜单管理", Icon: "tickets", KeepAlive: true}}, + {MenuLevel: 0, Hidden: false, ParentId: 3, Path: "api", Name: "api", Component: "view/superAdmin/api/api.vue", Sort: 3, Meta: Meta{Title: "api管理", Icon: "platform", KeepAlive: true}}, + {MenuLevel: 0, Hidden: false, ParentId: 3, Path: "user", Name: "user", Component: "view/superAdmin/user/user.vue", Sort: 4, Meta: Meta{Title: "用户管理", Icon: "coordinate"}}, + {MenuLevel: 0, Hidden: false, ParentId: 3, Path: "dictionary", Name: "dictionary", Component: "view/superAdmin/dictionary/sysDictionary.vue", Sort: 5, Meta: Meta{Title: "字典管理", Icon: "notebook"}}, + {MenuLevel: 0, Hidden: false, ParentId: 3, Path: "operation", Name: "operation", Component: "view/superAdmin/operation/sysOperationRecord.vue", Sort: 6, Meta: Meta{Title: "操作历史", Icon: "pie-chart"}}, + {MenuLevel: 0, Hidden: true, ParentId: 0, Path: "person", Name: "person", Component: "view/person/person.vue", Sort: 4, Meta: Meta{Title: "个人信息", Icon: "message"}}, + {MenuLevel: 0, Hidden: false, ParentId: 0, Path: "example", Name: "example", Component: "view/example/index.vue", Sort: 7, Meta: Meta{Title: "示例文件", Icon: "management"}}, + {MenuLevel: 0, Hidden: false, ParentId: 11, Path: "upload", Name: "upload", Component: "view/example/upload/upload.vue", Sort: 5, Meta: Meta{Title: "媒体库(上传下载)", Icon: "upload"}}, + {MenuLevel: 0, Hidden: false, ParentId: 11, Path: "breakpoint", Name: "breakpoint", Component: "view/example/breakpoint/breakpoint.vue", Sort: 6, Meta: Meta{Title: "断点续传", Icon: "upload-filled"}}, + {MenuLevel: 0, Hidden: false, ParentId: 11, Path: "customer", Name: "customer", Component: "view/example/customer/customer.vue", Sort: 7, Meta: Meta{Title: "客户列表(资源示例)", Icon: "avatar"}}, + {MenuLevel: 0, Hidden: false, ParentId: 0, Path: "systemTools", Name: "systemTools", Component: "view/systemTools/index.vue", Sort: 5, Meta: Meta{Title: "系统工具", Icon: "tools"}}, + {MenuLevel: 0, Hidden: false, ParentId: 15, Path: "autoCode", Name: "autoCode", Component: "view/systemTools/autoCode/index.vue", Sort: 1, Meta: Meta{Title: "代码生成器", Icon: "cpu", KeepAlive: true}}, + {MenuLevel: 0, Hidden: false, ParentId: 15, Path: "formCreate", Name: "formCreate", Component: "view/systemTools/formCreate/index.vue", Sort: 3, Meta: Meta{Title: "表单生成器", Icon: "magic-stick", KeepAlive: true}}, + {MenuLevel: 0, Hidden: false, ParentId: 15, Path: "system", Name: "system", Component: "view/systemTools/system/system.vue", Sort: 4, Meta: Meta{Title: "系统配置", Icon: "operation"}}, + {MenuLevel: 0, Hidden: false, ParentId: 15, Path: "autoCodeAdmin", Name: "autoCodeAdmin", Component: "view/systemTools/autoCodeAdmin/index.vue", Sort: 2, Meta: Meta{Title: "自动化代码管理", Icon: "magic-stick"}}, + {MenuLevel: 0, Hidden: true, ParentId: 15, Path: "autoCodeEdit/:id", Name: "autoCodeEdit", Component: "view/systemTools/autoCode/index.vue", Sort: 0, Meta: Meta{Title: "自动化代码-${id}", Icon: "magic-stick"}}, + {MenuLevel: 0, Hidden: false, ParentId: 15, Path: "autoPkg", Name: "autoPkg", Component: "view/systemTools/autoPkg/autoPkg.vue", Sort: 0, Meta: Meta{Title: "模板配置", Icon: "folder"}}, + {MenuLevel: 0, Hidden: true, ParentId: 0, Path: "https://github.com/2024hufu", Name: "https://github.com/2024hufu", Component: "/", Sort: 0, Meta: Meta{Title: "官方网站", Icon: "customer-gva"}}, + {MenuLevel: 0, Hidden: false, ParentId: 0, Path: "state", Name: "state", Component: "view/system/state.vue", Sort: 8, Meta: Meta{Title: "服务器状态", Icon: "cloudy"}}, + {MenuLevel: 0, Hidden: false, ParentId: 0, Path: "plugin", Name: "plugin", Component: "view/routerHolder.vue", Sort: 6, Meta: Meta{Title: "插件系统", Icon: "cherry"}}, + {MenuLevel: 0, Hidden: false, ParentId: 24, Path: "https://plugin.gin-vue-admin.com/", Name: "https://plugin.gin-vue-admin.com/", Component: "https://plugin.gin-vue-admin.com/", Sort: 0, Meta: Meta{Title: "插件市场", Icon: "shop"}}, + {MenuLevel: 0, Hidden: false, ParentId: 24, Path: "installPlugin", Name: "installPlugin", Component: "view/systemTools/installPlugin/index.vue", Sort: 1, Meta: Meta{Title: "插件安装", Icon: "box"}}, + {MenuLevel: 0, Hidden: false, ParentId: 24, Path: "pubPlug", Name: "pubPlug", Component: "view/systemTools/pubPlug/pubPlug.vue", Sort: 3, Meta: Meta{Title: "打包插件", Icon: "files"}}, + {MenuLevel: 0, Hidden: false, ParentId: 24, Path: "plugin-email", Name: "plugin-email", Component: "plugin/email/view/index.vue", Sort: 4, Meta: Meta{Title: "邮件插件", Icon: "message"}}, + {MenuLevel: 0, Hidden: false, ParentId: 15, Path: "exportTemplate", Name: "exportTemplate", Component: "view/systemTools/exportTemplate/exportTemplate.vue", Sort: 5, Meta: Meta{Title: "表格模板", Icon: "reading"}}, + {MenuLevel: 0, Hidden: false, ParentId: 24, Path: "anInfo", Name: "anInfo", Component: "plugin/announcement/view/info.vue", Sort: 5, Meta: Meta{Title: "公告管理[示例]", Icon: "scaleToOriginal"}}, + {MenuLevel: 0, Hidden: false, ParentId: 3, Path: "sysParams", Name: "sysParams", Component: "view/superAdmin/params/sysParams.vue", Sort: 7, Meta: Meta{Title: "参数管理", Icon: "compass"}}, + } + if err = db.Create(&entities).Error; err != nil { + return ctx, errors.Wrap(err, SysBaseMenu{}.TableName()+"表数据初始化失败!") + } + next = context.WithValue(ctx, i.InitializerName(), entities) + return next, nil +} + +func (i *initMenu) DataInserted(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + if errors.Is(db.Where("path = ?", "autoPkg").First(&SysBaseMenu{}).Error, gorm.ErrRecordNotFound) { // 判断是否存在数据 + return false + } + return true +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/user.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/user.go new file mode 100644 index 000000000..ea2817263 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/source/system/user.go @@ -0,0 +1,107 @@ +package system + +import ( + "context" + + sysModel "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "github.com/flipped-aurora/gin-vue-admin/server/service/system" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "github.com/gofrs/uuid/v5" + "github.com/pkg/errors" + "gorm.io/gorm" +) + +const initOrderUser = initOrderAuthority + 1 + +type initUser struct{} + +// auto run +func init() { + system.RegisterInit(initOrderUser, &initUser{}) +} + +func (i *initUser) MigrateTable(ctx context.Context) (context.Context, error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + return ctx, db.AutoMigrate(&sysModel.SysUser{}) +} + +func (i *initUser) TableCreated(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + return db.Migrator().HasTable(&sysModel.SysUser{}) +} + +func (i initUser) InitializerName() string { + return sysModel.SysUser{}.TableName() +} + +func (i *initUser) InitializeData(ctx context.Context) (next context.Context, err error) { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return ctx, system.ErrMissingDBContext + } + + ap := ctx.Value("adminPassword") + apStr, ok := ap.(string) + if !ok { + apStr = "123456" + } + + password := utils.BcryptHash(apStr) + adminPassword := utils.BcryptHash(apStr) + + entities := []sysModel.SysUser{ + { + UUID: uuid.Must(uuid.NewV4()), + Username: "admin", + Password: adminPassword, + NickName: "Mr.奇淼", + HeaderImg: "https://qmplusimg.henrongyi.top/gva_header.jpg", + AuthorityId: 888, + Phone: "17611111111", + Email: "333333333@qq.com", + }, + { + UUID: uuid.Must(uuid.NewV4()), + Username: "a303176530", + Password: password, + NickName: "用户1", + HeaderImg: "https:///qmplusimg.henrongyi.top/1572075907logo.png", + AuthorityId: 9528, + Phone: "17611111111", + Email: "333333333@qq.com"}, + } + if err = db.Create(&entities).Error; err != nil { + return ctx, errors.Wrap(err, sysModel.SysUser{}.TableName()+"表数据初始化失败!") + } + next = context.WithValue(ctx, i.InitializerName(), entities) + authorityEntities, ok := ctx.Value(initAuthority{}.InitializerName()).([]sysModel.SysAuthority) + if !ok { + return next, errors.Wrap(system.ErrMissingDependentContext, "创建 [用户-权限] 关联失败, 未找到权限表初始化数据") + } + if err = db.Model(&entities[0]).Association("Authorities").Replace(authorityEntities); err != nil { + return next, err + } + if err = db.Model(&entities[1]).Association("Authorities").Replace(authorityEntities[:1]); err != nil { + return next, err + } + return next, err +} + +func (i *initUser) DataInserted(ctx context.Context) bool { + db, ok := ctx.Value("db").(*gorm.DB) + if !ok { + return false + } + var record sysModel.SysUser + if errors.Is(db.Where("username = ?", "a303176530"). + Preload("Authorities").First(&record).Error, gorm.ErrRecordNotFound) { // 判断是否存在数据 + return false + } + return len(record.Authorities) > 0 && record.Authorities[0].AuthorityId == 888 +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/task/clearTable.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/task/clearTable.go new file mode 100644 index 000000000..8d1e2f2f6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/task/clearTable.go @@ -0,0 +1,51 @@ +package task + +import ( + "errors" + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/model/common" + "time" + + "gorm.io/gorm" +) + +//@author: [songzhibin97](https://github.com/songzhibin97) +//@function: ClearTable +//@description: 清理数据库表数据 +//@param: db(数据库对象) *gorm.DB, tableName(表名) string, compareField(比较字段) string, interval(间隔) string +//@return: error + +func ClearTable(db *gorm.DB) error { + var ClearTableDetail []common.ClearDB + + ClearTableDetail = append(ClearTableDetail, common.ClearDB{ + TableName: "sys_operation_records", + CompareField: "created_at", + Interval: "2160h", + }) + + ClearTableDetail = append(ClearTableDetail, common.ClearDB{ + TableName: "jwt_blacklists", + CompareField: "created_at", + Interval: "168h", + }) + + if db == nil { + return errors.New("db Cannot be empty") + } + + for _, detail := range ClearTableDetail { + duration, err := time.ParseDuration(detail.Interval) + if err != nil { + return err + } + if duration < 0 { + return errors.New("parse duration < 0") + } + err = db.Debug().Exec(fmt.Sprintf("DELETE FROM %s WHERE %s < ?", detail.TableName, detail.CompareField), time.Now().Add(-duration)).Error + if err != nil { + return err + } + } + return nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast.go new file mode 100644 index 000000000..b6f85d6d0 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast.go @@ -0,0 +1,231 @@ +package ast + +import ( + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + "go/ast" + "go/parser" + "go/token" + "log" +) + +// AddImport 增加 import 方法 +func AddImport(astNode ast.Node, imp string) { + impStr := fmt.Sprintf("\"%s\"", imp) + ast.Inspect(astNode, func(node ast.Node) bool { + if genDecl, ok := node.(*ast.GenDecl); ok { + if genDecl.Tok == token.IMPORT { + for i := range genDecl.Specs { + if impNode, ok := genDecl.Specs[i].(*ast.ImportSpec); ok { + if impNode.Path.Value == impStr { + return false + } + } + } + genDecl.Specs = append(genDecl.Specs, &ast.ImportSpec{ + Path: &ast.BasicLit{ + Kind: token.STRING, + Value: impStr, + }, + }) + } + } + return true + }) +} + +// FindFunction 查询特定function方法 +func FindFunction(astNode ast.Node, FunctionName string) *ast.FuncDecl { + var funcDeclP *ast.FuncDecl + ast.Inspect(astNode, func(node ast.Node) bool { + if funcDecl, ok := node.(*ast.FuncDecl); ok { + if funcDecl.Name.String() == FunctionName { + funcDeclP = funcDecl + return false + } + } + return true + }) + return funcDeclP +} + +// FindArray 查询特定数组方法 +func FindArray(astNode ast.Node, identName, selectorExprName string) *ast.CompositeLit { + var assignStmt *ast.CompositeLit + ast.Inspect(astNode, func(n ast.Node) bool { + switch node := n.(type) { + case *ast.AssignStmt: + for _, expr := range node.Rhs { + if exprType, ok := expr.(*ast.CompositeLit); ok { + if arrayType, ok := exprType.Type.(*ast.ArrayType); ok { + sel, ok1 := arrayType.Elt.(*ast.SelectorExpr) + x, ok2 := sel.X.(*ast.Ident) + if ok1 && ok2 && x.Name == identName && sel.Sel.Name == selectorExprName { + assignStmt = exprType + return false + } + } + } + } + } + return true + }) + return assignStmt +} + +func CreateMenuStructAst(menus []system.SysBaseMenu) *[]ast.Expr { + var menuElts []ast.Expr + for i := range menus { + elts := []ast.Expr{ // 结构体的字段 + &ast.KeyValueExpr{ + Key: &ast.Ident{Name: "ParentId"}, + Value: &ast.BasicLit{Kind: token.INT, Value: "0"}, + }, + &ast.KeyValueExpr{ + Key: &ast.Ident{Name: "Path"}, + Value: &ast.BasicLit{Kind: token.STRING, Value: fmt.Sprintf("\"%s\"", menus[i].Path)}, + }, + &ast.KeyValueExpr{ + Key: &ast.Ident{Name: "Name"}, + Value: &ast.BasicLit{Kind: token.STRING, Value: fmt.Sprintf("\"%s\"", menus[i].Name)}, + }, + &ast.KeyValueExpr{ + Key: &ast.Ident{Name: "Hidden"}, + Value: &ast.Ident{Name: "false"}, + }, + &ast.KeyValueExpr{ + Key: &ast.Ident{Name: "Component"}, + Value: &ast.BasicLit{Kind: token.STRING, Value: fmt.Sprintf("\"%s\"", menus[i].Component)}, + }, + &ast.KeyValueExpr{ + Key: &ast.Ident{Name: "Sort"}, + Value: &ast.BasicLit{Kind: token.INT, Value: fmt.Sprintf("%d", menus[i].Sort)}, + }, + &ast.KeyValueExpr{ + Key: &ast.Ident{Name: "Meta"}, + Value: &ast.CompositeLit{ + Type: &ast.SelectorExpr{ + X: &ast.Ident{Name: "model"}, + Sel: &ast.Ident{Name: "Meta"}, + }, + Elts: []ast.Expr{ + &ast.KeyValueExpr{ + Key: &ast.Ident{Name: "Title"}, + Value: &ast.BasicLit{Kind: token.STRING, Value: fmt.Sprintf("\"%s\"", menus[i].Title)}, + }, + &ast.KeyValueExpr{ + Key: &ast.Ident{Name: "Icon"}, + Value: &ast.BasicLit{Kind: token.STRING, Value: fmt.Sprintf("\"%s\"", menus[i].Icon)}, + }, + }, + }, + }, + } + menuElts = append(menuElts, &ast.CompositeLit{ + Type: nil, + Elts: elts, + }) + } + return &menuElts +} + +func CreateApiStructAst(apis []system.SysApi) *[]ast.Expr { + var apiElts []ast.Expr + for i := range apis { + elts := []ast.Expr{ // 结构体的字段 + &ast.KeyValueExpr{ + Key: &ast.Ident{Name: "Path"}, + Value: &ast.BasicLit{Kind: token.STRING, Value: fmt.Sprintf("\"%s\"", apis[i].Path)}, + }, + &ast.KeyValueExpr{ + Key: &ast.Ident{Name: "Description"}, + Value: &ast.BasicLit{Kind: token.STRING, Value: fmt.Sprintf("\"%s\"", apis[i].Description)}, + }, + &ast.KeyValueExpr{ + Key: &ast.Ident{Name: "ApiGroup"}, + Value: &ast.BasicLit{Kind: token.STRING, Value: fmt.Sprintf("\"%s\"", apis[i].ApiGroup)}, + }, + &ast.KeyValueExpr{ + Key: &ast.Ident{Name: "Method"}, + Value: &ast.BasicLit{Kind: token.STRING, Value: fmt.Sprintf("\"%s\"", apis[i].Method)}, + }, + } + apiElts = append(apiElts, &ast.CompositeLit{ + Type: nil, + Elts: elts, + }) + } + return &apiElts +} + +// 检查是否存在Import +func CheckImport(file *ast.File, importPath string) bool { + for _, imp := range file.Imports { + // Remove quotes around the import path + path := imp.Path.Value[1 : len(imp.Path.Value)-1] + + if path == importPath { + return true + } + } + + return false +} + +func clearPosition(astNode ast.Node) { + ast.Inspect(astNode, func(n ast.Node) bool { + switch node := n.(type) { + case *ast.Ident: + // 清除位置信息 + node.NamePos = token.NoPos + case *ast.CallExpr: + // 清除位置信息 + node.Lparen = token.NoPos + node.Rparen = token.NoPos + case *ast.BasicLit: + // 清除位置信息 + node.ValuePos = token.NoPos + case *ast.SelectorExpr: + // 清除位置信息 + node.Sel.NamePos = token.NoPos + case *ast.BinaryExpr: + node.OpPos = token.NoPos + case *ast.UnaryExpr: + node.OpPos = token.NoPos + case *ast.StarExpr: + node.Star = token.NoPos + } + return true + }) +} + +func CreateStmt(statement string) *ast.ExprStmt { + expr, err := parser.ParseExpr(statement) + if err != nil { + log.Fatal(err) + } + clearPosition(expr) + return &ast.ExprStmt{X: expr} +} + +func IsBlockStmt(node ast.Node) bool { + _, ok := node.(*ast.BlockStmt) + return ok +} + +func VariableExistsInBlock(block *ast.BlockStmt, varName string) bool { + exists := false + ast.Inspect(block, func(n ast.Node) bool { + switch node := n.(type) { + case *ast.AssignStmt: + for _, expr := range node.Lhs { + if ident, ok := expr.(*ast.Ident); ok && ident.Name == varName { + exists = true + return false + } + } + } + return true + }) + return exists +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_auto_enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_auto_enter.go new file mode 100644 index 000000000..382f554e8 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_auto_enter.go @@ -0,0 +1,47 @@ +package ast + +import ( + "bytes" + "fmt" + "go/ast" + "go/parser" + "go/printer" + "go/token" + "os" +) + +func ImportForAutoEnter(path string, funcName string, code string) { + src, err := os.ReadFile(path) + if err != nil { + fmt.Println(err) + } + fileSet := token.NewFileSet() + astFile, err := parser.ParseFile(fileSet, "", src, 0) + ast.Inspect(astFile, func(node ast.Node) bool { + if typeSpec, ok := node.(*ast.TypeSpec); ok { + if typeSpec.Name.Name == funcName { + if st, ok := typeSpec.Type.(*ast.StructType); ok { + for i := range st.Fields.List { + if t, ok := st.Fields.List[i].Type.(*ast.Ident); ok { + if t.Name == code { + return false + } + } + } + sn := &ast.Field{ + Type: &ast.Ident{Name: code}, + } + st.Fields.List = append(st.Fields.List, sn) + } + } + } + return true + }) + var out []byte + bf := bytes.NewBuffer(out) + err = printer.Fprint(bf, fileSet, astFile) + if err != nil { + return + } + _ = os.WriteFile(path, bf.Bytes(), 0666) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_enter.go new file mode 100644 index 000000000..7a5c72745 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_enter.go @@ -0,0 +1,181 @@ +package ast + +import ( + "bytes" + "go/ast" + "go/format" + "go/parser" + "go/token" + "golang.org/x/text/cases" + "golang.org/x/text/language" + "log" + "os" + "strconv" + "strings" +) + +type Visitor struct { + ImportCode string + StructName string + PackageName string + GroupName string +} + +func (vi *Visitor) Visit(node ast.Node) ast.Visitor { + switch n := node.(type) { + case *ast.GenDecl: + // 查找有没有import context包 + // Notice:没有考虑没有import任何包的情况 + if n.Tok == token.IMPORT && vi.ImportCode != "" { + vi.addImport(n) + // 不需要再遍历子树 + return nil + } + if n.Tok == token.TYPE && vi.StructName != "" && vi.PackageName != "" && vi.GroupName != "" { + vi.addStruct(n) + return nil + } + case *ast.FuncDecl: + if n.Name.Name == "Routers" { + vi.addFuncBodyVar(n) + return nil + } + + } + return vi +} + +func (vi *Visitor) addStruct(genDecl *ast.GenDecl) ast.Visitor { + for i := range genDecl.Specs { + switch n := genDecl.Specs[i].(type) { + case *ast.TypeSpec: + if strings.Index(n.Name.Name, "Group") > -1 { + switch t := n.Type.(type) { + case *ast.StructType: + f := &ast.Field{ + Names: []*ast.Ident{ + { + Name: vi.StructName, + Obj: &ast.Object{ + Kind: ast.Var, + Name: vi.StructName, + }, + }, + }, + Type: &ast.SelectorExpr{ + X: &ast.Ident{ + Name: vi.PackageName, + }, + Sel: &ast.Ident{ + Name: vi.GroupName, + }, + }, + } + t.Fields.List = append(t.Fields.List, f) + } + } + } + } + return vi +} + +func (vi *Visitor) addImport(genDecl *ast.GenDecl) ast.Visitor { + // 是否已经import + hasImported := false + for _, v := range genDecl.Specs { + importSpec := v.(*ast.ImportSpec) + // 如果已经包含 + if importSpec.Path.Value == strconv.Quote(vi.ImportCode) { + hasImported = true + } + } + if !hasImported { + genDecl.Specs = append(genDecl.Specs, &ast.ImportSpec{ + Path: &ast.BasicLit{ + Kind: token.STRING, + Value: strconv.Quote(vi.ImportCode), + }, + }) + } + return vi +} + +func (vi *Visitor) addFuncBodyVar(funDecl *ast.FuncDecl) ast.Visitor { + hasVar := false + for _, v := range funDecl.Body.List { + switch varSpec := v.(type) { + case *ast.AssignStmt: + for i := range varSpec.Lhs { + switch nn := varSpec.Lhs[i].(type) { + case *ast.Ident: + if nn.Name == vi.PackageName+"Router" { + hasVar = true + } + } + } + } + } + if !hasVar { + assignStmt := &ast.AssignStmt{ + Lhs: []ast.Expr{ + &ast.Ident{ + Name: vi.PackageName + "Router", + Obj: &ast.Object{ + Kind: ast.Var, + Name: vi.PackageName + "Router", + }, + }, + }, + Tok: token.DEFINE, + Rhs: []ast.Expr{ + &ast.SelectorExpr{ + X: &ast.SelectorExpr{ + X: &ast.Ident{ + Name: "router", + }, + Sel: &ast.Ident{ + Name: "RouterGroupApp", + }, + }, + Sel: &ast.Ident{ + Name: cases.Title(language.English).String(vi.PackageName), + }, + }, + }, + } + funDecl.Body.List = append(funDecl.Body.List, funDecl.Body.List[1]) + index := 1 + copy(funDecl.Body.List[index+1:], funDecl.Body.List[index:]) + funDecl.Body.List[index] = assignStmt + } + return vi +} + +func ImportReference(filepath, importCode, structName, packageName, groupName string) error { + fSet := token.NewFileSet() + fParser, err := parser.ParseFile(fSet, filepath, nil, parser.ParseComments) + if err != nil { + return err + } + importCode = strings.TrimSpace(importCode) + v := &Visitor{ + ImportCode: importCode, + StructName: structName, + PackageName: packageName, + GroupName: groupName, + } + if importCode == "" { + ast.Print(fSet, fParser) + } + + ast.Walk(v, fParser) + + var output []byte + buffer := bytes.NewBuffer(output) + err = format.Node(buffer, fSet, fParser) + if err != nil { + log.Fatal(err) + } + // 写回数据 + return os.WriteFile(filepath, buffer.Bytes(), 0o600) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_gorm.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_gorm.go new file mode 100644 index 000000000..d9c1beb3e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_gorm.go @@ -0,0 +1,166 @@ +package ast + +import ( + "bytes" + "fmt" + "go/ast" + "go/parser" + "go/printer" + "go/token" + "os" +) + +// 自动为 gorm.go 注册一个自动迁移 +func AddRegisterTablesAst(path, funcName, pk, varName, dbName, model string) { + modelPk := fmt.Sprintf("github.com/flipped-aurora/gin-vue-admin/server/model/%s", pk) + src, err := os.ReadFile(path) + if err != nil { + fmt.Println(err) + } + fileSet := token.NewFileSet() + astFile, err := parser.ParseFile(fileSet, "", src, 0) + if err != nil { + fmt.Println(err) + } + AddImport(astFile, modelPk) + FuncNode := FindFunction(astFile, funcName) + if FuncNode != nil { + ast.Print(fileSet, FuncNode) + } + addDBVar(FuncNode.Body, varName, dbName) + addAutoMigrate(FuncNode.Body, varName, pk, model) + var out []byte + bf := bytes.NewBuffer(out) + printer.Fprint(bf, fileSet, astFile) + + os.WriteFile(path, bf.Bytes(), 0666) +} + +// 增加一个 db库变量 +func addDBVar(astBody *ast.BlockStmt, varName, dbName string) { + if dbName == "" { + return + } + dbStr := fmt.Sprintf("\"%s\"", dbName) + + for i := range astBody.List { + if assignStmt, ok := astBody.List[i].(*ast.AssignStmt); ok { + if ident, ok := assignStmt.Lhs[0].(*ast.Ident); ok { + if ident.Name == varName { + return + } + } + } + } + assignNode := &ast.AssignStmt{ + Lhs: []ast.Expr{ + &ast.Ident{ + Name: varName, + }, + }, + Tok: token.DEFINE, + Rhs: []ast.Expr{ + &ast.CallExpr{ + Fun: &ast.SelectorExpr{ + X: &ast.Ident{ + Name: "global", + }, + Sel: &ast.Ident{ + Name: "GetGlobalDBByDBName", + }, + }, + Args: []ast.Expr{ + &ast.BasicLit{ + Kind: token.STRING, + Value: dbStr, + }, + }, + }, + }, + } + astBody.List = append([]ast.Stmt{assignNode}, astBody.List...) +} + +// 为db库变量增加 AutoMigrate 方法 +func addAutoMigrate(astBody *ast.BlockStmt, dbname string, pk string, model string) { + if dbname == "" { + dbname = "db" + } + flag := true + ast.Inspect(astBody, func(node ast.Node) bool { + // 首先判断需要加入的方法调用语句是否存在 不存在则直接走到下方逻辑 + switch n := node.(type) { + case *ast.CallExpr: + // 判断是否找到了AutoMigrate语句 + if s, ok := n.Fun.(*ast.SelectorExpr); ok { + if x, ok := s.X.(*ast.Ident); ok { + if s.Sel.Name == "AutoMigrate" && x.Name == dbname { + flag = false + if !NeedAppendModel(n, pk, model) { + return false + } + // 判断已经找到了AutoMigrate语句 + n.Args = append(n.Args, &ast.CompositeLit{ + Type: &ast.SelectorExpr{ + X: &ast.Ident{ + Name: pk, + }, + Sel: &ast.Ident{ + Name: model, + }, + }, + }) + return false + } + } + } + } + return true + //然后判断 pk.model是否存在 如果存在直接跳出 如果不存在 则向已经找到的方法调用语句的node里面push一条 + }) + + if flag { + exprStmt := &ast.ExprStmt{ + X: &ast.CallExpr{ + Fun: &ast.SelectorExpr{ + X: &ast.Ident{ + Name: dbname, + }, + Sel: &ast.Ident{ + Name: "AutoMigrate", + }, + }, + Args: []ast.Expr{ + &ast.CompositeLit{ + Type: &ast.SelectorExpr{ + X: &ast.Ident{ + Name: pk, + }, + Sel: &ast.Ident{ + Name: model, + }, + }, + }, + }, + }} + astBody.List = append(astBody.List, exprStmt) + } +} + +// 为automigrate增加实参 +func NeedAppendModel(callNode ast.Node, pk string, model string) bool { + flag := true + ast.Inspect(callNode, func(node ast.Node) bool { + switch n := node.(type) { + case *ast.SelectorExpr: + if x, ok := n.X.(*ast.Ident); ok { + if n.Sel.Name == model && x.Name == pk { + flag = false + return false + } + } + } + return true + }) + return flag +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_init_test.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_init_test.go new file mode 100644 index 000000000..ec6bd9b5e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_init_test.go @@ -0,0 +1,11 @@ +package ast + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "path/filepath" +) + +func init() { + global.GVA_CONFIG.AutoCode.Root, _ = filepath.Abs("../../../") + global.GVA_CONFIG.AutoCode.Server = "server" +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_rollback.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_rollback.go new file mode 100644 index 000000000..daa84226f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_rollback.go @@ -0,0 +1,173 @@ +package ast + +import ( + "bytes" + "fmt" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "go/ast" + "go/parser" + "go/printer" + "go/token" + "os" + "path/filepath" +) + +func RollBackAst(pk, model string) { + RollGormBack(pk, model) + RollRouterBack(pk, model) +} + +func RollGormBack(pk, model string) { + + // 首先分析存在多少个ttt作为调用方的node块 + // 如果多个 仅仅删除对应块即可 + // 如果单个 那么还需要剔除import + path := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "gorm_biz.go") + src, err := os.ReadFile(path) + if err != nil { + fmt.Println(err) + } + fileSet := token.NewFileSet() + astFile, err := parser.ParseFile(fileSet, "", src, 0) + if err != nil { + fmt.Println(err) + } + var n *ast.CallExpr + var k int = -1 + var pkNum = 0 + ast.Inspect(astFile, func(node ast.Node) bool { + if node, ok := node.(*ast.CallExpr); ok { + for i := range node.Args { + pkOK := false + modelOK := false + ast.Inspect(node.Args[i], func(item ast.Node) bool { + if ii, ok := item.(*ast.Ident); ok { + if ii.Name == pk { + pkOK = true + pkNum++ + } + if ii.Name == model { + modelOK = true + } + } + if pkOK && modelOK { + n = node + k = i + } + return true + }) + } + } + return true + }) + if k > -1 { + n.Args = append(append([]ast.Expr{}, n.Args[:k]...), n.Args[k+1:]...) + } + if pkNum == 1 { + var imI int = -1 + var gp *ast.GenDecl + ast.Inspect(astFile, func(node ast.Node) bool { + if gen, ok := node.(*ast.GenDecl); ok { + for i := range gen.Specs { + if imspec, ok := gen.Specs[i].(*ast.ImportSpec); ok { + if imspec.Path.Value == "\"github.com/flipped-aurora/gin-vue-admin/server/model/"+pk+"\"" { + gp = gen + imI = i + return false + } + } + } + } + return true + }) + + if imI > -1 { + gp.Specs = append(append([]ast.Spec{}, gp.Specs[:imI]...), gp.Specs[imI+1:]...) + } + } + + var out []byte + bf := bytes.NewBuffer(out) + printer.Fprint(bf, fileSet, astFile) + os.Remove(path) + os.WriteFile(path, bf.Bytes(), 0666) + +} + +func RollRouterBack(pk, model string) { + + // 首先抓到所有的代码块结构 {} + // 分析结构中是否存在一个变量叫做 pk+Router + // 然后获取到代码块指针 对内部需要回滚的代码进行剔除 + path := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "router_biz.go") + src, err := os.ReadFile(path) + if err != nil { + fmt.Println(err) + } + fileSet := token.NewFileSet() + astFile, err := parser.ParseFile(fileSet, "", src, 0) + if err != nil { + fmt.Println(err) + } + + var block *ast.BlockStmt + var routerStmt *ast.FuncDecl + + ast.Inspect(astFile, func(node ast.Node) bool { + if n, ok := node.(*ast.FuncDecl); ok { + if n.Name.Name == "initBizRouter" { + routerStmt = n + } + } + + if n, ok := node.(*ast.BlockStmt); ok { + ast.Inspect(n, func(bNode ast.Node) bool { + if in, ok := bNode.(*ast.Ident); ok { + if in.Name == pk+"Router" { + block = n + return false + } + } + return true + }) + return true + } + return true + }) + var k int + for i := range block.List { + if stmtNode, ok := block.List[i].(*ast.ExprStmt); ok { + ast.Inspect(stmtNode, func(node ast.Node) bool { + if n, ok := node.(*ast.Ident); ok { + if n.Name == "Init"+model+"Router" { + k = i + return false + } + } + return true + }) + } + } + + block.List = append(append([]ast.Stmt{}, block.List[:k]...), block.List[k+1:]...) + + if len(block.List) == 1 { + // 说明这个块就没任何意义了 + block.List = nil + } + + for i, n := range routerStmt.Body.List { + if n, ok := n.(*ast.BlockStmt); ok { + if n.List == nil { + routerStmt.Body.List = append(append([]ast.Stmt{}, routerStmt.Body.List[:i]...), routerStmt.Body.List[i+1:]...) + i-- + } + } + } + + var out []byte + bf := bytes.NewBuffer(out) + printer.Fprint(bf, fileSet, astFile) + os.Remove(path) + os.WriteFile(path, bf.Bytes(), 0666) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_router.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_router.go new file mode 100644 index 000000000..86356b819 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_router.go @@ -0,0 +1,135 @@ +package ast + +import ( + "bytes" + "fmt" + "go/ast" + "go/parser" + "go/printer" + "go/token" + "os" + "strings" +) + +func AppendNodeToList(stmts []ast.Stmt, stmt ast.Stmt, index int) []ast.Stmt { + return append(stmts[:index], append([]ast.Stmt{stmt}, stmts[index:]...)...) +} + +func AddRouterCode(path, funcName, pk, model string) { + src, err := os.ReadFile(path) + if err != nil { + fmt.Println(err) + } + fileSet := token.NewFileSet() + astFile, err := parser.ParseFile(fileSet, "", src, parser.ParseComments) + + if err != nil { + fmt.Println(err) + } + + FuncNode := FindFunction(astFile, funcName) + + pkName := strings.ToUpper(pk[:1]) + pk[1:] + routerName := fmt.Sprintf("%sRouter", pk) + modelName := fmt.Sprintf("Init%sRouter", model) + var bloctPre *ast.BlockStmt + for i := len(FuncNode.Body.List) - 1; i >= 0; i-- { + if block, ok := FuncNode.Body.List[i].(*ast.BlockStmt); ok { + bloctPre = block + } + } + ast.Print(fileSet, FuncNode) + if ok, b := needAppendRouter(FuncNode, pk); ok { + routerNode := + &ast.BlockStmt{ + List: []ast.Stmt{ + &ast.AssignStmt{ + Lhs: []ast.Expr{ + &ast.Ident{Name: routerName}, + }, + Tok: token.DEFINE, + Rhs: []ast.Expr{ + &ast.SelectorExpr{ + X: &ast.SelectorExpr{ + X: &ast.Ident{Name: "router"}, + Sel: &ast.Ident{Name: "RouterGroupApp"}, + }, + Sel: &ast.Ident{Name: pkName}, + }, + }, + }, + }, + } + + FuncNode.Body.List = AppendNodeToList(FuncNode.Body.List, routerNode, len(FuncNode.Body.List)-1) + bloctPre = routerNode + } else { + bloctPre = b + } + + if needAppendInit(FuncNode, routerName, modelName) { + bloctPre.List = append(bloctPre.List, + &ast.ExprStmt{ + X: &ast.CallExpr{ + Fun: &ast.SelectorExpr{ + X: &ast.Ident{Name: routerName}, + Sel: &ast.Ident{Name: modelName}, + }, + Args: []ast.Expr{ + &ast.Ident{ + Name: "privateGroup", + }, + &ast.Ident{ + Name: "publicGroup", + }, + }, + }, + }) + } + var out []byte + bf := bytes.NewBuffer(out) + printer.Fprint(bf, fileSet, astFile) + os.WriteFile(path, bf.Bytes(), 0666) +} + +func needAppendRouter(funcNode ast.Node, pk string) (bool, *ast.BlockStmt) { + flag := true + var block *ast.BlockStmt + ast.Inspect(funcNode, func(node ast.Node) bool { + switch n := node.(type) { + case *ast.BlockStmt: + for i := range n.List { + if assignNode, ok := n.List[i].(*ast.AssignStmt); ok { + if identNode, ok := assignNode.Lhs[0].(*ast.Ident); ok { + if identNode.Name == fmt.Sprintf("%sRouter", pk) { + flag = false + block = n + return false + } + } + } + } + + } + return true + }) + return flag, block +} + +func needAppendInit(funcNode ast.Node, routerName string, modelName string) bool { + flag := true + ast.Inspect(funcNode, func(node ast.Node) bool { + switch n := funcNode.(type) { + case *ast.CallExpr: + if selectNode, ok := n.Fun.(*ast.SelectorExpr); ok { + x, xok := selectNode.X.(*ast.Ident) + if xok && x.Name == routerName && selectNode.Sel.Name == modelName { + flag = false + return false + } + } + } + return true + }) + return flag +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_test.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_test.go new file mode 100644 index 000000000..001f530f9 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_test.go @@ -0,0 +1,32 @@ +package ast + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "go/ast" + "go/parser" + "go/printer" + "go/token" + "os" + "path/filepath" + "testing" +) + +func TestAst(t *testing.T) { + filename := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "plugin.go") + fileSet := token.NewFileSet() + file, err := parser.ParseFile(fileSet, filename, nil, parser.ParseComments) + if err != nil { + t.Error(err) + return + } + err = ast.Print(fileSet, file) + if err != nil { + t.Error(err) + return + } + err = printer.Fprint(os.Stdout, token.NewFileSet(), file) + if err != nil { + panic(err) + } + +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_type.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_type.go new file mode 100644 index 000000000..c4e905eda --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/ast_type.go @@ -0,0 +1,53 @@ +package ast + +type Type string + +func (r Type) String() string { + return string(r) +} + +func (r Type) Group() string { + switch r { + case TypePackageApiEnter: + return "ApiGroup" + case TypePackageRouterEnter: + return "RouterGroup" + case TypePackageServiceEnter: + return "ServiceGroup" + case TypePackageApiModuleEnter: + return "ApiGroup" + case TypePackageRouterModuleEnter: + return "RouterGroup" + case TypePackageServiceModuleEnter: + return "ServiceGroup" + case TypePluginApiEnter: + return "api" + case TypePluginRouterEnter: + return "router" + case TypePluginServiceEnter: + return "service" + default: + return "" + } +} + +const ( + TypePackageApiEnter = "PackageApiEnter" // server/api/v1/enter.go + TypePackageRouterEnter = "PackageRouterEnter" // server/router/enter.go + TypePackageServiceEnter = "PackageServiceEnter" // server/service/enter.go + TypePackageApiModuleEnter = "PackageApiModuleEnter" // server/api/v1/{package}/enter.go + TypePackageRouterModuleEnter = "PackageRouterModuleEnter" // server/router/{package}/enter.go + TypePackageServiceModuleEnter = "PackageServiceModuleEnter" // server/service/{package}/enter.go + TypePackageInitializeGorm = "PackageInitializeGorm" // server/initialize/gorm_biz.go + TypePackageInitializeRouter = "PackageInitializeRouter" // server/initialize/router_biz.go + TypePluginGen = "PluginGen" // server/plugin/{package}/gen/main.go + TypePluginApiEnter = "PluginApiEnter" // server/plugin/{package}/enter.go + TypePluginInitializeV1 = "PluginInitializeV1" // server/initialize/plugin_biz_v1.go + TypePluginInitializeV2 = "PluginInitializeV2" // server/initialize/plugin_biz_v2.go + TypePluginRouterEnter = "PluginRouterEnter" // server/plugin/{package}/enter.go + TypePluginServiceEnter = "PluginServiceEnter" // server/plugin/{package}/enter.go + TypePluginInitializeApi = "PluginInitializeApi" // server/plugin/{package}/initialize/api.go + TypePluginInitializeGorm = "PluginInitializeGorm" // server/plugin/{package}/initialize/gorm.go + TypePluginInitializeMenu = "PluginInitializeMenu" // server/plugin/{package}/initialize/menu.go + TypePluginInitializeRouter = "PluginInitializeRouter" // server/plugin/{package}/initialize/router.go +) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/import.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/import.go new file mode 100644 index 000000000..5de18a317 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/import.go @@ -0,0 +1,94 @@ +package ast + +import ( + "go/ast" + "go/token" + "io" + "strings" +) + +type Import struct { + Base + ImportPath string // 导包路径 +} + +func NewImport(importPath string) *Import { + return &Import{ImportPath: importPath} +} + +func (a *Import) Parse(filename string, writer io.Writer) (file *ast.File, err error) { + return a.Base.Parse(filename, writer) +} + +func (a *Import) Rollback(file *ast.File) error { + if a.ImportPath == "" { + return nil + } + for i := 0; i < len(file.Decls); i++ { + v1, o1 := file.Decls[i].(*ast.GenDecl) + if o1 { + if v1.Tok != token.IMPORT { + break + } + for j := 0; j < len(v1.Specs); j++ { + v2, o2 := v1.Specs[j].(*ast.ImportSpec) + if o2 && strings.HasSuffix(a.ImportPath, v2.Path.Value) { + v1.Specs = append(v1.Specs[:j], v1.Specs[j+1:]...) + if len(v1.Specs) == 0 { + file.Decls = append(file.Decls[:i], file.Decls[i+1:]...) + } // 如果没有import声明,就删除, 如果不删除则会出现import() + break + } + } + } + } + return nil +} + +func (a *Import) Injection(file *ast.File) error { + if a.ImportPath == "" { + return nil + } + var has bool + for i := 0; i < len(file.Decls); i++ { + v1, o1 := file.Decls[i].(*ast.GenDecl) + if o1 { + if v1.Tok != token.IMPORT { + break + } + for j := 0; j < len(v1.Specs); j++ { + v2, o2 := v1.Specs[j].(*ast.ImportSpec) + if o2 && strings.HasSuffix(a.ImportPath, v2.Path.Value) { + has = true + break + } + } + if !has { + spec := &ast.ImportSpec{ + Path: &ast.BasicLit{Kind: token.STRING, Value: a.ImportPath}, + } + v1.Specs = append(v1.Specs, spec) + return nil + } + } + } + if !has { + decls := file.Decls + file.Decls = make([]ast.Decl, 0, len(file.Decls)+1) + decl := &ast.GenDecl{ + Tok: token.IMPORT, + Specs: []ast.Spec{ + &ast.ImportSpec{ + Path: &ast.BasicLit{Kind: token.STRING, Value: a.ImportPath}, + }, + }, + } + file.Decls = append(file.Decls, decl) + file.Decls = append(file.Decls, decls...) + } // 如果没有import声明,就创建一个, 主要要放在第一个 + return nil +} + +func (a *Import) Format(filename string, writer io.Writer, file *ast.File) error { + return a.Base.Format(filename, writer, file) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/interfaces.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/interfaces.go new file mode 100644 index 000000000..33ecc4723 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/interfaces.go @@ -0,0 +1,17 @@ +package ast + +import ( + "go/ast" + "io" +) + +type Ast interface { + // Parse 解析文件/代码 + Parse(filename string, writer io.Writer) (file *ast.File, err error) + // Rollback 回滚 + Rollback(file *ast.File) error + // Injection 注入 + Injection(file *ast.File) error + // Format 格式化输出 + Format(filename string, writer io.Writer, file *ast.File) error +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/interfaces_base.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/interfaces_base.go new file mode 100644 index 000000000..05cc7f779 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/interfaces_base.go @@ -0,0 +1,76 @@ +package ast + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/pkg/errors" + "go/ast" + "go/format" + "go/parser" + "go/token" + "io" + "os" + "path" + "path/filepath" + "strings" +) + +type Base struct{} + +func (a *Base) Parse(filename string, writer io.Writer) (file *ast.File, err error) { + fileSet := token.NewFileSet() + if writer != nil { + file, err = parser.ParseFile(fileSet, filename, nil, parser.ParseComments) + } else { + file, err = parser.ParseFile(fileSet, filename, writer, parser.ParseComments) + } + if err != nil { + return nil, errors.Wrapf(err, "[filepath:%s]打开/解析文件失败!", filename) + } + return file, nil +} + +func (a *Base) Rollback(file *ast.File) error { + return nil +} + +func (a *Base) Injection(file *ast.File) error { + return nil +} + +func (a *Base) Format(filename string, writer io.Writer, file *ast.File) error { + fileSet := token.NewFileSet() + if writer == nil { + open, err := os.OpenFile(filename, os.O_WRONLY|os.O_TRUNC, 0666) + defer open.Close() + if err != nil { + return errors.Wrapf(err, "[filepath:%s]打开文件失败!", filename) + } + writer = open + } + err := format.Node(writer, fileSet, file) + if err != nil { + return errors.Wrapf(err, "[filepath:%s]注入失败!", filename) + } + return nil +} + +// RelativePath 绝对路径转相对路径 +func (a *Base) RelativePath(filePath string) string { + server := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server) + hasServer := strings.Index(filePath, server) + if hasServer != -1 { + filePath = strings.TrimPrefix(filePath, server) + keys := strings.Split(filePath, string(filepath.Separator)) + filePath = path.Join(keys...) + } + return filePath +} + +// AbsolutePath 相对路径转绝对路径 +func (a *Base) AbsolutePath(filePath string) string { + server := filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server) + keys := strings.Split(filePath, "/") + filePath = filepath.Join(keys...) + filePath = filepath.Join(server, filePath) + return filePath +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_enter.go new file mode 100644 index 000000000..f4b6305f9 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_enter.go @@ -0,0 +1,85 @@ +package ast + +import ( + "go/ast" + "go/token" + "io" +) + +// PackageEnter 模块化入口 +type PackageEnter struct { + Base + Type Type // 类型 + Path string // 文件路径 + ImportPath string // 导包路径 + StructName string // 结构体名称 + PackageName string // 包名 + RelativePath string // 相对路径 + PackageStructName string // 包结构体名称 +} + +func (a *PackageEnter) Parse(filename string, writer io.Writer) (file *ast.File, err error) { + if filename == "" { + if a.RelativePath == "" { + filename = a.Path + a.RelativePath = a.Base.RelativePath(a.Path) + return a.Base.Parse(filename, writer) + } + a.Path = a.Base.AbsolutePath(a.RelativePath) + filename = a.Path + } + return a.Base.Parse(filename, writer) +} + +func (a *PackageEnter) Rollback(file *ast.File) error { + // 无需回滚 + return nil +} + +func (a *PackageEnter) Injection(file *ast.File) error { + _ = NewImport(a.ImportPath).Injection(file) + ast.Inspect(file, func(n ast.Node) bool { + genDecl, ok := n.(*ast.GenDecl) + if !ok || genDecl.Tok != token.TYPE { + return true + } + + for _, spec := range genDecl.Specs { + typeSpec, specok := spec.(*ast.TypeSpec) + if !specok || typeSpec.Name.Name != a.Type.Group() { + continue + } + + structType, structTypeOK := typeSpec.Type.(*ast.StructType) + if !structTypeOK { + continue + } + + for _, field := range structType.Fields.List { + if len(field.Names) == 1 && field.Names[0].Name == a.StructName { + return true + } + } + + field := &ast.Field{ + Names: []*ast.Ident{{Name: a.StructName}}, + Type: &ast.SelectorExpr{ + X: &ast.Ident{Name: a.PackageName}, + Sel: &ast.Ident{Name: a.PackageStructName}, + }, + } + structType.Fields.List = append(structType.Fields.List, field) + return false + } + + return true + }) + return nil +} + +func (a *PackageEnter) Format(filename string, writer io.Writer, file *ast.File) error { + if filename == "" { + filename = a.Path + } + return a.Base.Format(filename, writer, file) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_enter_test.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_enter_test.go new file mode 100644 index 000000000..3cf4ab459 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_enter_test.go @@ -0,0 +1,154 @@ +package ast + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "path/filepath" + "testing" +) + +func TestPackageEnter_Rollback(t *testing.T) { + type fields struct { + Type Type + Path string + ImportPath string + StructName string + PackageName string + PackageStructName string + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + { + name: "测试ExampleApiGroup回滚", + fields: fields{ + Type: TypePackageApiEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "api", "v1", "enter.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/api/v1/example"`, + StructName: "ExampleApiGroup", + PackageName: "example", + PackageStructName: "ApiGroup", + }, + wantErr: false, + }, + { + name: "测试ExampleRouterGroup回滚", + fields: fields{ + Type: TypePackageRouterEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "router", "enter.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/router/example"`, + StructName: "Example", + PackageName: "example", + PackageStructName: "RouterGroup", + }, + wantErr: false, + }, + { + name: "测试ExampleServiceGroup回滚", + fields: fields{ + Type: TypePackageServiceEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "service", "enter.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/service/example"`, + StructName: "ExampleServiceGroup", + PackageName: "example", + PackageStructName: "ServiceGroup", + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := &PackageEnter{ + Type: tt.fields.Type, + Path: tt.fields.Path, + ImportPath: tt.fields.ImportPath, + StructName: tt.fields.StructName, + PackageName: tt.fields.PackageName, + PackageStructName: tt.fields.PackageStructName, + } + file, err := a.Parse(a.Path, nil) + if err != nil { + t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) + } + a.Rollback(file) + err = a.Format(a.Path, nil, file) + if (err != nil) != tt.wantErr { + t.Errorf("Rollback() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func TestPackageEnter_Injection(t *testing.T) { + type fields struct { + Type Type + Path string + ImportPath string + StructName string + PackageName string + PackageStructName string + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + { + name: "测试ExampleApiGroup注入", + fields: fields{ + Type: TypePackageApiEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "api", "v1", "enter.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/api/v1/example"`, + StructName: "ExampleApiGroup", + PackageName: "example", + PackageStructName: "ApiGroup", + }, + }, + { + name: "测试ExampleRouterGroup注入", + fields: fields{ + Type: TypePackageRouterEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "router", "enter.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/router/example"`, + StructName: "Example", + PackageName: "example", + PackageStructName: "RouterGroup", + }, + wantErr: false, + }, + { + name: "测试ExampleServiceGroup注入", + fields: fields{ + Type: TypePackageServiceEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "service", "enter.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/service/example"`, + StructName: "ExampleServiceGroup", + PackageName: "example", + PackageStructName: "ServiceGroup", + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := &PackageEnter{ + Type: tt.fields.Type, + Path: tt.fields.Path, + ImportPath: tt.fields.ImportPath, + StructName: tt.fields.StructName, + PackageName: tt.fields.PackageName, + PackageStructName: tt.fields.PackageStructName, + } + file, err := a.Parse(a.Path, nil) + if err != nil { + t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) + } + a.Injection(file) + err = a.Format(a.Path, nil, file) + if (err != nil) != tt.wantErr { + t.Errorf("Format() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_initialize_gorm.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_initialize_gorm.go new file mode 100644 index 000000000..594f71490 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_initialize_gorm.go @@ -0,0 +1,196 @@ +package ast + +import ( + "fmt" + "go/ast" + "go/token" + "io" +) + +// PackageInitializeGorm 包初始化gorm +type PackageInitializeGorm struct { + Base + Type Type // 类型 + Path string // 文件路径 + ImportPath string // 导包路径 + Business string // 业务库 gva => gva, 不要传"gva" + StructName string // 结构体名称 + PackageName string // 包名 + RelativePath string // 相对路径 + IsNew bool // 是否使用new关键字 true: new(PackageName.StructName) false: &PackageName.StructName{} +} + +func (a *PackageInitializeGorm) Parse(filename string, writer io.Writer) (file *ast.File, err error) { + if filename == "" { + if a.RelativePath == "" { + filename = a.Path + a.RelativePath = a.Base.RelativePath(a.Path) + return a.Base.Parse(filename, writer) + } + a.Path = a.Base.AbsolutePath(a.RelativePath) + filename = a.Path + } + return a.Base.Parse(filename, writer) +} + +func (a *PackageInitializeGorm) Rollback(file *ast.File) error { + packageNameNum := 0 + // 寻找目标结构 + ast.Inspect(file, func(n ast.Node) bool { + // 总调用的db变量根据business来决定 + varDB := a.Business + "Db" + + if a.Business == "" { + varDB = "db" + } + + callExpr, ok := n.(*ast.CallExpr) + if !ok { + return true + } + + // 检查是不是 db.AutoMigrate() 方法 + selExpr, ok := callExpr.Fun.(*ast.SelectorExpr) + if !ok || selExpr.Sel.Name != "AutoMigrate" { + return true + } + + // 检查调用方是不是 db + ident, ok := selExpr.X.(*ast.Ident) + if !ok || ident.Name != varDB { + return true + } + + // 删除结构体参数 + for i := 0; i < len(callExpr.Args); i++ { + if com, comok := callExpr.Args[i].(*ast.CompositeLit); comok { + if selector, exprok := com.Type.(*ast.SelectorExpr); exprok { + if x, identok := selector.X.(*ast.Ident); identok { + if x.Name == a.PackageName { + packageNameNum++ + if selector.Sel.Name == a.StructName { + callExpr.Args = append(callExpr.Args[:i], callExpr.Args[i+1:]...) + i-- + } + } + } + } + } + } + return true + }) + + if packageNameNum == 1 { + _ = NewImport(a.ImportPath).Rollback(file) + } + return nil +} + +func (a *PackageInitializeGorm) Injection(file *ast.File) error { + _ = NewImport(a.ImportPath).Injection(file) + bizModelDecl := FindFunction(file, "bizModel") + if bizModelDecl != nil { + a.addDbVar(bizModelDecl.Body) + } + // 寻找目标结构 + ast.Inspect(file, func(n ast.Node) bool { + // 总调用的db变量根据business来决定 + varDB := a.Business + "Db" + + if a.Business == "" { + varDB = "db" + } + + callExpr, ok := n.(*ast.CallExpr) + if !ok { + return true + } + + // 检查是不是 db.AutoMigrate() 方法 + selExpr, ok := callExpr.Fun.(*ast.SelectorExpr) + if !ok || selExpr.Sel.Name != "AutoMigrate" { + return true + } + + // 检查调用方是不是 db + ident, ok := selExpr.X.(*ast.Ident) + if !ok || ident.Name != varDB { + return true + } + + // 添加结构体参数 + callExpr.Args = append(callExpr.Args, &ast.CompositeLit{ + Type: &ast.SelectorExpr{ + X: ast.NewIdent(a.PackageName), + Sel: ast.NewIdent(a.StructName), + }, + }) + return true + }) + return nil +} + +func (a *PackageInitializeGorm) Format(filename string, writer io.Writer, file *ast.File) error { + if filename == "" { + filename = a.Path + } + return a.Base.Format(filename, writer, file) +} + +// 创建businessDB变量 +func (a *PackageInitializeGorm) addDbVar(astBody *ast.BlockStmt) { + for i := range astBody.List { + if assignStmt, ok := astBody.List[i].(*ast.AssignStmt); ok { + if ident, ok := assignStmt.Lhs[0].(*ast.Ident); ok { + if (a.Business == "" && ident.Name == "db") || ident.Name == a.Business+"Db" { + return + } + } + } + } + + // 添加 businessDb := global.GetGlobalDBByDBName("business") 变量 + assignNode := &ast.AssignStmt{ + Lhs: []ast.Expr{ + &ast.Ident{ + Name: a.Business + "Db", + }, + }, + Tok: token.DEFINE, + Rhs: []ast.Expr{ + &ast.CallExpr{ + Fun: &ast.SelectorExpr{ + X: &ast.Ident{ + Name: "global", + }, + Sel: &ast.Ident{ + Name: "GetGlobalDBByDBName", + }, + }, + Args: []ast.Expr{ + &ast.BasicLit{ + Kind: token.STRING, + Value: fmt.Sprintf("\"%s\"", a.Business), + }, + }, + }, + }, + } + + // 添加 businessDb.AutoMigrate() 方法 + autoMigrateCall := &ast.ExprStmt{ + X: &ast.CallExpr{ + Fun: &ast.SelectorExpr{ + X: &ast.Ident{ + Name: a.Business + "Db", + }, + Sel: &ast.Ident{ + Name: "AutoMigrate", + }, + }, + }, + } + + returnNode := astBody.List[len(astBody.List)-1] + astBody.List = append(astBody.List[:len(astBody.List)-1], assignNode, autoMigrateCall, returnNode) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_initialize_gorm_test.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_initialize_gorm_test.go new file mode 100644 index 000000000..af5cef9e8 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_initialize_gorm_test.go @@ -0,0 +1,171 @@ +package ast + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "path/filepath" + "testing" +) + +func TestPackageInitializeGorm_Injection(t *testing.T) { + type fields struct { + Type Type + Path string + ImportPath string + StructName string + PackageName string + IsNew bool + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + { + name: "测试 &example.ExaFileUploadAndDownload{} 注入", + fields: fields{ + Type: TypePackageInitializeGorm, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "gorm_biz.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/model/example"`, + StructName: "ExaFileUploadAndDownload", + PackageName: "example", + IsNew: false, + }, + }, + { + name: "测试 &example.ExaCustomer{} 注入", + fields: fields{ + Type: TypePackageInitializeGorm, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "gorm_biz.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/model/example"`, + StructName: "ExaCustomer", + PackageName: "example", + IsNew: false, + }, + }, + { + name: "测试 new(example.ExaFileUploadAndDownload) 注入", + fields: fields{ + Type: TypePackageInitializeGorm, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "gorm_biz.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/model/example"`, + StructName: "ExaFileUploadAndDownload", + PackageName: "example", + IsNew: true, + }, + }, + { + name: "测试 new(example.ExaCustomer) 注入", + fields: fields{ + Type: TypePackageInitializeGorm, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "gorm_biz.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/model/example"`, + StructName: "ExaCustomer", + PackageName: "example", + IsNew: true, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := &PackageInitializeGorm{ + Type: tt.fields.Type, + Path: tt.fields.Path, + ImportPath: tt.fields.ImportPath, + StructName: tt.fields.StructName, + PackageName: tt.fields.PackageName, + IsNew: tt.fields.IsNew, + } + file, err := a.Parse(a.Path, nil) + if err != nil { + t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) + } + a.Injection(file) + err = a.Format(a.Path, nil, file) + if (err != nil) != tt.wantErr { + t.Errorf("Injection() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func TestPackageInitializeGorm_Rollback(t *testing.T) { + type fields struct { + Type Type + Path string + ImportPath string + StructName string + PackageName string + IsNew bool + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + { + name: "测试 &example.ExaFileUploadAndDownload{} 回滚", + fields: fields{ + Type: TypePackageInitializeGorm, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "gorm_biz.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/model/example"`, + StructName: "ExaFileUploadAndDownload", + PackageName: "example", + IsNew: false, + }, + }, + { + name: "测试 &example.ExaCustomer{} 回滚", + fields: fields{ + Type: TypePackageInitializeGorm, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "gorm_biz.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/model/example"`, + StructName: "ExaCustomer", + PackageName: "example", + IsNew: false, + }, + }, + { + name: "测试 new(example.ExaFileUploadAndDownload) 回滚", + fields: fields{ + Type: TypePackageInitializeGorm, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "gorm_biz.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/model/example"`, + StructName: "ExaFileUploadAndDownload", + PackageName: "example", + IsNew: true, + }, + }, + { + name: "测试 new(example.ExaCustomer) 回滚", + fields: fields{ + Type: TypePackageInitializeGorm, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "gorm_biz.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/model/example"`, + StructName: "ExaCustomer", + PackageName: "example", + IsNew: true, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := &PackageInitializeGorm{ + Type: tt.fields.Type, + Path: tt.fields.Path, + ImportPath: tt.fields.ImportPath, + StructName: tt.fields.StructName, + PackageName: tt.fields.PackageName, + IsNew: tt.fields.IsNew, + } + file, err := a.Parse(a.Path, nil) + if err != nil { + t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) + } + a.Rollback(file) + err = a.Format(a.Path, nil, file) + if (err != nil) != tt.wantErr { + t.Errorf("Rollback() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_initialize_router.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_initialize_router.go new file mode 100644 index 000000000..9fe4429db --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_initialize_router.go @@ -0,0 +1,150 @@ +package ast + +import ( + "fmt" + "go/ast" + "go/token" + "io" +) + +// PackageInitializeRouter 包初始化路由 +// ModuleName := PackageName.AppName.GroupName +// ModuleName.FunctionName(RouterGroupName) +type PackageInitializeRouter struct { + Base + Type Type // 类型 + Path string // 文件路径 + ImportPath string // 导包路径 + RelativePath string // 相对路径 + AppName string // 应用名称 + GroupName string // 分组名称 + ModuleName string // 模块名称 + PackageName string // 包名 + FunctionName string // 函数名 + RouterGroupName string // 路由分组名称 + LeftRouterGroupName string // 左路由分组名称 + RightRouterGroupName string // 右路由分组名称 +} + +func (a *PackageInitializeRouter) Parse(filename string, writer io.Writer) (file *ast.File, err error) { + if filename == "" { + if a.RelativePath == "" { + filename = a.Path + a.RelativePath = a.Base.RelativePath(a.Path) + return a.Base.Parse(filename, writer) + } + a.Path = a.Base.AbsolutePath(a.RelativePath) + filename = a.Path + } + return a.Base.Parse(filename, writer) +} + +func (a *PackageInitializeRouter) Rollback(file *ast.File) error { + funcDecl := FindFunction(file, "initBizRouter") + exprNum := 0 + for i := range funcDecl.Body.List { + if IsBlockStmt(funcDecl.Body.List[i]) { + if VariableExistsInBlock(funcDecl.Body.List[i].(*ast.BlockStmt), a.ModuleName) { + for ii, stmt := range funcDecl.Body.List[i].(*ast.BlockStmt).List { + // 检查语句是否为 *ast.ExprStmt + exprStmt, ok := stmt.(*ast.ExprStmt) + if !ok { + continue + } + // 检查表达式是否为 *ast.CallExpr + callExpr, ok := exprStmt.X.(*ast.CallExpr) + if !ok { + continue + } + // 检查是否调用了我们正在寻找的函数 + selExpr, ok := callExpr.Fun.(*ast.SelectorExpr) + if !ok { + continue + } + // 检查调用的函数是否为 systemRouter.InitApiRouter + ident, ok := selExpr.X.(*ast.Ident) + //只要存在调用则+1 + if ok && ident.Name == a.ModuleName { + exprNum++ + } + //判断是否为目标结构 + if !ok || ident.Name != a.ModuleName || selExpr.Sel.Name != a.FunctionName { + continue + } + exprNum-- + // 从语句列表中移除。 + funcDecl.Body.List[i].(*ast.BlockStmt).List = append(funcDecl.Body.List[i].(*ast.BlockStmt).List[:ii], funcDecl.Body.List[i].(*ast.BlockStmt).List[ii+1:]...) + // 如果不再存在任何调用,则删除导入和变量。 + if exprNum == 0 { + funcDecl.Body.List = append(funcDecl.Body.List[:i], funcDecl.Body.List[i+1:]...) + } + break + } + break + } + } + } + + return nil +} + +func (a *PackageInitializeRouter) Injection(file *ast.File) error { + funcDecl := FindFunction(file, "initBizRouter") + hasRouter := false + var varBlock *ast.BlockStmt + for i := range funcDecl.Body.List { + if IsBlockStmt(funcDecl.Body.List[i]) { + if VariableExistsInBlock(funcDecl.Body.List[i].(*ast.BlockStmt), a.ModuleName) { + hasRouter = true + varBlock = funcDecl.Body.List[i].(*ast.BlockStmt) + break + } + } + } + if !hasRouter { + stmt := a.CreateAssignStmt() + varBlock = &ast.BlockStmt{ + List: []ast.Stmt{ + stmt, + }, + } + } + routerStmt := CreateStmt(fmt.Sprintf("%s.%s(%s,%s)", a.ModuleName, a.FunctionName, a.LeftRouterGroupName, a.RightRouterGroupName)) + varBlock.List = append(varBlock.List, routerStmt) + if !hasRouter { + funcDecl.Body.List = append(funcDecl.Body.List, varBlock) + } + return nil +} + +func (a *PackageInitializeRouter) Format(filename string, writer io.Writer, file *ast.File) error { + if filename == "" { + filename = a.Path + } + return a.Base.Format(filename, writer, file) +} + +func (a *PackageInitializeRouter) CreateAssignStmt() *ast.AssignStmt { + //创建左侧变量 + ident := &ast.Ident{ + Name: a.ModuleName, + } + + //创建右侧的赋值语句 + selector := &ast.SelectorExpr{ + X: &ast.SelectorExpr{ + X: &ast.Ident{Name: a.PackageName}, + Sel: &ast.Ident{Name: a.AppName}, + }, + Sel: &ast.Ident{Name: a.GroupName}, + } + + // 创建一个组合的赋值语句 + stmt := &ast.AssignStmt{ + Lhs: []ast.Expr{ident}, + Tok: token.DEFINE, + Rhs: []ast.Expr{selector}, + } + + return stmt +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_initialize_router_test.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_initialize_router_test.go new file mode 100644 index 000000000..5a23dbb34 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_initialize_router_test.go @@ -0,0 +1,158 @@ +package ast + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "path/filepath" + "testing" +) + +func TestPackageInitializeRouter_Injection(t *testing.T) { + type fields struct { + Type Type + Path string + ImportPath string + AppName string + GroupName string + ModuleName string + PackageName string + FunctionName string + RouterGroupName string + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + { + name: "测试 InitCustomerRouter 注入", + fields: fields{ + Type: TypePackageInitializeRouter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "router_biz.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/router"`, + AppName: "RouterGroupApp", + GroupName: "Example", + ModuleName: "exampleRouter", + PackageName: "router", + FunctionName: "InitCustomerRouter", + RouterGroupName: "privateGroup", + }, + wantErr: false, + }, + { + name: "测试 InitFileUploadAndDownloadRouter 注入", + fields: fields{ + Type: TypePackageInitializeRouter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "router_biz.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/router"`, + AppName: "RouterGroupApp", + GroupName: "Example", + ModuleName: "exampleRouter", + PackageName: "router", + FunctionName: "InitFileUploadAndDownloadRouter", + RouterGroupName: "privateGroup", + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := &PackageInitializeRouter{ + Type: tt.fields.Type, + Path: tt.fields.Path, + ImportPath: tt.fields.ImportPath, + AppName: tt.fields.AppName, + GroupName: tt.fields.GroupName, + ModuleName: tt.fields.ModuleName, + PackageName: tt.fields.PackageName, + FunctionName: tt.fields.FunctionName, + RouterGroupName: tt.fields.RouterGroupName, + LeftRouterGroupName: "privateGroup", + RightRouterGroupName: "publicGroup", + } + file, err := a.Parse(a.Path, nil) + if err != nil { + t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) + } + a.Injection(file) + err = a.Format(a.Path, nil, file) + if (err != nil) != tt.wantErr { + t.Errorf("Injection() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func TestPackageInitializeRouter_Rollback(t *testing.T) { + type fields struct { + Type Type + Path string + ImportPath string + AppName string + GroupName string + ModuleName string + PackageName string + FunctionName string + RouterGroupName string + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + + { + name: "测试 InitCustomerRouter 回滚", + fields: fields{ + Type: TypePackageInitializeRouter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "router_biz.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/router"`, + AppName: "RouterGroupApp", + GroupName: "Example", + ModuleName: "exampleRouter", + PackageName: "router", + FunctionName: "InitCustomerRouter", + RouterGroupName: "privateGroup", + }, + wantErr: false, + }, + { + name: "测试 InitFileUploadAndDownloadRouter 回滚", + fields: fields{ + Type: TypePackageInitializeRouter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "router_biz.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/router"`, + AppName: "RouterGroupApp", + GroupName: "Example", + ModuleName: "exampleRouter", + PackageName: "router", + FunctionName: "InitFileUploadAndDownloadRouter", + RouterGroupName: "privateGroup", + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := &PackageInitializeRouter{ + Type: tt.fields.Type, + Path: tt.fields.Path, + ImportPath: tt.fields.ImportPath, + AppName: tt.fields.AppName, + GroupName: tt.fields.GroupName, + ModuleName: tt.fields.ModuleName, + PackageName: tt.fields.PackageName, + FunctionName: tt.fields.FunctionName, + RouterGroupName: tt.fields.RouterGroupName, + } + file, err := a.Parse(a.Path, nil) + if err != nil { + t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) + } + a.Rollback(file) + err = a.Format(a.Path, nil, file) + if (err != nil) != tt.wantErr { + t.Errorf("Rollback() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_module_enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_module_enter.go new file mode 100644 index 000000000..881fb3ff7 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_module_enter.go @@ -0,0 +1,180 @@ +package ast + +import ( + "go/ast" + "go/token" + "io" +) + +// PackageModuleEnter 模块化入口 +// ModuleName := PackageName.AppName.GroupName.ServiceName +type PackageModuleEnter struct { + Base + Type Type // 类型 + Path string // 文件路径 + ImportPath string // 导包路径 + RelativePath string // 相对路径 + StructName string // 结构体名称 + AppName string // 应用名称 + GroupName string // 分组名称 + ModuleName string // 模块名称 + PackageName string // 包名 + ServiceName string // 服务名称 +} + +func (a *PackageModuleEnter) Parse(filename string, writer io.Writer) (file *ast.File, err error) { + if filename == "" { + if a.RelativePath == "" { + filename = a.Path + a.RelativePath = a.Base.RelativePath(a.Path) + return a.Base.Parse(filename, writer) + } + a.Path = a.Base.AbsolutePath(a.RelativePath) + filename = a.Path + } + return a.Base.Parse(filename, writer) +} + +func (a *PackageModuleEnter) Rollback(file *ast.File) error { + for i := 0; i < len(file.Decls); i++ { + v1, o1 := file.Decls[i].(*ast.GenDecl) + if o1 { + for j := 0; j < len(v1.Specs); j++ { + v2, o2 := v1.Specs[j].(*ast.TypeSpec) + if o2 { + if v2.Name.Name != a.Type.Group() { + continue + } + v3, o3 := v2.Type.(*ast.StructType) + if o3 { + for k := 0; k < len(v3.Fields.List); k++ { + v4, o4 := v3.Fields.List[k].Type.(*ast.Ident) + if o4 && v4.Name == a.StructName { + v3.Fields.List = append(v3.Fields.List[:k], v3.Fields.List[k+1:]...) + } + } + } + continue + } + if a.Type == TypePackageServiceModuleEnter { + continue + } + v3, o3 := v1.Specs[j].(*ast.ValueSpec) + if o3 { + if len(v3.Names) == 1 && v3.Names[0].Name == a.ModuleName { + v1.Specs = append(v1.Specs[:j], v1.Specs[j+1:]...) + } + } + if v1.Tok == token.VAR && len(v1.Specs) == 0 { + _ = NewImport(a.ImportPath).Rollback(file) + if i == len(file.Decls) { + file.Decls = append(file.Decls[:i-1]) + break + } // 空的var(), 如果不删除则会影响的注入变量, 因为识别不到*ast.ValueSpec + file.Decls = append(file.Decls[:i], file.Decls[i+1:]...) + } + } + } + } + return nil +} + +func (a *PackageModuleEnter) Injection(file *ast.File) error { + _ = NewImport(a.ImportPath).Injection(file) + var hasValue bool + var hasVariables bool + for i := 0; i < len(file.Decls); i++ { + v1, o1 := file.Decls[i].(*ast.GenDecl) + if o1 { + if v1.Tok == token.VAR { + hasVariables = true + } + for j := 0; j < len(v1.Specs); j++ { + if a.Type == TypePackageServiceModuleEnter { + hasValue = true + } + v2, o2 := v1.Specs[j].(*ast.TypeSpec) + if o2 { + if v2.Name.Name != a.Type.Group() { + continue + } + v3, o3 := v2.Type.(*ast.StructType) + if o3 { + var hasStruct bool + for k := 0; k < len(v3.Fields.List); k++ { + v4, o4 := v3.Fields.List[k].Type.(*ast.Ident) + if o4 && v4.Name == a.StructName { + hasStruct = true + } + } + if !hasStruct { + field := &ast.Field{Type: &ast.Ident{Name: a.StructName}} + v3.Fields.List = append(v3.Fields.List, field) + } + } + continue + } + v3, o3 := v1.Specs[j].(*ast.ValueSpec) + if o3 { + hasVariables = true + if len(v3.Names) == 1 && v3.Names[0].Name == a.ModuleName { + hasValue = true + } + } + if v1.Tok == token.VAR && len(v1.Specs) == 0 { + hasVariables = false + } // 说明是空var() + if hasVariables && !hasValue { + spec := &ast.ValueSpec{ + Names: []*ast.Ident{{Name: a.ModuleName}}, + Values: []ast.Expr{ + &ast.SelectorExpr{ + X: &ast.SelectorExpr{ + X: &ast.SelectorExpr{ + X: &ast.Ident{Name: a.PackageName}, + Sel: &ast.Ident{Name: a.AppName}, + }, + Sel: &ast.Ident{Name: a.GroupName}, + }, + Sel: &ast.Ident{Name: a.ServiceName}, + }, + }, + } + v1.Specs = append(v1.Specs, spec) + hasValue = true + } + } + } + } + if !hasValue && !hasVariables { + decl := &ast.GenDecl{ + Tok: token.VAR, + Specs: []ast.Spec{ + &ast.ValueSpec{ + Names: []*ast.Ident{{Name: a.ModuleName}}, + Values: []ast.Expr{ + &ast.SelectorExpr{ + X: &ast.SelectorExpr{ + X: &ast.SelectorExpr{ + X: &ast.Ident{Name: a.PackageName}, + Sel: &ast.Ident{Name: a.AppName}, + }, + Sel: &ast.Ident{Name: a.GroupName}, + }, + Sel: &ast.Ident{Name: a.ServiceName}, + }, + }, + }, + }, + } + file.Decls = append(file.Decls, decl) + } + return nil +} + +func (a *PackageModuleEnter) Format(filename string, writer io.Writer, file *ast.File) error { + if filename == "" { + filename = a.Path + } + return a.Base.Format(filename, writer, file) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_module_enter_test.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_module_enter_test.go new file mode 100644 index 000000000..0015e3588 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/package_module_enter_test.go @@ -0,0 +1,185 @@ +package ast + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "path/filepath" + "testing" +) + +func TestPackageModuleEnter_Rollback(t *testing.T) { + type fields struct { + Type Type + Path string + ImportPath string + StructName string + AppName string + GroupName string + ModuleName string + PackageName string + ServiceName string + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + { + name: "测试 FileUploadAndDownloadRouter 回滚", + fields: fields{ + Type: TypePackageRouterModuleEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "router", "example", "enter.go"), + ImportPath: `api "github.com/flipped-aurora/gin-vue-admin/server/api/v1"`, + StructName: "FileUploadAndDownloadRouter", + AppName: "ApiGroupApp", + GroupName: "ExampleApiGroup", + ModuleName: "exaFileUploadAndDownloadApi", + PackageName: "api", + ServiceName: "FileUploadAndDownloadApi", + }, + wantErr: false, + }, + { + name: "测试 FileUploadAndDownloadApi 回滚", + fields: fields{ + Type: TypePackageApiModuleEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "api", "v1", "example", "enter.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/service"`, + StructName: "FileUploadAndDownloadApi", + AppName: "ServiceGroupApp", + GroupName: "ExampleServiceGroup", + ModuleName: "fileUploadAndDownloadService", + PackageName: "service", + ServiceName: "FileUploadAndDownloadService", + }, + wantErr: false, + }, + { + name: "测试 FileUploadAndDownloadService 回滚", + fields: fields{ + Type: TypePackageServiceModuleEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "service", "example", "enter.go"), + ImportPath: ``, + StructName: "FileUploadAndDownloadService", + AppName: "", + GroupName: "", + ModuleName: "", + PackageName: "", + ServiceName: "", + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := &PackageModuleEnter{ + Type: tt.fields.Type, + Path: tt.fields.Path, + ImportPath: tt.fields.ImportPath, + StructName: tt.fields.StructName, + AppName: tt.fields.AppName, + GroupName: tt.fields.GroupName, + ModuleName: tt.fields.ModuleName, + PackageName: tt.fields.PackageName, + ServiceName: tt.fields.ServiceName, + } + file, err := a.Parse(a.Path, nil) + if err != nil { + t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) + } + a.Rollback(file) + err = a.Format(a.Path, nil, file) + if (err != nil) != tt.wantErr { + t.Errorf("Rollback() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func TestPackageModuleEnter_Injection(t *testing.T) { + type fields struct { + Type Type + Path string + ImportPath string + StructName string + AppName string + GroupName string + ModuleName string + PackageName string + ServiceName string + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + { + name: "测试 FileUploadAndDownloadRouter 注入", + fields: fields{ + Type: TypePackageRouterModuleEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "router", "example", "enter.go"), + ImportPath: `api "github.com/flipped-aurora/gin-vue-admin/server/api/v1"`, + StructName: "FileUploadAndDownloadRouter", + AppName: "ApiGroupApp", + GroupName: "ExampleApiGroup", + ModuleName: "exaFileUploadAndDownloadApi", + PackageName: "api", + ServiceName: "FileUploadAndDownloadApi", + }, + wantErr: false, + }, + { + name: "测试 FileUploadAndDownloadApi 注入", + fields: fields{ + Type: TypePackageApiModuleEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "api", "v1", "example", "enter.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/service"`, + StructName: "FileUploadAndDownloadApi", + AppName: "ServiceGroupApp", + GroupName: "ExampleServiceGroup", + ModuleName: "fileUploadAndDownloadService", + PackageName: "service", + ServiceName: "FileUploadAndDownloadService", + }, + wantErr: false, + }, + { + name: "测试 FileUploadAndDownloadService 注入", + fields: fields{ + Type: TypePackageServiceModuleEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "service", "example", "enter.go"), + ImportPath: ``, + StructName: "FileUploadAndDownloadService", + AppName: "", + GroupName: "", + ModuleName: "", + PackageName: "", + ServiceName: "", + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := &PackageModuleEnter{ + Type: tt.fields.Type, + Path: tt.fields.Path, + ImportPath: tt.fields.ImportPath, + StructName: tt.fields.StructName, + AppName: tt.fields.AppName, + GroupName: tt.fields.GroupName, + ModuleName: tt.fields.ModuleName, + PackageName: tt.fields.PackageName, + ServiceName: tt.fields.ServiceName, + } + file, err := a.Parse(a.Path, nil) + if err != nil { + t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) + } + a.Injection(file) + err = a.Format(a.Path, nil, file) + if (err != nil) != tt.wantErr { + t.Errorf("Injection() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_enter.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_enter.go new file mode 100644 index 000000000..df5bba4d1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_enter.go @@ -0,0 +1,167 @@ +package ast + +import ( + "go/ast" + "go/token" + "io" +) + +// PluginEnter 插件化入口 +// ModuleName := PackageName.GroupName.ServiceName +type PluginEnter struct { + Base + Type Type // 类型 + Path string // 文件路径 + ImportPath string // 导包路径 + RelativePath string // 相对路径 + StructName string // 结构体名称 + StructCamelName string // 结构体小驼峰名称 + ModuleName string // 模块名称 + GroupName string // 分组名称 + PackageName string // 包名 + ServiceName string // 服务名称 +} + +func (a *PluginEnter) Parse(filename string, writer io.Writer) (file *ast.File, err error) { + if filename == "" { + if a.RelativePath == "" { + filename = a.Path + a.RelativePath = a.Base.RelativePath(a.Path) + return a.Base.Parse(filename, writer) + } + a.Path = a.Base.AbsolutePath(a.RelativePath) + filename = a.Path + } + return a.Base.Parse(filename, writer) +} + +func (a *PluginEnter) Rollback(file *ast.File) error { + //回滚结构体内内容 + var structType *ast.StructType + ast.Inspect(file, func(n ast.Node) bool { + switch x := n.(type) { + case *ast.TypeSpec: + if s, ok := x.Type.(*ast.StructType); ok { + structType = s + for i, field := range x.Type.(*ast.StructType).Fields.List { + if len(field.Names) > 0 && field.Names[0].Name == a.StructName { + s.Fields.List = append(s.Fields.List[:i], s.Fields.List[i+1:]...) + return false + } + } + } + } + return true + }) + + if len(structType.Fields.List) == 0 { + _ = NewImport(a.ImportPath).Rollback(file) + } + + if a.Type == TypePluginServiceEnter { + return nil + } + + //回滚变量内容 + ast.Inspect(file, func(n ast.Node) bool { + genDecl, ok := n.(*ast.GenDecl) + if ok && genDecl.Tok == token.VAR { + for i, spec := range genDecl.Specs { + valueSpec, vsok := spec.(*ast.ValueSpec) + if vsok { + for _, name := range valueSpec.Names { + if name.Name == a.ModuleName { + genDecl.Specs = append(genDecl.Specs[:i], genDecl.Specs[i+1:]...) + return false + } + } + } + } + } + return true + }) + + return nil +} + +func (a *PluginEnter) Injection(file *ast.File) error { + _ = NewImport(a.ImportPath).Injection(file) + + has := false + hasVar := false + var firstStruct *ast.StructType + var varSpec *ast.GenDecl + //寻找是否存在结构且定位 + ast.Inspect(file, func(n ast.Node) bool { + switch x := n.(type) { + case *ast.TypeSpec: + if s, ok := x.Type.(*ast.StructType); ok { + firstStruct = s + for _, field := range x.Type.(*ast.StructType).Fields.List { + if len(field.Names) > 0 && field.Names[0].Name == a.StructName { + has = true + return false + } + } + } + } + return true + }) + + if !has { + field := &ast.Field{ + Names: []*ast.Ident{{Name: a.StructName}}, + Type: &ast.Ident{Name: a.StructCamelName}, + } + firstStruct.Fields.List = append(firstStruct.Fields.List, field) + } + + if a.Type == TypePluginServiceEnter { + return nil + } + + //寻找是否存在变量且定位 + ast.Inspect(file, func(n ast.Node) bool { + genDecl, ok := n.(*ast.GenDecl) + if ok && genDecl.Tok == token.VAR { + for _, spec := range genDecl.Specs { + valueSpec, vsok := spec.(*ast.ValueSpec) + if vsok { + varSpec = genDecl + for _, name := range valueSpec.Names { + if name.Name == a.ModuleName { + hasVar = true + return false + } + } + } + } + } + return true + }) + + if !hasVar { + spec := &ast.ValueSpec{ + Names: []*ast.Ident{{Name: a.ModuleName}}, + Values: []ast.Expr{ + &ast.SelectorExpr{ + X: &ast.SelectorExpr{ + X: &ast.Ident{Name: a.PackageName}, + Sel: &ast.Ident{Name: a.GroupName}, + }, + Sel: &ast.Ident{Name: a.ServiceName}, + }, + }, + } + varSpec.Specs = append(varSpec.Specs, spec) + } + + return nil +} + +func (a *PluginEnter) Format(filename string, writer io.Writer, file *ast.File) error { + if filename == "" { + filename = a.Path + } + return a.Base.Format(filename, writer, file) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_enter_test.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_enter_test.go new file mode 100644 index 000000000..60b8dfca6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_enter_test.go @@ -0,0 +1,200 @@ +package ast + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "path/filepath" + "testing" +) + +func TestPluginEnter_Injection(t *testing.T) { + type fields struct { + Type Type + Path string + ImportPath string + StructName string + StructCamelName string + ModuleName string + GroupName string + PackageName string + ServiceName string + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + { + name: "测试 Gva插件UserApi 注入", + fields: fields{ + Type: TypePluginApiEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "api", "enter.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva/service"`, + StructName: "User", + StructCamelName: "user", + ModuleName: "serviceUser", + GroupName: "Service", + PackageName: "service", + ServiceName: "User", + }, + wantErr: false, + }, + { + name: "测试 Gva插件UserRouter 注入", + fields: fields{ + Type: TypePluginRouterEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "router", "enter.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva/api"`, + StructName: "User", + StructCamelName: "user", + ModuleName: "userApi", + GroupName: "Api", + PackageName: "api", + ServiceName: "User", + }, + wantErr: false, + }, + { + name: "测试 Gva插件UserService 注入", + fields: fields{ + Type: TypePluginServiceEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "service", "enter.go"), + ImportPath: "", + StructName: "User", + StructCamelName: "user", + ModuleName: "", + GroupName: "", + PackageName: "", + ServiceName: "", + }, + wantErr: false, + }, + { + name: "测试 gva的User 注入", + fields: fields{ + Type: TypePluginServiceEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "service", "enter.go"), + ImportPath: "", + StructName: "User", + StructCamelName: "user", + ModuleName: "", + GroupName: "", + PackageName: "", + ServiceName: "", + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := &PluginEnter{ + Type: tt.fields.Type, + Path: tt.fields.Path, + ImportPath: tt.fields.ImportPath, + StructName: tt.fields.StructName, + StructCamelName: tt.fields.StructCamelName, + ModuleName: tt.fields.ModuleName, + GroupName: tt.fields.GroupName, + PackageName: tt.fields.PackageName, + ServiceName: tt.fields.ServiceName, + } + file, err := a.Parse(a.Path, nil) + if err != nil { + t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) + } + a.Injection(file) + err = a.Format(a.Path, nil, file) + if (err != nil) != tt.wantErr { + t.Errorf("Injection() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func TestPluginEnter_Rollback(t *testing.T) { + type fields struct { + Type Type + Path string + ImportPath string + StructName string + StructCamelName string + ModuleName string + GroupName string + PackageName string + ServiceName string + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + { + name: "测试 Gva插件UserRouter 回滚", + fields: fields{ + Type: TypePluginRouterEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "router", "enter.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva/api"`, + StructName: "User", + StructCamelName: "user", + ModuleName: "userApi", + GroupName: "Api", + PackageName: "api", + ServiceName: "User", + }, + wantErr: false, + }, + { + name: "测试 Gva插件UserApi 回滚", + fields: fields{ + Type: TypePluginApiEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "api", "enter.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva/service"`, + StructName: "User", + StructCamelName: "user", + ModuleName: "serviceUser", + GroupName: "Service", + PackageName: "service", + ServiceName: "User", + }, + wantErr: false, + }, + { + name: "测试 Gva插件UserService 回滚", + fields: fields{ + Type: TypePluginServiceEnter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "service", "enter.go"), + ImportPath: "", + StructName: "User", + StructCamelName: "user", + ModuleName: "", + GroupName: "", + PackageName: "", + ServiceName: "", + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := &PluginEnter{ + Type: tt.fields.Type, + Path: tt.fields.Path, + ImportPath: tt.fields.ImportPath, + StructName: tt.fields.StructName, + StructCamelName: tt.fields.StructCamelName, + ModuleName: tt.fields.ModuleName, + GroupName: tt.fields.GroupName, + PackageName: tt.fields.PackageName, + ServiceName: tt.fields.ServiceName, + } + file, err := a.Parse(a.Path, nil) + if err != nil { + t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) + } + a.Rollback(file) + err = a.Format(a.Path, nil, file) + if (err != nil) != tt.wantErr { + t.Errorf("Rollback() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_gen.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_gen.go new file mode 100644 index 000000000..ed7d04fd9 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_gen.go @@ -0,0 +1,189 @@ +package ast + +import ( + "go/ast" + "go/token" + "io" +) + +type PluginGen struct { + Base + Type Type // 类型 + Path string // 文件路径 + ImportPath string // 导包路径 + RelativePath string // 相对路径 + StructName string // 结构体名称 + PackageName string // 包名 + IsNew bool // 是否使用new关键字 +} + +func (a *PluginGen) Parse(filename string, writer io.Writer) (file *ast.File, err error) { + if filename == "" { + if a.RelativePath == "" { + filename = a.Path + a.RelativePath = a.Base.RelativePath(a.Path) + return a.Base.Parse(filename, writer) + } + a.Path = a.Base.AbsolutePath(a.RelativePath) + filename = a.Path + } + return a.Base.Parse(filename, writer) +} +func (a *PluginGen) Rollback(file *ast.File) error { + for i := 0; i < len(file.Decls); i++ { + v1, o1 := file.Decls[i].(*ast.FuncDecl) + if o1 { + for j := 0; j < len(v1.Body.List); j++ { + v2, o2 := v1.Body.List[j].(*ast.ExprStmt) + if o2 { + v3, o3 := v2.X.(*ast.CallExpr) + if o3 { + v4, o4 := v3.Fun.(*ast.SelectorExpr) + if o4 { + if v4.Sel.Name != "ApplyBasic" { + continue + } + for k := 0; k < len(v3.Args); k++ { + v5, o5 := v3.Args[k].(*ast.CallExpr) + if o5 { + v6, o6 := v5.Fun.(*ast.Ident) + if o6 { + if v6.Name != "new" { + continue + } + for l := 0; l < len(v5.Args); l++ { + v7, o7 := v5.Args[l].(*ast.SelectorExpr) + if o7 { + v8, o8 := v7.X.(*ast.Ident) + if o8 { + if v8.Name == a.PackageName && v7.Sel.Name == a.StructName { + v3.Args = append(v3.Args[:k], v3.Args[k+1:]...) + continue + } + } + } + } + } + } + if k >= len(v3.Args) { + break + } + v6, o6 := v3.Args[k].(*ast.CompositeLit) + if o6 { + v7, o7 := v6.Type.(*ast.SelectorExpr) + if o7 { + v8, o8 := v7.X.(*ast.Ident) + if o8 { + if v8.Name == a.PackageName && v7.Sel.Name == a.StructName { + v3.Args = append(v3.Args[:k], v3.Args[k+1:]...) + continue + } + } + } + } + } + if len(v3.Args) == 0 { + _ = NewImport(a.ImportPath).Rollback(file) + } + } + } + } + } + } + } + return nil +} + +func (a *PluginGen) Injection(file *ast.File) error { + _ = NewImport(a.ImportPath).Injection(file) + for i := 0; i < len(file.Decls); i++ { + v1, o1 := file.Decls[i].(*ast.FuncDecl) + if o1 { + for j := 0; j < len(v1.Body.List); j++ { + v2, o2 := v1.Body.List[j].(*ast.ExprStmt) + if o2 { + v3, o3 := v2.X.(*ast.CallExpr) + if o3 { + v4, o4 := v3.Fun.(*ast.SelectorExpr) + if o4 { + if v4.Sel.Name != "ApplyBasic" { + continue + } + var has bool + for k := 0; k < len(v3.Args); k++ { + v5, o5 := v3.Args[k].(*ast.CallExpr) + if o5 { + v6, o6 := v5.Fun.(*ast.Ident) + if o6 { + if v6.Name != "new" { + continue + } + for l := 0; l < len(v5.Args); l++ { + v7, o7 := v5.Args[l].(*ast.SelectorExpr) + if o7 { + v8, o8 := v7.X.(*ast.Ident) + if o8 { + if v8.Name == a.PackageName && v7.Sel.Name == a.StructName { + has = true + break + } + } + } + } + } + } + v6, o6 := v3.Args[k].(*ast.CompositeLit) + if o6 { + v7, o7 := v6.Type.(*ast.SelectorExpr) + if o7 { + v8, o8 := v7.X.(*ast.Ident) + if o8 { + if v8.Name == a.PackageName && v7.Sel.Name == a.StructName { + has = true + break + } + } + } + } + } + if !has { + if a.IsNew { + arg := &ast.CallExpr{ + Fun: &ast.Ident{Name: "\n\t\tnew"}, + Args: []ast.Expr{ + &ast.SelectorExpr{ + X: &ast.Ident{Name: a.PackageName}, + Sel: &ast.Ident{Name: a.StructName}, + }, + }, + } + v3.Args = append(v3.Args, arg) + v3.Args = append(v3.Args, &ast.BasicLit{ + Kind: token.STRING, + Value: "\n", + }) + break + } + arg := &ast.CompositeLit{ + Type: &ast.SelectorExpr{ + X: &ast.Ident{Name: a.PackageName}, + Sel: &ast.Ident{Name: a.StructName}, + }, + } + v3.Args = append(v3.Args, arg) + } + } + } + } + } + } + } + return nil +} + +func (a *PluginGen) Format(filename string, writer io.Writer, file *ast.File) error { + if filename == "" { + filename = a.Path + } + return a.Base.Format(filename, writer, file) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_gen_test.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_gen_test.go new file mode 100644 index 000000000..1b9c790ef --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_gen_test.go @@ -0,0 +1,127 @@ +package ast + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "path/filepath" + "testing" +) + +func TestPluginGenModel_Injection(t *testing.T) { + type fields struct { + Type Type + Path string + ImportPath string + PackageName string + StructName string + IsNew bool + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + { + name: "测试 GvaUser 结构体注入", + fields: fields{ + Type: TypePluginGen, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "gen", "main.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva/model"`, + PackageName: "model", + StructName: "User", + IsNew: false, + }, + }, + { + name: "测试 GvaUser 结构体注入", + fields: fields{ + Type: TypePluginGen, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "gen", "main.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva/model"`, + PackageName: "model", + StructName: "User", + IsNew: true, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := &PluginGen{ + Type: tt.fields.Type, + Path: tt.fields.Path, + ImportPath: tt.fields.ImportPath, + PackageName: tt.fields.PackageName, + StructName: tt.fields.StructName, + IsNew: tt.fields.IsNew, + } + file, err := a.Parse(a.Path, nil) + if err != nil { + t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) + } + a.Injection(file) + err = a.Format(a.Path, nil, file) + if (err != nil) != tt.wantErr { + t.Errorf("Injection() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func TestPluginGenModel_Rollback(t *testing.T) { + type fields struct { + Type Type + Path string + ImportPath string + PackageName string + StructName string + IsNew bool + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + { + name: "测试 GvaUser 回滚", + fields: fields{ + Type: TypePluginGen, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "gen", "main.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva/model"`, + PackageName: "model", + StructName: "User", + IsNew: false, + }, + }, + { + name: "测试 GvaUser 回滚", + fields: fields{ + Type: TypePluginGen, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "gen", "main.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva/model"`, + PackageName: "model", + StructName: "User", + IsNew: true, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := &PluginGen{ + Type: tt.fields.Type, + Path: tt.fields.Path, + ImportPath: tt.fields.ImportPath, + PackageName: tt.fields.PackageName, + StructName: tt.fields.StructName, + IsNew: tt.fields.IsNew, + } + file, err := a.Parse(a.Path, nil) + if err != nil { + t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) + } + a.Rollback(file) + err = a.Format(a.Path, nil, file) + if (err != nil) != tt.wantErr { + t.Errorf("Rollback() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_gorm.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_gorm.go new file mode 100644 index 000000000..e3422518c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_gorm.go @@ -0,0 +1,111 @@ +package ast + +import ( + "go/ast" + "io" +) + +type PluginInitializeGorm struct { + Base + Type Type // 类型 + Path string // 文件路径 + ImportPath string // 导包路径 + RelativePath string // 相对路径 + StructName string // 结构体名称 + PackageName string // 包名 + IsNew bool // 是否使用new关键字 true: new(PackageName.StructName) false: &PackageName.StructName{} +} + +func (a *PluginInitializeGorm) Parse(filename string, writer io.Writer) (file *ast.File, err error) { + if filename == "" { + if a.RelativePath == "" { + filename = a.Path + a.RelativePath = a.Base.RelativePath(a.Path) + return a.Base.Parse(filename, writer) + } + a.Path = a.Base.AbsolutePath(a.RelativePath) + filename = a.Path + } + return a.Base.Parse(filename, writer) +} + +func (a *PluginInitializeGorm) Rollback(file *ast.File) error { + var needRollBackImport bool + ast.Inspect(file, func(n ast.Node) bool { + callExpr, ok := n.(*ast.CallExpr) + if !ok { + return true + } + + selExpr, seok := callExpr.Fun.(*ast.SelectorExpr) + if !seok || selExpr.Sel.Name != "AutoMigrate" { + return true + } + if len(callExpr.Args) <= 1 { + needRollBackImport = true + } + // 删除指定的参数 + for i, arg := range callExpr.Args { + compLit, cok := arg.(*ast.CompositeLit) + if !cok { + continue + } + + cselExpr, sok := compLit.Type.(*ast.SelectorExpr) + if !sok { + continue + } + + ident, idok := cselExpr.X.(*ast.Ident) + if idok && ident.Name == a.PackageName && cselExpr.Sel.Name == a.StructName { + // 删除参数 + callExpr.Args = append(callExpr.Args[:i], callExpr.Args[i+1:]...) + break + } + } + + return true + }) + + if needRollBackImport { + _ = NewImport(a.ImportPath).Rollback(file) + } + + return nil +} + +func (a *PluginInitializeGorm) Injection(file *ast.File) error { + _ = NewImport(a.ImportPath).Injection(file) + var call *ast.CallExpr + ast.Inspect(file, func(n ast.Node) bool { + callExpr, ok := n.(*ast.CallExpr) + if !ok { + return true + } + + selExpr, ok := callExpr.Fun.(*ast.SelectorExpr) + if ok && selExpr.Sel.Name == "AutoMigrate" { + call = callExpr + return false + } + + return true + }) + + arg := &ast.CompositeLit{ + Type: &ast.SelectorExpr{ + X: &ast.Ident{Name: a.PackageName}, + Sel: &ast.Ident{Name: a.StructName}, + }, + } + + call.Args = append(call.Args, arg) + return nil +} + +func (a *PluginInitializeGorm) Format(filename string, writer io.Writer, file *ast.File) error { + if filename == "" { + filename = a.Path + } + return a.Base.Format(filename, writer, file) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_gorm_test.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_gorm_test.go new file mode 100644 index 000000000..ebfc12a12 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_gorm_test.go @@ -0,0 +1,138 @@ +package ast + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "path/filepath" + "testing" +) + +func TestPluginInitializeGorm_Injection(t *testing.T) { + type fields struct { + Type Type + Path string + ImportPath string + StructName string + PackageName string + IsNew bool + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + { + name: "测试 &model.User{} 注入", + fields: fields{ + Type: TypePluginInitializeGorm, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "initialize", "gorm.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva/model"`, + StructName: "User", + PackageName: "model", + IsNew: false, + }, + }, + { + name: "测试 new(model.ExaCustomer) 注入", + fields: fields{ + Type: TypePluginInitializeGorm, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "initialize", "gorm.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva/model"`, + StructName: "User", + PackageName: "model", + IsNew: true, + }, + }, + { + name: "测试 new(model.SysUsers) 注入", + fields: fields{ + Type: TypePluginInitializeGorm, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "initialize", "gorm.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva/model"`, + StructName: "SysUser", + PackageName: "model", + IsNew: true, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := &PluginInitializeGorm{ + Type: tt.fields.Type, + Path: tt.fields.Path, + ImportPath: tt.fields.ImportPath, + StructName: tt.fields.StructName, + PackageName: tt.fields.PackageName, + IsNew: tt.fields.IsNew, + } + file, err := a.Parse(a.Path, nil) + if err != nil { + t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) + } + a.Injection(file) + err = a.Format(a.Path, nil, file) + if (err != nil) != tt.wantErr { + t.Errorf("Injection() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func TestPluginInitializeGorm_Rollback(t *testing.T) { + type fields struct { + Type Type + Path string + ImportPath string + StructName string + PackageName string + IsNew bool + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + { + name: "测试 &model.User{} 回滚", + fields: fields{ + Type: TypePluginInitializeGorm, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "initialize", "gorm.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva/model"`, + StructName: "User", + PackageName: "model", + IsNew: false, + }, + }, + { + name: "测试 new(model.ExaCustomer) 回滚", + fields: fields{ + Type: TypePluginInitializeGorm, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "initialize", "gorm.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva/model"`, + StructName: "User", + PackageName: "model", + IsNew: true, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := &PluginInitializeGorm{ + Type: tt.fields.Type, + Path: tt.fields.Path, + ImportPath: tt.fields.ImportPath, + StructName: tt.fields.StructName, + PackageName: tt.fields.PackageName, + IsNew: tt.fields.IsNew, + } + file, err := a.Parse(a.Path, nil) + if err != nil { + t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) + } + a.Rollback(file) + err = a.Format(a.Path, nil, file) + if (err != nil) != tt.wantErr { + t.Errorf("Rollback() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_router.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_router.go new file mode 100644 index 000000000..6550789ed --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_router.go @@ -0,0 +1,124 @@ +package ast + +import ( + "fmt" + "go/ast" + "io" +) + +// PluginInitializeRouter 插件初始化路由 +// PackageName.AppName.GroupName.FunctionName() +type PluginInitializeRouter struct { + Base + Type Type // 类型 + Path string // 文件路径 + ImportPath string // 导包路径 + ImportGlobalPath string // 导包全局变量路径 + ImportMiddlewarePath string // 导包中间件路径 + RelativePath string // 相对路径 + AppName string // 应用名称 + GroupName string // 分组名称 + PackageName string // 包名 + FunctionName string // 函数名 + LeftRouterGroupName string // 左路由分组名称 + RightRouterGroupName string // 右路由分组名称 +} + +func (a *PluginInitializeRouter) Parse(filename string, writer io.Writer) (file *ast.File, err error) { + if filename == "" { + if a.RelativePath == "" { + filename = a.Path + a.RelativePath = a.Base.RelativePath(a.Path) + return a.Base.Parse(filename, writer) + } + a.Path = a.Base.AbsolutePath(a.RelativePath) + filename = a.Path + } + return a.Base.Parse(filename, writer) +} + +func (a *PluginInitializeRouter) Rollback(file *ast.File) error { + funcDecl := FindFunction(file, "Router") + delI := 0 + routerNum := 0 + for i := len(funcDecl.Body.List) - 1; i >= 0; i-- { + stmt, ok := funcDecl.Body.List[i].(*ast.ExprStmt) + if !ok { + continue + } + + callExpr, ok := stmt.X.(*ast.CallExpr) + if !ok { + continue + } + + selExpr, ok := callExpr.Fun.(*ast.SelectorExpr) + if !ok { + continue + } + + ident, ok := selExpr.X.(*ast.SelectorExpr) + + if ok { + if iExpr, ieok := ident.X.(*ast.SelectorExpr); ieok { + if iden, idok := iExpr.X.(*ast.Ident); idok { + if iden.Name == "router" { + routerNum++ + } + } + } + if ident.Sel.Name == a.GroupName && selExpr.Sel.Name == a.FunctionName { + // 删除语句 + delI = i + } + } + } + + funcDecl.Body.List = append(funcDecl.Body.List[:delI], funcDecl.Body.List[delI+1:]...) + + if routerNum <= 1 { + _ = NewImport(a.ImportPath).Rollback(file) + } + + return nil +} + +func (a *PluginInitializeRouter) Injection(file *ast.File) error { + _ = NewImport(a.ImportPath).Injection(file) + funcDecl := FindFunction(file, "Router") + + var exists bool + + ast.Inspect(funcDecl, func(n ast.Node) bool { + callExpr, ok := n.(*ast.CallExpr) + if !ok { + return true + } + + selExpr, ok := callExpr.Fun.(*ast.SelectorExpr) + if !ok { + return true + } + + ident, ok := selExpr.X.(*ast.SelectorExpr) + if ok && ident.Sel.Name == a.GroupName && selExpr.Sel.Name == a.FunctionName { + exists = true + return false + } + return true + }) + + if !exists { + stmtStr := fmt.Sprintf("%s.%s.%s.%s(%s, %s)", a.PackageName, a.AppName, a.GroupName, a.FunctionName, a.LeftRouterGroupName, a.RightRouterGroupName) + stmt := CreateStmt(stmtStr) + funcDecl.Body.List = append(funcDecl.Body.List, stmt) + } + return nil +} + +func (a *PluginInitializeRouter) Format(filename string, writer io.Writer, file *ast.File) error { + if filename == "" { + filename = a.Path + } + return a.Base.Format(filename, writer, file) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_router_test.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_router_test.go new file mode 100644 index 000000000..4dffd7fc4 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_router_test.go @@ -0,0 +1,155 @@ +package ast + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "path/filepath" + "testing" +) + +func TestPluginInitializeRouter_Injection(t *testing.T) { + type fields struct { + Type Type + Path string + ImportPath string + AppName string + GroupName string + PackageName string + FunctionName string + LeftRouterGroupName string + RightRouterGroupName string + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + { + name: "测试 Gva插件User 注入", + fields: fields{ + Type: TypePluginInitializeRouter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "initialize", "router.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva/router"`, + AppName: "Router", + GroupName: "User", + PackageName: "router", + FunctionName: "Init", + LeftRouterGroupName: "public", + RightRouterGroupName: "private", + }, + wantErr: false, + }, + { + name: "测试 中文 注入", + fields: fields{ + Type: TypePluginInitializeRouter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "initialize", "router.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva/router"`, + AppName: "Router", + GroupName: "U中文", + PackageName: "router", + FunctionName: "Init", + LeftRouterGroupName: "public", + RightRouterGroupName: "private", + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := &PluginInitializeRouter{ + Type: tt.fields.Type, + Path: tt.fields.Path, + ImportPath: tt.fields.ImportPath, + AppName: tt.fields.AppName, + GroupName: tt.fields.GroupName, + PackageName: tt.fields.PackageName, + FunctionName: tt.fields.FunctionName, + LeftRouterGroupName: tt.fields.LeftRouterGroupName, + RightRouterGroupName: tt.fields.RightRouterGroupName, + } + file, err := a.Parse(a.Path, nil) + if err != nil { + t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) + } + a.Injection(file) + err = a.Format(a.Path, nil, file) + if (err != nil) != tt.wantErr { + t.Errorf("Injection() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func TestPluginInitializeRouter_Rollback(t *testing.T) { + type fields struct { + Type Type + Path string + ImportPath string + AppName string + GroupName string + PackageName string + FunctionName string + LeftRouterGroupName string + RightRouterGroupName string + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + { + name: "测试 Gva插件User 回滚", + fields: fields{ + Type: TypePluginInitializeRouter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "initialize", "router.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva/router"`, + AppName: "Router", + GroupName: "User", + PackageName: "router", + FunctionName: "Init", + LeftRouterGroupName: "public", + RightRouterGroupName: "private", + }, + wantErr: false, + }, + { + name: "测试 中文 注入", + fields: fields{ + Type: TypePluginInitializeRouter, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "initialize", "router.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva/router"`, + AppName: "Router", + GroupName: "U中文", + PackageName: "router", + FunctionName: "Init", + LeftRouterGroupName: "public", + RightRouterGroupName: "private", + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := &PluginInitializeRouter{ + Type: tt.fields.Type, + Path: tt.fields.Path, + ImportPath: tt.fields.ImportPath, + AppName: tt.fields.AppName, + GroupName: tt.fields.GroupName, + PackageName: tt.fields.PackageName, + FunctionName: tt.fields.FunctionName, + LeftRouterGroupName: tt.fields.LeftRouterGroupName, + RightRouterGroupName: tt.fields.RightRouterGroupName, + } + file, err := a.Parse(a.Path, nil) + if err != nil { + t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) + } + a.Rollback(file) + err = a.Format(a.Path, nil, file) + if (err != nil) != tt.wantErr { + t.Errorf("Rollback() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_v2.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_v2.go new file mode 100644 index 000000000..1befdc657 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_v2.go @@ -0,0 +1,52 @@ +package ast + +import ( + "fmt" + "go/ast" + "io" +) + +type PluginInitializeV2 struct { + Base + Type Type // 类型 + Path string // 文件路径 + PluginPath string // 插件路径 + RelativePath string // 相对路径 + ImportPath string // 导包路径 + StructName string // 结构体名称 + PackageName string // 包名 +} + +func (a *PluginInitializeV2) Parse(filename string, writer io.Writer) (file *ast.File, err error) { + if filename == "" { + if a.RelativePath == "" { + filename = a.PluginPath + a.RelativePath = a.Base.RelativePath(a.PluginPath) + return a.Base.Parse(filename, writer) + } + a.PluginPath = a.Base.AbsolutePath(a.RelativePath) + filename = a.PluginPath + } + return a.Base.Parse(filename, writer) +} + +func (a *PluginInitializeV2) Injection(file *ast.File) error { + if !CheckImport(file, a.ImportPath) { + NewImport(a.ImportPath).Injection(file) + funcDecl := FindFunction(file, "bizPluginV2") + stmt := CreateStmt(fmt.Sprintf("PluginInitV2(engine, %s.Plugin)", a.PackageName)) + funcDecl.Body.List = append(funcDecl.Body.List, stmt) + } + return nil +} + +func (a *PluginInitializeV2) Rollback(file *ast.File) error { + return nil +} + +func (a *PluginInitializeV2) Format(filename string, writer io.Writer, file *ast.File) error { + if filename == "" { + filename = a.PluginPath + } + return a.Base.Format(filename, writer, file) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_v2_test.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_v2_test.go new file mode 100644 index 000000000..4e99c6dae --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/ast/plugin_initialize_v2_test.go @@ -0,0 +1,100 @@ +package ast + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "path/filepath" + "testing" +) + +func TestPluginInitialize_Injection(t *testing.T) { + type fields struct { + Type Type + Path string + PluginPath string + ImportPath string + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + { + name: "测试 Gva插件 注册注入", + fields: fields{ + Type: TypePluginInitializeV2, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "plugin_biz_v2.go"), + PluginPath: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "plugin.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva"`, + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := PluginInitializeV2{ + Type: tt.fields.Type, + Path: tt.fields.Path, + PluginPath: tt.fields.PluginPath, + ImportPath: tt.fields.ImportPath, + } + file, err := a.Parse(a.Path, nil) + if err != nil { + t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) + } + a.Injection(file) + err = a.Format(a.Path, nil, file) + if (err != nil) != tt.wantErr { + t.Errorf("Injection() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func TestPluginInitialize_Rollback(t *testing.T) { + type fields struct { + Type Type + Path string + PluginPath string + ImportPath string + PluginName string + StructName string + PackageName string + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + { + name: "测试 Gva插件 回滚", + fields: fields{ + Type: TypePluginInitializeV2, + Path: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "initialize", "plugin_biz_v2.go"), + PluginPath: filepath.Join(global.GVA_CONFIG.AutoCode.Root, global.GVA_CONFIG.AutoCode.Server, "plugin", "gva", "plugin.go"), + ImportPath: `"github.com/flipped-aurora/gin-vue-admin/server/plugin/gva"`, + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + a := PluginInitializeV2{ + Type: tt.fields.Type, + Path: tt.fields.Path, + PluginPath: tt.fields.PluginPath, + ImportPath: tt.fields.ImportPath, + StructName: "Plugin", + PackageName: "gva", + } + file, err := a.Parse(a.Path, nil) + if err != nil { + t.Errorf("Parse() error = %v, wantErr %v", err, tt.wantErr) + } + a.Rollback(file) + err = a.Format(a.Path, nil, file) + if (err != nil) != tt.wantErr { + t.Errorf("Rollback() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/breakpoint_continue.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/breakpoint_continue.go new file mode 100644 index 000000000..c0baee57c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/breakpoint_continue.go @@ -0,0 +1,112 @@ +package utils + +import ( + "errors" + "os" + "strconv" + "strings" +) + +// 前端传来文件片与当前片为什么文件的第几片 +// 后端拿到以后比较次分片是否上传 或者是否为不完全片 +// 前端发送每片多大 +// 前端告知是否为最后一片且是否完成 + +const ( + breakpointDir = "./breakpointDir/" + finishDir = "./fileDir/" +) + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: BreakPointContinue +//@description: 断点续传 +//@param: content []byte, fileName string, contentNumber int, contentTotal int, fileMd5 string +//@return: error, string + +func BreakPointContinue(content []byte, fileName string, contentNumber int, contentTotal int, fileMd5 string) (string, error) { + path := breakpointDir + fileMd5 + "/" + err := os.MkdirAll(path, os.ModePerm) + if err != nil { + return path, err + } + pathC, err := makeFileContent(content, fileName, path, contentNumber) + return pathC, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: CheckMd5 +//@description: 检查Md5 +//@param: content []byte, chunkMd5 string +//@return: CanUpload bool + +func CheckMd5(content []byte, chunkMd5 string) (CanUpload bool) { + fileMd5 := MD5V(content) + if fileMd5 == chunkMd5 { + return true // 可以继续上传 + } else { + return false // 切片不完整,废弃 + } +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: makeFileContent +//@description: 创建切片内容 +//@param: content []byte, fileName string, FileDir string, contentNumber int +//@return: string, error + +func makeFileContent(content []byte, fileName string, FileDir string, contentNumber int) (string, error) { + if strings.Index(fileName, "..") > -1 || strings.Index(FileDir, "..") > -1 { + return "", errors.New("文件名或路径不合法") + } + path := FileDir + fileName + "_" + strconv.Itoa(contentNumber) + f, err := os.Create(path) + if err != nil { + return path, err + } else { + _, err = f.Write(content) + if err != nil { + return path, err + } + } + defer f.Close() + return path, nil +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: makeFileContent +//@description: 创建切片文件 +//@param: fileName string, FileMd5 string +//@return: error, string + +func MakeFile(fileName string, FileMd5 string) (string, error) { + rd, err := os.ReadDir(breakpointDir + FileMd5) + if err != nil { + return finishDir + fileName, err + } + _ = os.MkdirAll(finishDir, os.ModePerm) + fd, err := os.OpenFile(finishDir+fileName, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0o644) + if err != nil { + return finishDir + fileName, err + } + defer fd.Close() + for k := range rd { + content, _ := os.ReadFile(breakpointDir + FileMd5 + "/" + fileName + "_" + strconv.Itoa(k)) + _, err = fd.Write(content) + if err != nil { + _ = os.Remove(finishDir + fileName) + return finishDir + fileName, err + } + } + return finishDir + fileName, nil +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: RemoveChunk +//@description: 移除切片 +//@param: FileMd5 string +//@return: error + +func RemoveChunk(FileMd5 string) error { + err := os.RemoveAll(breakpointDir + FileMd5) + return err +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/captcha/redis.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/captcha/redis.go new file mode 100644 index 000000000..a13b7cc11 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/captcha/redis.go @@ -0,0 +1,60 @@ +package captcha + +import ( + "context" + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/mojocn/base64Captcha" + "go.uber.org/zap" +) + +func NewDefaultRedisStore() *RedisStore { + return &RedisStore{ + Expiration: time.Second * 180, + PreKey: "CAPTCHA_", + Context: context.TODO(), + } +} + +type RedisStore struct { + Expiration time.Duration + PreKey string + Context context.Context +} + +func (rs *RedisStore) UseWithCtx(ctx context.Context) base64Captcha.Store { + rs.Context = ctx + return rs +} + +func (rs *RedisStore) Set(id string, value string) error { + err := global.GVA_REDIS.Set(rs.Context, rs.PreKey+id, value, rs.Expiration).Err() + if err != nil { + global.GVA_LOG.Error("RedisStoreSetError!", zap.Error(err)) + return err + } + return nil +} + +func (rs *RedisStore) Get(key string, clear bool) string { + val, err := global.GVA_REDIS.Get(rs.Context, key).Result() + if err != nil { + global.GVA_LOG.Error("RedisStoreGetError!", zap.Error(err)) + return "" + } + if clear { + err := global.GVA_REDIS.Del(rs.Context, key).Err() + if err != nil { + global.GVA_LOG.Error("RedisStoreClearError!", zap.Error(err)) + return "" + } + } + return val +} + +func (rs *RedisStore) Verify(id, answer string, clear bool) bool { + key := rs.PreKey + id + v := rs.Get(key, clear) + return v == answer +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/claims.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/claims.go new file mode 100644 index 000000000..69216700a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/claims.go @@ -0,0 +1,150 @@ +package utils + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system" + systemReq "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" + "github.com/gin-gonic/gin" + "github.com/gofrs/uuid/v5" + "net" + "time" +) + +func ClearToken(c *gin.Context) { + // 增加cookie x-token 向来源的web添加 + host, _, err := net.SplitHostPort(c.Request.Host) + if err != nil { + host = c.Request.Host + } + + if net.ParseIP(host) != nil { + c.SetCookie("x-token", "", -1, "/", "", false, false) + } else { + c.SetCookie("x-token", "", -1, "/", host, false, false) + } +} + +func SetToken(c *gin.Context, token string, maxAge int) { + // 增加cookie x-token 向来源的web添加 + host, _, err := net.SplitHostPort(c.Request.Host) + if err != nil { + host = c.Request.Host + } + + if net.ParseIP(host) != nil { + c.SetCookie("x-token", token, maxAge, "/", "", false, false) + } else { + c.SetCookie("x-token", token, maxAge, "/", host, false, false) + } +} + +func GetToken(c *gin.Context) string { + token, _ := c.Cookie("x-token") + if token == "" { + j := NewJWT() + token = c.Request.Header.Get("x-token") + claims, err := j.ParseToken(token) + if err != nil { + global.GVA_LOG.Error("重新写入cookie token失败,未能成功解析token,请检查请求头是否存在x-token且claims是否为规定结构") + return token + } + SetToken(c, token, int((claims.ExpiresAt.Unix()-time.Now().Unix())/60)) + } + return token +} + +func GetClaims(c *gin.Context) (*systemReq.CustomClaims, error) { + token := GetToken(c) + j := NewJWT() + claims, err := j.ParseToken(token) + if err != nil { + global.GVA_LOG.Error("从Gin的Context中获取从jwt解析信息失败, 请检查请求头是否存在x-token且claims是否为规定结构") + } + return claims, err +} + +// GetUserID 从Gin的Context中获取从jwt解析出来的用户ID +func GetUserID(c *gin.Context) uint { + if claims, exists := c.Get("claims"); !exists { + if cl, err := GetClaims(c); err != nil { + return 0 + } else { + return cl.BaseClaims.ID + } + } else { + waitUse := claims.(*systemReq.CustomClaims) + return waitUse.BaseClaims.ID + } +} + +// GetUserUuid 从Gin的Context中获取从jwt解析出来的用户UUID +func GetUserUuid(c *gin.Context) uuid.UUID { + if claims, exists := c.Get("claims"); !exists { + if cl, err := GetClaims(c); err != nil { + return uuid.UUID{} + } else { + return cl.UUID + } + } else { + waitUse := claims.(*systemReq.CustomClaims) + return waitUse.UUID + } +} + +// GetUserAuthorityId 从Gin的Context中获取从jwt解析出来的用户角色id +func GetUserAuthorityId(c *gin.Context) uint { + if claims, exists := c.Get("claims"); !exists { + if cl, err := GetClaims(c); err != nil { + return 0 + } else { + return cl.AuthorityId + } + } else { + waitUse := claims.(*systemReq.CustomClaims) + return waitUse.AuthorityId + } +} + +// GetUserInfo 从Gin的Context中获取从jwt解析出来的用户角色id +func GetUserInfo(c *gin.Context) *systemReq.CustomClaims { + if claims, exists := c.Get("claims"); !exists { + if cl, err := GetClaims(c); err != nil { + return nil + } else { + return cl + } + } else { + waitUse := claims.(*systemReq.CustomClaims) + return waitUse + } +} + +// GetUserName 从Gin的Context中获取从jwt解析出来的用户名 +func GetUserName(c *gin.Context) string { + if claims, exists := c.Get("claims"); !exists { + if cl, err := GetClaims(c); err != nil { + return "" + } else { + return cl.Username + } + } else { + waitUse := claims.(*systemReq.CustomClaims) + return waitUse.Username + } +} + +func LoginToken(user system.Login) (token string, claims systemReq.CustomClaims, err error) { + j := &JWT{SigningKey: []byte(global.GVA_CONFIG.JWT.SigningKey)} // 唯一签名 + claims = j.CreateClaims(systemReq.BaseClaims{ + UUID: user.GetUUID(), + ID: user.GetUserId(), + NickName: user.GetNickname(), + Username: user.GetUsername(), + AuthorityId: user.GetAuthorityId(), + }) + token, err = j.CreateToken(claims) + if err != nil { + return + } + return +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/directory.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/directory.go new file mode 100644 index 000000000..d419feefd --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/directory.go @@ -0,0 +1,124 @@ +package utils + +import ( + "errors" + "os" + "path/filepath" + "reflect" + "strings" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "go.uber.org/zap" +) + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: PathExists +//@description: 文件目录是否存在 +//@param: path string +//@return: bool, error + +func PathExists(path string) (bool, error) { + fi, err := os.Stat(path) + if err == nil { + if fi.IsDir() { + return true, nil + } + return false, errors.New("存在同名文件") + } + if os.IsNotExist(err) { + return false, nil + } + return false, err +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: CreateDir +//@description: 批量创建文件夹 +//@param: dirs ...string +//@return: err error + +func CreateDir(dirs ...string) (err error) { + for _, v := range dirs { + exist, err := PathExists(v) + if err != nil { + return err + } + if !exist { + global.GVA_LOG.Debug("create directory" + v) + if err := os.MkdirAll(v, os.ModePerm); err != nil { + global.GVA_LOG.Error("create directory"+v, zap.Any(" error:", err)) + return err + } + } + } + return err +} + +//@author: [songzhibin97](https://github.com/songzhibin97) +//@function: FileMove +//@description: 文件移动供外部调用 +//@param: src string, dst string(src: 源位置,绝对路径or相对路径, dst: 目标位置,绝对路径or相对路径,必须为文件夹) +//@return: err error + +func FileMove(src string, dst string) (err error) { + if dst == "" { + return nil + } + src, err = filepath.Abs(src) + if err != nil { + return err + } + dst, err = filepath.Abs(dst) + if err != nil { + return err + } + revoke := false + dir := filepath.Dir(dst) +Redirect: + _, err = os.Stat(dir) + if err != nil { + err = os.MkdirAll(dir, 0o755) + if err != nil { + return err + } + if !revoke { + revoke = true + goto Redirect + } + } + return os.Rename(src, dst) +} + +func DeLFile(filePath string) error { + return os.RemoveAll(filePath) +} + +//@author: [songzhibin97](https://github.com/songzhibin97) +//@function: TrimSpace +//@description: 去除结构体空格 +//@param: target interface (target: 目标结构体,传入必须是指针类型) +//@return: null + +func TrimSpace(target interface{}) { + t := reflect.TypeOf(target) + if t.Kind() != reflect.Ptr { + return + } + t = t.Elem() + v := reflect.ValueOf(target).Elem() + for i := 0; i < t.NumField(); i++ { + switch v.Field(i).Kind() { + case reflect.String: + v.Field(i).SetString(strings.TrimSpace(v.Field(i).String())) + } + } +} + +// FileExist 判断文件是否存在 +func FileExist(path string) bool { + fi, err := os.Lstat(path) + if err == nil { + return !fi.IsDir() + } + return !os.IsNotExist(err) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/fmt_plus.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/fmt_plus.go new file mode 100644 index 000000000..8b77d4f26 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/fmt_plus.go @@ -0,0 +1,82 @@ +package utils + +import ( + "fmt" + "math/rand" + "reflect" + "strings" +) + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: StructToMap +//@description: 利用反射将结构体转化为map +//@param: obj interface{} +//@return: map[string]interface{} + +func StructToMap(obj interface{}) map[string]interface{} { + obj1 := reflect.TypeOf(obj) + obj2 := reflect.ValueOf(obj) + + data := make(map[string]interface{}) + for i := 0; i < obj1.NumField(); i++ { + if obj1.Field(i).Tag.Get("mapstructure") != "" { + data[obj1.Field(i).Tag.Get("mapstructure")] = obj2.Field(i).Interface() + } else { + data[obj1.Field(i).Name] = obj2.Field(i).Interface() + } + } + return data +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: ArrayToString +//@description: 将数组格式化为字符串 +//@param: array []interface{} +//@return: string + +func ArrayToString(array []interface{}) string { + return strings.Replace(strings.Trim(fmt.Sprint(array), "[]"), " ", ",", -1) +} + +func Pointer[T any](in T) (out *T) { + return &in +} + +func FirstUpper(s string) string { + if s == "" { + return "" + } + return strings.ToUpper(s[:1]) + s[1:] +} + +func FirstLower(s string) string { + if s == "" { + return "" + } + return strings.ToLower(s[:1]) + s[1:] +} + +// MaheHump 将字符串转换为驼峰命名 +func MaheHump(s string) string { + words := strings.Split(s, "-") + + for i := 1; i < len(words); i++ { + words[i] = strings.Title(words[i]) + } + + return strings.Join(words, "") +} + +// 随机字符串 +func RandomString(n int) string { + var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") + b := make([]rune, n) + for i := range b { + b[i] = letters[RandomInt(0, len(letters))] + } + return string(b) +} + +func RandomInt(min, max int) int { + return min + rand.Intn(max-min) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/hash.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/hash.go new file mode 100644 index 000000000..9c3564b49 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/hash.go @@ -0,0 +1,31 @@ +package utils + +import ( + "crypto/md5" + "encoding/hex" + "golang.org/x/crypto/bcrypt" +) + +// BcryptHash 使用 bcrypt 对密码进行加密 +func BcryptHash(password string) string { + bytes, _ := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) + return string(bytes) +} + +// BcryptCheck 对比明文密码和数据库的哈希值 +func BcryptCheck(password, hash string) bool { + err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) + return err == nil +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: MD5V +//@description: md5加密 +//@param: str []byte +//@return: string + +func MD5V(str []byte, b ...byte) string { + h := md5.New() + h.Write(str) + return hex.EncodeToString(h.Sum(b)) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/human_duration.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/human_duration.go new file mode 100644 index 000000000..0cdb055c6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/human_duration.go @@ -0,0 +1,29 @@ +package utils + +import ( + "strconv" + "strings" + "time" +) + +func ParseDuration(d string) (time.Duration, error) { + d = strings.TrimSpace(d) + dr, err := time.ParseDuration(d) + if err == nil { + return dr, nil + } + if strings.Contains(d, "d") { + index := strings.Index(d, "d") + + hour, _ := strconv.Atoi(d[:index]) + dr = time.Hour * 24 * time.Duration(hour) + ndr, err := time.ParseDuration(d[index+1:]) + if err != nil { + return dr, nil + } + return dr + ndr, nil + } + + dv, err := strconv.ParseInt(d, 10, 64) + return time.Duration(dv), err +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/human_duration_test.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/human_duration_test.go new file mode 100644 index 000000000..8a5294b29 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/human_duration_test.go @@ -0,0 +1,49 @@ +package utils + +import ( + "testing" + "time" +) + +func TestParseDuration(t *testing.T) { + type args struct { + d string + } + tests := []struct { + name string + args args + want time.Duration + wantErr bool + }{ + { + name: "5h20m", + args: args{"5h20m"}, + want: time.Hour*5 + 20*time.Minute, + wantErr: false, + }, + { + name: "1d5h20m", + args: args{"1d5h20m"}, + want: 24*time.Hour + time.Hour*5 + 20*time.Minute, + wantErr: false, + }, + { + name: "1d", + args: args{"1d"}, + want: 24 * time.Hour, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := ParseDuration(tt.args.d) + if (err != nil) != tt.wantErr { + t.Errorf("ParseDuration() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("ParseDuration() got = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/json.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/json.go new file mode 100644 index 000000000..8c4118c7b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/json.go @@ -0,0 +1,34 @@ +package utils + +import ( + "encoding/json" + "strings" +) + +func GetJSONKeys(jsonStr string) (keys []string, err error) { + // 使用json.Decoder,以便在解析过程中记录键的顺序 + dec := json.NewDecoder(strings.NewReader(jsonStr)) + t, err := dec.Token() + if err != nil { + return nil, err + } + // 确保数据是一个对象 + if t != json.Delim('{') { + return nil, err + } + for dec.More() { + t, err = dec.Token() + if err != nil { + return nil, err + } + keys = append(keys, t.(string)) + + // 解析值 + var value interface{} + err = dec.Decode(&value) + if err != nil { + return nil, err + } + } + return keys, nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/json_test.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/json_test.go new file mode 100644 index 000000000..f21a67922 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/json_test.go @@ -0,0 +1,53 @@ +package utils + +import ( + "fmt" + "testing" +) + +func TestGetJSONKeys(t *testing.T) { + var jsonStr = ` + { + "Name": "test", + "TableName": "test", + "TemplateID": "test", + "TemplateInfo": "test", + "Limit": 0 +}` + keys, err := GetJSONKeys(jsonStr) + if err != nil { + t.Errorf("GetJSONKeys failed" + err.Error()) + return + } + if len(keys) != 5 { + t.Errorf("GetJSONKeys failed" + err.Error()) + return + } + if keys[0] != "Name" { + t.Errorf("GetJSONKeys failed" + err.Error()) + + return + } + if keys[1] != "TableName" { + t.Errorf("GetJSONKeys failed" + err.Error()) + + return + } + if keys[2] != "TemplateID" { + t.Errorf("GetJSONKeys failed" + err.Error()) + + return + } + if keys[3] != "TemplateInfo" { + t.Errorf("GetJSONKeys failed" + err.Error()) + + return + } + if keys[4] != "Limit" { + t.Errorf("GetJSONKeys failed" + err.Error()) + + return + } + + fmt.Println(keys) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/jwt.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/jwt.go new file mode 100644 index 000000000..c1298a870 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/jwt.go @@ -0,0 +1,88 @@ +package utils + +import ( + "errors" + "time" + + jwt "github.com/golang-jwt/jwt/v4" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/model/system/request" +) + +type JWT struct { + SigningKey []byte +} + +var ( + TokenExpired = errors.New("Token is expired") + TokenNotValidYet = errors.New("Token not active yet") + TokenMalformed = errors.New("That's not even a token") + TokenInvalid = errors.New("Couldn't handle this token:") +) + +func NewJWT() *JWT { + return &JWT{ + []byte(global.GVA_CONFIG.JWT.SigningKey), + } +} + +func (j *JWT) CreateClaims(baseClaims request.BaseClaims) request.CustomClaims { + bf, _ := ParseDuration(global.GVA_CONFIG.JWT.BufferTime) + ep, _ := ParseDuration(global.GVA_CONFIG.JWT.ExpiresTime) + claims := request.CustomClaims{ + BaseClaims: baseClaims, + BufferTime: int64(bf / time.Second), // 缓冲时间1天 缓冲时间内会获得新的token刷新令牌 此时一个用户会存在两个有效令牌 但是前端只留一个 另一个会丢失 + RegisteredClaims: jwt.RegisteredClaims{ + Audience: jwt.ClaimStrings{"GVA"}, // 受众 + NotBefore: jwt.NewNumericDate(time.Now().Add(-1000)), // 签名生效时间 + ExpiresAt: jwt.NewNumericDate(time.Now().Add(ep)), // 过期时间 7天 配置文件 + Issuer: global.GVA_CONFIG.JWT.Issuer, // 签名的发行者 + }, + } + return claims +} + +// 创建一个token +func (j *JWT) CreateToken(claims request.CustomClaims) (string, error) { + token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) + return token.SignedString(j.SigningKey) +} + +// CreateTokenByOldToken 旧token 换新token 使用归并回源避免并发问题 +func (j *JWT) CreateTokenByOldToken(oldToken string, claims request.CustomClaims) (string, error) { + v, err, _ := global.GVA_Concurrency_Control.Do("JWT:"+oldToken, func() (interface{}, error) { + return j.CreateToken(claims) + }) + return v.(string), err +} + +// 解析 token +func (j *JWT) ParseToken(tokenString string) (*request.CustomClaims, error) { + token, err := jwt.ParseWithClaims(tokenString, &request.CustomClaims{}, func(token *jwt.Token) (i interface{}, e error) { + return j.SigningKey, nil + }) + if err != nil { + if ve, ok := err.(*jwt.ValidationError); ok { + if ve.Errors&jwt.ValidationErrorMalformed != 0 { + return nil, TokenMalformed + } else if ve.Errors&jwt.ValidationErrorExpired != 0 { + // Token is expired + return nil, TokenExpired + } else if ve.Errors&jwt.ValidationErrorNotValidYet != 0 { + return nil, TokenNotValidYet + } else { + return nil, TokenInvalid + } + } + } + if token != nil { + if claims, ok := token.Claims.(*request.CustomClaims); ok && token.Valid { + return claims, nil + } + return nil, TokenInvalid + + } else { + return nil, TokenInvalid + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/plugin/plugin.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/plugin/plugin.go new file mode 100644 index 000000000..a59d5b52a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/plugin/plugin.go @@ -0,0 +1,18 @@ +package plugin + +import ( + "github.com/gin-gonic/gin" +) + +const ( + OnlyFuncName = "Plugin" +) + +// Plugin 插件模式接口化 +type Plugin interface { + // Register 注册路由 + Register(group *gin.RouterGroup) + + // RouterPath 用户返回注册路由 + RouterPath() string +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/plugin/v2/plugin.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/plugin/v2/plugin.go new file mode 100644 index 000000000..4dac0ab1a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/plugin/v2/plugin.go @@ -0,0 +1,11 @@ +package plugin + +import ( + "github.com/gin-gonic/gin" +) + +// Plugin 插件模式接口化v2 +type Plugin interface { + // Register 注册路由 + Register(group *gin.Engine) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/reload.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/reload.go new file mode 100644 index 000000000..de5499bf3 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/reload.go @@ -0,0 +1,18 @@ +package utils + +import ( + "errors" + "os" + "os/exec" + "runtime" + "strconv" +) + +func Reload() error { + if runtime.GOOS == "windows" { + return errors.New("系统不支持") + } + pid := os.Getpid() + cmd := exec.Command("kill", "-1", strconv.Itoa(pid)) + return cmd.Run() +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/request/http.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/request/http.go new file mode 100644 index 000000000..86d0d1509 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/request/http.go @@ -0,0 +1,62 @@ +package request + +import ( + "bytes" + "encoding/json" + "net/http" + "net/url" +) + +func HttpRequest( + urlStr string, + method string, + headers map[string]string, + params map[string]string, + data any) (*http.Response, error) { + // 创建URL + u, err := url.Parse(urlStr) + if err != nil { + return nil, err + } + + // 添加查询参数 + query := u.Query() + for k, v := range params { + query.Set(k, v) + } + u.RawQuery = query.Encode() + + // 将数据编码为JSON + buf := new(bytes.Buffer) + if data != nil { + b, err := json.Marshal(data) + if err != nil { + return nil, err + } + buf = bytes.NewBuffer(b) + } + + // 创建请求 + req, err := http.NewRequest(method, u.String(), buf) + + if err != nil { + return nil, err + } + + for k, v := range headers { + req.Header.Set(k, v) + } + + if data != nil { + req.Header.Set("Content-Type", "application/json") + } + + // 发送请求 + resp, err := http.DefaultClient.Do(req) + if err != nil { + return nil, err + } + + // 返回响应,让调用者处理 + return resp, nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/server.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/server.go new file mode 100644 index 000000000..8c14cd79d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/server.go @@ -0,0 +1,126 @@ +package utils + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/global" + "runtime" + "time" + + "github.com/shirou/gopsutil/v3/cpu" + "github.com/shirou/gopsutil/v3/disk" + "github.com/shirou/gopsutil/v3/mem" +) + +const ( + B = 1 + KB = 1024 * B + MB = 1024 * KB + GB = 1024 * MB +) + +type Server struct { + Os Os `json:"os"` + Cpu Cpu `json:"cpu"` + Ram Ram `json:"ram"` + Disk []Disk `json:"disk"` +} + +type Os struct { + GOOS string `json:"goos"` + NumCPU int `json:"numCpu"` + Compiler string `json:"compiler"` + GoVersion string `json:"goVersion"` + NumGoroutine int `json:"numGoroutine"` +} + +type Cpu struct { + Cpus []float64 `json:"cpus"` + Cores int `json:"cores"` +} + +type Ram struct { + UsedMB int `json:"usedMb"` + TotalMB int `json:"totalMb"` + UsedPercent int `json:"usedPercent"` +} + +type Disk struct { + MountPoint string `json:"mountPoint"` + UsedMB int `json:"usedMb"` + UsedGB int `json:"usedGb"` + TotalMB int `json:"totalMb"` + TotalGB int `json:"totalGb"` + UsedPercent int `json:"usedPercent"` +} + +//@author: [SliverHorn](https://github.com/SliverHorn) +//@function: InitCPU +//@description: OS信息 +//@return: o Os, err error + +func InitOS() (o Os) { + o.GOOS = runtime.GOOS + o.NumCPU = runtime.NumCPU() + o.Compiler = runtime.Compiler + o.GoVersion = runtime.Version() + o.NumGoroutine = runtime.NumGoroutine() + return o +} + +//@author: [SliverHorn](https://github.com/SliverHorn) +//@function: InitCPU +//@description: CPU信息 +//@return: c Cpu, err error + +func InitCPU() (c Cpu, err error) { + if cores, err := cpu.Counts(false); err != nil { + return c, err + } else { + c.Cores = cores + } + if cpus, err := cpu.Percent(time.Duration(200)*time.Millisecond, true); err != nil { + return c, err + } else { + c.Cpus = cpus + } + return c, nil +} + +//@author: [SliverHorn](https://github.com/SliverHorn) +//@function: InitRAM +//@description: RAM信息 +//@return: r Ram, err error + +func InitRAM() (r Ram, err error) { + if u, err := mem.VirtualMemory(); err != nil { + return r, err + } else { + r.UsedMB = int(u.Used) / MB + r.TotalMB = int(u.Total) / MB + r.UsedPercent = int(u.UsedPercent) + } + return r, nil +} + +//@author: [SliverHorn](https://github.com/SliverHorn) +//@function: InitDisk +//@description: 硬盘信息 +//@return: d Disk, err error + +func InitDisk() (d []Disk, err error) { + for i := range global.GVA_CONFIG.DiskList { + mp := global.GVA_CONFIG.DiskList[i].MountPoint + if u, err := disk.Usage(mp); err != nil { + return d, err + } else { + d = append(d, Disk{ + MountPoint: mp, + UsedMB: int(u.Used) / MB, + UsedGB: int(u.Used) / GB, + TotalMB: int(u.Total) / MB, + TotalGB: int(u.Total) / GB, + UsedPercent: int(u.UsedPercent), + }) + } + } + return d, nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/timer/timed_task.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/timer/timed_task.go new file mode 100644 index 000000000..b8c4edfab --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/timer/timed_task.go @@ -0,0 +1,229 @@ +package timer + +import ( + "github.com/robfig/cron/v3" + "sync" +) + +type Timer interface { + // 寻找所有Cron + FindCronList() map[string]*taskManager + // 添加Task 方法形式以秒的形式加入 + AddTaskByFuncWithSecond(cronName string, spec string, fun func(), taskName string, option ...cron.Option) (cron.EntryID, error) // 添加Task Func以秒的形式加入 + // 添加Task 接口形式以秒的形式加入 + AddTaskByJobWithSeconds(cronName string, spec string, job interface{ Run() }, taskName string, option ...cron.Option) (cron.EntryID, error) + // 通过函数的方法添加任务 + AddTaskByFunc(cronName string, spec string, task func(), taskName string, option ...cron.Option) (cron.EntryID, error) + // 通过接口的方法添加任务 要实现一个带有 Run方法的接口触发 + AddTaskByJob(cronName string, spec string, job interface{ Run() }, taskName string, option ...cron.Option) (cron.EntryID, error) + // 获取对应taskName的cron 可能会为空 + FindCron(cronName string) (*taskManager, bool) + // 指定cron开始执行 + StartCron(cronName string) + // 指定cron停止执行 + StopCron(cronName string) + // 查找指定cron下的指定task + FindTask(cronName string, taskName string) (*task, bool) + // 根据id删除指定cron下的指定task + RemoveTask(cronName string, id int) + // 根据taskName删除指定cron下的指定task + RemoveTaskByName(cronName string, taskName string) + // 清理掉指定cronName + Clear(cronName string) + // 停止所有的cron + Close() +} + +type task struct { + EntryID cron.EntryID + Spec string + TaskName string +} + +type taskManager struct { + corn *cron.Cron + tasks map[cron.EntryID]*task +} + +// timer 定时任务管理 +type timer struct { + cronList map[string]*taskManager + sync.Mutex +} + +// AddTaskByFunc 通过函数的方法添加任务 +func (t *timer) AddTaskByFunc(cronName string, spec string, fun func(), taskName string, option ...cron.Option) (cron.EntryID, error) { + t.Lock() + defer t.Unlock() + if _, ok := t.cronList[cronName]; !ok { + tasks := make(map[cron.EntryID]*task) + t.cronList[cronName] = &taskManager{ + corn: cron.New(option...), + tasks: tasks, + } + } + id, err := t.cronList[cronName].corn.AddFunc(spec, fun) + t.cronList[cronName].corn.Start() + t.cronList[cronName].tasks[id] = &task{ + EntryID: id, + Spec: spec, + TaskName: taskName, + } + return id, err +} + +// AddTaskByFuncWithSeconds 通过函数的方法使用WithSeconds添加任务 +func (t *timer) AddTaskByFuncWithSecond(cronName string, spec string, fun func(), taskName string, option ...cron.Option) (cron.EntryID, error) { + t.Lock() + defer t.Unlock() + option = append(option, cron.WithSeconds()) + if _, ok := t.cronList[cronName]; !ok { + tasks := make(map[cron.EntryID]*task) + t.cronList[cronName] = &taskManager{ + corn: cron.New(option...), + tasks: tasks, + } + } + id, err := t.cronList[cronName].corn.AddFunc(spec, fun) + t.cronList[cronName].corn.Start() + t.cronList[cronName].tasks[id] = &task{ + EntryID: id, + Spec: spec, + TaskName: taskName, + } + return id, err +} + +// AddTaskByJob 通过接口的方法添加任务 +func (t *timer) AddTaskByJob(cronName string, spec string, job interface{ Run() }, taskName string, option ...cron.Option) (cron.EntryID, error) { + t.Lock() + defer t.Unlock() + if _, ok := t.cronList[cronName]; !ok { + tasks := make(map[cron.EntryID]*task) + t.cronList[cronName] = &taskManager{ + corn: cron.New(option...), + tasks: tasks, + } + } + id, err := t.cronList[cronName].corn.AddJob(spec, job) + t.cronList[cronName].corn.Start() + t.cronList[cronName].tasks[id] = &task{ + EntryID: id, + Spec: spec, + TaskName: taskName, + } + return id, err +} + +// AddTaskByJobWithSeconds 通过接口的方法添加任务 +func (t *timer) AddTaskByJobWithSeconds(cronName string, spec string, job interface{ Run() }, taskName string, option ...cron.Option) (cron.EntryID, error) { + t.Lock() + defer t.Unlock() + option = append(option, cron.WithSeconds()) + if _, ok := t.cronList[cronName]; !ok { + tasks := make(map[cron.EntryID]*task) + t.cronList[cronName] = &taskManager{ + corn: cron.New(option...), + tasks: tasks, + } + } + id, err := t.cronList[cronName].corn.AddJob(spec, job) + t.cronList[cronName].corn.Start() + t.cronList[cronName].tasks[id] = &task{ + EntryID: id, + Spec: spec, + TaskName: taskName, + } + return id, err +} + +// FindTask 获取对应cronName的cron 可能会为空 +func (t *timer) FindCron(cronName string) (*taskManager, bool) { + t.Lock() + defer t.Unlock() + v, ok := t.cronList[cronName] + return v, ok +} + +// FindTask 获取对应cronName的cron 可能会为空 +func (t *timer) FindTask(cronName string, taskName string) (*task, bool) { + t.Lock() + defer t.Unlock() + v, ok := t.cronList[cronName] + if !ok { + return nil, ok + } + for _, t2 := range v.tasks { + if t2.TaskName == taskName { + return t2, true + } + } + return nil, false +} + +// FindCronList 获取所有的任务列表 +func (t *timer) FindCronList() map[string]*taskManager { + t.Lock() + defer t.Unlock() + return t.cronList +} + +// StartCron 开始任务 +func (t *timer) StartCron(cronName string) { + t.Lock() + defer t.Unlock() + if v, ok := t.cronList[cronName]; ok { + v.corn.Start() + } +} + +// StopCron 停止任务 +func (t *timer) StopCron(cronName string) { + t.Lock() + defer t.Unlock() + if v, ok := t.cronList[cronName]; ok { + v.corn.Stop() + } +} + +// Remove 从cronName 删除指定任务 +func (t *timer) RemoveTask(cronName string, id int) { + t.Lock() + defer t.Unlock() + if v, ok := t.cronList[cronName]; ok { + v.corn.Remove(cron.EntryID(id)) + delete(v.tasks, cron.EntryID(id)) + } +} + +// RemoveTaskByName 从cronName 使用taskName 删除指定任务 +func (t *timer) RemoveTaskByName(cronName string, taskName string) { + fTask, ok := t.FindTask(cronName, taskName) + if !ok { + return + } + t.RemoveTask(cronName, int(fTask.EntryID)) +} + +// Clear 清除任务 +func (t *timer) Clear(cronName string) { + t.Lock() + defer t.Unlock() + if v, ok := t.cronList[cronName]; ok { + v.corn.Stop() + delete(t.cronList, cronName) + } +} + +// Close 释放资源 +func (t *timer) Close() { + t.Lock() + defer t.Unlock() + for _, v := range t.cronList { + v.corn.Stop() + } +} + +func NewTimerTask() Timer { + return &timer{cronList: make(map[string]*taskManager)} +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/timer/timed_task_test.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/timer/timed_task_test.go new file mode 100644 index 000000000..9f2c02c0b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/timer/timed_task_test.go @@ -0,0 +1,72 @@ +package timer + +import ( + "fmt" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +var job = mockJob{} + +type mockJob struct{} + +func (job mockJob) Run() { + mockFunc() +} + +func mockFunc() { + time.Sleep(time.Second) + fmt.Println("1s...") +} + +func TestNewTimerTask(t *testing.T) { + tm := NewTimerTask() + _tm := tm.(*timer) + + { + _, err := tm.AddTaskByFunc("func", "@every 1s", mockFunc, "测试mockfunc") + assert.Nil(t, err) + _, ok := _tm.cronList["func"] + if !ok { + t.Error("no find func") + } + } + + { + _, err := tm.AddTaskByJob("job", "@every 1s", job, "测试job mockfunc") + assert.Nil(t, err) + _, ok := _tm.cronList["job"] + if !ok { + t.Error("no find job") + } + } + + { + _, ok := tm.FindCron("func") + if !ok { + t.Error("no find func") + } + _, ok = tm.FindCron("job") + if !ok { + t.Error("no find job") + } + _, ok = tm.FindCron("none") + if ok { + t.Error("find none") + } + } + { + tm.Clear("func") + _, ok := tm.FindCron("func") + if ok { + t.Error("find func") + } + } + { + a := tm.FindCronList() + b, c := tm.FindCron("job") + fmt.Println(a, b, c) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/aliyun_oss.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/aliyun_oss.go new file mode 100644 index 000000000..cf7410161 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/aliyun_oss.go @@ -0,0 +1,75 @@ +package upload + +import ( + "errors" + "mime/multipart" + "time" + + "github.com/aliyun/aliyun-oss-go-sdk/oss" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "go.uber.org/zap" +) + +type AliyunOSS struct{} + +func (*AliyunOSS) UploadFile(file *multipart.FileHeader) (string, string, error) { + bucket, err := NewBucket() + if err != nil { + global.GVA_LOG.Error("function AliyunOSS.NewBucket() Failed", zap.Any("err", err.Error())) + return "", "", errors.New("function AliyunOSS.NewBucket() Failed, err:" + err.Error()) + } + + // 读取本地文件。 + f, openError := file.Open() + if openError != nil { + global.GVA_LOG.Error("function file.Open() Failed", zap.Any("err", openError.Error())) + return "", "", errors.New("function file.Open() Failed, err:" + openError.Error()) + } + defer f.Close() // 创建文件 defer 关闭 + // 上传阿里云路径 文件名格式 自己可以改 建议保证唯一性 + // yunFileTmpPath := filepath.Join("uploads", time.Now().Format("2006-01-02")) + "/" + file.Filename + yunFileTmpPath := global.GVA_CONFIG.AliyunOSS.BasePath + "/" + "uploads" + "/" + time.Now().Format("2006-01-02") + "/" + file.Filename + + // 上传文件流。 + err = bucket.PutObject(yunFileTmpPath, f) + if err != nil { + global.GVA_LOG.Error("function formUploader.Put() Failed", zap.Any("err", err.Error())) + return "", "", errors.New("function formUploader.Put() Failed, err:" + err.Error()) + } + + return global.GVA_CONFIG.AliyunOSS.BucketUrl + "/" + yunFileTmpPath, yunFileTmpPath, nil +} + +func (*AliyunOSS) DeleteFile(key string) error { + bucket, err := NewBucket() + if err != nil { + global.GVA_LOG.Error("function AliyunOSS.NewBucket() Failed", zap.Any("err", err.Error())) + return errors.New("function AliyunOSS.NewBucket() Failed, err:" + err.Error()) + } + + // 删除单个文件。objectName表示删除OSS文件时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。 + // 如需删除文件夹,请将objectName设置为对应的文件夹名称。如果文件夹非空,则需要将文件夹下的所有object删除后才能删除该文件夹。 + err = bucket.DeleteObject(key) + if err != nil { + global.GVA_LOG.Error("function bucketManager.Delete() failed", zap.Any("err", err.Error())) + return errors.New("function bucketManager.Delete() failed, err:" + err.Error()) + } + + return nil +} + +func NewBucket() (*oss.Bucket, error) { + // 创建OSSClient实例。 + client, err := oss.New(global.GVA_CONFIG.AliyunOSS.Endpoint, global.GVA_CONFIG.AliyunOSS.AccessKeyId, global.GVA_CONFIG.AliyunOSS.AccessKeySecret) + if err != nil { + return nil, err + } + + // 获取存储空间。 + bucket, err := client.Bucket(global.GVA_CONFIG.AliyunOSS.BucketName) + if err != nil { + return nil, err + } + + return bucket, nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/aws_s3.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/aws_s3.go new file mode 100644 index 000000000..342f9b8b4 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/aws_s3.go @@ -0,0 +1,97 @@ +package upload + +import ( + "errors" + "fmt" + "mime/multipart" + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/s3" + "github.com/aws/aws-sdk-go/service/s3/s3manager" + "go.uber.org/zap" +) + +type AwsS3 struct{} + +//@author: [WqyJh](https://github.com/WqyJh) +//@object: *AwsS3 +//@function: UploadFile +//@description: Upload file to Aws S3 using aws-sdk-go. See https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/s3-example-basic-bucket-operations.html#s3-examples-bucket-ops-upload-file-to-bucket +//@param: file *multipart.FileHeader +//@return: string, string, error + +func (*AwsS3) UploadFile(file *multipart.FileHeader) (string, string, error) { + session := newSession() + uploader := s3manager.NewUploader(session) + + fileKey := fmt.Sprintf("%d%s", time.Now().Unix(), file.Filename) + filename := global.GVA_CONFIG.AwsS3.PathPrefix + "/" + fileKey + f, openError := file.Open() + if openError != nil { + global.GVA_LOG.Error("function file.Open() failed", zap.Any("err", openError.Error())) + return "", "", errors.New("function file.Open() failed, err:" + openError.Error()) + } + defer f.Close() // 创建文件 defer 关闭 + + _, err := uploader.Upload(&s3manager.UploadInput{ + Bucket: aws.String(global.GVA_CONFIG.AwsS3.Bucket), + Key: aws.String(filename), + Body: f, + }) + if err != nil { + global.GVA_LOG.Error("function uploader.Upload() failed", zap.Any("err", err.Error())) + return "", "", err + } + + return global.GVA_CONFIG.AwsS3.BaseURL + "/" + filename, fileKey, nil +} + +//@author: [WqyJh](https://github.com/WqyJh) +//@object: *AwsS3 +//@function: DeleteFile +//@description: Delete file from Aws S3 using aws-sdk-go. See https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/s3-example-basic-bucket-operations.html#s3-examples-bucket-ops-delete-bucket-item +//@param: file *multipart.FileHeader +//@return: string, string, error + +func (*AwsS3) DeleteFile(key string) error { + session := newSession() + svc := s3.New(session) + filename := global.GVA_CONFIG.AwsS3.PathPrefix + "/" + key + bucket := global.GVA_CONFIG.AwsS3.Bucket + + _, err := svc.DeleteObject(&s3.DeleteObjectInput{ + Bucket: aws.String(bucket), + Key: aws.String(filename), + }) + if err != nil { + global.GVA_LOG.Error("function svc.DeleteObject() failed", zap.Any("err", err.Error())) + return errors.New("function svc.DeleteObject() failed, err:" + err.Error()) + } + + _ = svc.WaitUntilObjectNotExists(&s3.HeadObjectInput{ + Bucket: aws.String(bucket), + Key: aws.String(filename), + }) + return nil +} + +// newSession Create S3 session +func newSession() *session.Session { + sess, _ := session.NewSession(&aws.Config{ + Region: aws.String(global.GVA_CONFIG.AwsS3.Region), + Endpoint: aws.String(global.GVA_CONFIG.AwsS3.Endpoint), //minio在这里设置地址,可以兼容 + S3ForcePathStyle: aws.Bool(global.GVA_CONFIG.AwsS3.S3ForcePathStyle), + DisableSSL: aws.Bool(global.GVA_CONFIG.AwsS3.DisableSSL), + Credentials: credentials.NewStaticCredentials( + global.GVA_CONFIG.AwsS3.SecretID, + global.GVA_CONFIG.AwsS3.SecretKey, + "", + ), + }) + return sess +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/cloudflare_r2.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/cloudflare_r2.go new file mode 100644 index 000000000..a68d212bc --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/cloudflare_r2.go @@ -0,0 +1,85 @@ +package upload + +import ( + "errors" + "fmt" + "mime/multipart" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/credentials" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/s3" + "github.com/aws/aws-sdk-go/service/s3/s3manager" + "github.com/flipped-aurora/gin-vue-admin/server/global" + "go.uber.org/zap" +) + +type CloudflareR2 struct{} + +func (c *CloudflareR2) UploadFile(file *multipart.FileHeader) (fileUrl string, fileName string, err error) { + session := c.newSession() + client := s3manager.NewUploader(session) + + fileKey := fmt.Sprintf("%d_%s", time.Now().Unix(), file.Filename) + fileName = fmt.Sprintf("%s/%s", global.GVA_CONFIG.CloudflareR2.Path, fileKey) + f, openError := file.Open() + if openError != nil { + global.GVA_LOG.Error("function file.Open() failed", zap.Any("err", openError.Error())) + return "", "", errors.New("function file.Open() failed, err:" + openError.Error()) + } + defer f.Close() // 创建文件 defer 关闭 + + input := &s3manager.UploadInput{ + Bucket: aws.String(global.GVA_CONFIG.CloudflareR2.Bucket), + Key: aws.String(fileName), + Body: f, + } + + _, err = client.Upload(input) + if err != nil { + global.GVA_LOG.Error("function uploader.Upload() failed", zap.Any("err", err.Error())) + return "", "", err + } + + return fmt.Sprintf("%s/%s", global.GVA_CONFIG.CloudflareR2.BaseURL, + fileName), + fileKey, + nil +} + +func (c *CloudflareR2) DeleteFile(key string) error { + session := newSession() + svc := s3.New(session) + filename := global.GVA_CONFIG.CloudflareR2.Path + "/" + key + bucket := global.GVA_CONFIG.CloudflareR2.Bucket + + _, err := svc.DeleteObject(&s3.DeleteObjectInput{ + Bucket: aws.String(bucket), + Key: aws.String(filename), + }) + if err != nil { + global.GVA_LOG.Error("function svc.DeleteObject() failed", zap.Any("err", err.Error())) + return errors.New("function svc.DeleteObject() failed, err:" + err.Error()) + } + + _ = svc.WaitUntilObjectNotExists(&s3.HeadObjectInput{ + Bucket: aws.String(bucket), + Key: aws.String(filename), + }) + return nil +} + +func (*CloudflareR2) newSession() *session.Session { + endpoint := fmt.Sprintf("%s.r2.cloudflarestorage.com", global.GVA_CONFIG.CloudflareR2.AccountID) + + return session.Must(session.NewSession(&aws.Config{ + Region: aws.String("auto"), + Endpoint: aws.String(endpoint), + Credentials: credentials.NewStaticCredentials( + global.GVA_CONFIG.CloudflareR2.AccessKeyID, + global.GVA_CONFIG.CloudflareR2.SecretAccessKey, + "", + ), + })) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/local.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/local.go new file mode 100644 index 000000000..bb0784995 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/local.go @@ -0,0 +1,109 @@ +package upload + +import ( + "errors" + "io" + "mime/multipart" + "os" + "path/filepath" + "strings" + "sync" + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/flipped-aurora/gin-vue-admin/server/utils" + "go.uber.org/zap" +) + +var mu sync.Mutex + +type Local struct{} + +//@author: [piexlmax](https://github.com/piexlmax) +//@author: [ccfish86](https://github.com/ccfish86) +//@author: [SliverHorn](https://github.com/SliverHorn) +//@object: *Local +//@function: UploadFile +//@description: 上传文件 +//@param: file *multipart.FileHeader +//@return: string, string, error + +func (*Local) UploadFile(file *multipart.FileHeader) (string, string, error) { + // 读取文件后缀 + ext := filepath.Ext(file.Filename) + // 读取文件名并加密 + name := strings.TrimSuffix(file.Filename, ext) + name = utils.MD5V([]byte(name)) + // 拼接新文件名 + filename := name + "_" + time.Now().Format("20060102150405") + ext + // 尝试创建此路径 + mkdirErr := os.MkdirAll(global.GVA_CONFIG.Local.StorePath, os.ModePerm) + if mkdirErr != nil { + global.GVA_LOG.Error("function os.MkdirAll() failed", zap.Any("err", mkdirErr.Error())) + return "", "", errors.New("function os.MkdirAll() failed, err:" + mkdirErr.Error()) + } + // 拼接路径和文件名 + p := global.GVA_CONFIG.Local.StorePath + "/" + filename + filepath := global.GVA_CONFIG.Local.Path + "/" + filename + + f, openError := file.Open() // 读取文件 + if openError != nil { + global.GVA_LOG.Error("function file.Open() failed", zap.Any("err", openError.Error())) + return "", "", errors.New("function file.Open() failed, err:" + openError.Error()) + } + defer f.Close() // 创建文件 defer 关闭 + + out, createErr := os.Create(p) + if createErr != nil { + global.GVA_LOG.Error("function os.Create() failed", zap.Any("err", createErr.Error())) + + return "", "", errors.New("function os.Create() failed, err:" + createErr.Error()) + } + defer out.Close() // 创建文件 defer 关闭 + + _, copyErr := io.Copy(out, f) // 传输(拷贝)文件 + if copyErr != nil { + global.GVA_LOG.Error("function io.Copy() failed", zap.Any("err", copyErr.Error())) + return "", "", errors.New("function io.Copy() failed, err:" + copyErr.Error()) + } + return filepath, filename, nil +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@author: [ccfish86](https://github.com/ccfish86) +//@author: [SliverHorn](https://github.com/SliverHorn) +//@object: *Local +//@function: DeleteFile +//@description: 删除文件 +//@param: key string +//@return: error + +func (*Local) DeleteFile(key string) error { + // 检查 key 是否为空 + if key == "" { + return errors.New("key不能为空") + } + + // 验证 key 是否包含非法字符或尝试访问存储路径之外的文件 + if strings.Contains(key, "..") || strings.ContainsAny(key, `\/:*?"<>|`) { + return errors.New("非法的key") + } + + p := filepath.Join(global.GVA_CONFIG.Local.StorePath, key) + + // 检查文件是否存在 + if _, err := os.Stat(p); os.IsNotExist(err) { + return errors.New("文件不存在") + } + + // 使用文件锁防止并发删除 + mu.Lock() + defer mu.Unlock() + + err := os.Remove(p) + if err != nil { + return errors.New("文件删除失败: " + err.Error()) + } + + return nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/obs.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/obs.go new file mode 100644 index 000000000..70ff42e56 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/obs.go @@ -0,0 +1,69 @@ +package upload + +import ( + "mime/multipart" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs" + "github.com/pkg/errors" +) + +var HuaWeiObs = new(Obs) + +type Obs struct{} + +func NewHuaWeiObsClient() (client *obs.ObsClient, err error) { + return obs.New(global.GVA_CONFIG.HuaWeiObs.AccessKey, global.GVA_CONFIG.HuaWeiObs.SecretKey, global.GVA_CONFIG.HuaWeiObs.Endpoint) +} + +func (o *Obs) UploadFile(file *multipart.FileHeader) (string, string, error) { + // var open multipart.File + open, err := file.Open() + if err != nil { + return "", "", err + } + defer open.Close() + filename := file.Filename + input := &obs.PutObjectInput{ + PutObjectBasicInput: obs.PutObjectBasicInput{ + ObjectOperationInput: obs.ObjectOperationInput{ + Bucket: global.GVA_CONFIG.HuaWeiObs.Bucket, + Key: filename, + }, + HttpHeader: obs.HttpHeader{ + ContentType: file.Header.Get("content-type"), + }, + }, + Body: open, + } + + var client *obs.ObsClient + client, err = NewHuaWeiObsClient() + if err != nil { + return "", "", errors.Wrap(err, "获取华为对象存储对象失败!") + } + + _, err = client.PutObject(input) + if err != nil { + return "", "", errors.Wrap(err, "文件上传失败!") + } + filepath := global.GVA_CONFIG.HuaWeiObs.Path + "/" + filename + return filepath, filename, err +} + +func (o *Obs) DeleteFile(key string) error { + client, err := NewHuaWeiObsClient() + if err != nil { + return errors.Wrap(err, "获取华为对象存储对象失败!") + } + input := &obs.DeleteObjectInput{ + Bucket: global.GVA_CONFIG.HuaWeiObs.Bucket, + Key: key, + } + var output *obs.DeleteObjectOutput + output, err = client.DeleteObject(input) + if err != nil { + return errors.Wrapf(err, "删除对象(%s)失败!, output: %v", key, output) + } + return nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/qiniu.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/qiniu.go new file mode 100644 index 000000000..f4287d590 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/qiniu.go @@ -0,0 +1,96 @@ +package upload + +import ( + "context" + "errors" + "fmt" + "mime/multipart" + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + "github.com/qiniu/go-sdk/v7/auth/qbox" + "github.com/qiniu/go-sdk/v7/storage" + "go.uber.org/zap" +) + +type Qiniu struct{} + +//@author: [piexlmax](https://github.com/piexlmax) +//@author: [ccfish86](https://github.com/ccfish86) +//@author: [SliverHorn](https://github.com/SliverHorn) +//@object: *Qiniu +//@function: UploadFile +//@description: 上传文件 +//@param: file *multipart.FileHeader +//@return: string, string, error + +func (*Qiniu) UploadFile(file *multipart.FileHeader) (string, string, error) { + putPolicy := storage.PutPolicy{Scope: global.GVA_CONFIG.Qiniu.Bucket} + mac := qbox.NewMac(global.GVA_CONFIG.Qiniu.AccessKey, global.GVA_CONFIG.Qiniu.SecretKey) + upToken := putPolicy.UploadToken(mac) + cfg := qiniuConfig() + formUploader := storage.NewFormUploader(cfg) + ret := storage.PutRet{} + putExtra := storage.PutExtra{Params: map[string]string{"x:name": "github logo"}} + + f, openError := file.Open() + if openError != nil { + global.GVA_LOG.Error("function file.Open() failed", zap.Any("err", openError.Error())) + + return "", "", errors.New("function file.Open() failed, err:" + openError.Error()) + } + defer f.Close() // 创建文件 defer 关闭 + fileKey := fmt.Sprintf("%d%s", time.Now().Unix(), file.Filename) // 文件名格式 自己可以改 建议保证唯一性 + putErr := formUploader.Put(context.Background(), &ret, upToken, fileKey, f, file.Size, &putExtra) + if putErr != nil { + global.GVA_LOG.Error("function formUploader.Put() failed", zap.Any("err", putErr.Error())) + return "", "", errors.New("function formUploader.Put() failed, err:" + putErr.Error()) + } + return global.GVA_CONFIG.Qiniu.ImgPath + "/" + ret.Key, ret.Key, nil +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@author: [ccfish86](https://github.com/ccfish86) +//@author: [SliverHorn](https://github.com/SliverHorn) +//@object: *Qiniu +//@function: DeleteFile +//@description: 删除文件 +//@param: key string +//@return: error + +func (*Qiniu) DeleteFile(key string) error { + mac := qbox.NewMac(global.GVA_CONFIG.Qiniu.AccessKey, global.GVA_CONFIG.Qiniu.SecretKey) + cfg := qiniuConfig() + bucketManager := storage.NewBucketManager(mac, cfg) + if err := bucketManager.Delete(global.GVA_CONFIG.Qiniu.Bucket, key); err != nil { + global.GVA_LOG.Error("function bucketManager.Delete() failed", zap.Any("err", err.Error())) + return errors.New("function bucketManager.Delete() failed, err:" + err.Error()) + } + return nil +} + +//@author: [SliverHorn](https://github.com/SliverHorn) +//@object: *Qiniu +//@function: qiniuConfig +//@description: 根据配置文件进行返回七牛云的配置 +//@return: *storage.Config + +func qiniuConfig() *storage.Config { + cfg := storage.Config{ + UseHTTPS: global.GVA_CONFIG.Qiniu.UseHTTPS, + UseCdnDomains: global.GVA_CONFIG.Qiniu.UseCdnDomains, + } + switch global.GVA_CONFIG.Qiniu.Zone { // 根据配置文件进行初始化空间对应的机房 + case "ZoneHuadong": + cfg.Zone = &storage.ZoneHuadong + case "ZoneHuabei": + cfg.Zone = &storage.ZoneHuabei + case "ZoneHuanan": + cfg.Zone = &storage.ZoneHuanan + case "ZoneBeimei": + cfg.Zone = &storage.ZoneBeimei + case "ZoneXinjiapo": + cfg.Zone = &storage.ZoneXinjiapo + } + return &cfg +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/tencent_cos.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/tencent_cos.go new file mode 100644 index 000000000..efb99d894 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/tencent_cos.go @@ -0,0 +1,61 @@ +package upload + +import ( + "context" + "errors" + "fmt" + "mime/multipart" + "net/http" + "net/url" + "time" + + "github.com/flipped-aurora/gin-vue-admin/server/global" + + "github.com/tencentyun/cos-go-sdk-v5" + "go.uber.org/zap" +) + +type TencentCOS struct{} + +// UploadFile upload file to COS +func (*TencentCOS) UploadFile(file *multipart.FileHeader) (string, string, error) { + client := NewClient() + f, openError := file.Open() + if openError != nil { + global.GVA_LOG.Error("function file.Open() failed", zap.Any("err", openError.Error())) + return "", "", errors.New("function file.Open() failed, err:" + openError.Error()) + } + defer f.Close() // 创建文件 defer 关闭 + fileKey := fmt.Sprintf("%d%s", time.Now().Unix(), file.Filename) + + _, err := client.Object.Put(context.Background(), global.GVA_CONFIG.TencentCOS.PathPrefix+"/"+fileKey, f, nil) + if err != nil { + panic(err) + } + return global.GVA_CONFIG.TencentCOS.BaseURL + "/" + global.GVA_CONFIG.TencentCOS.PathPrefix + "/" + fileKey, fileKey, nil +} + +// DeleteFile delete file form COS +func (*TencentCOS) DeleteFile(key string) error { + client := NewClient() + name := global.GVA_CONFIG.TencentCOS.PathPrefix + "/" + key + _, err := client.Object.Delete(context.Background(), name) + if err != nil { + global.GVA_LOG.Error("function bucketManager.Delete() failed", zap.Any("err", err.Error())) + return errors.New("function bucketManager.Delete() failed, err:" + err.Error()) + } + return nil +} + +// NewClient init COS client +func NewClient() *cos.Client { + urlStr, _ := url.Parse("https://" + global.GVA_CONFIG.TencentCOS.Bucket + ".cos." + global.GVA_CONFIG.TencentCOS.Region + ".myqcloud.com") + baseURL := &cos.BaseURL{BucketURL: urlStr} + client := cos.NewClient(baseURL, &http.Client{ + Transport: &cos.AuthorizationTransport{ + SecretID: global.GVA_CONFIG.TencentCOS.SecretID, + SecretKey: global.GVA_CONFIG.TencentCOS.SecretKey, + }, + }) + return client +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/upload.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/upload.go new file mode 100644 index 000000000..72fa44429 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/upload/upload.go @@ -0,0 +1,39 @@ +package upload + +import ( + "mime/multipart" + + "github.com/flipped-aurora/gin-vue-admin/server/global" +) + +// OSS 对象存储接口 +// Author [SliverHorn](https://github.com/SliverHorn) +// Author [ccfish86](https://github.com/ccfish86) +type OSS interface { + UploadFile(file *multipart.FileHeader) (string, string, error) + DeleteFile(key string) error +} + +// NewOss OSS的实例化方法 +// Author [SliverHorn](https://github.com/SliverHorn) +// Author [ccfish86](https://github.com/ccfish86) +func NewOss() OSS { + switch global.GVA_CONFIG.System.OssType { + case "local": + return &Local{} + case "qiniu": + return &Qiniu{} + case "tencent-cos": + return &TencentCOS{} + case "aliyun-oss": + return &AliyunOSS{} + case "huawei-obs": + return HuaWeiObs + case "aws-s3": + return &AwsS3{} + case "cloudflare-r2": + return &CloudflareR2{} + default: + return &Local{} + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/validator.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/validator.go new file mode 100644 index 000000000..a56dac030 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/validator.go @@ -0,0 +1,294 @@ +package utils + +import ( + "errors" + "reflect" + "regexp" + "strconv" + "strings" +) + +type Rules map[string][]string + +type RulesMap map[string]Rules + +var CustomizeMap = make(map[string]Rules) + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: RegisterRule +//@description: 注册自定义规则方案建议在路由初始化层即注册 +//@param: key string, rule Rules +//@return: err error + +func RegisterRule(key string, rule Rules) (err error) { + if CustomizeMap[key] != nil { + return errors.New(key + "已注册,无法重复注册") + } else { + CustomizeMap[key] = rule + return nil + } +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: NotEmpty +//@description: 非空 不能为其对应类型的0值 +//@return: string + +func NotEmpty() string { + return "notEmpty" +} + +// @author: [zooqkl](https://github.com/zooqkl) +// @function: RegexpMatch +// @description: 正则校验 校验输入项是否满足正则表达式 +// @param: rule string +// @return: string + +func RegexpMatch(rule string) string { + return "regexp=" + rule +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: Lt +//@description: 小于入参(<) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较 +//@param: mark string +//@return: string + +func Lt(mark string) string { + return "lt=" + mark +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: Le +//@description: 小于等于入参(<=) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较 +//@param: mark string +//@return: string + +func Le(mark string) string { + return "le=" + mark +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: Eq +//@description: 等于入参(==) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较 +//@param: mark string +//@return: string + +func Eq(mark string) string { + return "eq=" + mark +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: Ne +//@description: 不等于入参(!=) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较 +//@param: mark string +//@return: string + +func Ne(mark string) string { + return "ne=" + mark +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: Ge +//@description: 大于等于入参(>=) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较 +//@param: mark string +//@return: string + +func Ge(mark string) string { + return "ge=" + mark +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: Gt +//@description: 大于入参(>) 如果为string array Slice则为长度比较 如果是 int uint float 则为数值比较 +//@param: mark string +//@return: string + +func Gt(mark string) string { + return "gt=" + mark +} + +// +//@author: [piexlmax](https://github.com/piexlmax) +//@function: Verify +//@description: 校验方法 +//@param: st interface{}, roleMap Rules(入参实例,规则map) +//@return: err error + +func Verify(st interface{}, roleMap Rules) (err error) { + compareMap := map[string]bool{ + "lt": true, + "le": true, + "eq": true, + "ne": true, + "ge": true, + "gt": true, + } + + typ := reflect.TypeOf(st) + val := reflect.ValueOf(st) // 获取reflect.Type类型 + + kd := val.Kind() // 获取到st对应的类别 + if kd != reflect.Struct { + return errors.New("expect struct") + } + num := val.NumField() + // 遍历结构体的所有字段 + for i := 0; i < num; i++ { + tagVal := typ.Field(i) + val := val.Field(i) + if tagVal.Type.Kind() == reflect.Struct { + if err = Verify(val.Interface(), roleMap); err != nil { + return err + } + } + if len(roleMap[tagVal.Name]) > 0 { + for _, v := range roleMap[tagVal.Name] { + switch { + case v == "notEmpty": + if isBlank(val) { + return errors.New(tagVal.Name + "值不能为空") + } + case strings.Split(v, "=")[0] == "regexp": + if !regexpMatch(strings.Split(v, "=")[1], val.String()) { + return errors.New(tagVal.Name + "格式校验不通过") + } + case compareMap[strings.Split(v, "=")[0]]: + if !compareVerify(val, v) { + return errors.New(tagVal.Name + "长度或值不在合法范围," + v) + } + } + } + } + } + return nil +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: compareVerify +//@description: 长度和数字的校验方法 根据类型自动校验 +//@param: value reflect.Value, VerifyStr string +//@return: bool + +func compareVerify(value reflect.Value, VerifyStr string) bool { + switch value.Kind() { + case reflect.String: + return compare(len([]rune(value.String())), VerifyStr) + case reflect.Slice, reflect.Array: + return compare(value.Len(), VerifyStr) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return compare(value.Uint(), VerifyStr) + case reflect.Float32, reflect.Float64: + return compare(value.Float(), VerifyStr) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return compare(value.Int(), VerifyStr) + default: + return false + } +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: isBlank +//@description: 非空校验 +//@param: value reflect.Value +//@return: bool + +func isBlank(value reflect.Value) bool { + switch value.Kind() { + case reflect.String, reflect.Slice: + return value.Len() == 0 + case reflect.Bool: + return !value.Bool() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return value.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return value.Uint() == 0 + case reflect.Float32, reflect.Float64: + return value.Float() == 0 + case reflect.Interface, reflect.Ptr: + return value.IsNil() + } + return reflect.DeepEqual(value.Interface(), reflect.Zero(value.Type()).Interface()) +} + +//@author: [piexlmax](https://github.com/piexlmax) +//@function: compare +//@description: 比较函数 +//@param: value interface{}, VerifyStr string +//@return: bool + +func compare(value interface{}, VerifyStr string) bool { + VerifyStrArr := strings.Split(VerifyStr, "=") + val := reflect.ValueOf(value) + switch val.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + VInt, VErr := strconv.ParseInt(VerifyStrArr[1], 10, 64) + if VErr != nil { + return false + } + switch { + case VerifyStrArr[0] == "lt": + return val.Int() < VInt + case VerifyStrArr[0] == "le": + return val.Int() <= VInt + case VerifyStrArr[0] == "eq": + return val.Int() == VInt + case VerifyStrArr[0] == "ne": + return val.Int() != VInt + case VerifyStrArr[0] == "ge": + return val.Int() >= VInt + case VerifyStrArr[0] == "gt": + return val.Int() > VInt + default: + return false + } + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + VInt, VErr := strconv.Atoi(VerifyStrArr[1]) + if VErr != nil { + return false + } + switch { + case VerifyStrArr[0] == "lt": + return val.Uint() < uint64(VInt) + case VerifyStrArr[0] == "le": + return val.Uint() <= uint64(VInt) + case VerifyStrArr[0] == "eq": + return val.Uint() == uint64(VInt) + case VerifyStrArr[0] == "ne": + return val.Uint() != uint64(VInt) + case VerifyStrArr[0] == "ge": + return val.Uint() >= uint64(VInt) + case VerifyStrArr[0] == "gt": + return val.Uint() > uint64(VInt) + default: + return false + } + case reflect.Float32, reflect.Float64: + VFloat, VErr := strconv.ParseFloat(VerifyStrArr[1], 64) + if VErr != nil { + return false + } + switch { + case VerifyStrArr[0] == "lt": + return val.Float() < VFloat + case VerifyStrArr[0] == "le": + return val.Float() <= VFloat + case VerifyStrArr[0] == "eq": + return val.Float() == VFloat + case VerifyStrArr[0] == "ne": + return val.Float() != VFloat + case VerifyStrArr[0] == "ge": + return val.Float() >= VFloat + case VerifyStrArr[0] == "gt": + return val.Float() > VFloat + default: + return false + } + default: + return false + } +} + +func regexpMatch(rule, matchStr string) bool { + return regexp.MustCompile(rule).MatchString(matchStr) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/validator_test.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/validator_test.go new file mode 100644 index 000000000..bdacb8b35 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/validator_test.go @@ -0,0 +1,37 @@ +package utils + +import ( + "github.com/flipped-aurora/gin-vue-admin/server/model/common/request" + "testing" +) + +type PageInfoTest struct { + PageInfo request.PageInfo + Name string +} + +func TestVerify(t *testing.T) { + PageInfoVerify := Rules{"Page": {NotEmpty()}, "PageSize": {NotEmpty()}, "Name": {NotEmpty()}} + var testInfo PageInfoTest + testInfo.Name = "test" + testInfo.PageInfo.Page = 0 + testInfo.PageInfo.PageSize = 0 + err := Verify(testInfo, PageInfoVerify) + if err == nil { + t.Error("校验失败,未能捕捉0值") + } + testInfo.Name = "" + testInfo.PageInfo.Page = 1 + testInfo.PageInfo.PageSize = 10 + err = Verify(testInfo, PageInfoVerify) + if err == nil { + t.Error("校验失败,未能正常检测name为空") + } + testInfo.Name = "test" + testInfo.PageInfo.Page = 1 + testInfo.PageInfo.PageSize = 10 + err = Verify(testInfo, PageInfoVerify) + if err != nil { + t.Error("校验失败,未能正常通过检测") + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/verify.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/verify.go new file mode 100644 index 000000000..43a86725f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/verify.go @@ -0,0 +1,19 @@ +package utils + +var ( + IdVerify = Rules{"ID": []string{NotEmpty()}} + ApiVerify = Rules{"Path": {NotEmpty()}, "Description": {NotEmpty()}, "ApiGroup": {NotEmpty()}, "Method": {NotEmpty()}} + MenuVerify = Rules{"Path": {NotEmpty()}, "Name": {NotEmpty()}, "Component": {NotEmpty()}, "Sort": {Ge("0")}} + MenuMetaVerify = Rules{"Title": {NotEmpty()}} + LoginVerify = Rules{"CaptchaId": {NotEmpty()}, "Username": {NotEmpty()}, "Password": {NotEmpty()}} + RegisterVerify = Rules{"Username": {NotEmpty()}, "NickName": {NotEmpty()}, "Password": {NotEmpty()}, "AuthorityId": {NotEmpty()}} + PageInfoVerify = Rules{"Page": {NotEmpty()}, "PageSize": {NotEmpty()}} + CustomerVerify = Rules{"CustomerName": {NotEmpty()}, "CustomerPhoneData": {NotEmpty()}} + AutoCodeVerify = Rules{"Abbreviation": {NotEmpty()}, "StructName": {NotEmpty()}, "PackageName": {NotEmpty()}} + AutoPackageVerify = Rules{"PackageName": {NotEmpty()}} + AuthorityVerify = Rules{"AuthorityId": {NotEmpty()}, "AuthorityName": {NotEmpty()}} + AuthorityIdVerify = Rules{"AuthorityId": {NotEmpty()}} + OldAuthorityVerify = Rules{"OldAuthorityId": {NotEmpty()}} + ChangePasswordVerify = Rules{"Password": {NotEmpty()}, "NewPassword": {NotEmpty()}} + SetUserAuthorityVerify = Rules{"AuthorityId": {NotEmpty()}} +) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/zip.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/zip.go new file mode 100644 index 000000000..bee0a0bf4 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/server/utils/zip.go @@ -0,0 +1,53 @@ +package utils + +import ( + "archive/zip" + "fmt" + "io" + "os" + "path/filepath" + "strings" +) + +// 解压 +func Unzip(zipFile string, destDir string) ([]string, error) { + zipReader, err := zip.OpenReader(zipFile) + var paths []string + if err != nil { + return []string{}, err + } + defer zipReader.Close() + + for _, f := range zipReader.File { + if strings.Index(f.Name, "..") > -1 { + return []string{}, fmt.Errorf("%s 文件名不合法", f.Name) + } + fpath := filepath.Join(destDir, f.Name) + paths = append(paths, fpath) + if f.FileInfo().IsDir() { + os.MkdirAll(fpath, os.ModePerm) + } else { + if err = os.MkdirAll(filepath.Dir(fpath), os.ModePerm); err != nil { + return []string{}, err + } + + inFile, err := f.Open() + if err != nil { + return []string{}, err + } + defer inFile.Close() + + outFile, err := os.OpenFile(fpath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode()) + if err != nil { + return []string{}, err + } + defer outFile.Close() + + _, err = io.Copy(outFile, inFile) + if err != nil { + return []string{}, err + } + } + } + return paths, nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/supervisor/LLM.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/supervisor/LLM.go new file mode 100644 index 000000000..0defdb0f2 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/supervisor/LLM.go @@ -0,0 +1,5 @@ +package supervisor + +func PromptLLM(prompt string) (string, error) { + return "", nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/supervisor/jury.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/supervisor/jury.go new file mode 100644 index 000000000..bc111dde2 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/supervisor/jury.go @@ -0,0 +1,513 @@ +package supervisor + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "hufu/config" + "hufu/contract/Decision" + "hufu/contract/KeyShare" + "hufu/utils" + "io" + "log" + "math/big" + "net/http" + "strconv" + "strings" + + "github.com/FISCO-BCOS/go-sdk/v3/client" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" +) + +type Jury struct { + Nodes []*Node + KeyShareContract string + DecisionContract string +} + +type Node struct { + NodeID string + PublicKey string + PrivateKey string +} + +var JuryInstance *Jury + +func InitJury() { + // keys + juryPrivateKeys, juryPublicKeys := config.ReadJuryKeys() + nodes := make([]*Node, 5) + for i := 0; i < 5; i++ { + nodes[i] = &Node{ + NodeID: fmt.Sprintf("node%d", i), + PublicKey: juryPublicKeys[i], + PrivateKey: juryPrivateKeys[i], + } + } + JuryInstance = &Jury{ + Nodes: nodes, + KeyShareContract: config.GlobalConfig.Contract.KeyShareContract, + DecisionContract: config.GlobalConfig.Contract.DecisionContract, + } + log.Println(JuryInstance.KeyShareContract) + log.Println(JuryInstance.DecisionContract) +} + +// 处理监管机构的请求 +func (j *Jury) HandleRegulatoryRequest(evidence string) (map[string]bool, error) { + // 存储同意提供密钥的节点的密钥碎片 + res := make(map[string]bool) + // 每个节点独立判断证据是否合法 + for _, node := range j.Nodes { + approved, err := node.EvaluateEvidence(evidence) + res[node.NodeID] = approved + if err != nil { + log.Printf("Node evaluation failed: %v", err) + continue + } + + if approved { + // 记录操作到区块链 + if err := node.RecordDecision(evidence); err != nil { + log.Printf("Failed to record decision: %v", err) + continue + } + } + } + return res, nil +} + +// 节点评估证据 +func (n *Node) EvaluateEvidence(evidence string) (bool, error) { + config := config.ReadConfig(n.PrivateKey) + client, err := client.DialContext(context.Background(), config) + if err != nil { + return false, err + } + + contractAddr := common.HexToAddress(JuryInstance.DecisionContract) + instance, err := Decision.NewDecisionStorage(contractAddr, client) + if err != nil { + return false, err + } + + session := &Decision.DecisionStorageSession{ + Contract: instance, + CallOpts: *client.GetCallOpts(), + TransactOpts: *client.GetTransactOpts(), + } + + // 调用智能合约验证证据 + approved, err := session.VerifyEvidence(evidence) + if err != nil { + return false, err + } + + return approved, nil +} + +// 记录决定到区块链 +func (n *Node) RecordDecision(evidence string) error { + config := config.ReadConfig(n.PrivateKey) + client, err := client.DialContext(context.Background(), config) + if err != nil { + return err + } + + contractAddr := common.HexToAddress(JuryInstance.DecisionContract) + instance, err := Decision.NewDecisionStorage(contractAddr, client) + if err != nil { + return err + } + + session := &Decision.DecisionStorageSession{ + Contract: instance, + CallOpts: *client.GetCallOpts(), + TransactOpts: *client.GetTransactOpts(), + } + + _, _, _, err = session.RecordDecision(evidence, n.NodeID, true) + if err != nil { + return err + } + + // log.Println(receipt) + + return nil +} + +// 存储加密后的密钥碎片 +func (n *Node) StoreEncryptedKeyShare(id, name, encryptedPart string) error { + // 初始化客户端连接 + config := config.ReadConfig(n.PrivateKey) + client, err := client.DialContext(context.Background(), config) + if err != nil { + return fmt.Errorf("failed to connect to client: %v", err) + } + + // 获取KeyShare合约实例 + contractAddr := common.HexToAddress(JuryInstance.KeyShareContract) + instance, err := KeyShare.NewKeyShare(contractAddr, client) + if err != nil { + return fmt.Errorf("failed to instantiate contract: %v", err) + } + + // 创建合约会话 + session := &KeyShare.KeyShareSession{ + Contract: instance, + CallOpts: *client.GetCallOpts(), + TransactOpts: *client.GetTransactOpts(), + } + + // 调用合约存储密钥碎片 + _, _, _, err = session.Insert(id, name, encryptedPart) + return err +} + +// 获取密钥碎片 +func (n *Node) GetDecryptedKeyShare(id string) (string, error) { + config := config.ReadConfig(n.PrivateKey) + client, err := client.DialContext(context.Background(), config) + if err != nil { + return "", err + } + + contractAddr := common.HexToAddress(JuryInstance.KeyShareContract) + instance, err := KeyShare.NewKeyShare(contractAddr, client) + if err != nil { + return "", err + } + + session := &KeyShare.KeyShareSession{ + Contract: instance, + CallOpts: *client.GetCallOpts(), + } + + _, encryptedPart, err := session.Select(id) + if err != nil { + return "", err + } + + decryptedPart, err := utils.DecryptData(encryptedPart, n.PrivateKey) + if err != nil { + return "", err + } + + return decryptedPart, nil +} + +// 获取决策 +func GetDecision() ([]string, error) { + // 获取决策合约实例 + config := config.ReadConfig(JuryInstance.Nodes[0].PrivateKey) + client, err := client.DialContext(context.Background(), config) + if err != nil { + return nil, err + } + + contractAddr := common.HexToAddress(JuryInstance.DecisionContract) + instance, err := Decision.NewDecisionStorage(contractAddr, client) + if err != nil { + return nil, err + } + + session := &Decision.DecisionStorageSession{ + Contract: instance, + CallOpts: *client.GetCallOpts(), + TransactOpts: *client.GetTransactOpts(), + } + + // 调用合约获取决策 + count, err := session.GetDecisionCount() + if err != nil { + return nil, err + } + res := make([]string, count.Int64()) + for i := int64(0); i < count.Int64(); i++ { + decision, err := session.GetDecision(big.NewInt(i)) + if err != nil { + return nil, err + } + res[i] = decision.Evidence + "," + decision.NodeID + "," + decision.Timestamp.String() + "," + strconv.FormatBool(decision.Approved) + } + return res, nil +} + +// 添加这些结构体用于解析返回数据 +type EventResponse struct { + Code int `json:"code"` + Message string `json:"message"` + Data []EventData `json:"data"` + TotalCount int `json:"totalCount"` +} + +type EventData struct { + Log EventLog `json:"log"` +} + +type EventLog struct { + LogIndex int `json:"logIndex"` + TransactionIndex int `json:"transactionIndex"` + TransactionHash string `json:"transactionHash"` + BlockNumber int `json:"blockNumber"` + Address string `json:"address"` + Data string `json:"data"` + Topics []string `json:"topics"` +} + +func GetEvent() (EventResponse, error) { + url := "http://localhost:5000/mgr/WeBASE-Node-Manager/event/eventLogs/list" + + var requestBody = `{ + "groupId": "group0", + "contractAbi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "evidence", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "nodeID", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "DecisionRecorded", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "decisions", + "outputs": [ + { + "internalType": "string", + "name": "evidence", + "type": "string" + }, + { + "internalType": "string", + "name": "nodeID", + "type": "string" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getDecision", + "outputs": [ + { + "internalType": "string", + "name": "evidence", + "type": "string" + }, + { + "internalType": "string", + "name": "nodeID", + "type": "string" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDecisionCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "evidence", + "type": "string" + }, + { + "internalType": "string", + "name": "nodeID", + "type": "string" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "recordDecision", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "evidence", + "type": "string" + } + ], + "name": "verifyEvidence", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "contractAddress": "0x4721d1a77e0e76851d460073e64ea06d9c104194", + "fromBlock": 1, + "toBlock": -1, + "topics": { + "eventName": "DecisionRecorded(string,string,uint256,bool)" + } + }` + + var jsonStr = []byte(requestBody) + // 创建请求 + req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr)) + if err != nil { + fmt.Println("Error creating request:", err) + return EventResponse{}, err + } + + // 设置请求头 + req.Header.Set("Content-Type", "application/json") + req.Header.Set("Authorizationtoken", config.GlobalConfig.Fisco.Authorizationtoken) + req.Header.Set("referer", "http://45.8.113.140:5000/") + req.Header.Set("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36") + + // 发送请求 + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + fmt.Println("Error sending request:", err) + return EventResponse{}, err + } + defer resp.Body.Close() + + // 输出响应 + fmt.Println("Response status:", resp.Status) + + body, err := io.ReadAll(resp.Body) + if err != nil { + fmt.Println("Error reading response body:", err) + return EventResponse{}, err + } + + var response EventResponse + if err := json.Unmarshal(body, &response); err != nil { + fmt.Printf("Error parsing response: %v\n", err) + return EventResponse{}, err + } + + for i := 0; i < response.TotalCount; i++ { + data, _ := ParaseData(response.Data[i].Log.Data) + response.Data[i].Log.Data = data + } + + if response.Code != 0 { + fmt.Printf("API returned error: %s\n", response.Message) + return EventResponse{}, fmt.Errorf(response.Message) + } + + return response, nil +} + +func ParaseData(data string) (string, error) { + const abiJSON = `[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"evidence","type":"string"},{"indexed":false,"internalType":"string","name":"nodeID","type":"string"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"DecisionRecorded","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"decisions","outputs":[{"internalType":"string","name":"evidence","type":"string"},{"internalType":"string","name":"nodeID","type":"string"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getDecision","outputs":[{"internalType":"string","name":"evidence","type":"string"},{"internalType":"string","name":"nodeID","type":"string"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDecisionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"evidence","type":"string"},{"internalType":"string","name":"nodeID","type":"string"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"recordDecision","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"evidence","type":"string"}],"name":"verifyEvidence","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]` + + parsedABI, err := abi.JSON(strings.NewReader(abiJSON)) + if err != nil { + log.Fatalf("Failed to parse ABI: %v", err) + } + + dataBytes, err := hexutil.Decode(data) + if err != nil { + log.Fatalf("Failed to decode data: %v", err) + } + + // 解码数据 + var Evidence string + var NodeID string + var Timestamp *big.Int + var Approved bool + err = parsedABI.UnpackIntoInterface(&[]interface{}{&Evidence, &NodeID, &Timestamp, &Approved}, "DecisionRecorded", dataBytes) + if err != nil { + log.Fatalf("Failed to unpack data: %v", err) + } + + res := []string{Evidence, NodeID, Timestamp.String(), strconv.FormatBool(Approved)} + + return strings.Join(res, ","), nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/supervisor/palyload.json b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/supervisor/palyload.json new file mode 100644 index 000000000..a7877f376 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/supervisor/palyload.json @@ -0,0 +1,171 @@ +{ + "groupId": "group0", + "contractAbi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "evidence", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "nodeID", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "DecisionRecorded", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "decisions", + "outputs": [ + { + "internalType": "string", + "name": "evidence", + "type": "string" + }, + { + "internalType": "string", + "name": "nodeID", + "type": "string" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getDecision", + "outputs": [ + { + "internalType": "string", + "name": "evidence", + "type": "string" + }, + { + "internalType": "string", + "name": "nodeID", + "type": "string" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDecisionCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "evidence", + "type": "string" + }, + { + "internalType": "string", + "name": "nodeID", + "type": "string" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "recordDecision", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "evidence", + "type": "string" + } + ], + "name": "verifyEvidence", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "contractAddress": "0x33e56a083e135936c1144960a708c43a661706c0", + "fromBlock": 1, + "toBlock": -1, + "topics": { + "eventName": "DecisionRecorded(string,string,uint256,bool)" + } + } \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/utils/crypto.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/utils/crypto.go new file mode 100644 index 000000000..01dd6beaf --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/utils/crypto.go @@ -0,0 +1,97 @@ +package utils + +import ( + "crypto/rand" + "crypto/rsa" + "encoding/hex" + "math/big" + "strings" +) + +// RSADecryptWithHexKey 使用十六进制私钥进行RSA解密 +func RSADecryptWithHexKey(encryptedData string, hexPrivateKey string, hexPublicKey string) (string, error) { + // 解码 + ciphertext, err := hex.DecodeString(encryptedData) + if err != nil { + return "", err + } + + // 转换十六进制私钥 + privateKey, err := hexToPrivateKey(hexPrivateKey, hexPublicKey) + if err != nil { + return "", err + } + + // 解密 + plaintext, err := rsa.DecryptPKCS1v15(rand.Reader, privateKey, ciphertext) + if err != nil { + return "", err + } + + return string(plaintext), nil +} + +// RSAEncryptWithHexKey 使用十六进制公钥进行RSA加密 +func RSAEncryptWithHexKey(data string, hexPublicKey string) (string, error) { + // 转换十六进制公钥 + publicKey, err := hexToPublicKey(hexPublicKey) + if err != nil { + return "", err + } + + // 加密 + ciphertext, err := rsa.EncryptPKCS1v15(rand.Reader, publicKey, []byte(data)) + if err != nil { + return "", err + } + + // 返回十六进制字符串 + return hex.EncodeToString(ciphertext), nil +} + +// hexToPublicKey 将十六进制字符串转换为RSA公钥 +func hexToPublicKey(hexStr string) (*rsa.PublicKey, error) { + hexStr = strings.ReplaceAll(hexStr, " ", "") + + // 解码十六进制字符串 + modBytes, err := hex.DecodeString(hexStr) + if err != nil { + return nil, err + } + + // 创建公钥 + pub := &rsa.PublicKey{ + N: new(big.Int).SetBytes(modBytes), + E: 65537, // 通常使用65537作为公钥指数 + } + + return pub, nil +} + +// hexToPrivateKey 将十六进制字符串转换为RSA私钥 +func hexToPrivateKey(hexPriKey string, hexPubKey string) (*rsa.PrivateKey, error) { + hexPriKey = strings.ReplaceAll(hexPriKey, " ", "") + hexPubKey = strings.ReplaceAll(hexPubKey, " ", "") + + // 解码十六进制字符串 + privBytes, err := hex.DecodeString(hexPriKey) + if err != nil { + return nil, err + } + + pubBytes, err := hex.DecodeString(hexPubKey) + if err != nil { + return nil, err + } + + // 创建私钥结构 + priv := &rsa.PrivateKey{ + PublicKey: rsa.PublicKey{ + N: new(big.Int).SetBytes(pubBytes), + E: 65537, + }, + D: new(big.Int).SetBytes(privBytes), + } + + return priv, nil +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/utils/utils.go b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/utils/utils.go new file mode 100644 index 000000000..c74ca546f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/utils/utils.go @@ -0,0 +1,297 @@ +package utils + +import ( + "bytes" + "crypto/ecdsa" + "crypto/rand" + "crypto/sha256" + "encoding/base64" + "encoding/hex" + "encoding/json" + "fmt" + "io" + "log" + "math/big" + "net/http" + "strconv" + "time" + + "github.com/SSSaaS/sssa-golang" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/crypto/ecies" + "golang.org/x/net/proxy" +) + +const ( + MINIMUM = 3 // 最小份额数 + SHARES5 = 5 // 总份额数 +) + +const SupervisorPrivateKey = "43878f814c6753e43c1bd91db187e9399551e50876b7d24f7aba2cc467f88458" +const SupervisorPublicKey = "066583fe9369c70280b2af181e9b6d87eb63848f7af4ac1444dcc774e11805630dfc07918bcd80803a38f77f4b6f415e1d4e2596a79ecacc83f9a0ad95645326" + +const ProxyPublicKey = "066583fe9369c70280b2af181e9b6d87eb63848f7af4ac1444dcc774e11805630dfc07918bcd80803a38f77f4b6f415e1d4e2596a79ecacc83f9a0ad95645326" +const ProxyPrivateKey = "43878f814c6753e43c1bd91db187e9399551e50876b7d24f7aba2cc467f88458" + +// encryptData encrypts data using ECIES with the provided ECDSA public key. +func EncryptData(key string, data string) (string, error) { + // 将公钥字符串解码为字节数组 + publicKeyBytes, err := hex.DecodeString(key) + if err != nil { + return "", fmt.Errorf("failed to decode public key: %v", err) + } + + // 直接使用解码后的公钥字节 + // 加上0x04前缀,表示未压缩的公钥 + publicKeyBytes = append([]byte{0x04}, publicKeyBytes...) + publicKey, err := crypto.UnmarshalPubkey(publicKeyBytes) + if err != nil { + return "", fmt.Errorf("failed to unmarshal public key: %v", err) + } + + // Convert to ECIES public key + eciesPubKey := ecies.ImportECDSAPublic(publicKey) + + // Encrypt the data + ciphertext, err := ecies.Encrypt(rand.Reader, eciesPubKey, []byte(data), nil, nil) + if err != nil { + return "", fmt.Errorf("failed to encrypt data: %v", err) + } + + // Encode the ciphertext to base64 + return base64.StdEncoding.EncodeToString(ciphertext), nil +} + +// DecryptData decrypts data using ECIES with the provided ECDSA private key. +func DecryptData(rawData string, pk string) (string, error) { + // Decode the base64 encoded ciphertext + ciphertext, err := base64.StdEncoding.DecodeString(rawData) + if err != nil { + return "", fmt.Errorf("failed to decode ciphertext: %v", err) + } + + // Decode the private key from hex + privateKeyBytes, err := hex.DecodeString(pk) + if err != nil { + return "", fmt.Errorf("failed to decode private key: %v", err) + } + + // Parse the private key + privateKey, err := crypto.ToECDSA(privateKeyBytes) + if err != nil { + return "", fmt.Errorf("failed to parse private key: %v", err) + } + + // Convert to ECIES private key + eciesPrivKey := ecies.ImportECDSA(privateKey) + + // Decrypt the data + plaintext, err := eciesPrivKey.Decrypt(ciphertext, nil, nil) + if err != nil { + return "", fmt.Errorf("failed to decrypt data: %v", err) + } + + return string(plaintext), nil +} + +func GenerateHash(data string) string { + hash := sha256.New() + hash.Write([]byte(data)) + return hex.EncodeToString(hash.Sum(nil)) +} + +// generateKeys 生成随机密钥对 +func GenerateKeys() (privateKeyString, publicKeyString, address string) { + privateKey, err := crypto.GenerateKey() + if err != nil { + log.Fatal(err) + } + + privateKeyBytes := crypto.FromECDSA(privateKey) + + publicKey := privateKey.Public() + publicKeyECDSA, ok := publicKey.(*ecdsa.PublicKey) + if !ok { + log.Fatal("cannot assert type: publicKey is not of type *ecdsa.PublicKey") + } + + publicKeyBytes := crypto.FromECDSAPub(publicKeyECDSA) + + address = crypto.PubkeyToAddress(*publicKeyECDSA).Hex() + + return hexutil.Encode(privateKeyBytes)[2:], hexutil.Encode(publicKeyBytes)[4:], address +} + +func GenerateRSAKey(walletID int) (privateKey, publicKey string) { + // 创建 SOCKS5 代理 + dialer, err := proxy.SOCKS5("tcp", "127.0.0.1:1080", nil, proxy.Direct) + if err != nil { + log.Println(err) + return "", "" + } + + // 创建带有代理的 HTTP 客户端 + httpClient := &http.Client{ + Transport: &http.Transport{ + Dial: dialer.Dial, + }, + } + + // 准备请求 + jsonBody, _ := json.Marshal(map[string]int{"wallet_id": walletID}) + req, err := http.NewRequest("POST", "http://10.77.110.184:8082/api/create_wallet", bytes.NewBuffer(jsonBody)) + if err != nil { + log.Println("创建请求失败: ", err) + return "", "" + } + + // 设置 Content-Type + req.Header.Set("Content-Type", "application/json") + + // 发送请求 + resp, err := httpClient.Do(req) + if err != nil { + log.Println("发送请求失败: ", err) + return "", "" + } + defer resp.Body.Close() + + // 读取响应 + respBody, err := io.ReadAll(resp.Body) + if err != nil { + log.Println("读取响应失败: ", err) + return "", "" + } + + type KeyResponse struct { + Message string `json:"message"` + PublicKey string `json:"public_key"` + PrivateKey string `json:"private_key"` + } + + var keyResp KeyResponse + if err := json.Unmarshal(respBody, &keyResp); err != nil { + log.Println("解析响应失败: ", err) + return "", "" + } + log.Println("创建钱包响应: ", keyResp) + + if keyResp.Message != "wallet created successfully" { + log.Println("创建钱包失败: ", keyResp.Message) + return "", "" + } + + return keyResp.PrivateKey, keyResp.PublicKey +} + +// SharePrivateKey Shamir's secret sharing https://en.wikipedia.org/wiki/Shamir%27s_secret_sharing +func SharePrivateKey(PrivateKey string) ([]string, error) { + result, err := sssa.Create(MINIMUM, SHARES5, PrivateKey) + return result, err +} + +func SignData(privateKey string, data string) (string, error) { + // Decode the private key from hex + privateKeyBytes, err := hex.DecodeString(privateKey) + if err != nil { + return "", fmt.Errorf("failed to decode private key: %v", err) + } + + // Parse the private key + ecPrivateKey, err := crypto.ToECDSA(privateKeyBytes) + if err != nil { + return "", fmt.Errorf("failed to parse private key: %v", err) + } + + // Generate the hash of the data + hash := sha256.New() + hash.Write([]byte(data)) + hashedData := hash.Sum(nil) + + // Sign the hashed data + r, s, err := ecdsa.Sign(rand.Reader, ecPrivateKey, hashedData) + if err != nil { + return "", fmt.Errorf("failed to sign data: %v", err) + } + + // Combine r and s into a single byte slice + rBytes := r.Bytes() + sBytes := s.Bytes() + signature := append(rBytes, sBytes...) + + // Encode the signature to hex + return hex.EncodeToString(signature), nil +} + +// VerifySignature verifies the ECDSA signature for the given data. +func VerifySignature(publicKey string, data string, signature string) (bool, error) { + // Decode the public key from hex + publicKeyBytes, err := hex.DecodeString(publicKey) + if err != nil { + return false, fmt.Errorf("failed to decode public key: %v", err) + } + + // Create an ECDSA public key from the bytes + ecPublicKey, err := crypto.UnmarshalPubkey(publicKeyBytes) + if err != nil { + return false, fmt.Errorf("failed to unmarshal public key: %v", err) + } + + // Generate the hash of the data + hash := sha256.New() + hash.Write([]byte(data)) + hashedData := hash.Sum(nil) + + // Decode the signature from hex + sigBytes, err := hex.DecodeString(signature) + if err != nil { + return false, fmt.Errorf("failed to decode signature: %v", err) + } + + // Split the signature into r and s + r := new(big.Int).SetBytes(sigBytes[:len(sigBytes)/2]) + s := new(big.Int).SetBytes(sigBytes[len(sigBytes)/2:]) + + // Verify the signature + valid := ecdsa.Verify(ecPublicKey, hashedData, r, s) + return valid, nil +} + +func GenerateRandomNumber(length int) string { + // 创建一个包含所有数字的字符串 + const numbers = "0123456789" + + // 使用crypto/rand生成安全的随机数 + result := make([]byte, length) + for i := 0; i < length; i++ { + // 生成随机索引 + randomIndex, err := rand.Int(rand.Reader, big.NewInt(int64(len(numbers)))) + if err != nil { + // 如果出错,使用time作为后备方案 + randomIndex = big.NewInt(int64(time.Now().UnixNano() % int64(len(numbers)))) + } + result[i] = numbers[randomIndex.Int64()] + } + return string(result) +} + +// FormatFloat 格式化浮点数到指定小数位数 +func FormatFloat(num float64, decimal int) float64 { + // 将数字转为字符串,保留指定小数位 + format := fmt.Sprintf("%%.%df", decimal) + str := fmt.Sprintf(format, num) + + // 将字符串转回float64 + result, _ := strconv.ParseFloat(str, 64) + return result +} + +// StringToUint 将字符串转换为uint +func StringToUint(s string) uint { + i, err := strconv.ParseUint(s, 10, 32) + if err != nil { + return 0 + } + return uint(i) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.docker-compose/nginx/conf.d/my.conf b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.docker-compose/nginx/conf.d/my.conf new file mode 100644 index 000000000..9a1685dee --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.docker-compose/nginx/conf.d/my.conf @@ -0,0 +1,26 @@ +server { + listen 8080; + server_name localhost; + + #charset koi8-r; + #access_log logs/host.access.log main; + + location / { + root /usr/share/nginx/html; + add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0'; + try_files $uri $uri/ /index.html; + } + + location /api { + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + rewrite ^/api/(.*)$ /$1 break; #重写 + proxy_pass http://177.7.0.12:8888; # 设置代理服务器的协议和地址 + } + + location /api/swagger/index.html { + proxy_pass http://127.0.0.1:8888/swagger/index.html; + } + } \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.docker-compose/nginx/conf.d/nginx.conf b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.docker-compose/nginx/conf.d/nginx.conf new file mode 100644 index 000000000..29f68b81f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.docker-compose/nginx/conf.d/nginx.conf @@ -0,0 +1,32 @@ +server { + listen 80; + server_name localhost; + + #charset koi8-r; + #access_log logs/host.access.log main; + + location / { + root /usr/share/nginx/html/dist; + add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0'; + try_files $uri $uri/ /index.html; + } + + location /api { + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + rewrite ^/api/(.*)$ /$1 break; #重写 + proxy_pass http://127.0.0.1:8888; # 设置代理服务器的协议和地址 + } + location /form-generator { + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://127.0.0.1:8888; + } + location /api/swagger/index.html { + proxy_pass http://127.0.0.1:8888/swagger/index.html; + } + } \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.dockerignore b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.dockerignore new file mode 100644 index 000000000..40b878db5 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.dockerignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.env.development b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.env.development new file mode 100644 index 000000000..9634e65d6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.env.development @@ -0,0 +1,11 @@ +ENV = 'development' +VITE_CLI_PORT = 8080 +VITE_SERVER_PORT = 4000 +VITE_BASE_API = /api +VITE_FILE_API = /api +VITE_BASE_PATH = http://127.0.0.1 +VITE_POSITION = close +VITE_EDITOR = vscode +// VITE_EDITOR = webstorm 如果使用webstorm开发且要使用dom定位到代码行功能 请先自定添加 webstorm到环境变量 再将VITE_EDITOR值修改为webstorm +// 如果使用docker-compose开发模式,设置为下面的地址或本机主机IP +//VITE_BASE_PATH = http://177.7.0.12 diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.env.production b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.env.production new file mode 100644 index 000000000..9345df2d8 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.env.production @@ -0,0 +1,7 @@ +ENV = 'production' + +#下方为上线需要用到的程序代理前缀,一般用于nginx代理转发 +VITE_BASE_API = /api +VITE_FILE_API = /api +#下方修改为你的线上ip(如果需要在线使用表单构建工具时使用,其余情况无需使用以下环境变量) +VITE_BASE_PATH = https://demo.gin-vue-admin.com diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.eslintignore b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.eslintignore new file mode 100644 index 000000000..e6529fc09 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.eslintignore @@ -0,0 +1,4 @@ +build/*.js +src/assets +public +dist diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.eslintrc.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.eslintrc.js new file mode 100644 index 000000000..0821611b5 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.eslintrc.js @@ -0,0 +1,17 @@ +module.exports = { + root: true, + parserOptions: { + parser: '@babel/eslint-parser', + sourceType: 'module' + }, + env: { + browser: true, + node: true, + es6: true + }, + extends: ['plugin:vue/recommended', 'eslint:recommended'], + rules: { + "vue/max-attributes-per-line" : 0, + "vue/no-v-model-argument" : 0 + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.gitignore b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.gitignore new file mode 100644 index 000000000..1a4abd90a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/.gitignore @@ -0,0 +1,5 @@ +node_modules/* +package-lock.json +yarn.lock +bun.lockb +config.yaml \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/README.md b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/README.md new file mode 100644 index 000000000..f662a7613 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/README.md @@ -0,0 +1,26 @@ + +## Project setup +``` +npm install +``` + +### Compiles and hot-reloads for development +``` +npm run serve +``` + +### Compiles and minifies for production +``` +npm run build +``` + +### Run your tests +``` +npm run test +``` + +### Lints and fixes files +``` +npm run lint +``` + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/babel.config.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/babel.config.js new file mode 100644 index 000000000..88029f087 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/babel.config.js @@ -0,0 +1,8 @@ +module.exports = { + presets: [ + + ], + 'plugins': [ + + ] +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/index.html b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/index.html new file mode 100644 index 000000000..4dd71e5a3 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/index.html @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + +

    +
    + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/jsconfig.json b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/jsconfig.json new file mode 100644 index 000000000..deaa520aa --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/jsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "baseUrl": "./", + "paths": { + "@/*": ["src/*"] + } + }, + "exclude": ["node_modules", "dist"], + "include": ["src/**/*"] + } diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/limit.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/limit.js new file mode 100644 index 000000000..6ba9d4623 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/limit.js @@ -0,0 +1,37 @@ +// 运行项目前通过node执行此脚本 (此脚本与 node_modules 目录同级) +const fs = require('fs') +const path = require('path') +const wfPath = path.resolve(__dirname, './node_modules/.bin') + +fs.readdir(wfPath, (err, files) => { + if (err) { + console.log(err) + } else { + if (files.length !== 0) { + files.forEach((item) => { + if (item.split('.')[1] === 'cmd') { + replaceStr(`${wfPath}/${item}`, /"%_prog%"/, '%_prog%') + } + }) + } + } +}) + +// 参数:[文件路径、 需要修改的字符串、修改后的字符串] (替换对应文件内字符串的公共函数) +function replaceStr(filePath, sourceRegx, targetSrt) { + fs.readFile(filePath, (err, data) => { + if (err) { + console.log(err) + } else { + let str = data.toString() + str = str.replace(sourceRegx, targetSrt) + fs.writeFile(filePath, str, (err) => { + if (err) { + console.log(err) + } else { + console.log('\x1B[42m%s\x1B[0m', '文件修改成功') + } + }) + } + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/openDocument.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/openDocument.js new file mode 100644 index 000000000..ab52caf87 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/openDocument.js @@ -0,0 +1,15 @@ +var child_process = require('child_process') + +var url = '' +var cmd = '' +switch (process.platform) { + case 'win32': + cmd = 'start' + child_process.exec(cmd + ' ' + url) + break + + case 'darwin': + cmd = 'open' + child_process.exec(cmd + ' ' + url) + break +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/package.json b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/package.json new file mode 100644 index 000000000..06c927635 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/package.json @@ -0,0 +1,71 @@ +{ + "name": "gin-vue-admin", + "version": "2.7.6", + "private": true, + "scripts": { + "serve": "node openDocument.js && vite --host --mode development", + "build": "vite build --mode production", + "limit-build": "npm install increase-memory-limit-fixbug cross-env -g && npm run fix-memory-limit && node ./limit && npm run build", + "preview": "vite preview", + "fix-memory-limit": "cross-env LIMIT=4096 increase-memory-limit" + }, + "dependencies": { + "@element-plus/icons-vue": "^2.3.1", + "@form-create/designer": "^3.2.6", + "@form-create/element-ui": "^3.2.10", + "@vue-office/docx": "^1.6.2", + "@vue-office/excel": "^1.7.11", + "@vue-office/pdf": "^2.0.2", + "@vueuse/core": "^11.0.3", + "@wangeditor/editor": "^5.1.23", + "@wangeditor/editor-for-vue": "^5.1.12", + "axios": "^1.7.7", + "chokidar": "^4.0.0", + "core-js": "^3.38.1", + "default-passive-events": "^2.0.0", + "echarts": "5.5.1", + "element-plus": "^2.8.4", + "highlight.js": "^11.10.0", + "js-cookie": "^3.0.5", + "jsencrypt": "^3.3.2", + "marked": "14.1.1", + "marked-highlight": "^2.1.4", + "mitt": "^3.0.1", + "nprogress": "^0.2.0", + "path": "^0.12.7", + "pinia": "^2.2.2", + "qs": "^6.13.0", + "screenfull": "^6.0.2", + "sortablejs": "^1.15.3", + "spark-md5": "^3.0.2", + "tailwindcss": "^3.4.10", + "vform3-builds": "^3.0.10", + "vite-auto-import-svg": "^1.1.0", + "vue": "^3.5.7", + "vue-echarts": "^7.0.3", + "vue-router": "^4.4.3", + "vuedraggable": "^4.1.0" + }, + "devDependencies": { + "@babel/eslint-parser": "^7.25.1", + "@vitejs/plugin-legacy": "^5.4.2", + "@vitejs/plugin-vue": "^5.1.3", + "@vue/cli-plugin-babel": "~5.0.8", + "@vue/cli-plugin-eslint": "~5.0.8", + "@vue/cli-plugin-router": "~5.0.8", + "@vue/cli-plugin-vuex": "~5.0.8", + "@vue/cli-service": "~5.0.8", + "@vue/compiler-sfc": "^3.5.1", + "babel-plugin-import": "^1.13.8", + "chalk": "^5.3.0", + "dotenv": "^16.4.5", + "eslint": "^9.9.1", + "eslint-plugin-vue": "^9.28.0", + "sass": "^1.78.0", + "terser": "^5.31.6", + "vite": "^5.4.3", + "vite-plugin-banner": "^0.8.0", + "vite-plugin-importer": "^0.2.5", + "vite-plugin-vue-devtools": "^7.4.4" + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/postcss.config.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/postcss.config.js new file mode 100644 index 000000000..33ad091d2 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/public/favicon.ico b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e56d4e3619ecd576ed76da254b8437b379d31b7d GIT binary patch literal 5493 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 VbPdGosxx#JP*K!SsJ(3&@_)3(gC+m~ literal 0 HcmV?d00001 diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/public/favicon2.ico b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/public/favicon2.ico new file mode 100644 index 0000000000000000000000000000000000000000..ee520ce4b34e962134995910c368ccd4870a774e GIT binary patch literal 4286 zcmeHLTT`1w7>@tIEAJe8>5Su@(}|5T%xJ9_N(XEiTc@=$IMz;!*cPYLX~j}$iwJ|1 zKu9Tu01`mT`H(;YNgxnTDG)*kkYbcWDJ`cYUk+dLxVx5=LPudTtv4*Q`F8hx-{*Pv z+1>BkK_GaE{O#EzpuYme%L2hG0)gOlQpu1Yl2kg*3bAc2*e$yX>?(lOm1Q{BR>8U5 z;5awDUJsnkwU9E@=JWYjU0!+!KWQ&MSYUC~$wOiS0UmCb3y&5bU~P4UjB)V$eWd!~ zcDvwmISHW(48>*pJ*2ADvqf4tsO=T(UljE45n?XfsA^N)Y=;`c0 zOMMmkja|$>W*&mgI*N|AW)jl|jj9n1)#Xq%)u6Sx7K44=7#%i2qikStrv4s=HEo|< zr^n>@7<3vXbnPlM)>NSWjsh}iHkxWHS$uy_CzK?=X2MHzw2a(ETT2~&ljUQ4%*^sK z=rzbrPl2&Z3w?Vly7lcSDa?a7GZpfJ9Mn~np-Le~nOutUlH1tGPqk{U`yEDu7LUZuZE7&mpI7&PzubF-))w8`mqNQxuyQTO7AJ5b%3pk)D7p z>j0b+I@t1$LYMF=rtVxpkbm<1ScjW>%>Rp2gk!Nnq+Pi{__yY{?*Cs;%3;nw0n5+t z!M{2WZebGhJqqw1CuaU~psqoN#WhC=hVjcIAeM=6>ZB0YlfPr{zL3KX8&qSnG!8@8 zBH&+{3q@Nk!$>;)1&+kLgIl#{;aD;;8|BX<{CRQ_E?%PiN$hljp+Sv +
    + + + +
    + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/api.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/api.js new file mode 100644 index 000000000..17147b04e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/api.js @@ -0,0 +1,179 @@ +import service from '@/utils/request' + +// @Tags api +// @Summary 分页获取角色列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body modelInterface.PageInfo true "分页获取用户列表" +// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /api/getApiList [post] +// { +// page int +// pageSize int +// } +export const getApiList = (data) => { + return service({ + url: '/api/getApiList', + method: 'post', + data + }) +} + +// @Tags Api +// @Summary 创建基础api +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body api.CreateApiParams true "创建api" +// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /api/createApi [post] +export const createApi = (data) => { + return service({ + url: '/api/createApi', + method: 'post', + data + }) +} + +// @Tags menu +// @Summary 根据id获取菜单 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body api.GetById true "根据id获取菜单" +// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /menu/getApiById [post] +export const getApiById = (data) => { + return service({ + url: '/api/getApiById', + method: 'post', + data + }) +} + +// @Tags Api +// @Summary 更新api +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body api.CreateApiParams true "更新api" +// @Success 200 {string} json "{"success":true,"data":{},"msg":"更新成功"}" +// @Router /api/updateApi [post] +export const updateApi = (data) => { + return service({ + url: '/api/updateApi', + method: 'post', + data + }) +} + +// @Tags Api +// @Summary 更新api +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body api.CreateApiParams true "更新api" +// @Success 200 {string} json "{"success":true,"data":{},"msg":"更新成功"}" +// @Router /api/setAuthApi [post] +export const setAuthApi = (data) => { + return service({ + url: '/api/setAuthApi', + method: 'post', + data + }) +} + +// @Tags Api +// @Summary 获取所有的Api 不分页 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /api/getAllApis [post] +export const getAllApis = (data) => { + return service({ + url: '/api/getAllApis', + method: 'post', + data + }) +} + +// @Tags Api +// @Summary 删除指定api +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body dbModel.Api true "删除api" +// @Success 200 {string} json "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /api/deleteApi [post] +export const deleteApi = (data) => { + return service({ + url: '/api/deleteApi', + method: 'post', + data + }) +} + +// @Tags SysApi +// @Summary 删除选中Api +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.IdsReq true "ID" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /api/deleteApisByIds [delete] +export const deleteApisByIds = (data) => { + return service({ + url: '/api/deleteApisByIds', + method: 'delete', + data + }) +} + +// FreshCasbin +// @Tags SysApi +// @Summary 刷新casbin缓存 +// @accept application/json +// @Produce application/json +// @Success 200 {object} response.Response{msg=string} "刷新成功" +// @Router /api/freshCasbin [get] +export const freshCasbin = () => { + return service({ + url: '/api/freshCasbin', + method: 'get' + }) +} + + +export const syncApi = () => { + return service({ + url: '/api/syncApi', + method: 'get' + }) +} + + +export const getApiGroups = () => { + return service({ + url: '/api/getApiGroups', + method: 'get' + }) +} + +export const ignoreApi = (data) => { + return service({ + url: '/api/ignoreApi', + method: 'post', + data + }) +} + + +export const enterSyncApi = (data) => { + return service({ + url: '/api/enterSyncApi', + method: 'post', + data + }) +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/authority.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/authority.js new file mode 100644 index 000000000..61b22067a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/authority.js @@ -0,0 +1,85 @@ +import service from '@/utils/request' +// @Router /authority/getAuthorityList [post] +export const getAuthorityList = (data) => { + return service({ + url: '/authority/getAuthorityList', + method: 'post', + data + }) +} + +// @Summary 删除角色 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body {authorityId uint} true "删除角色" +// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /authority/deleteAuthority [post] +export const deleteAuthority = (data) => { + return service({ + url: '/authority/deleteAuthority', + method: 'post', + data, + }) +} + +// @Summary 创建角色 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body api.CreateAuthorityPatams true "创建角色" +// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /authority/createAuthority [post] +export const createAuthority = (data) => { + return service({ + url: '/authority/createAuthority', + method: 'post', + data + }) +} + +// @Tags authority +// @Summary 拷贝角色 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body api.CreateAuthorityPatams true "拷贝角色" +// @Success 200 {string} json "{"success":true,"data":{},"msg":"拷贝成功"}" +// @Router /authority/copyAuthority [post] +export const copyAuthority = (data) => { + return service({ + url: '/authority/copyAuthority', + method: 'post', + data + }) +} + +// @Summary 设置角色资源权限 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body sysModel.SysAuthority true "设置角色资源权限" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"设置成功"}" +// @Router /authority/setDataAuthority [post] +export const setDataAuthority = (data) => { + return service({ + url: '/authority/setDataAuthority', + method: 'post', + data + }) +} + +// @Summary 修改角色 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysAuthority true "修改角色" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"设置成功"}" +// @Router /authority/setDataAuthority [post] +export const updateAuthority = (data) => { + return service({ + url: '/authority/updateAuthority', + method: 'put', + data + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/authorityBtn.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/authorityBtn.js new file mode 100644 index 000000000..9fe73bf42 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/authorityBtn.js @@ -0,0 +1,27 @@ + +import service from '@/utils/request' + +export const getAuthorityBtnApi = (data) => { + return service({ + url: '/authorityBtn/getAuthorityBtn', + method: 'post', + data + }) +} + +export const setAuthorityBtnApi = (data) => { + return service({ + url: '/authorityBtn/setAuthorityBtn', + method: 'post', + data + }) +} + +export const canRemoveAuthorityBtnApi = (params) => { + return service({ + url: '/authorityBtn/canRemoveAuthorityBtn', + method: 'post', + params + }) +} + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/autoCode.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/autoCode.js new file mode 100644 index 000000000..544330902 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/autoCode.js @@ -0,0 +1,189 @@ +import service from '@/utils/request' + +export const preview = (data) => { + return service({ + url: '/autoCode/preview', + method: 'post', + data + }) +} + +export const createTemp = (data) => { + return service({ + url: '/autoCode/createTemp', + method: 'post', + data + }) +} + +// @Tags SysApi +// @Summary 获取当前所有数据库 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}" +// @Router /autoCode/getDatabase [get] +export const getDB = (params) => { + return service({ + url: '/autoCode/getDB', + method: 'get', + params + }) +} + +// @Tags SysApi +// @Summary 获取当前数据库所有表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}" +// @Router /autoCode/getTables [get] +export const getTable = (params) => { + return service({ + url: '/autoCode/getTables', + method: 'get', + params + }) +} + +// @Tags SysApi +// @Summary 获取当前数据库所有表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}" +// @Router /autoCode/getColumn [get] +export const getColumn = (params) => { + return service({ + url: '/autoCode/getColumn', + method: 'get', + params + }) +} + +export const getSysHistory = (data) => { + return service({ + url: '/autoCode/getSysHistory', + method: 'post', + data + }) +} + +export const rollback = (data) => { + return service({ + url: '/autoCode/rollback', + method: 'post', + data + }) +} + +export const getMeta = (data) => { + return service({ + url: '/autoCode/getMeta', + method: 'post', + data + }) +} + +export const delSysHistory = (data) => { + return service({ + url: '/autoCode/delSysHistory', + method: 'post', + data + }) +} + +export const createPackageApi = (data) => { + return service({ + url: '/autoCode/createPackage', + method: 'post', + data + }) +} + +export const getPackageApi = () => { + return service({ + url: '/autoCode/getPackage', + method: 'post' + }) +} + +export const deletePackageApi = (data) => { + return service({ + url: '/autoCode/delPackage', + method: 'post', + data + }) +} + +export const getTemplatesApi = () => { + return service({ + url: '/autoCode/getTemplates', + method: 'get' + }) +} + +export const installPlug = (data) => { + return service({ + url: '/autoCode/installPlug', + method: 'post', + data + }) +} + +export const pubPlug = (params) => { + return service({ + url: '/autoCode/pubPlug', + method: 'post', + params + }) +} + + +export const llmAuto = (data) => { + return service({ + url: '/autoCode/llmAuto', + method: 'post', + data:{...data,mode:'ai'}, + timeout: 1000 * 60 * 10, + loadingOption:{ + lock: true, + fullscreen:true, + text: `小淼正在思考,请稍候...`, + } + }) +} + + +export const butler = (data) => { + return service({ + url: '/autoCode/llmAuto', + method: 'post', + data:{...data,mode:'butler'}, + timeout: 1000 * 60 * 10, + }) +} + +export const addFunc = (data) => { + return service({ + url: '/autoCode/addFunc', + method: 'post', + data + }) +} + +export const initMenu = (data) => { + return service({ + url: '/autoCode/initMenu', + method: 'post', + data + }) +} + +export const initAPI = (data) => { + return service({ + url: '/autoCode/initAPI', + method: 'post', + data + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/breakpoint.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/breakpoint.js new file mode 100644 index 000000000..1dbfba23e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/breakpoint.js @@ -0,0 +1,43 @@ +import service from '@/utils/request' +// @Summary 设置角色资源权限 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body sysModel.SysAuthority true "设置角色资源权限" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"设置成功"}" +// @Router /authority/setDataAuthority [post] + +export const findFile = (params) => { + return service({ + url: '/fileUploadAndDownload/findFile', + method: 'get', + params + }) +} + +export const breakpointContinue = (data) => { + return service({ + url: '/fileUploadAndDownload/breakpointContinue', + method: 'post', + donNotShowLoading: true, + headers: { 'Content-Type': 'multipart/form-data' }, + data + }) +} + +export const breakpointContinueFinish = (params) => { + return service({ + url: '/fileUploadAndDownload/breakpointContinueFinish', + method: 'post', + params + }) +} + +export const removeChunk = (data, params) => { + return service({ + url: '/fileUploadAndDownload/removeChunk', + method: 'post', + data, + params + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/casbin.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/casbin.js new file mode 100644 index 000000000..802e13006 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/casbin.js @@ -0,0 +1,32 @@ +import service from '@/utils/request' +// @Tags authority +// @Summary 更改角色api权限 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body api.CreateAuthorityPatams true "更改角色api权限" +// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /casbin/UpdateCasbin [post] +export const UpdateCasbin = (data) => { + return service({ + url: '/casbin/updateCasbin', + method: 'post', + data + }) +} + +// @Tags casbin +// @Summary 获取权限列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body api.CreateAuthorityPatams true "获取权限列表" +// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /casbin/getPolicyPathByAuthorityId [post] +export const getPolicyPathByAuthorityId = (data) => { + return service({ + url: '/casbin/getPolicyPathByAuthorityId', + method: 'post', + data + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/customer.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/customer.js new file mode 100644 index 000000000..4776f1c09 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/customer.js @@ -0,0 +1,80 @@ +import service from '@/utils/request' +// @Tags SysApi +// @Summary 删除客户 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body dbModel.ExaCustomer true "删除客户" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /customer/customer [post] +export const createExaCustomer = (data) => { + return service({ + url: '/customer/customer', + method: 'post', + data + }) +} + +// @Tags SysApi +// @Summary 更新客户信息 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body dbModel.ExaCustomer true "更新客户信息" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /customer/customer [put] +export const updateExaCustomer = (data) => { + return service({ + url: '/customer/customer', + method: 'put', + data + }) +} + +// @Tags SysApi +// @Summary 创建客户 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body dbModel.ExaCustomer true "创建客户" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /customer/customer [delete] +export const deleteExaCustomer = (data) => { + return service({ + url: '/customer/customer', + method: 'delete', + data + }) +} + +// @Tags SysApi +// @Summary 获取单一客户信息 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body dbModel.ExaCustomer true "获取单一客户信息" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /customer/customer [get] +export const getExaCustomer = (params) => { + return service({ + url: '/customer/customer', + method: 'get', + params + }) +} + +// @Tags SysApi +// @Summary 获取权限客户列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body modelInterface.PageInfo true "获取权限客户列表" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /customer/customerList [get] +export const getExaCustomerList = (params) => { + return service({ + url: '/customer/customerList', + method: 'get', + params + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/email.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/email.js new file mode 100644 index 000000000..c2f16f430 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/email.js @@ -0,0 +1,14 @@ +import service from '@/utils/request' +// @Tags email +// @Summary 发送测试邮件 +// @Security ApiKeyAuth +// @Produce application/json +// @Success 200 {string} string "{"success":true,"data":{},"msg":"返回成功"}" +// @Router /email/emailTest [post] +export const emailTest = (data) => { + return service({ + url: '/email/emailTest', + method: 'post', + data + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/exportTemplate.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/exportTemplate.js new file mode 100644 index 000000000..5b7b27827 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/exportTemplate.js @@ -0,0 +1,97 @@ +import service from '@/utils/request' + +// @Tags SysExportTemplate +// @Summary 创建导出模板 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysExportTemplate true "创建导出模板" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}" +// @Router /sysExportTemplate/createSysExportTemplate [post] +export const createSysExportTemplate = (data) => { + return service({ + url: '/sysExportTemplate/createSysExportTemplate', + method: 'post', + data + }) +} + +// @Tags SysExportTemplate +// @Summary 删除导出模板 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysExportTemplate true "删除导出模板" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /sysExportTemplate/deleteSysExportTemplate [delete] +export const deleteSysExportTemplate = (data) => { + return service({ + url: '/sysExportTemplate/deleteSysExportTemplate', + method: 'delete', + data + }) +} + +// @Tags SysExportTemplate +// @Summary 批量删除导出模板 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.IdsReq true "批量删除导出模板" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /sysExportTemplate/deleteSysExportTemplate [delete] +export const deleteSysExportTemplateByIds = (data) => { + return service({ + url: '/sysExportTemplate/deleteSysExportTemplateByIds', + method: 'delete', + data + }) +} + +// @Tags SysExportTemplate +// @Summary 更新导出模板 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysExportTemplate true "更新导出模板" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}" +// @Router /sysExportTemplate/updateSysExportTemplate [put] +export const updateSysExportTemplate = (data) => { + return service({ + url: '/sysExportTemplate/updateSysExportTemplate', + method: 'put', + data + }) +} + +// @Tags SysExportTemplate +// @Summary 用id查询导出模板 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query model.SysExportTemplate true "用id查询导出模板" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" +// @Router /sysExportTemplate/findSysExportTemplate [get] +export const findSysExportTemplate = (params) => { + return service({ + url: '/sysExportTemplate/findSysExportTemplate', + method: 'get', + params + }) +} + +// @Tags SysExportTemplate +// @Summary 分页获取导出模板列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query request.PageInfo true "分页获取导出模板列表" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /sysExportTemplate/getSysExportTemplateList [get] +export const getSysExportTemplateList = (params) => { + return service({ + url: '/sysExportTemplate/getSysExportTemplateList', + method: 'get', + params + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/fileUploadAndDownload.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/fileUploadAndDownload.js new file mode 100644 index 000000000..2bff5bb47 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/fileUploadAndDownload.js @@ -0,0 +1,57 @@ +import service from '@/utils/request' +// @Tags FileUploadAndDownload +// @Summary 分页文件列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body modelInterface.PageInfo true "分页获取文件户列表" +// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /fileUploadAndDownload/getFileList [post] +export const getFileList = (data) => { + return service({ + url: '/fileUploadAndDownload/getFileList', + method: 'post', + data + }) +} + +// @Tags FileUploadAndDownload +// @Summary 删除文件 +// @Security ApiKeyAuth +// @Produce application/json +// @Param data body dbModel.FileUploadAndDownload true "传入文件里面id即可" +// @Success 200 {string} json "{"success":true,"data":{},"msg":"返回成功"}" +// @Router /fileUploadAndDownload/deleteFile [post] +export const deleteFile = (data) => { + return service({ + url: '/fileUploadAndDownload/deleteFile', + method: 'post', + data + }) +} + +/** + * 编辑文件名或者备注 + * @param data + * @returns {*} + */ +export const editFileName = (data) => { + return service({ + url: '/fileUploadAndDownload/editFileName', + method: 'post', + data + }) +} + +/** + * 导入URL + * @param data + * @returns {*} + */ +export const importURL = (data) => { + return service({ + url: '/fileUploadAndDownload/importURL', + method: 'post', + data + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/github.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/github.js new file mode 100644 index 000000000..4dc4eed58 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/github.js @@ -0,0 +1,17 @@ +import axios from 'axios' + +const service = axios.create() + +export function Commits(page) { + return service({ + url: 'https://api.github.com/repos/flipped-aurora/gin-vue-admin/commits?page=' + page, + method: 'get' + }) +} + +export function Members() { + return service({ + url: 'https://api.github.com/orgs/FLIPPED-AURORA/members', + method: 'get' + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/hufu/abnormalTransactions.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/hufu/abnormalTransactions.js new file mode 100644 index 000000000..398f82404 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/hufu/abnormalTransactions.js @@ -0,0 +1,110 @@ +import service from '@/utils/request' +// @Tags AbnormalTransactions +// @Summary 创建异常交易 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.AbnormalTransactions true "创建异常交易" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}" +// @Router /abnormalTransactions/createAbnormalTransactions [post] +export const createAbnormalTransactions = (data) => { + return service({ + url: '/abnormalTransactions/createAbnormalTransactions', + method: 'post', + data + }) +} + +// @Tags AbnormalTransactions +// @Summary 删除异常交易 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.AbnormalTransactions true "删除异常交易" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /abnormalTransactions/deleteAbnormalTransactions [delete] +export const deleteAbnormalTransactions = (params) => { + return service({ + url: '/abnormalTransactions/deleteAbnormalTransactions', + method: 'delete', + params + }) +} + +// @Tags AbnormalTransactions +// @Summary 批量删除异常交易 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.IdsReq true "批量删除异常交易" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /abnormalTransactions/deleteAbnormalTransactions [delete] +export const deleteAbnormalTransactionsByIds = (params) => { + return service({ + url: '/abnormalTransactions/deleteAbnormalTransactionsByIds', + method: 'delete', + params + }) +} + +// @Tags AbnormalTransactions +// @Summary 更新异常交易 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.AbnormalTransactions true "更新异常交易" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}" +// @Router /abnormalTransactions/updateAbnormalTransactions [put] +export const updateAbnormalTransactions = (data) => { + return service({ + url: '/abnormalTransactions/updateAbnormalTransactions', + method: 'put', + data + }) +} + +// @Tags AbnormalTransactions +// @Summary 用id查询异常交易 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query model.AbnormalTransactions true "用id查询异常交易" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" +// @Router /abnormalTransactions/findAbnormalTransactions [get] +export const findAbnormalTransactions = (params) => { + return service({ + url: '/abnormalTransactions/findAbnormalTransactions', + method: 'get', + params + }) +} + +// @Tags AbnormalTransactions +// @Summary 分页获取异常交易列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query request.PageInfo true "分页获取异常交易列表" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /abnormalTransactions/getAbnormalTransactionsList [get] +export const getAbnormalTransactionsList = (params) => { + return service({ + url: '/abnormalTransactions/getAbnormalTransactionsList', + method: 'get', + params + }) +} + +// @Tags AbnormalTransactions +// @Summary 不需要鉴权的异常交易接口 +// @accept application/json +// @Produce application/json +// @Param data query hufuReq.AbnormalTransactionsSearch true "分页获取异常交易列表" +// @Success 200 {object} response.Response{data=object,msg=string} "获取成功" +// @Router /abnormalTransactions/getAbnormalTransactionsPublic [get] +export const getAbnormalTransactionsPublic = () => { + return service({ + url: '/abnormalTransactions/getAbnormalTransactionsPublic', + method: 'get', + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/hufu/invoices.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/hufu/invoices.js new file mode 100644 index 000000000..8b0d17764 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/hufu/invoices.js @@ -0,0 +1,110 @@ +import service from '@/utils/request' +// @Tags Invoices +// @Summary 创建发票信息 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.Invoices true "创建发票信息" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}" +// @Router /invoices/createInvoices [post] +export const createInvoices = (data) => { + return service({ + url: '/invoices/createInvoices', + method: 'post', + data + }) +} + +// @Tags Invoices +// @Summary 删除发票信息 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.Invoices true "删除发票信息" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /invoices/deleteInvoices [delete] +export const deleteInvoices = (params) => { + return service({ + url: '/invoices/deleteInvoices', + method: 'delete', + params + }) +} + +// @Tags Invoices +// @Summary 批量删除发票信息 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.IdsReq true "批量删除发票信息" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /invoices/deleteInvoices [delete] +export const deleteInvoicesByIds = (params) => { + return service({ + url: '/invoices/deleteInvoicesByIds', + method: 'delete', + params + }) +} + +// @Tags Invoices +// @Summary 更新发票信息 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.Invoices true "更新发票信息" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}" +// @Router /invoices/updateInvoices [put] +export const updateInvoices = (data) => { + return service({ + url: '/invoices/updateInvoices', + method: 'put', + data + }) +} + +// @Tags Invoices +// @Summary 用id查询发票信息 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query model.Invoices true "用id查询发票信息" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" +// @Router /invoices/findInvoices [get] +export const findInvoices = (params) => { + return service({ + url: '/invoices/findInvoices', + method: 'get', + params + }) +} + +// @Tags Invoices +// @Summary 分页获取发票信息列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query request.PageInfo true "分页获取发票信息列表" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /invoices/getInvoicesList [get] +export const getInvoicesList = (params) => { + return service({ + url: '/invoices/getInvoicesList', + method: 'get', + params + }) +} + +// @Tags Invoices +// @Summary 不需要鉴权的发票信息接口 +// @accept application/json +// @Produce application/json +// @Param data query hufuReq.InvoicesSearch true "分页获取发票信息列表" +// @Success 200 {object} response.Response{data=object,msg=string} "获取成功" +// @Router /invoices/getInvoicesPublic [get] +export const getInvoicesPublic = () => { + return service({ + url: '/invoices/getInvoicesPublic', + method: 'get', + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/hufu/wallet.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/hufu/wallet.js new file mode 100644 index 000000000..9dff3592c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/hufu/wallet.js @@ -0,0 +1,110 @@ +import service from '@/utils/request' +// @Tags Wallet +// @Summary 创建钱包 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.Wallet true "创建钱包" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}" +// @Router /wallet/createWallet [post] +export const createWallet = (data) => { + return service({ + url: '/wallet/createWallet', + method: 'post', + data + }) +} + +// @Tags Wallet +// @Summary 删除钱包 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.Wallet true "删除钱包" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /wallet/deleteWallet [delete] +export const deleteWallet = (params) => { + return service({ + url: '/wallet/deleteWallet', + method: 'delete', + params + }) +} + +// @Tags Wallet +// @Summary 批量删除钱包 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.IdsReq true "批量删除钱包" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /wallet/deleteWallet [delete] +export const deleteWalletByIds = (params) => { + return service({ + url: '/wallet/deleteWalletByIds', + method: 'delete', + params + }) +} + +// @Tags Wallet +// @Summary 更新钱包 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.Wallet true "更新钱包" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}" +// @Router /wallet/updateWallet [put] +export const updateWallet = (data) => { + return service({ + url: '/wallet/updateWallet', + method: 'put', + data + }) +} + +// @Tags Wallet +// @Summary 用id查询钱包 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query model.Wallet true "用id查询钱包" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" +// @Router /wallet/findWallet [get] +export const findWallet = (params) => { + return service({ + url: '/wallet/findWallet', + method: 'get', + params + }) +} + +// @Tags Wallet +// @Summary 分页获取钱包列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query request.PageInfo true "分页获取钱包列表" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /wallet/getWalletList [get] +export const getWalletList = (params) => { + return service({ + url: '/wallet/getWalletList', + method: 'get', + params + }) +} + +// @Tags Wallet +// @Summary 不需要鉴权的钱包接口 +// @accept application/json +// @Produce application/json +// @Param data query hufuReq.WalletSearch true "分页获取钱包列表" +// @Success 200 {object} response.Response{data=object,msg=string} "获取成功" +// @Router /wallet/getWalletPublic [get] +export const getWalletPublic = () => { + return service({ + url: '/wallet/getWalletPublic', + method: 'get', + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/initdb.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/initdb.js new file mode 100644 index 000000000..f1eb2f4ad --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/initdb.js @@ -0,0 +1,27 @@ +import service from '@/utils/request' +// @Tags InitDB +// @Summary 初始化用户数据库 +// @Produce application/json +// @Param data body request.InitDB true "初始化数据库参数" +// @Success 200 {string} string "{"code":0,"data":{},"msg":"自动创建数据库成功"}" +// @Router /init/initdb [post] +export const initDB = (data) => { + return service({ + url: '/init/initdb', + method: 'post', + data, + donNotShowLoading: true + }) +} + +// @Tags CheckDB +// @Summary 初始化用户数据库 +// @Produce application/json +// @Success 200 {string} string "{"code":0,"data":{},"msg":"探测完成"}" +// @Router /init/checkdb [post] +export const checkDB = () => { + return service({ + url: '/init/checkdb', + method: 'post' + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/jwt.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/jwt.js new file mode 100644 index 000000000..811ffc4f4 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/jwt.js @@ -0,0 +1,14 @@ +import service from '@/utils/request' +// @Tags jwt +// @Summary jwt加入黑名单 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {string} string "{"success":true,"data":{},"msg":"拉黑成功"}" +// @Router /jwt/jsonInBlacklist [post] +export const jsonInBlacklist = () => { + return service({ + url: '/jwt/jsonInBlacklist', + method: 'post' + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/menu.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/menu.js new file mode 100644 index 000000000..163b5a697 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/menu.js @@ -0,0 +1,113 @@ +import service from '@/utils/request' +// @Summary 用户登录 获取动态路由 +// @Produce application/json +// @Param 可以什么都不填 调一下即可 +// @Router /menu/getMenu [post] +export const asyncMenu = () => { + return service({ + url: '/menu/getMenu', + method: 'post' + }) +} + +// @Summary 获取menu列表 +// @Produce application/json +// @Param { +// page int +// pageSize int +// } +// @Router /menu/getMenuList [post] +export const getMenuList = (data) => { + return service({ + url: '/menu/getMenuList', + method: 'post', + data + }) +} + +// @Summary 新增基础menu +// @Produce application/json +// @Param menu Object +// @Router /menu/getMenuList [post] +export const addBaseMenu = (data) => { + return service({ + url: '/menu/addBaseMenu', + method: 'post', + data + }) +} + +// @Summary 获取基础路由列表 +// @Produce application/json +// @Param 可以什么都不填 调一下即可 +// @Router /menu/getBaseMenuTree [post] +export const getBaseMenuTree = () => { + return service({ + url: '/menu/getBaseMenuTree', + method: 'post' + }) +} + +// @Summary 添加用户menu关联关系 +// @Produce application/json +// @Param menus Object authorityId string +// @Router /menu/getMenuList [post] +export const addMenuAuthority = (data) => { + return service({ + url: '/menu/addMenuAuthority', + method: 'post', + data + }) +} + +// @Summary 获取用户menu关联关系 +// @Produce application/json +// @Param authorityId string +// @Router /menu/getMenuAuthority [post] +export const getMenuAuthority = (data) => { + return service({ + url: '/menu/getMenuAuthority', + method: 'post', + data + }) +} + +// @Summary 删除menu +// @Produce application/json +// @Param ID float64 +// @Router /menu/deleteBaseMenu [post] +export const deleteBaseMenu = (data) => { + return service({ + url: '/menu/deleteBaseMenu', + method: 'post', + data + }) +} + +// @Summary 修改menu列表 +// @Produce application/json +// @Param menu Object +// @Router /menu/updateBaseMenu [post] +export const updateBaseMenu = (data) => { + return service({ + url: '/menu/updateBaseMenu', + method: 'post', + data + }) +} + +// @Tags menu +// @Summary 根据id获取菜单 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body api.GetById true "根据id获取菜单" +// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /menu/getBaseMenuById [post] +export const getBaseMenuById = (data) => { + return service({ + url: '/menu/getBaseMenuById', + method: 'post', + data + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/sysDictionary.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/sysDictionary.js new file mode 100644 index 000000000..f5d6c8620 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/sysDictionary.js @@ -0,0 +1,80 @@ +import service from '@/utils/request' +// @Tags SysDictionary +// @Summary 创建SysDictionary +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysDictionary true "创建SysDictionary" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /sysDictionary/createSysDictionary [post] +export const createSysDictionary = (data) => { + return service({ + url: '/sysDictionary/createSysDictionary', + method: 'post', + data + }) +} + +// @Tags SysDictionary +// @Summary 删除SysDictionary +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysDictionary true "删除SysDictionary" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /sysDictionary/deleteSysDictionary [delete] +export const deleteSysDictionary = (data) => { + return service({ + url: '/sysDictionary/deleteSysDictionary', + method: 'delete', + data + }) +} + +// @Tags SysDictionary +// @Summary 更新SysDictionary +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysDictionary true "更新SysDictionary" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}" +// @Router /sysDictionary/updateSysDictionary [put] +export const updateSysDictionary = (data) => { + return service({ + url: '/sysDictionary/updateSysDictionary', + method: 'put', + data + }) +} + +// @Tags SysDictionary +// @Summary 用id查询SysDictionary +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysDictionary true "用id查询SysDictionary" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" +// @Router /sysDictionary/findSysDictionary [get] +export const findSysDictionary = (params) => { + return service({ + url: '/sysDictionary/findSysDictionary', + method: 'get', + params + }) +} + +// @Tags SysDictionary +// @Summary 分页获取SysDictionary列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.PageInfo true "分页获取SysDictionary列表" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /sysDictionary/getSysDictionaryList [get] +export const getSysDictionaryList = (params) => { + return service({ + url: '/sysDictionary/getSysDictionaryList', + method: 'get', + params + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/sysDictionaryDetail.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/sysDictionaryDetail.js new file mode 100644 index 000000000..d4f877224 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/sysDictionaryDetail.js @@ -0,0 +1,80 @@ +import service from '@/utils/request' +// @Tags SysDictionaryDetail +// @Summary 创建SysDictionaryDetail +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysDictionaryDetail true "创建SysDictionaryDetail" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /sysDictionaryDetail/createSysDictionaryDetail [post] +export const createSysDictionaryDetail = (data) => { + return service({ + url: '/sysDictionaryDetail/createSysDictionaryDetail', + method: 'post', + data + }) +} + +// @Tags SysDictionaryDetail +// @Summary 删除SysDictionaryDetail +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysDictionaryDetail true "删除SysDictionaryDetail" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /sysDictionaryDetail/deleteSysDictionaryDetail [delete] +export const deleteSysDictionaryDetail = (data) => { + return service({ + url: '/sysDictionaryDetail/deleteSysDictionaryDetail', + method: 'delete', + data + }) +} + +// @Tags SysDictionaryDetail +// @Summary 更新SysDictionaryDetail +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysDictionaryDetail true "更新SysDictionaryDetail" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}" +// @Router /sysDictionaryDetail/updateSysDictionaryDetail [put] +export const updateSysDictionaryDetail = (data) => { + return service({ + url: '/sysDictionaryDetail/updateSysDictionaryDetail', + method: 'put', + data + }) +} + +// @Tags SysDictionaryDetail +// @Summary 用id查询SysDictionaryDetail +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysDictionaryDetail true "用id查询SysDictionaryDetail" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" +// @Router /sysDictionaryDetail/findSysDictionaryDetail [get] +export const findSysDictionaryDetail = (params) => { + return service({ + url: '/sysDictionaryDetail/findSysDictionaryDetail', + method: 'get', + params + }) +} + +// @Tags SysDictionaryDetail +// @Summary 分页获取SysDictionaryDetail列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.PageInfo true "分页获取SysDictionaryDetail列表" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /sysDictionaryDetail/getSysDictionaryDetailList [get] +export const getSysDictionaryDetailList = (params) => { + return service({ + url: '/sysDictionaryDetail/getSysDictionaryDetailList', + method: 'get', + params + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/sysOperationRecord.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/sysOperationRecord.js new file mode 100644 index 000000000..4428c036f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/sysOperationRecord.js @@ -0,0 +1,48 @@ +import service from '@/utils/request' +// @Tags SysOperationRecord +// @Summary 删除SysOperationRecord +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysOperationRecord true "删除SysOperationRecord" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /sysOperationRecord/deleteSysOperationRecord [delete] +export const deleteSysOperationRecord = (data) => { + return service({ + url: '/sysOperationRecord/deleteSysOperationRecord', + method: 'delete', + data + }) +} + +// @Tags SysOperationRecord +// @Summary 删除SysOperationRecord +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.IdsReq true "删除SysOperationRecord" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /sysOperationRecord/deleteSysOperationRecord [delete] +export const deleteSysOperationRecordByIds = (data) => { + return service({ + url: '/sysOperationRecord/deleteSysOperationRecordByIds', + method: 'delete', + data + }) +} + +// @Tags SysOperationRecord +// @Summary 分页获取SysOperationRecord列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.PageInfo true "分页获取SysOperationRecord列表" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /sysOperationRecord/getSysOperationRecordList [get] +export const getSysOperationRecordList = (params) => { + return service({ + url: '/sysOperationRecord/getSysOperationRecordList', + method: 'get', + params + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/sysParams.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/sysParams.js new file mode 100644 index 000000000..348f1b5e4 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/sysParams.js @@ -0,0 +1,111 @@ +import service from '@/utils/request' +// @Tags SysParams +// @Summary 创建参数 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysParams true "创建参数" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}" +// @Router /sysParams/createSysParams [post] +export const createSysParams = (data) => { + return service({ + url: '/sysParams/createSysParams', + method: 'post', + data + }) +} + +// @Tags SysParams +// @Summary 删除参数 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysParams true "删除参数" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /sysParams/deleteSysParams [delete] +export const deleteSysParams = (params) => { + return service({ + url: '/sysParams/deleteSysParams', + method: 'delete', + params + }) +} + +// @Tags SysParams +// @Summary 批量删除参数 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.IdsReq true "批量删除参数" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /sysParams/deleteSysParams [delete] +export const deleteSysParamsByIds = (params) => { + return service({ + url: '/sysParams/deleteSysParamsByIds', + method: 'delete', + params + }) +} + +// @Tags SysParams +// @Summary 更新参数 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysParams true "更新参数" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}" +// @Router /sysParams/updateSysParams [put] +export const updateSysParams = (data) => { + return service({ + url: '/sysParams/updateSysParams', + method: 'put', + data + }) +} + +// @Tags SysParams +// @Summary 用id查询参数 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query model.SysParams true "用id查询参数" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" +// @Router /sysParams/findSysParams [get] +export const findSysParams = (params) => { + return service({ + url: '/sysParams/findSysParams', + method: 'get', + params + }) +} + +// @Tags SysParams +// @Summary 分页获取参数列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query request.PageInfo true "分页获取参数列表" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /sysParams/getSysParamsList [get] +export const getSysParamsList = (params) => { + return service({ + url: '/sysParams/getSysParamsList', + method: 'get', + params + }) +} + +// @Tags SysParams +// @Summary 不需要鉴权的参数接口 +// @accept application/json +// @Produce application/json +// @Param data query systemReq.SysParamsSearch true "分页获取参数列表" +// @Success 200 {object} response.Response{data=object,msg=string} "获取成功" +// @Router /sysParams/getSysParam [get] +export const getSysParam = (params) => { + return service({ + url: '/sysParams/getSysParam', + method: 'get', + params + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/system.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/system.js new file mode 100644 index 000000000..4dd5eca25 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/system.js @@ -0,0 +1,56 @@ +import service from '@/utils/request' +// @Tags systrm +// @Summary 获取配置文件内容 +// @Security ApiKeyAuth +// @Produce application/json +// @Success 200 {string} string "{"success":true,"data":{},"msg":"返回成功"}" +// @Router /system/getSystemConfig [post] +export const getSystemConfig = () => { + return service({ + url: '/system/getSystemConfig', + method: 'post' + }) +} + +// @Tags system +// @Summary 设置配置文件内容 +// @Security ApiKeyAuth +// @Produce application/json +// @Param data body sysModel.System true +// @Success 200 {string} string "{"success":true,"data":{},"msg":"返回成功"}" +// @Router /system/setSystemConfig [post] +export const setSystemConfig = (data) => { + return service({ + url: '/system/setSystemConfig', + method: 'post', + data + }) +} + +// @Tags system +// @Summary 获取服务器运行状态 +// @Security ApiKeyAuth +// @Produce application/json +// @Success 200 {string} string "{"success":true,"data":{},"msg":"返回成功"}" +// @Router /system/getServerInfo [post] +export const getSystemState = () => { + return service({ + url: '/system/getServerInfo', + method: 'post', + donNotShowLoading: true + }) +} + +/** + * 重启服务 + * @param data + * @returns {*} + */ +export const reloadSystem = (data) => { + return service({ + url: '/system/reloadSystem', + method: 'post', + data + }) +} + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/user.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/user.js new file mode 100644 index 000000000..2b357d031 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/api/user.js @@ -0,0 +1,181 @@ +import service from '@/utils/request' +// @Summary 用户登录 +// @Produce application/json +// @Param data body {username:"string",password:"string"} +// @Router /base/login [post] +export const login = (data) => { + return service({ + url: '/base/login', + method: 'post', + data: data + }) +} + +// @Summary 获取验证码 +// @Produce application/json +// @Param data body {username:"string",password:"string"} +// @Router /base/captcha [post] +export const captcha = () => { + return service({ + url: '/base/captcha', + method: 'post' + }) +} + +// @Summary 用户注册 +// @Produce application/json +// @Param data body {username:"string",password:"string"} +// @Router /base/resige [post] +export const register = (data) => { + return service({ + url: '/user/admin_register', + method: 'post', + data: data + }) +} + +// @Summary 修改密码 +// @Produce application/json +// @Param data body {username:"string",password:"string",newPassword:"string"} +// @Router /user/changePassword [post] +export const changePassword = (data) => { + return service({ + url: '/user/changePassword', + method: 'post', + data: data + }) +} + +// @Tags User +// @Summary 分页获取用户列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body modelInterface.PageInfo true "分页获取用户列表" +// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /user/getUserList [post] +export const getUserList = (data) => { + return service({ + url: '/user/getUserList', + method: 'post', + data: data + }) +} + +// @Tags User +// @Summary 设置用户权限 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body api.SetUserAuth true "设置用户权限" +// @Success 200 {string} json "{"success":true,"data":{},"msg":"修改成功"}" +// @Router /user/setUserAuthority [post] +export const setUserAuthority = (data) => { + return service({ + url: '/user/setUserAuthority', + method: 'post', + data: data + }) +} + +// @Tags SysUser +// @Summary 删除用户 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.SetUserAuth true "删除用户" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"修改成功"}" +// @Router /user/deleteUser [delete] +export const deleteUser = (data) => { + return service({ + url: '/user/deleteUser', + method: 'delete', + data: data + }) +} + +// @Tags SysUser +// @Summary 设置用户信息 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysUser true "设置用户信息" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"修改成功"}" +// @Router /user/setUserInfo [put] +export const setUserInfo = (data) => { + return service({ + url: '/user/setUserInfo', + method: 'put', + data: data + }) +} + +// @Tags SysUser +// @Summary 设置用户信息 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysUser true "设置用户信息" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"修改成功"}" +// @Router /user/setSelfInfo [put] +export const setSelfInfo = (data) => { + return service({ + url: '/user/setSelfInfo', + method: 'put', + data: data + }) +} + +// @Tags SysUser +// @Summary 设置自身界面配置 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.SysUser true "设置自身界面配置" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"修改成功"}" +// @Router /user/setSelfSetting [put] +export const setSelfSetting = (data) => { + return service({ + url: '/user/setSelfSetting', + method: 'put', + data: data + }) +} + +// @Tags User +// @Summary 设置用户权限 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body api.setUserAuthorities true "设置用户权限" +// @Success 200 {string} json "{"success":true,"data":{},"msg":"修改成功"}" +// @Router /user/setUserAuthorities [post] +export const setUserAuthorities = (data) => { + return service({ + url: '/user/setUserAuthorities', + method: 'post', + data: data + }) +} + +// @Tags User +// @Summary 获取用户信息 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /user/getUserInfo [get] +export const getUserInfo = () => { + return service({ + url: '/user/getUserInfo', + method: 'get' + }) +} + +export const resetPassword = (data) => { + return service({ + url: '/user/resetPassword', + method: 'post', + data: data + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/arrayCtrl/arrayCtrl.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/arrayCtrl/arrayCtrl.vue new file mode 100644 index 000000000..08b4ce219 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/arrayCtrl/arrayCtrl.vue @@ -0,0 +1,68 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/bottomInfo/bottomInfo.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/bottomInfo/bottomInfo.vue new file mode 100644 index 000000000..6e98955d6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/bottomInfo/bottomInfo.vue @@ -0,0 +1,27 @@ + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/charts/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/charts/index.vue new file mode 100644 index 000000000..4ea5a75d1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/charts/index.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/commandMenu/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/commandMenu/index.vue new file mode 100644 index 000000000..a36d174d2 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/commandMenu/index.vue @@ -0,0 +1,197 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/customPic/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/customPic/index.vue new file mode 100644 index 000000000..63743d535 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/customPic/index.vue @@ -0,0 +1,104 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/exportExcel/exportExcel.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/exportExcel/exportExcel.vue new file mode 100644 index 000000000..26ceb1875 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/exportExcel/exportExcel.vue @@ -0,0 +1,58 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/exportExcel/exportTemplate.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/exportExcel/exportTemplate.vue new file mode 100644 index 000000000..9e099ebae --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/exportExcel/exportTemplate.vue @@ -0,0 +1,28 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/exportExcel/importExcel.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/exportExcel/importExcel.vue new file mode 100644 index 000000000..2f6f28d30 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/exportExcel/importExcel.vue @@ -0,0 +1,42 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/office/docx.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/office/docx.vue new file mode 100644 index 000000000..35e3e5a5a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/office/docx.vue @@ -0,0 +1,35 @@ + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/office/excel.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/office/excel.vue new file mode 100644 index 000000000..ac449dac6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/office/excel.vue @@ -0,0 +1,33 @@ + + + + \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/office/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/office/index.vue new file mode 100644 index 000000000..a6704d6ba --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/office/index.vue @@ -0,0 +1,53 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/office/pdf.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/office/pdf.vue new file mode 100644 index 000000000..8098f06ff --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/office/pdf.vue @@ -0,0 +1,36 @@ + + + \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/richtext/rich-edit.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/richtext/rich-edit.vue new file mode 100644 index 000000000..cee3b2ec1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/richtext/rich-edit.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/richtext/rich-view.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/richtext/rich-view.vue new file mode 100644 index 000000000..fd6616e4a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/richtext/rich-view.vue @@ -0,0 +1,62 @@ + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/selectFile/selectFile.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/selectFile/selectFile.vue new file mode 100644 index 000000000..81c03c56f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/selectFile/selectFile.vue @@ -0,0 +1,87 @@ + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/selectImage/selectComponent.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/selectImage/selectComponent.vue new file mode 100644 index 000000000..1ff6e04cf --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/selectImage/selectComponent.vue @@ -0,0 +1,65 @@ + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/selectImage/selectImage.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/selectImage/selectImage.vue new file mode 100644 index 000000000..0ca5ce72e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/selectImage/selectImage.vue @@ -0,0 +1,276 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/svgIcon/svgIcon.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/svgIcon/svgIcon.vue new file mode 100644 index 000000000..c6f766532 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/svgIcon/svgIcon.vue @@ -0,0 +1,39 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/upload/common.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/upload/common.vue new file mode 100644 index 000000000..97255da11 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/upload/common.vue @@ -0,0 +1,76 @@ + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/upload/image.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/upload/image.vue new file mode 100644 index 000000000..e65bcf74d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/upload/image.vue @@ -0,0 +1,92 @@ + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/warningBar/warningBar.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/warningBar/warningBar.vue new file mode 100644 index 000000000..4fac6c0b9 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/components/warningBar/warningBar.vue @@ -0,0 +1,33 @@ + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/core/config.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/core/config.js new file mode 100644 index 000000000..3e5937f37 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/core/config.js @@ -0,0 +1,20 @@ +/** + * 网站配置文件 + */ +const greenText = (text) => `\x1b[32m${text}\x1b[0m`; + +const config = { + appName: '数字虎符', + appLogo: 'logo.png', + showViteLogo: true, + logs: [], +} + +export const viteLogo = (env) => { + if (config.showViteLogo) { + + console.log('\n'); + } +} + +export default config diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/core/gin-vue-admin.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/core/gin-vue-admin.js new file mode 100644 index 000000000..b2ec789b7 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/core/gin-vue-admin.js @@ -0,0 +1,16 @@ +/* + * gin-vue-admin web框架组 + * + * */ +// 加载网站配置文件夹 +import { register } from './global' + +export default { + install: (app) => { + register(app) + console.log(` + 默认自动化文档地址:http://127.0.0.1:${import.meta.env.VITE_SERVER_PORT}/swagger/index.html + 默认前端文件运行地址:http://127.0.0.1:${import.meta.env.VITE_CLI_PORT} + `) + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/core/global.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/core/global.js new file mode 100644 index 000000000..2ef1ffef4 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/core/global.js @@ -0,0 +1,53 @@ +import config from './config' +import { h } from 'vue' + +// 统一导入el-icon图标 +import * as ElIconModules from '@element-plus/icons-vue' +import svgIcon from '@/components/svgIcon/svgIcon.vue' +// 导入转换图标名称的函数 + +const createIconComponent = (name) => ({ + name: 'SvgIcon', + render() { + return h(svgIcon, { + name: name, + }) + }, +}) + +const registerIcons = async(app) => { + const iconModules = import.meta.glob('@/assets/icons/**/*.svg') // 系统目录 svg 图标 + const pluginIconModules = import.meta.glob('@/plugin/**/assets/icons/**/*.svg') // 插件目录 svg 图标 + const mergedIconModules = Object.assign({}, iconModules, pluginIconModules); // 合并所有 svg 图标 + for (const path in mergedIconModules) { + let pluginName = "" + if (path.startsWith("/src/plugin/")) { + pluginName = `${path.split('/')[3]}-` + } + const iconName = path.split('/').pop().replace(/\.svg$/, '') + // 如果iconName带空格则不加入到图标库中并且提示名称不合法 + if (iconName.indexOf(' ') !== -1) { + console.error(`icon ${iconName}.svg includes whitespace in ${path}`) + continue + } + const key = `${pluginName}${iconName}` + // 开发模式下列出所有 svg 图标,方便开发者直接查找复制使用 + import.meta.env.MODE == 'development' && console.log(`svg-icon-component: <${key} />`) + const iconComponent = createIconComponent(key) + config.logs.push({ + 'key': key, + 'label': key, + }) + app.component(key, iconComponent) + } +} + +export const register = (app) => { + // 统一注册el-icon图标 + for (const iconName in ElIconModules) { + app.component(iconName, ElIconModules[iconName]) + } + app.component('SvgIcon', svgIcon) + registerIcons(app) + app.config.globalProperties.$GIN_VUE_ADMIN = config +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/directive/auth.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/directive/auth.js new file mode 100644 index 000000000..50594d45f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/directive/auth.js @@ -0,0 +1,41 @@ +// 权限按钮展示指令 +import { useUserStore } from '@/pinia/modules/user' +export default { + install: (app) => { + const userStore = useUserStore() + app.directive('auth', { + // 当被绑定的元素插入到 DOM 中时…… + mounted: function(el, binding) { + const userInfo = userStore.userInfo + let type = '' + switch (Object.prototype.toString.call(binding.value)) { + case '[object Array]': + type = 'Array' + break + case '[object String]': + type = 'String' + break + case '[object Number]': + type = 'Number' + break + default: + type = '' + break + } + if (type === '') { + el.parentNode.removeChild(el) + return + } + const waitUse = binding.value.toString().split(',') + let flag = waitUse.some(item => Number(item) === userInfo.authorityId) + if (binding.modifiers.not) { + flag = !flag + } + if (!flag) { + el.parentNode.removeChild(el) + } + } + }) + } +} + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/hooks/charts.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/hooks/charts.js new file mode 100644 index 000000000..e7a14b1b0 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/hooks/charts.js @@ -0,0 +1,19 @@ +// 本组件参考 arco-pro 的实现 +// https://github.com/arco-design/arco-design-pro-vue/blob/main/arco-design-pro-vite/src/hooks/chart-option.ts + +import { computed } from 'vue'; +import { useAppStore } from '@/pinia'; + + +export default function useChartOption(sourceOption) { + const appStore = useAppStore(); + const isDark = computed(() => { + return appStore.theme === 'dark'; + }); + const chartOption = computed(() => { + return sourceOption(isDark.value); + }); + return { + chartOption, + }; +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/hooks/responsive.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/hooks/responsive.js new file mode 100644 index 000000000..417c1f999 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/hooks/responsive.js @@ -0,0 +1,35 @@ +// 本组件参考 arco-pro 的实现 +// https://github.com/arco-design/arco-design-pro-vue/blob/main/arco-design-pro-vite/src/hooks/responsive.ts + +import { onMounted, onBeforeMount, onBeforeUnmount } from 'vue'; +import { useDebounceFn } from '@vueuse/core'; +import { useAppStore } from '@/pinia'; +import { addEventListen, removeEventListen } from '@/utils/event'; + +const WIDTH = 992; + +function queryDevice() { + const rect = document.body.getBoundingClientRect(); + return rect.width - 1 < WIDTH; +} + +export default function useResponsive(immediate) { + const appStore = useAppStore(); + function resizeHandler() { + if (!document.hidden) { + const isMobile = queryDevice(); + appStore.toggleDevice(isMobile ? 'mobile' : 'desktop'); + // appStore.toggleDevice(isMobile); + } + } + const debounceFn = useDebounceFn(resizeHandler, 100); + onMounted(() => { + if (immediate) debounceFn(); + }); + onBeforeMount(() => { + addEventListen(window, 'resize', debounceFn); + }); + onBeforeUnmount(() => { + removeEventListen(window, 'resize', debounceFn); + }); +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/hooks/use-windows-resize.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/hooks/use-windows-resize.js new file mode 100644 index 000000000..4ddf3f0fb --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/hooks/use-windows-resize.js @@ -0,0 +1,23 @@ +// 监听 window 的 resize 事件,返回当前窗口的宽高 +import { shallowRef } from 'vue' +import { tryOnMounted, useEventListener } from '@vueuse/core' + +const width = shallowRef(0) +const height = shallowRef(0) + +export const useWindowResize = (cb) => { + const onResize = () => { + width.value = window.innerWidth + height.value = window.innerHeight + if (cb && typeof cb === 'function') { + cb(width.value, height.value) + } + } + + tryOnMounted(onResize) + useEventListener('resize', onResize, { passive: true }) + return { + width, + height, + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/main.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/main.js new file mode 100644 index 000000000..766c970d1 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/main.js @@ -0,0 +1,29 @@ +import './style/element_visiable.scss' +import 'element-plus/theme-chalk/dark/css-vars.css' +import { createApp } from 'vue' +import ElementPlus from 'element-plus' + +import 'element-plus/dist/index.css' +// 引入gin-vue-admin前端初始化相关内容 +import './core/gin-vue-admin' +// 引入封装的router +import router from '@/router/index' +import '@/permission' +import run from '@/core/gin-vue-admin.js' +import auth from '@/directive/auth' +import { store } from '@/pinia' +import App from './App.vue' +//消除警告 +import 'default-passive-events' + +const app = createApp(App) +app.config.productionTip = false + +app + .use(run) + .use(ElementPlus) + .use(store) + .use(auth) + .use(router) + .mount('#app') +export default app diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pathInfo.json b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pathInfo.json new file mode 100644 index 000000000..b31d395ed --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pathInfo.json @@ -0,0 +1,54 @@ +{ + "/src/view/about/index.vue": "About", + "/src/view/dashboard/index.vue": "Dashboard", + "/src/view/error/index.vue": "Error", + "/src/view/error/reload.vue": "Reload", + "/src/view/example/breakpoint/breakpoint.vue": "BreakPoint", + "/src/view/example/customer/customer.vue": "Customer", + "/src/view/example/index.vue": "Example", + "/src/view/example/upload/upload.vue": "Upload", + "/src/view/hufu/abnormalTransactions/abnormalTransactions.vue": "AbnormalTransactions", + "/src/view/hufu/abnormalTransactions/abnormalTransactionsForm.vue": "AbnormalTransactionsForm", + "/src/view/hufu/invoices/invoices.vue": "Invoices", + "/src/view/hufu/invoices/invoicesForm.vue": "InvoicesForm", + "/src/view/init/index.vue": "Init", + "/src/view/layout/aside/asideComponent/asyncSubmenu.vue": "AsyncSubmenu", + "/src/view/layout/aside/asideComponent/index.vue": "AsideComponent", + "/src/view/layout/aside/asideComponent/menuItem.vue": "MenuItem", + "/src/view/layout/aside/combinationMode.vue": "GvaAside", + "/src/view/layout/aside/headMode.vue": "GvaAside", + "/src/view/layout/aside/normalMode.vue": "GvaAside", + "/src/view/layout/index.vue": "GvaLayout", + "/src/view/layout/screenfull/index.vue": "Screenfull", + "/src/view/layout/search/search.vue": "BtnBox", + "/src/view/layout/setting/index.vue": "GvaSetting", + "/src/view/layout/tabs/index.vue": "HistoryComponent", + "/src/view/login/index.vue": "Login", + "/src/view/person/person.vue": "Person", + "/src/view/routerHolder.vue": "RouterHolder", + "/src/view/superAdmin/api/api.vue": "Api", + "/src/view/superAdmin/authority/authority.vue": "Authority", + "/src/view/superAdmin/authority/components/apis.vue": "Apis", + "/src/view/superAdmin/authority/components/datas.vue": "Datas", + "/src/view/superAdmin/authority/components/menus.vue": "Menus", + "/src/view/superAdmin/dictionary/sysDictionary.vue": "SysDictionary", + "/src/view/superAdmin/dictionary/sysDictionaryDetail.vue": "SysDictionaryDetail", + "/src/view/superAdmin/index.vue": "SuperAdmin", + "/src/view/superAdmin/menu/icon.vue": "Icon", + "/src/view/superAdmin/menu/menu.vue": "Menus", + "/src/view/superAdmin/operation/sysOperationRecord.vue": "SysOperationRecord", + "/src/view/superAdmin/params/sysParams.vue": "SysParams", + "/src/view/superAdmin/user/user.vue": "User", + "/src/view/system/state.vue": "State", + "/src/view/systemTools/autoCode/component/fieldDialog.vue": "FieldDialog", + "/src/view/systemTools/autoCode/index.vue": "AutoCode", + "/src/view/systemTools/autoCodeAdmin/index.vue": "AutoCodeAdmin", + "/src/view/systemTools/autoPkg/autoPkg.vue": "AutoPkg", + "/src/view/systemTools/exportTemplate/exportTemplate.vue": "ExportTemplate", + "/src/view/systemTools/formCreate/index.vue": "FormGenerator", + "/src/view/systemTools/index.vue": "System", + "/src/view/systemTools/system/system.vue": "Config", + "/src/plugin/announcement/form/info.vue": "InfoForm", + "/src/plugin/announcement/view/info.vue": "Info", + "/src/plugin/email/view/index.vue": "Email" +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/permission.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/permission.js new file mode 100644 index 000000000..b0c39af51 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/permission.js @@ -0,0 +1,139 @@ +import { useUserStore } from '@/pinia/modules/user' +import { useRouterStore } from '@/pinia/modules/router' +import getPageTitle from '@/utils/page' +import router from '@/router' +import Nprogress from 'nprogress' +import 'nprogress/nprogress.css' +Nprogress.configure({ showSpinner: false, ease: 'ease', speed: 500 }) + +const whiteList = ['Login', 'Init'] + +const getRouter = async(userStore) => { + const routerStore = useRouterStore() + await routerStore.SetAsyncRouter() + await userStore.GetUserInfo() + const asyncRouters = routerStore.asyncRouters + asyncRouters.forEach(asyncRouter => { + router.addRoute(asyncRouter) + }) +} + +const removeLoading = () => { + const element = document.getElementById('gva-loading-box'); + if (element) { + element.remove(); + } +} + + +async function handleKeepAlive(to) { + if (to.matched.some(item => item.meta.keepAlive)) { + if (to.matched && to.matched.length > 2) { + for (let i = 1; i < to.matched.length; i++) { + const element = to.matched[i - 1] + if (element.name === 'layout') { + to.matched.splice(i, 1) + await handleKeepAlive(to) + } + // 如果没有按需加载完成则等待加载 + if (typeof element.components.default === 'function') { + await element.components.default() + await handleKeepAlive(to) + } + } + } + } +} + +router.beforeEach(async(to, from) => { + const routerStore = useRouterStore() + Nprogress.start() + const userStore = useUserStore() + to.meta.matched = [...to.matched] + handleKeepAlive(to) + const token = userStore.token + // 在白名单中的判断情况 + document.title = getPageTitle(to.meta.title, to) + if(to.meta.client) { + return true + } + if (whiteList.indexOf(to.name) > -1) { + if (token) { + if (!routerStore.asyncRouterFlag && whiteList.indexOf(from.name) < 0) { + await getRouter(userStore) + } + // token 可以解析但是却是不存在的用户 id 或角色 id 会导致无限调用 + if (userStore.userInfo?.authority?.defaultRouter != null) { + if (router.hasRoute(userStore.userInfo.authority.defaultRouter)) { + return { name: userStore.userInfo.authority.defaultRouter } + } else { + return { path: '/layout/404' } + } + } else { + // 强制退出账号 + userStore.ClearStorage() + return { + name: 'Login', + query: { + redirect: document.location.hash + } + } + } + } else { + return true + } + } else { + // 不在白名单中并且已经登录的时候 + if (token) { + if(sessionStorage.getItem("needToHome") === 'true') { + sessionStorage.removeItem("needToHome") + return { path: '/'} + } + // 添加flag防止多次获取动态路由和栈溢出 + if (!routerStore.asyncRouterFlag && whiteList.indexOf(from.name) < 0) { + await getRouter(userStore) + if (userStore.token) { + if (router.hasRoute(userStore.userInfo.authority.defaultRouter)) { + return { ...to, replace: true } + } else { + return { path: '/layout/404' } + } + } else { + return { + name: 'Login', + query: { redirect: to.href } + } + } + } else { + if (to.matched.length) { + return true + } else { + return { path: '/layout/404' } + } + } + } + // 不在白名单中并且未登录的时候 + if (!token) { + return { + name: 'Login', + query: { + redirect: document.location.hash + } + } + } + } +}) + + +router.afterEach(() => { + // 路由加载完成后关闭进度条 + document.getElementsByClassName('main-cont main-right')[0]?.scrollTo(0, 0) + Nprogress.done() +}) + +router.onError(() => { + // 路由发生错误后销毁进度条 + Nprogress.remove() +}) + +removeLoading() diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/index.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/index.js new file mode 100644 index 000000000..49c389e99 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/index.js @@ -0,0 +1,13 @@ +import { createPinia } from 'pinia' +import { useAppStore } from '@/pinia/modules/app' +import { useUserStore } from '@/pinia/modules/user' +import { useDictionaryStore } from '@/pinia/modules/dictionary' + +const store = createPinia() + +export { + store, + useAppStore, + useUserStore, + useDictionaryStore +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/modules/app.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/modules/app.js new file mode 100644 index 000000000..44707cc37 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/modules/app.js @@ -0,0 +1,146 @@ +import { defineStore } from 'pinia' +import { ref, watchEffect, reactive } from 'vue' +import { setBodyPrimaryColor } from '@/utils/format' +export const useAppStore = defineStore('app', () => { + + const device = ref("") + const config = reactive({ + weakness: false, + grey: false, + primaryColor: '#3b82f6', + showTabs: true, + darkMode: 'auto', + layout_side_width : 256, + layout_side_collapsed_width : 80, + layout_side_item_height : 48, + show_watermark: false, + side_mode : 'normal' + }) + + const theme = ref( 'auto') + + const toggleTheme = (dark) => { + if (dark) { + theme.value = 'dark'; + } else { + theme.value = 'light'; + } + } + + const toggleWeakness = (e) => { + config.weakness = e; + } + + const toggleGrey = (e) => { + config.grey = e; + } + + const togglePrimaryColor = (e) => { + config.primaryColor = e; + } + + const toggleTabs = (e) => { + config.showTabs = e; + } + + const toggleDevice = (e) => { + device.value = e; + } + + const toggleDarkMode = (e) => { + config.darkMode = e + } + + const toggleDarkModeAuto = () =>{ + // 处理浏览器主题 + const darkQuery = window.matchMedia('(prefers-color-scheme: dark)') + const dark = darkQuery.matches + toggleTheme(dark) + darkQuery.addEventListener('change', (e) => { + toggleTheme(e.matches) + }) + } + + const toggleConfigSideWidth = (e) => { + config.layout_side_width = e; + } + + const toggleConfigSideCollapsedWidth = (e) => { + config.layout_side_collapsed_width = e; + } + + const toggleConfigSideItemHeight = (e) => { + config.layout_side_item_height = e; + } + + const toggleConfigWatermark = (e) => { + config.show_watermark = e; + } + + const toggleSideModel= (e) =>{ + config.side_mode = e + } + + watchEffect(() => { + if (theme.value === 'dark') { + document.documentElement.classList.add('dark'); + document.documentElement.classList.remove('light'); + } else { + document.documentElement.classList.add('light'); + document.documentElement.classList.remove('dark'); + } + }) + watchEffect(() => { + // 色弱模式监听处理 + if (config.weakness) { + document.documentElement.classList.add('html-weakenss'); + } else { + document.documentElement.classList.remove('html-weakenss'); + } + }) + watchEffect(() => { + // 灰色模式监听处理 + if (config.grey) { + document.documentElement.classList.add('html-grey'); + } else { + document.documentElement.classList.remove('html-grey'); + } + }) + + + + watchEffect(() => { + if(config.darkMode === 'auto'){ + toggleDarkModeAuto() + } + + if(config.darkMode === 'dark'){ + toggleTheme(true) + }else{ + toggleTheme(false) + } + }) + + watchEffect(() => { + setBodyPrimaryColor(config.primaryColor, theme.value) + }) + + return { + theme, + device, + config, + toggleTheme, + toggleDevice, + toggleWeakness, + toggleGrey, + togglePrimaryColor, + toggleTabs, + toggleDarkMode, + toggleConfigSideWidth, + toggleConfigSideCollapsedWidth, + toggleConfigSideItemHeight, + toggleConfigWatermark, + toggleSideModel + } + +}) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/modules/dictionary.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/modules/dictionary.js new file mode 100644 index 000000000..cd88f8c72 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/modules/dictionary.js @@ -0,0 +1,40 @@ +import { findSysDictionary } from '@/api/sysDictionary' + +import { defineStore } from 'pinia' +import { ref } from 'vue' + +export const useDictionaryStore = defineStore('dictionary', () => { + const dictionaryMap = ref({}) + + const setDictionaryMap = (dictionaryRes) => { + dictionaryMap.value = { ...dictionaryMap.value, ...dictionaryRes } + } + + const getDictionary = async(type) => { + if (dictionaryMap.value[type] && dictionaryMap.value[type].length) { + return dictionaryMap.value[type] + } else { + const res = await findSysDictionary({ type }) + if (res.code === 0) { + const dictionaryRes = {} + const dict = [] + res.data.resysDictionary.sysDictionaryDetails && res.data.resysDictionary.sysDictionaryDetails.forEach(item => { + dict.push({ + label: item.label, + value: item.value, + extend: item.extend + }) + }) + dictionaryRes[res.data.resysDictionary.type] = dict + setDictionaryMap(dictionaryRes) + return dictionaryMap.value[type] + } + } + } + + return { + dictionaryMap, + setDictionaryMap, + getDictionary + } +}) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/modules/router.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/modules/router.js new file mode 100644 index 000000000..a4bb9a45f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/modules/router.js @@ -0,0 +1,147 @@ +import { asyncRouterHandle } from '@/utils/asyncRouter' +import { emitter } from '@/utils/bus.js' +import { asyncMenu } from '@/api/menu' +import { defineStore } from 'pinia' +import { ref,watchEffect } from 'vue' +import pathInfo from "@/pathInfo.json"; + +const notLayoutRouterArr = [] +const keepAliveRoutersArr = [] +const nameMap = {} + +const formatRouter = (routes, routeMap, parent) => { + routes && routes.forEach(item => { + item.parent = parent + item.meta.btns = item.btns + item.meta.hidden = item.hidden + if (item.meta.defaultMenu === true) { + if (!parent) { + item = { ...item, path: `/${item.path}` } + notLayoutRouterArr.push(item) + } + } + routeMap[item.name] = item + if (item.children && item.children.length > 0) { + formatRouter(item.children, routeMap, item) + } + }) +} + +const KeepAliveFilter = (routes) => { + routes && routes.forEach(item => { + // 子菜单中有 keep-alive 的,父菜单也必须 keep-alive,否则无效。这里将子菜单中有 keep-alive 的父菜单也加入。 + if ((item.children && item.children.some(ch => ch.meta.keepAlive) || item.meta.keepAlive)) { + const path = item.meta.path + keepAliveRoutersArr.push(pathInfo[path]) + nameMap[item.name] = pathInfo[path] + } + if (item.children && item.children.length > 0) { + KeepAliveFilter(item.children) + } + }) +} + +export const useRouterStore = defineStore('router', () => { + const keepAliveRouters = ref([]) + const asyncRouterFlag = ref(0) + const setKeepAliveRouters = (history) => { + const keepArrTemp = [] + history.forEach(item => { + if (nameMap[item.name]) { + keepArrTemp.push(nameMap[item.name]) + } + }) + keepAliveRouters.value = Array.from(new Set(keepArrTemp)) + } + emitter.on('setKeepAlive', setKeepAliveRouters) + + const asyncRouters = ref([]) + + const topMenu = ref([]) + + const leftMenu = ref([]) + + const menuMap = {} + + const topActive = ref("") + + + + + + const setLeftMenu = (name) => { + sessionStorage.setItem('topActive', name) + topActive.value = name + if(menuMap[name]?.children){ + leftMenu.value = menuMap[name].children + } + return menuMap[name]?.children + } + + watchEffect(()=>{ + let topActive = sessionStorage.getItem("topActive") + let firstHasChildren = '' + asyncRouters.value[0]?.children.forEach((item) => { + if (item.hidden) return; + menuMap[item.name] = item; + if (!firstHasChildren && item.children && item.children.length > 0) { + firstHasChildren = item.name + } + topMenu.value.push({...item, children: []}) + }); + + if(!menuMap[topActive]?.children && firstHasChildren){ + topActive = firstHasChildren + } + setLeftMenu(topActive) + }) + + const routeMap = ({}) + // 从后台获取动态路由 + const SetAsyncRouter = async() => { + asyncRouterFlag.value++ + const baseRouter = [{ + path: '/layout', + name: 'layout', + component: 'view/layout/index.vue', + meta: { + title: '底层layout' + }, + children: [] + }] + const asyncRouterRes = await asyncMenu() + const asyncRouter = asyncRouterRes.data.menus + asyncRouter && asyncRouter.push({ + path: 'reload', + name: 'Reload', + hidden: true, + meta: { + title: '', + closeTab: true, + }, + component: 'view/error/reload.vue' + }) + formatRouter(asyncRouter, routeMap) + baseRouter[0].children = asyncRouter + if (notLayoutRouterArr.length !== 0) { + baseRouter.push(...notLayoutRouterArr) + } + asyncRouterHandle(baseRouter) + KeepAliveFilter(asyncRouter) + asyncRouters.value = baseRouter + return true + } + + return { + topActive, + setLeftMenu, + topMenu, + leftMenu, + asyncRouters, + keepAliveRouters, + asyncRouterFlag, + SetAsyncRouter, + routeMap + } +}) + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/modules/user.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/modules/user.js new file mode 100644 index 000000000..a803b857a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/pinia/modules/user.js @@ -0,0 +1,143 @@ +import { login, getUserInfo, setSelfInfo } from '@/api/user' +import { jsonInBlacklist } from '@/api/jwt' +import router from '@/router/index' +import { ElLoading, ElMessage } from 'element-plus' +import { defineStore } from 'pinia' +import { ref, computed, watch } from 'vue' +import { useRouterStore } from './router' +import cookie from 'js-cookie' + +import {useAppStore} from "@/pinia"; + +export const useUserStore = defineStore('user', () => { + const appStore = useAppStore() + const loadingInstance = ref(null) + + const userInfo = ref({ + uuid: '', + nickName: '', + headerImg: '', + authority: {}, + }) + const token = ref(window.localStorage.getItem('token') || cookie.get('x-token') || '') + const setUserInfo = (val) => { + userInfo.value = val + if(val.originSetting){ + Object.keys(appStore.config).forEach(key => { + appStore.config[key] = val.originSetting[key] + }) + } + } + + const setToken = (val) => { + token.value = val + } + + const NeedInit = async () => { + token.value = '' + window.localStorage.removeItem('token') + await router.push({name: 'Init', replace: true}) + } + + const ResetUserInfo = (value = {}) => { + userInfo.value = { + ...userInfo.value, + ...value + } + } + /* 获取用户信息*/ + const GetUserInfo = async() => { + const res = await getUserInfo() + if (res.code === 0) { + setUserInfo(res.data.userInfo) + } + return res + } + /* 登录*/ + const LoginIn = async(loginInfo) => { + loadingInstance.value = ElLoading.service({ + fullscreen: true, + text: '登录中,请稍候...', + }) + + const res = await login(loginInfo) + + // 登陆失败,直接返回 + if (res.code !== 0) { + loadingInstance.value.close() + return false + } + + // 登陆成功,设置用户信息和权限相关信息 + setUserInfo(res.data.user) + setToken(res.data.token) + + // 初始化路由信息 + const routerStore = useRouterStore() + await routerStore.SetAsyncRouter() + const asyncRouters = routerStore.asyncRouters + + // 注册到路由表里 + asyncRouters.forEach(asyncRouter => { + router.addRoute(asyncRouter) + }) + + if (!router.hasRoute(userInfo.value.authority.defaultRouter)) { + ElMessage.error('请联系管理员进行授权') + } else { + await router.replace({ name: userInfo.value.authority.defaultRouter }) + } + + const isWin = ref(/windows/i.test(navigator.userAgent)) + if (isWin.value) { + window.localStorage.setItem('osType', 'WIN') + } else { + window.localStorage.setItem('osType', 'MAC') + } + + + // 全部操作均结束,关闭loading并返回 + loadingInstance.value.close() + return true + } + /* 登出*/ + const LoginOut = async() => { + const res = await jsonInBlacklist() + + // 登出失败 + if (res.code !== 0) { + return + } + + await ClearStorage() + + // 把路由定向到登录页,无需等待直接reload + router.push({ name: 'Login', replace: true }) + window.location.reload() + } + /* 清理数据 */ + const ClearStorage = async() => { + token.value = '' + sessionStorage.clear() + window.localStorage.removeItem('token') + cookie.remove('x-token') + localStorage.removeItem('originSetting') + } + + watch(() => token.value, () => { + window.localStorage.setItem('token', token.value) + }) + + return { + userInfo, + token, + NeedInit, + ResetUserInfo, + GetUserInfo, + LoginIn, + LoginOut, + setToken, + loadingInstance, + ClearStorage + } +}) diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/announcement/api/info.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/announcement/api/info.js new file mode 100644 index 000000000..e0b5fec7c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/announcement/api/info.js @@ -0,0 +1,110 @@ +import service from '@/utils/request' + +// @Tags Info +// @Summary 创建公告 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.Info true "创建公告" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}" +// @Router /info/createInfo [post] +export const createInfo = (data) => { + return service({ + url: '/info/createInfo', + method: 'post', + data + }) +} + +// @Tags Info +// @Summary 删除公告 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.Info true "删除公告" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /info/deleteInfo [delete] +export const deleteInfo = (params) => { + return service({ + url: '/info/deleteInfo', + method: 'delete', + params + }) +} + +// @Tags Info +// @Summary 批量删除公告 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body request.IdsReq true "批量删除公告" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}" +// @Router /info/deleteInfo [delete] +export const deleteInfoByIds = (params) => { + return service({ + url: '/info/deleteInfoByIds', + method: 'delete', + params + }) +} + +// @Tags Info +// @Summary 更新公告 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body model.Info true "更新公告" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}" +// @Router /info/updateInfo [put] +export const updateInfo = (data) => { + return service({ + url: '/info/updateInfo', + method: 'put', + data + }) +} + +// @Tags Info +// @Summary 用id查询公告 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query model.Info true "用id查询公告" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" +// @Router /info/findInfo [get] +export const findInfo = (params) => { + return service({ + url: '/info/findInfo', + method: 'get', + params + }) +} + +// @Tags Info +// @Summary 分页获取公告列表 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query request.PageInfo true "分页获取公告列表" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /info/getInfoList [get] +export const getInfoList = (params) => { + return service({ + url: '/info/getInfoList', + method: 'get', + params + }) +} +// @Tags Info +// @Summary 获取数据源 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}" +// @Router /info/findInfoDataSource [get] +export const getInfoDataSource = () => { + return service({ + url: '/info/getInfoDataSource', + method: 'get', + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/announcement/form/info.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/announcement/form/info.vue new file mode 100644 index 000000000..95a868d76 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/announcement/form/info.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/announcement/view/info.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/announcement/view/info.vue new file mode 100644 index 000000000..3643b897d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/announcement/view/info.vue @@ -0,0 +1,418 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/email/api/email.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/email/api/email.js new file mode 100644 index 000000000..590c862f4 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/email/api/email.js @@ -0,0 +1,30 @@ +import service from '@/utils/request' +// @Tags System +// @Summary 发送测试邮件 +// @Security ApiKeyAuth +// @Produce application/json +// @Success 200 {string} string "{"success":true,"data":{},"msg":"发送成功"}" +// @Router /email/emailTest [post] +export const emailTest = (data) => { + return service({ + url: '/email/emailTest', + method: 'post', + data + }) +} + +// @Tags System +// @Summary 发送邮件 +// @Security ApiKeyAuth +// @Produce application/json +// @Param data body email_response.Email true "发送邮件必须的参数" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"发送成功"}" +// @Router /email/sendEmail [post] +export const sendEmail = (data) => { + return service({ + url: '/email/sendEmail', + method: 'post', + data + }) +} + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/email/view/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/email/view/index.vue new file mode 100644 index 000000000..11d57e44f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/plugin/email/view/index.vue @@ -0,0 +1,63 @@ + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/router/index.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/router/index.js new file mode 100644 index 000000000..52d376307 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/router/index.js @@ -0,0 +1,31 @@ +import { createRouter, createWebHashHistory } from 'vue-router' + +const routes = [{ + path: '/', + redirect: '/login' +}, +{ + path: '/init', + name: 'Init', + component: () => import('@/view/init/index.vue') +}, +{ + path: '/login', + name: 'Login', + component: () => import('@/view/login/index.vue') +}, +{ + path: '/:catchAll(.*)', + meta: { + closeTab: true, + }, + component: () => import('@/view/error/index.vue') +} +] + +const router = createRouter({ + history: createWebHashHistory(), + routes, +}) + +export default router diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/element/index.scss b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/element/index.scss new file mode 100644 index 000000000..40ef0df5c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/element/index.scss @@ -0,0 +1,24 @@ +@forward 'element-plus/theme-chalk/src/common/var.scss' with ( + $colors: ( + 'white': #ffffff, + 'black': #000000, + 'primary': ( + 'base': #4d70ff, + ), + 'success': ( + 'base': #67c23a, + ), + 'warning': ( + 'base': #e6a23c, + ), + 'danger': ( + 'base': #f56c6c, + ), + 'error': ( + 'base': #f56c6c, + ), + 'info': ( + 'base': #909399, + ), + ) +); diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/element_visiable.scss b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/element_visiable.scss new file mode 100644 index 000000000..e85342c6c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/element_visiable.scss @@ -0,0 +1,137 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; +@import '@/style/main.scss'; +@import "@/style/reset"; + +.el-button { + font-weight: 400; + border-radius: 2px; +} + +.gva-pagination { + @apply flex justify-end; + .el-pagination__editor { + .el-input__inner { + @apply h-8; + } + } + + .is-active { + @apply rounded text-white; + background: var(--el-color-primary); + color: #ffffff !important; + } +} + + +.el-drawer__header{ + margin-bottom: 0 !important; + padding-top: 16px !important; + padding-bottom: 16px !important; + @apply border-0 border-b border-solid border-gray-200; +} + + +.el-form--inline { + .el-form-item { + & > .el-input, .el-cascader, .el-select, .el-date-editor, .el-autocomplete { + @apply w-52; + } + } +} + +.el-dropdown { + @apply overflow-hidden +} + + +.el-table { + tr{ + th { + @apply dark:bg-slate-900; + .cell { + @apply leading-[36px] text-gray-700 dark:text-gray-200; + } + } + } + .el-table__row { + td { + @apply dark:bg-slate-900; + .cell { + @apply leading-[32px] text-gray-600 dark:text-gray-300; + } + } + } + tr{ + th{ + &.is-leaf { + @apply dark:bg-slate-900; + } + } + + } +} + +// layout + +// table +.el-pagination { + @apply mt-8; + .btn-prev, + .btn-next { + @apply border border-solid border-gray-300 dark:border-gray-700 rounded; + } + .el-pager { + li { + @apply border border-solid border-gray-300 dark:border-gray-600 rounded text-gray-600 text-sm mx-1; + } + } +} +.el-menu{ + li{ + @apply my-1; + } +} +.el-menu--vertical{ + .el-menu-item{ + border-radius: 2px; + &.is-active{ + background-color: var(--el-color-primary) !important; + color: #fff !important; + } + } +} + + +.el-sub-menu.el-sub-menu__hide-arrow{ + height: 44px; +} + + +.el-tabs__header{ + margin: 0 0 1px !important; +} + +.el-sub-menu.is-active{ + > .el-sub-menu__title{ + color: var(--el-color-primary) !important; + } +} + +.el-sub-menu__title.el-tooltip__trigger, +.el-menu-item .el-menu-tooltip__trigger{ + justify-content: center; +} + +.el-menu--horizontal .el-menu .el-sub-menu__title{ + justify-content: flex-start; +} + +html.dark { + /* 自定义深色背景颜色 */ + --el-bg-color: rgb(30 ,41 ,59); + --el-bg-color-overlay: rgb(40 ,51 ,69); + --el-fill-color-light: rgb(15 ,23 ,42); + --el-fill-color : rgb(15 ,23 ,42); +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/iconfont.css b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/iconfont.css new file mode 100644 index 000000000..bc091a05c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/iconfont.css @@ -0,0 +1,47 @@ +@font-face { + font-family: 'gvaIcon'; + src: url('data:font/ttf;charset=utf-8;base64,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AAAAAAALABMBkAADAAEECQAAACYAAAADAAEECQABABAAPAADAAEECQACAA4AVwADAAEECQADABAAbwADAAEECQAEABAAigADAAEECQAFABYApQADAAEECQAGABAAyQADAAEECQAKAFYA5AADAAEECQALACYBaABDAHIAZQBhAHQAZQBkACAAYgB5ACAAaQBjAG8AbgBmAG8AbgB0AABDcmVhdGVkIGJ5IGljb25mb250AABpAGMAbwBuAGYAbwBuAHQAAGljb25mb250AABSAGUAZwB1AGwAYQByAABSZWd1bGFyAABpAGMAbwBuAGYAbwBuAHQAAGljb25mb250AABpAGMAbwBuAGYAbwBuAHQAAGljb25mb250AABWAGUAcgBzAGkAbwBuACAAMQAuADAAAFZlcnNpb24gMS4wAABpAGMAbwBuAGYAbwBuAHQAAGljb25mb250AABHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAABHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuAABoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAABodHRwOi8vZm9udGVsbG8uY29tAAAAAAIAAAAAAAAACgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAACwAAAAEAAgECAQMBBAEFAQYBBwEIAQkRYXJyb3ctZG91YmxlLWxlZnQSYXJyb3ctZG91YmxlLXJpZ2h0EGN1c3RvbWVyLXNlcnZpY2URZnVsbHNjcmVlbi1leHBhbmQRZnVsbHNjcmVlbi1zaHJpbmsGcHJvbXB0B3JlZnJlc2gGc2VhcmNoAAAAAf//AAIAAQAAAAwAAAAWAAAAAgABAAMACgABAAQAAAACAAAAAAAAAAEAAAAA1aQnCAAAAADeWFEjAAAAAN5YUSM=') format('truetype'); + font-weight: 600; + font-style: normal; + font-display: swap; +} +.gvaIcon { + font-family: "gvaIcon" !important; + font-size: 16px; + font-style: normal; + font-weight: 800; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + +.gvaIcon-arrow-double-left:before { + content: "\e665"; + } + +.gvaIcon-arrow-double-right:before { + content: "\e666"; +} + +.gvaIcon-fullscreen-shrink:before { + content: "\e676"; +} +.gvaIcon-customer-service:before { + content: "\e66a"; + } + +.gvaIcon-fullscreen-expand:before { + content: "\e675"; +} + +.gvaIcon-prompt:before { + content: "\e67b"; +} + +.gvaIcon-refresh:before { + content: "\e67c"; +} + +.gvaIcon-search:before { + content: "\e67d"; +} + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/main.scss b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/main.scss new file mode 100644 index 000000000..18c5dd906 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/main.scss @@ -0,0 +1,53 @@ + +@import '@/style/iconfont.css'; + +.html-grey{ + filter: grayscale(100%); +} + +.html-weakenss{ + filter: invert(80%); +} + +.gva-table-box { + @apply p-4 bg-white text-slate-700 dark:text-slate-400 dark:bg-slate-900 rounded my-2; + .el-table{ + @apply border-x border-t border-b-0 rounded border-table-border border-solid -mx-[1px]; + } +} + +.gva-btn-list { + @apply mb-3 flex items-center; +} + + +#nprogress .bar { + background: #29d !important; +} +.gva-customer-icon{ + @apply w-4 h-4; +} + +::-webkit-scrollbar { + @apply hidden; +} + + +.gva-search-box { + @apply p-4 bg-white text-slate-700 dark:text-slate-400 dark:bg-slate-900 rounded my-2; +} + +.gva-form-box { + @apply p-4 bg-white text-slate-700 dark:text-slate-400 dark:bg-slate-900 rounded my-2; +} + +.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content{ + background: var(--el-color-primary-bg) !important; +} + +.el-dropdown{ + outline: none; + *{ + outline: none; + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/reset.scss b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/reset.scss new file mode 100644 index 000000000..d70c71fec --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/style/reset.scss @@ -0,0 +1,508 @@ +/* Document + ========================================================================== */ + + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +@import '@/style/iconfont.css'; +html { + line-height: 1.15; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ +} + + +/* Sections + ========================================================================== */ + + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + + +/* Grouping content + ========================================================================== */ + + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; + /* 1 */ + height: 0; + /* 1 */ + overflow: visible; + /* 2 */ +} + + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} + + +/* Text-level semantics + ========================================================================== */ + + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; + /* 1 */ + text-decoration: underline; + /* 2 */ + text-decoration: underline dotted; + /* 2 */ +} + + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} + + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + + +/* Embedded content + ========================================================================== */ + + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + + +/* Forms + ========================================================================== */ + + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + line-height: 1.15; + /* 1 */ + margin: 0; + /* 2 */ +} + + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { + /* 1 */ + overflow: visible; +} + + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { + /* 1 */ + text-transform: none; +} + + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; + /* 1 */ + color: inherit; + /* 2 */ + display: table; + /* 1 */ + max-width: 100%; + /* 1 */ + padding: 0; + /* 3 */ + white-space: normal; + /* 1 */ +} + + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ +} + + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} + + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} + + +/* Interactive + ========================================================================== */ + + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + + +/* Misc + ========================================================================== */ + + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} + +HTML, +body, +div, +ul, +ol, +dl, +li, +dt, +dd, +p, +blockquote, +pre, +form, +fieldset, +table, +th, +td { + border: none; + font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif; + font-size: 14px; + margin: 0px; + padding: 0px; +} + +html, +body { + height: 100%; + width: 100%; +} + +address, +caption, +cite, +code, +th, +var { + font-style: normal; + font-weight: normal; +} + +a { + text-decoration: none; +} + +input::-ms-clear { + display: none; +} + +input::-ms-reveal { + display: none; +} + +input { + -webkit-appearance: none; + margin: 0; + outline: none; + padding: 0; +} + +input::-webkit-input-placeholder { + color: #ccc; +} + +input::-ms-input-placeholder { + color: #ccc; +} + +input::-moz-placeholder { + color: #ccc; +} + +input[type=submit], +input[type=button] { + cursor: pointer; +} + +button[disabled], +input[disabled] { + cursor: default; +} + +img { + border: none; +} + +ul, +ol, +li { + list-style-type: none; +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/asyncRouter.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/asyncRouter.js new file mode 100644 index 000000000..26c3df0a0 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/asyncRouter.js @@ -0,0 +1,32 @@ +const viewModules = import.meta.glob('../view/**/*.vue') +const pluginModules = import.meta.glob('../plugin/**/*.vue') + +export const asyncRouterHandle = (asyncRouter) => { + asyncRouter.forEach(item => { + if (item.component && typeof item.component === 'string') { + item.meta.path = "/src/"+item.component + if (item.component.split('/')[0] === 'view') { + item.component = dynamicImport(viewModules, item.component) + } else if (item.component.split('/')[0] === 'plugin') { + item.component = dynamicImport(pluginModules, item.component) + } + } + if (item.children) { + asyncRouterHandle(item.children) + } + }) +} + +function dynamicImport( + dynamicViewsModules, + component +) { + const keys = Object.keys(dynamicViewsModules) + const matchKeys = keys.filter((key) => { + const k = key.replace('../', '') + return k === component + }) + const matchKey = matchKeys[0] + + return dynamicViewsModules[matchKey] +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/btnAuth.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/btnAuth.js new file mode 100644 index 000000000..f94fa9bcb --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/btnAuth.js @@ -0,0 +1,6 @@ +import { useRoute } from 'vue-router' +import { reactive } from 'vue' +export const useBtnAuth = () => { + const route = useRoute() + return route.meta.btns || reactive({}) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/bus.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/bus.js new file mode 100644 index 000000000..4b673fa2f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/bus.js @@ -0,0 +1,6 @@ + +// using ES6 modules +import mitt from 'mitt' + +export const emitter = mitt() + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/closeThisPage.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/closeThisPage.js new file mode 100644 index 000000000..b2a0c051c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/closeThisPage.js @@ -0,0 +1,5 @@ +import { emitter } from '@/utils/bus.js' + +export const closeThisPage = () => { + emitter.emit('closeThisPage') +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/date.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/date.js new file mode 100644 index 000000000..6bb8570bf --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/date.js @@ -0,0 +1,30 @@ +// 对Date的扩展,将 Date 转化为指定格式的String +// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, +// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) +// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 +// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 +// eslint-disable-next-line no-extend-native +Date.prototype.Format = function(fmt) { + var o = { + 'M+': this.getMonth() + 1, // 月份 + 'd+': this.getDate(), // 日 + 'h+': this.getHours(), // 小时 + 'm+': this.getMinutes(), // 分 + 's+': this.getSeconds(), // 秒 + 'q+': Math.floor((this.getMonth() + 3) / 3), // 季度 + 'S': this.getMilliseconds() // 毫秒 + } + if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length)) } + for (var k in o) { + if (new RegExp('(' + k + ')').test(fmt)) { fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))) } + } + return fmt +} + +export function formatTimeToStr(times, pattern) { + var d = new Date(times).Format('yyyy-MM-dd hh:mm:ss') + if (pattern) { + d = new Date(times).Format(pattern) + } + return d.toLocaleString() +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/dictionary.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/dictionary.js new file mode 100644 index 000000000..440fe5e1a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/dictionary.js @@ -0,0 +1,35 @@ +import { useDictionaryStore } from '@/pinia/modules/dictionary' +import { getSysParam } from '@/api/sysParams' +// 获取字典方法 使用示例 getDict('sex').then(res) 或者 async函数下 const res = await getDict('sex') +export const getDict = async(type) => { + const dictionaryStore = useDictionaryStore() + await dictionaryStore.getDictionary(type) + return dictionaryStore.dictionaryMap[type] +} + +// 字典文字展示方法 +export const showDictLabel = ( + dict, + code, + keyCode = 'value', + valueCode = 'label' +) => { + if (!dict) { + return '' + } + const dictMap = {} + dict.forEach(item => { + if (Reflect.has(item, keyCode) && Reflect.has(item, valueCode)) { + dictMap[item[keyCode]] = item[valueCode] + } + }) + return Reflect.has(dictMap, code) ? dictMap[code] : '' +} + + +export const getParams = async (key)=>{ + const res = await getSysParam({key}) + if(res.code === 0){ + return res.data.value + } +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/doc.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/doc.js new file mode 100644 index 000000000..55a39490c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/doc.js @@ -0,0 +1,3 @@ +export const toDoc = (url) => { + window.open(url, '_blank') +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/downloadImg.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/downloadImg.js new file mode 100644 index 000000000..93fb2222d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/downloadImg.js @@ -0,0 +1,19 @@ +export const downloadImage = (imgsrc, name) => { // 下载图片地址和图片名 + var image = new Image() + image.setAttribute('crossOrigin', 'anonymous') + image.onload = function() { + var canvas = document.createElement('canvas') + canvas.width = image.width + canvas.height = image.height + var context = canvas.getContext('2d') + context.drawImage(image, 0, 0, image.width, image.height) + var url = canvas.toDataURL('image/png') // 得到图片的base64编码数据 + + var a = document.createElement('a') // 生成一个a元素 + var event = new MouseEvent('click') // 创建一个单击事件 + a.download = name || 'photo' // 设置图片名称 + a.href = url // 将生成的URL设置为a.href属性 + a.dispatchEvent(event) // 触发a的单击事件 + } + image.src = imgsrc +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/event.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/event.js new file mode 100644 index 000000000..5063d8cba --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/event.js @@ -0,0 +1,29 @@ +export function addEventListen( + target, + event, + handler, + capture = false +) { + if ( + target.addEventListener && + typeof target.addEventListener === 'function' + ) { + target.addEventListener(event, handler, capture); + } +} + +export function removeEventListen( + target, + event, + handler, + capture = false +) { + if ( + target.removeEventListener && + typeof target.removeEventListener === 'function' + ) { + target.removeEventListener(event, handler, capture); + } +} + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/fmtRouterTitle.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/fmtRouterTitle.js new file mode 100644 index 000000000..bcaeb676c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/fmtRouterTitle.js @@ -0,0 +1,13 @@ +export const fmtTitle = (title, now) => { + const reg = /\$\{(.+?)\}/ + const reg_g = /\$\{(.+?)\}/g + const result = title.match(reg_g) + if (result) { + result.forEach((item) => { + const key = item.match(reg)[1] + const value = now.params[key] || now.query[key] + title = title.replace(item, value) + }) + } + return title +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/format.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/format.js new file mode 100644 index 000000000..0cf75dc63 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/format.js @@ -0,0 +1,139 @@ +import { formatTimeToStr } from '@/utils/date' +import { getDict } from '@/utils/dictionary' +import {ref} from "vue"; + +export const formatBoolean = (bool) => { + if (bool !== null) { + return bool ? '是' : '否' + } else { + return '' + } +} +export const formatDate = (time) => { + if (time !== null && time !== '') { + var date = new Date(time) + return formatTimeToStr(date, 'yyyy-MM-dd hh:mm:ss') + } else { + return '' + } +} + +export const filterDict = (value, options) => { + const rowLabel = options && options.filter(item => item.value === value) + return rowLabel && rowLabel[0] && rowLabel[0].label +} + +export const filterDataSource = (dataSource, value) => { + if (Array.isArray(value)) { + return value.map(item => { + const rowLabel = dataSource && dataSource.find(i => i.value === item) + return rowLabel?.label + }) + } + const rowLabel = dataSource && dataSource.find(item => item.value === value) + return rowLabel?.label +} + +export const getDictFunc = async(type) => { + const dicts = await getDict(type) + return dicts +} + +const path = import.meta.env.VITE_BASE_PATH + ':' + import.meta.env.VITE_SERVER_PORT + '/' +export const ReturnArrImg = (arr) => { + const imgArr = [] + if (arr instanceof Array) { // 如果是数组类型 + for (const arrKey in arr) { + if (arr[arrKey].slice(0, 4) !== 'http') { + imgArr.push(path + arr[arrKey]) + } else { + imgArr.push(arr[arrKey]) + } + } + } else { // 如果不是数组类型 + if (arr.slice(0, 4) !== 'http') { + imgArr.push(path + arr) + } else { + imgArr.push(arr) + } + } + return imgArr +} + +export const returnArrImg = ReturnArrImg + +export const onDownloadFile = (url) => { + window.open(path + url) +} +const colorToHex = u=>{ + let e = u.replace("#", "").match(/../g); + for (let t = 0; t < 3; t++) + e[t] = parseInt(e[t], 16); + return e +} + +const hexToColor = (u,e,t)=>{ + let a = [u.toString(16), e.toString(16), t.toString(16)]; + for (let n = 0; n < 3; n++) + a[n].length === 1 && (a[n] = `0${a[n]}`); + return `#${a.join("")}` +} +const generateAllColors = (u,e)=> { + let t = colorToHex(u); + const target = [10, 10, 30]; + for (let a = 0; a < 3; a++) + t[a] = Math.floor(t[a] * (1 - e) + target[a] * e); + return hexToColor(t[0], t[1], t[2]) +} + +const generateAllLightColors = (u, e) => { + let t = colorToHex(u); + const target = [240, 248, 255]; // RGB for blue white color + for (let a = 0; a < 3; a++) + t[a] = Math.floor(t[a] * (1 - e) + target[a] * e); + return hexToColor(t[0], t[1], t[2]); +} + + +function addOpacityToColor(u, opacity) { + let t = colorToHex(u); + return `rgba(${t[0]}, ${t[1]}, ${ t[2]}, ${opacity})`; +} + + +export const setBodyPrimaryColor = (primaryColor, darkMode) =>{ + + let fmtColorFunc = generateAllColors + if (darkMode === 'light') { + fmtColorFunc = generateAllLightColors + } + + document.documentElement.style.setProperty('--el-color-primary', primaryColor) + document.documentElement.style.setProperty('--el-color-primary-bg', addOpacityToColor(primaryColor, 0.4)) + for (let times = 1; times <= 2; times++) { + document.documentElement.style.setProperty(`--el-color-primary-dark-${times}`, fmtColorFunc(primaryColor, times / 10)) + } + for (let times = 1; times <= 10; times++) { + document.documentElement.style.setProperty(`--el-color-primary-light-${times}`, fmtColorFunc(primaryColor, times / 10)) + } + document.documentElement.style.setProperty(`--el-menu-hover-bg-color`, addOpacityToColor(primaryColor, 0.2)) +} + + +const baseUrl = ref(import.meta.env.VITE_BASE_API) + +export const getBaseUrl = () => { + return baseUrl.value === "/" ? "" : baseUrl.value +} + +export const CreateUUID = () => { + let d = new Date().getTime() + if (window.performance && typeof window.performance.now === 'function') { + d += performance.now() + } + return '00000000-0000-0000-0000-000000000000'.replace(/0/g, (c) => { + const r = (d + Math.random() * 16) % 16 | 0 // d是随机种子 + d = Math.floor(d / 16) + return (c === '0' ? r : (r & 0x3 | 0x8)).toString(16) + }) +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/image.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/image.js new file mode 100644 index 000000000..9a929588c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/image.js @@ -0,0 +1,113 @@ +export default class ImageCompress { + constructor(file, fileSize, maxWH = 1920) { + this.file = file + this.fileSize = fileSize + this.maxWH = maxWH // 最大长宽 + } + + compress() { + // 压缩 + const fileType = this.file.type + const fileSize = this.file.size / 1024 + return new Promise(resolve => { + const reader = new FileReader() + reader.readAsDataURL(this.file) + reader.onload = () => { + const canvas = document.createElement('canvas') + const img = document.createElement('img') + img.src = reader.result + img.onload = () => { + const ctx = canvas.getContext('2d') + const _dWH = this.dWH(img.width, img.height, this.maxWH) + canvas.width = _dWH.width + canvas.height = _dWH.height + + // 清空后, 重写画布 + ctx.clearRect(0, 0, canvas.width, canvas.height) + ctx.drawImage(img, 0, 0, canvas.width, canvas.height) + + const newImgData = canvas.toDataURL(fileType, 0.90) + + // 压缩宽高后的图像大小 + const newImgSize = this.fileSizeKB(newImgData) + + if (newImgSize > this.fileSize) { + console.log('图片尺寸太大!' + fileSize + ' >> ' + newImgSize) + } + + const blob = this.dataURLtoBlob(newImgData, fileType) + const nfile = new File([blob], this.file.name) + resolve(nfile) + } + } + }) + } + + /** + * 长宽等比缩小 + * 图像的一边(长或宽)为最大目标值 + */ + dWH(srcW, srcH, dMax) { + const defaults = { + width: srcW, + height: srcH + } + if (Math.max(srcW, srcH) > dMax) { + if (srcW > srcH) { + defaults.width = dMax + defaults.height = Math.round(srcH * (dMax / srcW)) + return defaults + } else { + defaults.height = dMax + defaults.width = Math.round(srcW * (dMax / srcH)) + return defaults + } + } else { + return defaults + } + } + + fileSizeKB(dataURL) { + let sizeKB = 0 + sizeKB = Math.round((dataURL.split(',')[1].length * 3 / 4) / 1024) + return sizeKB + } + + /** + * 转为Blob + */ + dataURLtoBlob(dataURL, fileType) { + const byteString = atob(dataURL.split(',')[1]) + let mimeString = dataURL.split(',')[0].split(':')[1].split(';')[0] + const ab = new ArrayBuffer(byteString.length) + const ia = new Uint8Array(ab) + for (let i = 0; i < byteString.length; i++) { + ia[i] = byteString.charCodeAt(i) + } + if (fileType) { + mimeString = fileType + } + return new Blob([ab], { type: mimeString, lastModifiedDate: new Date() }) + } +} + +const path = import.meta.env.VITE_FILE_API +export const getUrl = (url) => { + if (url && url.slice(0, 4) !== 'http'){ + if (path === "/"){ + return url + } + if (url.slice(0, 1) === "/"){ + return path + url + } + return path + "/" + url + }else{ + return url + } +} + +export const isVideoExt = (url) => url.endsWith('.mp4') || url.endsWith('.mov') || url.endsWith('.webm') || url.endsWith('.ogg'); + +export const isVideoMime = (type) => type == 'video/mp4' || type == 'video/webm' || type == 'video/ogg'; + +export const isImageMime = (type) => type == 'image/jpeg' || type == 'image/png' || type == 'image/webp' || type == 'image/svg+xml'; diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/page.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/page.js new file mode 100644 index 000000000..6a3c6d843 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/page.js @@ -0,0 +1,9 @@ +import { fmtTitle } from '@/utils/fmtRouterTitle' +import config from '@/core/config' +export default function getPageTitle(pageTitle, route) { + if (pageTitle) { + const title = fmtTitle(pageTitle, route) + return `${title} - ${config.appName}` + } + return `${config.appName}` +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/request.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/request.js new file mode 100644 index 000000000..20c041e2b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/request.js @@ -0,0 +1,156 @@ +import axios from 'axios' // 引入axios +import { ElMessage, ElMessageBox } from 'element-plus' +import { useUserStore } from '@/pinia/modules/user' +import router from '@/router/index' +import { ElLoading } from 'element-plus' + +const service = axios.create({ + baseURL: import.meta.env.VITE_BASE_API, + timeout: 99999 +}) +let activeAxios = 0 +let timer +let loadingInstance +const showLoading = (option = { + target: null, +}) => { + const loadDom = document.getElementById('gva-base-load-dom') + activeAxios++ + if (timer) { + clearTimeout(timer) + } + timer = setTimeout(() => { + if (activeAxios > 0) { + if (!option.target) option.target = loadDom + loadingInstance = ElLoading.service(option) + } + }, 400) +} + +const closeLoading = () => { + activeAxios-- + if (activeAxios <= 0) { + clearTimeout(timer) + loadingInstance && loadingInstance.close() + } +} +// http request 拦截器 +service.interceptors.request.use( + config => { + if (!config.donNotShowLoading) { + showLoading(config.loadingOption) + } + const userStore = useUserStore() + config.headers = { + 'Content-Type': 'application/json', + 'x-token': userStore.token, + 'x-user-id': userStore.userInfo.ID, + ...config.headers + } + return config + }, + error => { + if (!error.config.donNotShowLoading) { + closeLoading() + } + ElMessage({ + showClose: true, + message: error, + type: 'error' + }) + return error + } +) + +// http response 拦截器 +service.interceptors.response.use( + response => { + const userStore = useUserStore() + if (!response.config.donNotShowLoading) { + closeLoading() + } + if (response.headers['new-token']) { + userStore.setToken(response.headers['new-token']) + } + if (response.data.code === 0 || response.headers.success === 'true') { + if (response.headers.msg) { + response.data.msg = decodeURI(response.headers.msg) + } + return response.data + } else { + ElMessage({ + showClose: true, + message: response.data.msg || decodeURI(response.headers.msg), + type: 'error' + }) + return response.data.msg ? response.data : response + } + }, + error => { + if (!error.config.donNotShowLoading) { + closeLoading() + } + + if (!error.response) { + ElMessageBox.confirm(` +

    检测到请求错误

    +

    ${error}

    + `, '请求报错', { + dangerouslyUseHTMLString: true, + distinguishCancelAndClose: true, + confirmButtonText: '稍后重试', + cancelButtonText: '取消' + }) + return + } + + switch (error.response.status) { + case 500: + ElMessageBox.confirm(` +

    检测到接口错误${error}

    +

    错误码 500 :此类错误内容常见于后台panic,请先查看后台日志,如果影响您正常使用可强制登出清理缓存

    + `, '接口报错', { + dangerouslyUseHTMLString: true, + distinguishCancelAndClose: true, + confirmButtonText: '清理缓存', + cancelButtonText: '取消' + }) + .then(() => { + const userStore = useUserStore() + userStore.ClearStorage() + router.push({ name: 'Login', replace: true }) + }) + break + case 404: + ElMessageBox.confirm(` +

    检测到接口错误${error}

    +

    错误码 404 :此类错误多为接口未注册(或未重启)或者请求路径(方法)与api路径(方法)不符--如果为自动化代码请检查是否存在空格

    + `, '接口报错', { + dangerouslyUseHTMLString: true, + distinguishCancelAndClose: true, + confirmButtonText: '我知道了', + cancelButtonText: '取消' + }) + break + case 401: + ElMessageBox.confirm(` +

    无效的令牌

    +

    错误码: 401 错误信息:${error}

    + `, '身份信息', { + dangerouslyUseHTMLString: true, + distinguishCancelAndClose: true, + confirmButtonText: '重新登录', + cancelButtonText: '取消' + }) + .then(() => { + const userStore = useUserStore() + userStore.ClearStorage() + router.push({ name: 'Login', replace: true }) + }) + break + } + + return error + } +) +export default service diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/stringFun.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/stringFun.js new file mode 100644 index 000000000..eac417911 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/utils/stringFun.js @@ -0,0 +1,29 @@ +/* eslint-disable */ +export const toUpperCase = (str) => { + if (str[0]) { + return str.replace(str[0], str[0].toUpperCase()) + } else { + return '' + } +} + +export const toLowerCase = (str) => { + if (str[0]) { + return str.replace(str[0], str[0].toLowerCase()) + } else { + return '' + } +} + +// 驼峰转换下划线 +export const toSQLLine = (str) => { + if (str === 'ID') return 'ID' + return str.replace(/([A-Z])/g, "_$1").toLowerCase(); +} + +// 下划线转换驼峰 +export const toHump = (name) => { + return name.replace(/\_(\w)/g, function(all, letter) { + return letter.toUpperCase(); + }); +} \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/about/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/about/index.vue new file mode 100644 index 000000000..97fc87ff7 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/about/index.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/banner.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/banner.vue new file mode 100644 index 000000000..0141f5c5f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/banner.vue @@ -0,0 +1,40 @@ + + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/card.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/card.vue new file mode 100644 index 000000000..b922fc22a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/card.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/charts-content-numbers.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/charts-content-numbers.vue new file mode 100644 index 000000000..b11564f7c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/charts-content-numbers.vue @@ -0,0 +1,183 @@ + + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/charts-people-numbers.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/charts-people-numbers.vue new file mode 100644 index 000000000..a7013f20e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/charts-people-numbers.vue @@ -0,0 +1,141 @@ + + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/charts.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/charts.vue new file mode 100644 index 000000000..3bcf5a9ed --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/charts.vue @@ -0,0 +1,58 @@ + + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/index.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/index.js new file mode 100644 index 000000000..23cc04a76 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/index.js @@ -0,0 +1,19 @@ +import GvaBanner from "./banner.vue" +import GvaCard from "./card.vue" +import GvaChart from "./charts.vue" +import GvaTable from "./table.vue" +import GvaNotice from "./notice.vue" +import GvaQuickLink from "./quickLinks.vue" +import GvaWiki from "./wiki.vue" +import GvaPluginTable from "./pluginTable.vue" + +export { + GvaBanner, + GvaCard, + GvaChart, + GvaTable, + GvaNotice, + GvaQuickLink, + GvaWiki, + GvaPluginTable +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/notice.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/notice.vue new file mode 100644 index 000000000..e9c642757 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/notice.vue @@ -0,0 +1,78 @@ + + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/pluginTable.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/pluginTable.vue new file mode 100644 index 000000000..8b02502d3 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/pluginTable.vue @@ -0,0 +1,63 @@ + + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/quickLinks.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/quickLinks.vue new file mode 100644 index 000000000..8d9cd722c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/quickLinks.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/table.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/table.vue new file mode 100644 index 000000000..109b9e8cd --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/table.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/wiki.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/wiki.vue new file mode 100644 index 000000000..026604551 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/components/wiki.vue @@ -0,0 +1,42 @@ + + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/index.vue new file mode 100644 index 000000000..7b44efe09 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/dashboard/index.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/error/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/error/index.vue new file mode 100644 index 000000000..1665acaeb --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/error/index.vue @@ -0,0 +1,28 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/error/reload.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/error/reload.vue new file mode 100644 index 000000000..2504c55f0 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/error/reload.vue @@ -0,0 +1,14 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/example/breakpoint/breakpoint.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/example/breakpoint/breakpoint.vue new file mode 100644 index 000000000..0751a471b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/example/breakpoint/breakpoint.vue @@ -0,0 +1,295 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/example/customer/customer.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/example/customer/customer.vue new file mode 100644 index 000000000..be3a25c9a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/example/customer/customer.vue @@ -0,0 +1,235 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/example/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/example/index.vue new file mode 100644 index 000000000..8b322d621 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/example/index.vue @@ -0,0 +1,22 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/example/upload/upload.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/example/upload/upload.vue new file mode 100644 index 000000000..1b08a837d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/example/upload/upload.vue @@ -0,0 +1,304 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/abnormalTransactions/abnormalTransactions.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/abnormalTransactions/abnormalTransactions.vue new file mode 100644 index 000000000..4488aa63d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/abnormalTransactions/abnormalTransactions.vue @@ -0,0 +1,443 @@ + + + + + \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/abnormalTransactions/abnormalTransactionsForm.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/abnormalTransactions/abnormalTransactionsForm.vue new file mode 100644 index 000000000..a45ae07e0 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/abnormalTransactions/abnormalTransactionsForm.vue @@ -0,0 +1,109 @@ + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/index.vue new file mode 100644 index 000000000..514ef32fb --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/index.vue @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/invoices/invoices.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/invoices/invoices.vue new file mode 100644 index 000000000..af8da0b9f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/invoices/invoices.vue @@ -0,0 +1,491 @@ + + + + + + \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/invoices/invoicesForm.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/invoices/invoicesForm.vue new file mode 100644 index 000000000..c52f25f27 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/invoices/invoicesForm.vue @@ -0,0 +1,149 @@ + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/merchant/chart.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/merchant/chart.vue new file mode 100644 index 000000000..f2b208c96 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/merchant/chart.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/merchant/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/merchant/index.vue new file mode 100644 index 000000000..91109e95c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/merchant/index.vue @@ -0,0 +1,400 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/regulator/getTx.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/regulator/getTx.vue new file mode 100644 index 000000000..ccb20c87d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/regulator/getTx.vue @@ -0,0 +1,362 @@ + + + + + + \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/regulator/keys.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/regulator/keys.vue new file mode 100644 index 000000000..f87622b3c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/regulator/keys.vue @@ -0,0 +1,447 @@ + + + + + + \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/regulator/ops.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/regulator/ops.vue new file mode 100644 index 000000000..6198e337c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/regulator/ops.vue @@ -0,0 +1,143 @@ + + + + + \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/user/chart.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/user/chart.vue new file mode 100644 index 000000000..6c778bb8d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/user/chart.vue @@ -0,0 +1,136 @@ + + + + + + \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/user/encrypted.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/user/encrypted.vue new file mode 100644 index 000000000..cc6cc038a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/user/encrypted.vue @@ -0,0 +1,612 @@ + + + + + \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/user/tx.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/user/tx.vue new file mode 100644 index 000000000..e6f4401ee --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/user/tx.vue @@ -0,0 +1,205 @@ + + + + + \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/user/wallet.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/user/wallet.vue new file mode 100644 index 000000000..aa009c155 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/hufu/user/wallet.vue @@ -0,0 +1,466 @@ + + + + + \ No newline at end of file diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/init/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/init/index.vue new file mode 100644 index 000000000..c60473110 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/init/index.vue @@ -0,0 +1,395 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/asideComponent/asyncSubmenu.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/asideComponent/asyncSubmenu.vue new file mode 100644 index 000000000..678683fa5 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/asideComponent/asyncSubmenu.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/asideComponent/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/asideComponent/index.vue new file mode 100644 index 000000000..8558655ab --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/asideComponent/index.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/asideComponent/menuItem.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/asideComponent/menuItem.vue new file mode 100644 index 000000000..b20bbfb60 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/asideComponent/menuItem.vue @@ -0,0 +1,47 @@ + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/combinationMode.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/combinationMode.vue new file mode 100644 index 000000000..f8a934188 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/combinationMode.vue @@ -0,0 +1,138 @@ + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/headMode.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/headMode.vue new file mode 100644 index 000000000..bbadb0d4b --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/headMode.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/index.vue new file mode 100644 index 000000000..637208a41 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/index.vue @@ -0,0 +1,25 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/normalMode.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/normalMode.vue new file mode 100644 index 000000000..64fefa5ea --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/aside/normalMode.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/header/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/header/index.vue new file mode 100644 index 000000000..a5d7276f8 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/header/index.vue @@ -0,0 +1,153 @@ + + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/header/tools.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/header/tools.vue new file mode 100644 index 000000000..cfae5530f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/header/tools.vue @@ -0,0 +1,181 @@ + + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/index.vue new file mode 100644 index 000000000..1f717d643 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/index.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/screenfull/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/screenfull/index.vue new file mode 100644 index 000000000..ab8da7f0a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/screenfull/index.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/search/search.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/search/search.vue new file mode 100644 index 000000000..eb9a25009 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/search/search.vue @@ -0,0 +1,104 @@ + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/setting/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/setting/index.vue new file mode 100644 index 000000000..e86237f7e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/setting/index.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/tabs/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/tabs/index.vue new file mode 100644 index 000000000..28d11a180 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/layout/tabs/index.vue @@ -0,0 +1,413 @@ + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/login/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/login/index.vue new file mode 100644 index 000000000..2108b0750 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/login/index.vue @@ -0,0 +1,379 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/person/person.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/person/person.vue new file mode 100644 index 000000000..d7d179498 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/person/person.vue @@ -0,0 +1,507 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/routerHolder.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/routerHolder.vue new file mode 100644 index 000000000..da4e5fb7c --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/routerHolder.vue @@ -0,0 +1,25 @@ + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/api/api.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/api/api.vue new file mode 100644 index 000000000..498bfcc3d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/api/api.vue @@ -0,0 +1,891 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/authority/authority.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/authority/authority.vue new file mode 100644 index 000000000..f40969ff0 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/authority/authority.vue @@ -0,0 +1,457 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/authority/components/apis.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/authority/components/apis.vue new file mode 100644 index 000000000..9815026ad --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/authority/components/apis.vue @@ -0,0 +1,173 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/authority/components/datas.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/authority/components/datas.vue new file mode 100644 index 000000000..b53a0f7ad --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/authority/components/datas.vue @@ -0,0 +1,144 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/authority/components/menus.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/authority/components/menus.vue new file mode 100644 index 000000000..973f75198 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/authority/components/menus.vue @@ -0,0 +1,248 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/dictionary/sysDictionary.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/dictionary/sysDictionary.vue new file mode 100644 index 000000000..d73c6a323 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/dictionary/sysDictionary.vue @@ -0,0 +1,215 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/dictionary/sysDictionaryDetail.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/dictionary/sysDictionaryDetail.vue new file mode 100644 index 000000000..712a97444 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/dictionary/sysDictionaryDetail.vue @@ -0,0 +1,362 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/index.vue new file mode 100644 index 000000000..d622809a7 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/index.vue @@ -0,0 +1,23 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/menu/components/components-cascader.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/menu/components/components-cascader.vue new file mode 100644 index 000000000..04b863d80 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/menu/components/components-cascader.vue @@ -0,0 +1,124 @@ + + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/menu/icon.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/menu/icon.vue new file mode 100644 index 000000000..33a747007 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/menu/icon.vue @@ -0,0 +1,1184 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/menu/menu.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/menu/menu.vue new file mode 100644 index 000000000..0c83be6ad --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/menu/menu.vue @@ -0,0 +1,808 @@ + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/operation/sysOperationRecord.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/operation/sysOperationRecord.vue new file mode 100644 index 000000000..6bf2c9cfc --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/operation/sysOperationRecord.vue @@ -0,0 +1,325 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/params/sysParams.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/params/sysParams.vue new file mode 100644 index 000000000..5b1dfba3a --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/params/sysParams.vue @@ -0,0 +1,453 @@ + + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/user/user.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/user/user.vue new file mode 100644 index 000000000..e7c62ffbe --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/superAdmin/user/user.vue @@ -0,0 +1,559 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/system/state.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/system/state.vue new file mode 100644 index 000000000..4b428333d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/system/state.vue @@ -0,0 +1,251 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoCode/component/fieldDialog.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoCode/component/fieldDialog.vue new file mode 100644 index 000000000..4a00b6890 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoCode/component/fieldDialog.vue @@ -0,0 +1,492 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoCode/component/previewCodeDialg.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoCode/component/previewCodeDialg.vue new file mode 100644 index 000000000..6d78672bc --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoCode/component/previewCodeDialg.vue @@ -0,0 +1,92 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoCode/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoCode/index.vue new file mode 100644 index 000000000..62d952f74 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoCode/index.vue @@ -0,0 +1,1454 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoCodeAdmin/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoCodeAdmin/index.vue new file mode 100644 index 000000000..b1561de62 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoCodeAdmin/index.vue @@ -0,0 +1,398 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoPkg/autoPkg.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoPkg/autoPkg.vue new file mode 100644 index 000000000..6a1f7efed --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/autoPkg/autoPkg.vue @@ -0,0 +1,254 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/exportTemplate/exportTemplate.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/exportTemplate/exportTemplate.vue new file mode 100644 index 000000000..a3cb1248f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/exportTemplate/exportTemplate.vue @@ -0,0 +1,963 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/formCreate/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/formCreate/index.vue new file mode 100644 index 000000000..75f6db8bf --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/formCreate/index.vue @@ -0,0 +1,20 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/index.vue new file mode 100644 index 000000000..e7cba00ad --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/index.vue @@ -0,0 +1,23 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/installPlugin/index.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/installPlugin/index.vue new file mode 100644 index 000000000..4aaa25efc --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/installPlugin/index.vue @@ -0,0 +1,39 @@ + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/pubPlug/pubPlug.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/pubPlug/pubPlug.vue new file mode 100644 index 000000000..dcba57be6 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/pubPlug/pubPlug.vue @@ -0,0 +1,234 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/system/system.vue b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/system/system.vue new file mode 100644 index 000000000..83b370feb --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/src/view/systemTools/system/system.vue @@ -0,0 +1,823 @@ + + + + + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/tailwind.config.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/tailwind.config.js new file mode 100644 index 000000000..0130bdd1f --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/tailwind.config.js @@ -0,0 +1,30 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + "./index.html", + "./src/**/*.{vue,js,ts,jsx,tsx}", + ], + important: true, + theme: { + extend: { + backgroundColor: { + "main": "#F5F5F5", + }, + textColor: { + "active": "var(--el-color-primary)", + }, + boxShadowColor: { + "active": "var(--el-color-primary)", + }, + borderColor: { + "table-border": "var(--el-border-color-lighter)", + } + }, + }, + darkMode: "class", + plugins: [], + corePlugins: { + preflight: false + } +} + diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/vite.config.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/vite.config.js new file mode 100644 index 000000000..6767844d0 --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/vite.config.js @@ -0,0 +1,103 @@ +import legacyPlugin from '@vitejs/plugin-legacy' +import { viteLogo } from './src/core/config' +import Banner from 'vite-plugin-banner' +import * as path from 'path' +import * as dotenv from 'dotenv' +import * as fs from 'fs' +import vuePlugin from '@vitejs/plugin-vue' +import vueDevTools from 'vite-plugin-vue-devtools' +import VueFilePathPlugin from './vitePlugin/componentName/index.js' +import { svgBuilder } from 'vite-auto-import-svg' +import { AddSecret } from './vitePlugin/secret' +// @see https://cn.vitejs.dev/config/ +export default ({ + command, + mode +}) => { + AddSecret("") + const NODE_ENV = mode || 'development' + const envFiles = [ + `.env.${NODE_ENV}` + ] + for (const file of envFiles) { + const envConfig = dotenv.parse(fs.readFileSync(file)) + for (const k in envConfig) { + process.env[k] = envConfig[k] + } + } + + viteLogo(process.env) + + const timestamp = Date.parse(new Date()) + + const optimizeDeps = {} + + const alias = { + '@': path.resolve(__dirname, './src'), + 'vue$': 'vue/dist/vue.runtime.esm-bundler.js', + } + + const esbuild = {} + + const rollupOptions = { + output: { + entryFileNames: 'assets/087AC4D233B64EB0[name].[hash].js', + chunkFileNames: 'assets/087AC4D233B64EB0[name].[hash].js', + assetFileNames: 'assets/087AC4D233B64EB0[name].[hash].[ext]', + }, + } + + const config = { + base: '/', // 编译后js导入的资源路径 + root: './', // index.html文件所在位置 + publicDir: 'public', // 静态资源文件夹 + resolve: { + alias, + }, + define: { + 'process.env': {} + }, + server: { + // 如果使用docker-compose开发模式,设置为false + open: true, + port: process.env.VITE_CLI_PORT, + proxy: { + // 把key的路径代理到target位置 + // detail: https://cli.vuejs.org/config/#devserver-proxy + [process.env.VITE_BASE_API]: { // 需要代理的路径 例如 '/api' + target: `${process.env.VITE_BASE_PATH}:${process.env.VITE_SERVER_PORT}/`, // 代理到 目标路径 + changeOrigin: true, + rewrite: path => path.replace(new RegExp('^' + process.env.VITE_BASE_API), ''), + } + }, + }, + build: { + minify: 'terser', // 是否进行压缩,boolean | 'terser' | 'esbuild',默认使用terser + manifest: false, // 是否产出manifest.json + sourcemap: false, // 是否产出sourcemap.json + outDir: 'dist', // 产出目录 + terserOptions: { + compress: { + //生产环境时移除console + drop_console: true, + drop_debugger: true, + }, + }, + rollupOptions, + }, + esbuild, + optimizeDeps, + plugins: [ + process.env.VITE_POSITION === 'open' && vueDevTools({launchEditor: process.env.VITE_EDITOR}), + legacyPlugin({ + targets: ['Android > 39', 'Chrome >= 60', 'Safari >= 10.1', 'iOS >= 10.3', 'Firefox >= 54', 'Edge >= 15'], + }), + vuePlugin(), + svgBuilder('./src/assets/icons/'), + svgBuilder('./src/plugin/'), + [Banner(`\n Build based on gin-vue-admin \n Time : ${timestamp}`)], + VueFilePathPlugin("./src/pathInfo.json") + ], + } + return config +} diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/vitePlugin/componentName/index.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/vitePlugin/componentName/index.js new file mode 100644 index 000000000..02bf1897e --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/vitePlugin/componentName/index.js @@ -0,0 +1,73 @@ +import fs from 'fs'; +import path from 'path'; +import chokidar from 'chokidar'; + +// 递归获取目录下所有的 .vue 文件 +const getAllVueFiles = (dir, fileList = []) => { + const files = fs.readdirSync(dir); + files.forEach(file => { + const filePath = path.join(dir, file); + if (fs.statSync(filePath).isDirectory()) { + getAllVueFiles(filePath, fileList); + } else if (filePath.endsWith('.vue')) { + fileList.push(filePath); + } + }); + return fileList; +} + +// 从 .vue 文件内容中提取组件名称 +const extractComponentName = (fileContent) => { + const regex = /defineOptions\(\s*{\s*name:\s*["']([^"']+)["']/; + const match = fileContent.match(regex); + return match ? match[1] : null; +} + +// Vite 插件定义 +const vueFilePathPlugin = (outputFilePath) => { + let root; + + const generatePathNameMap = () => { + const vueFiles = [ + ...getAllVueFiles(path.join(root, 'src/view')), + ...getAllVueFiles(path.join(root, 'src/plugin')) + ]; + const pathNameMap = vueFiles.reduce((acc, filePath) => { + const content = fs.readFileSync(filePath, 'utf-8'); + const componentName = extractComponentName(content); + if (componentName) { + let relativePath ="/" + path.relative(root, filePath).replace(/\\/g, '/'); + acc[relativePath] = componentName; + } + return acc; + }, {}); + const outputContent = JSON.stringify(pathNameMap, null, 2); + fs.writeFileSync(outputFilePath, outputContent); + }; + + const watchDirectoryChanges = () => { + const watchDirectories = [path.join(root, 'src/view'), path.join(root, 'src/plugin')]; + const watcher = chokidar.watch(watchDirectories, { persistent: true, ignoreInitial: true }); + watcher.on('all', (event, path) => { + console.log(`File ${path} has been ${event}`); + generatePathNameMap(); + }); + }; + + + + return { + name: 'vue-file-path-plugin', + configResolved(resolvedConfig) { + root = resolvedConfig.root; + }, + buildEnd() { + generatePathNameMap(); + if (process.env.NODE_ENV === 'development') { + watchDirectoryChanges(); + } + }, + }; +} + +export default vueFilePathPlugin diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/vitePlugin/secret/index.js b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/vitePlugin/secret/index.js new file mode 100644 index 000000000..56fd3333d --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/Projects/web/vitePlugin/secret/index.js @@ -0,0 +1,6 @@ +export function AddSecret(secret) { + if(!secret){ + secret = "" + } + global['gva-secret'] = secret; +} From eac0c377a0f44fb8146352faaaffc05f4a52719d Mon Sep 17 00:00:00 2001 From: Scrapy <108579110+scrapyyy@users.noreply.github.com> Date: Sun, 8 Dec 2024 14:44:22 +0800 Subject: [PATCH 2/3] Create README.md --- .../Digital_Hufu/README.md | 154 ++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/README.md diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/README.md b/2024-shenzhen-FinTechathon/Digital_Hufu/README.md new file mode 100644 index 000000000..881db3aec --- /dev/null +++ b/2024-shenzhen-FinTechathon/Digital_Hufu/README.md @@ -0,0 +1,154 @@ +# 数字虎符:央行数字货币场景下的隐私保护系统 + +## 项目背景 + +移动支付正在成为支付领域的新常态,但随着技术更迭,移动支付的也在面临着新的挑战: + +### 挑战1:对移动支付的隐私与安全担忧 + +数据显示,65.9%的用户在使用移动支付时担心存在安全隐患。在移动支付时遭遇安全问题的用户中,59.2%的用户遭遇个人信息泄露问题。为此,我们提出了以下构想: + +1. **用户与政府之间引入技术缓冲层**:通过混币代理和评审团机制,建立了一个技术性的“缓冲层”,在用户和政府之间增加了隐私保护的屏障 +2. **隐私保护机制**:交易信息经过加密、混币和脱敏处理,交易对象和第三方平台均无法直接获取用户交易信息,即使是监管机构也需要经过严格的流程和多方授权才能访问具体交易数据 +3. **透明监管流程**:利用区块链和智能合约记录监管机构的密钥申请和评审过程,增加了流程的透明度和可信度,能有效地防止滥用权力 +4. **平衡隐私与监管**:在保护用户正常交易隐私的同时,仍然满足了监管机构对异常交易的监控和必要的审计,这样的监管和可溯源性也是对用户交易的保护,能有效遏制电子诈骗、盗刷等问题 + +### 挑战2:移动支付平台(支付宝、微信支付)的市场竞争 + +数字人民币正面临这现有移动支付平台的竞争:从线上渗透率来看,我国线下场景移动支付用户使用产品渗透率前三的是支付宝、微信、云闪付;此外数字人民币渗透率提高最高,2023年数字人民币渗透率达到了11.9%。 + +调查数据显示,没有用过数字人民币但猜测其体验感和支付宝、微信支付差不多的被调查者几乎占一半。只有11.59%的被调查者使用过数字人民币,其中认为“支付宝、微信支付更好用”的人有40.98%。然而,超七成被调查者表示,在使用支付宝微信支付时有隐私方面的顾虑。 + +因此,隐私保护、小额钱款的追踪问题将成为本项目市场竞争优势的来源:我们将使用先进的隐私保护机制为用户提供更高的交易匿名性和隐私保护,同时,利用区块链的不可篡改特性结合数字人民币的法定货币特性,实现交易的追踪与溯源。这些功能是当前主流移动支付平台(如支付宝和微信支付)所缺乏的。 + +## 项目介绍 + +### 项目结构 + +我们的项目旨在通过混币服务和监管模块,在保护用户交易隐私的同时,满足监管机构的合规要求。核心思想是切断交易发送者与接收者之间的直接关联,防止交易被追踪,同时在必要时能够恢复交易链条,协助监管机构进行调查和审计。 + +具体的架构如下图所示:![](imgs\project_structure.png) + +### 核心模块 + +我们的项目主要包括以下两个核心模块: + +- **隐私保护模块**:通过混币支付代理服务,切断发送者与接收者之间的直接链接,防止外部实体追踪交易路径;同时运用密码学,密态存储交易信息,保障用户的交易隐私 +- **监管模块**:由混币代理初步判脱敏后的信息,对于可疑交易,将送至监管部门进一步审查。当检测到违规或可疑活动时,监管部门可调用智能合约向评审团请求相应的密钥,恢复交易链条,进行调查和审计。 + +### 项目流程 + +本项目的主要流程如下图所示,主要包含用户端、隐私保护端和监管端:![](imgs/project_pipeline.png) + +其中: + +隐私保护端主要包括**交易数据混洗+密态存储**: + +1. 交易加密发送:用户将交易信息加密后,发送给混币代理 + +2. 交易解密处理:混币代理在可信执行环境(TEE)中将交易解密,确保解密过程的安全性和数据的完整性 + +3. 交易混洗提交:混币代理将多个交易进行混洗处理,打乱交易的顺序和关联性,然后将混洗后的交易提交给数字人民币登记中心 + +4. 交易脱敏发送:混币代理将交易数据进行脱敏处理,去除敏感信息后,发送给监管智能体进行初步审核 + +5. 数据存储与密钥分发:混币代理将加密的交易数据存储在云平台上,并采用秘密共享方案,将密钥碎片分发给评审团成员(运行在区块链上) + +监管端主要包括**陪审团机制监管违规交易**: + +1. 违规检测: 监管智能体根据监管机构的要求,检测交易中是否存在违规或异常行为,无需访问用户的敏感信息 + +2. 异常情况报告: 当发现异常情况时,混币代理将涉嫌违规的账户信息发送给监管机构 + +3. 密钥申请流程: 监管机构通过调用智能合约,向评审团发起密钥申请,以获取解密嫌疑账户数据的权限 + +4. 评审团审核与密钥提供: 智能合约记录密钥申请请求,评审团成员独立评估申请的合法性。如果通过,他们将各自持有的密钥碎片发送给监管机构,同时在区块链上记录整个过程 + +5. 数据解密与调查: 监管机构收集到足够的密钥碎片后,合成完整的密钥,从云平台中调取并解密嫌疑账户的交易数据,进行深入调查和审计 + +### 项目技术 + +#### 混币技术 + +- **基本原理**:混币技术是一种通过将多个用户的加密货币交易混合,从而隐藏交易来源和去向的隐私保护技术。为了增强加密货币交易的不可链接性,通过将多个用户的资金混合在一起,模糊资金的来源和去向,提高交易的匿名性。这种服务可以有效切断发送方与接收方之间的联系,使得外部观察者难以追踪特定交易的发起者、接收者和金额。 + +- **常见的混币服务** + + - 中心化混币:需要第三方服务商提供混币服务,混币过程由第三方服务执行。常见的有Mixcoin、Blindcoin等。 + - 去中心化混币:利用用户约定的多方协议实现混币,解决了中心化混币第三方泄露隐私的风险。常见的有conjoin、coinshuffle、Tornado等。 + +- **技术应用**:本项目使用类似于tornado cash的混币服务(基于以太坊区块链的去中心化硬币混合服务),允许用户通过使用共享的资金池匿名化他们的交易。用户将加密货币存入智能合约中,智能合约将资金与其他用户的存款混合,从而打断资金源和接收地址之间的链接。 + + 以A向B转10CNY为例展示混币步骤:![](imgs/coin_shuffle.png) + + 1. 用户A向混币发送交易请求,交易内容为A向B转10CNY + + 2. 用户A将10CNY转给混币代理 + + 3. 混币代理随机将10CNY分成k份,转给B,其中每份金额随机 + +#### 秘密分享 + +- **基本原理**:秘密分享是一种密码学技术,将敏感信息(例如密钥或密码)分割成多个部分,分发给多个参与者,以确保只有某些预定数量的参与者能够重新组合并恢复秘密,而单独或不足数量的参与者无法获取任何有用的信息。 + +- **技术实现:基于拉格朗日插值的Shamir算法** + + Shamir秘密共享的核心是拉格朗日插值。对于给定的$k$个点$(x_1,y_1),(x_2,y_2),\cdots,(x_k,y_k)$,拉格朗日插值法能够计算出通过这些点的多项式。 + + 利用该方法给出的$k$阶多项式形式如下: + $ + L(x)=\sum_{i = 1}^{k} y_i l_i (x) + $ + + 为了让该多项式在$x = x_i$时取值为$y_i$,需要保证: + $ + l_i (x)=\begin{cases} + 1, & x = x_i\\ + 0, & x\neq x_i + \end{cases} + $ + + 因此可以构造$l_i (x)$如下: + $ + l_i (x)=\prod_{j = 1,j\neq i}^{k} \frac{(x - x_j)}{(x_i - x_j)} + $ + + 假设要共享的秘密为$M$,取$r - 1$个随机数$d_1,d_2,\cdots,d_{r - 1}$,构造一个$r - 1$次一元多项式: + $ + w(x)=M + d_1 x + d_2 x^2+\cdots + d_{r - 1} x^{r - 1} + $ + + 计算$D_1 = w(1),\cdots,D_i = w(i),\cdots,D_n = w(n)$,将计算的$n$个子秘密$(i,w_i)$分别分发给$n$个秘密共享的参与方。那么只要其中$k$方合作,即可唯一确定该拉格朗日多项式$L(x)$,并可以简单地求出$M = w(0)$。 + + 在实际应用中,该多项式可以被定义在素域$F_p$上,其中多项式的每一个系数是从素域中随机选取的非零且不等元素。 + + 假设一位攻击者拥有$r - 1$部分数据,并且: + $ + D = L(0)=\sum_{i = 1}^{r} D_i l_i (0),\text{ where } x_i = i + $ + + 因此: + $ + D_r l_r (0)=D-\sum_{i = 1}^{r - 1} D_i l_i (0),\text{ where } l_r (0)=\prod_{j = 1}^{r - 1} \frac{(0 - x_j)}{(r - x_j)} + $ + +- **技术应用** + - 对用户密钥进行分片,分发给评审团成员 + - 密钥碎片同样使用监管者的公钥加密保存 + - 监管机构收到预警后,向评审团发送证据,请求密钥碎片 + - 评审团对证据进行验证,验证成功后调用智能合约发送碎片 + - 监管机构对碎片解密,收到足够的数量的碎片后合成完整密钥 + - 监管机构使用完整密钥对加密信息解谜,获得完整的交易信息 + +#### 可信执行环境TEE + +- **基本原理**:(以下内容引自:[隐私计算技术解读:可信执行环境(TEE)概要及应用 - 知乎](https://zhuanlan.zhihu.com/p/480621560)) + + - **富执行环境(Rich Execution Environment,REE)** 指的是操作系统运行时的环境中,可以运行如 Android、IOS 等通用的 OS(Opreating System)。 + - **可信执行环境(Trusted Execution Environment,TEE)**是一种具有运算和储存功能,能提供安全性和完整性保护的独立处理环境。其基本思想是:在硬件中为敏感数据单独分配一块隔离的内存,所有敏感数据的计算均在这块内存中进行,并且除了经过授权的接口外,硬件中的其他部分不能访问这块隔离的内存中的信息。以此来实现敏感数据的隐私计算。 + - REE 是一个容易受到攻击的开放环境,如敏感数据的窃取、移动支付盗用等等。而 TEE 是中央处理器上的一个安全区域,能够保证敏感数据在隔离和可信的环境内被处理,从而免受来自 REE 中的软件攻击。 + - 此外,与其他的安全执行环境相比,TEE 可以端到端地保护 TA(Trusted Application)的完整性和机密性,能够提供更强的处理能力和更大的内存空间。在下图这一典型的可信执行环境架构中,TEE 内部为 REE 中的软件提供了接口,使得 REE 中的软件可以调用 TEE 对数据进行处理,但不会泄露敏感数据。 + + TEE与REE的模式如下图所示:![](imgs/TEE_REE.png) + +- **技术应用**:TEE主要用于为混币操作提供一个安全的操作和计算环境。在混币操作时,TEE 会利用硬件创建出一个隔离且安全的执行环境,交易数据的解密、混洗以及重新加密等步骤都在这个安全区域内完成,外部软件无法干涉和窃取。从而在硬件层面保障数据的保密性和完整性,进而有效保护交易隐私。![](imgs/TEE.png) From 19c75907e13c1b96e2e332a4fe75e417225458e2 Mon Sep 17 00:00:00 2001 From: Scrapy <108579110+scrapyyy@users.noreply.github.com> Date: Sun, 8 Dec 2024 14:45:09 +0800 Subject: [PATCH 3/3] Add files via upload --- .../Digital_Hufu/imgs/TEE.png | Bin 0 -> 59267 bytes .../Digital_Hufu/imgs/TEE_REE.png | Bin 0 -> 170773 bytes .../Digital_Hufu/imgs/coin_shuffle.png | Bin 0 -> 273028 bytes .../Digital_Hufu/imgs/project_pipeline.png | Bin 0 -> 1273249 bytes .../Digital_Hufu/imgs/project_structure.png | Bin 0 -> 112901 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/imgs/TEE.png create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/imgs/TEE_REE.png create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/imgs/coin_shuffle.png create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/imgs/project_pipeline.png create mode 100644 2024-shenzhen-FinTechathon/Digital_Hufu/imgs/project_structure.png diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/imgs/TEE.png b/2024-shenzhen-FinTechathon/Digital_Hufu/imgs/TEE.png new file mode 100644 index 0000000000000000000000000000000000000000..29c238c48ba93b6be58abd6fb794f82b99342a47 GIT binary patch literal 59267 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 Ur!0r|O$H$FboFyt=akR{0JZ&7!~g&Q literal 0 HcmV?d00001 diff --git a/2024-shenzhen-FinTechathon/Digital_Hufu/imgs/TEE_REE.png b/2024-shenzhen-FinTechathon/Digital_Hufu/imgs/TEE_REE.png new file mode 100644 index 0000000000000000000000000000000000000000..ffe74ffff9a83a2b089ac71a51b6e8f8e114c141 GIT binary patch literal 170773 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

    CwM=?-7Tv}>#V;=2-}4D%*V5X& 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 z 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

    MCziT7w8a6#>Dgs{igy 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

    i;(pu>E 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

    j*Vk{hNj$RGvbwoIw`z#l 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 ^+yfjT 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

    KGOU3!>;aOd1?bM!_A_r@F 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 z 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�|AOeT<0sOClae>}(?_{V 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%0DJ{J`>zsG{ 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 ThAkREpo&opC@ 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

    hdavX<`E(}T&Gh4sYDMGCpF`T59a~P{ayD=0 zByKFH-O1D99<9$R7KU|;Z~dBRx8e94BRRXG&bZ7KN)g|7=mmg%a|9AaF+*)w^y1;3 zDsL=r;5*);E7#R`mYUzvur0?PHq~5+W@f^`d6LmlO$k4I6(fXh5)U&kU9~VDxD-BB zQPv<6U;V#aOjWH~`kuGghO*qDdMUF^Pq; zKAdIJ_`eJd?t<`i4(@x*08g99^yK@Qmk436r9Cr z3$s?zvYOk9>DgF*!CyopwH>l@F!HOf_mzK}ub>9B`Dw)MD5zHE!FhBXa;8C!PPn|L zoVlNhs^<^*&+Z8ylA(kYKxq?#PopC1U|-Ldwga;a|I4DDdME}7@8)uXlBE*>lq|0e z>Th;alfQ?^aT197o@t$5g%pme{+A6x9rZbY{_l@_vfdsU-4caLln>txx5P~!o!Q}7 zV;A(#{(#XPjCoZOlo53@%}(O7kK~Zk_|)qU(x%<{7$vll%zJ5;bYpbmngao{hi@Q9 zk+0k^Dgc$voX#A8(!ggk+rm+xf?xnKi>e40E{uHd#os_+6a=0twY>;_rG*D{ zzA!?V&uj2bMz|9)jroQv!1O^Ep=Y2BmH>1y)#%^ zFiJpGLpUPR4!qEKzi(@KH0jKtE9(I$(D1^*UGLI=jaYe$$b*ihGdpzj{q4Z!EztVB zy0ARH`9S*que+(`!N0PZH|t;5uQ`y%L4KT=PVGFgChvC6f+3G0ojE!Xys_$ZiI*RF zfO~2k?5KBo4zS|3Umz)o3E*m#(=CyrwpFfHMptTSe-!&qiD|e$X^RtAi%bLdQT^r1L4b zpBiy_ppc;Uf_TR1GR<3*U^4|aI$fOJBhlzP#*@jZ$@+6(bl}1OSqk$_!^e=kAfomM z`nL5uAAMYfpT#}h{P?>VAtaC3SUqvQoSGnDWG-sFuO-9^+CE60$I$x4w9qd=m) zx!H@JHnS0{V`XH`Gb+ z5h*Lh(w3X4EpI=YQ7fSdBwjsRo{+`zOtm~0I$Lf8C#rq3L!VUaZ|m~BUjIO?)B5va zCKsS}o7a+vjFO@>pnb)bH3HEOUNk>tU{hx-wI#1;y0wl;8CH z7j#hEK@tj{mlxDS)wYn{cRiu#Xl~m zfDaY((AG6lSXIZPi{I_98kvGH4&AWI4Z-TYpL@SoeoE9d>va1d1c&cdg{+q=V!!;+ z{o(La-L0eJM1Kf3Bi9^1=U+`Y=C~chRGsP;B2T)yG16#$9pBToR2+IQPs2^f^qAR2 zoKZ}^;2!tBL33PlA+mN1lq_q6gYe${i)&<1-KT~k(-?VDXv&a!a(vy3*Ue8Wm|TX) zc8#bv>v_Jz4|#VcfXH;_IKSFGo6gr$+dtLQ2dcH=%<4zLp+J>u0cpUr*~3Hi{Ex4w zA&=(0Q0bcuG-qDCek%O)mIIMVP}LS5t9b5a(tIu1rugpf&~h-9eb8Qadw*MQyI5|O zvw10w4JKuYFu>lO&Y}@~yg`-El>{UBoxj9oZ<^j(KKSL9Rb0}hVzeT)5ZTH(f5a5h zrB{Td4$1_%mMXNjT3i!|lr8y87*-=38|NK1U9El6E?9L6jtmu?@L?bd8^2q8-2?h4 z`VGo)aad~f_}$h%|EI*$>1Uf-P>DG`94tx+EFgs~&=A^gsBF1Xf*EZZA@s2jE1(yJ z&A)aWkr)2NZwphB=c=kyX1i3VF@zv>THiz1vXeiOyM^exbH*wVIEtI#&Jr*iK8B7` zRu>>GpZg(WfnB|AOY-qm6*4%MY&s7H5l3ZqZ?Q#U#Fc=5qdN6>AlvBl%|Um^?dp7ni|!_m2+? z#f6R`*sACM2K3jr`G9)6L{Ig?9IdOhGxK*q_M*hZz8xz>em&Jq;1m7Y2vw2Q$@U9_ z(-|QZ!nSkn-OxeM`ge6;Y2*}0WmhFHUR&>~7zQ6fKnfI9UZvUCE0g*PB)9DkNz`rP zxKo#(xdDd_rk#?!#0^g(zg5#K8a2%s6TCUuWDk#2ojOYvVKP}=TL{Udp|P2z(b`My zYsxFG%`P>*;!>wmW&(&_r@_1fPybII{-xQ=8(8^**EHs#D@f0%lX!uO*FJB$8rl4`moW=0tx*F|5`I0zLVWkS z`HdWGq->m6D8Wag(u_*%_0-wL`-TFlV2Rnmw2DkFeh*KJ8o!&}kASMuv&F;r;x!NT z`K9QrQOHg-Db0F zXbmq~lgDF1`MF~r{p1$oR!-kEUnSLP(Y@Fb%P+V^_Cen@Na@k(6+W%yBV&D`3T|7Q z{&MuNhN+pMh~x5*wJmJ9i5;Ig*5J$97w-rbx)y}^^MZ71g#6+Qnk`B7T4ZhS^5Ga}X=Wp*2l7oa)+c6xLG83as2C_17 zH`~PH$3x5ilJFU}! zk~ybgBBo76%`R7tN?9m|bN6&~^e;CJrqUvn>3S3X4|p<*7f&ug4~rF>2NWxQW{dk_ z`E=h&Y+R0gP=W4g06vUEv2>R;|-PdSZVVMWav=2kg=0{lj&LklYbK z6o5LSAbJ6g@(I-=aBFl<3h#)?znV zx5B~MvOMw9!3Uk!kYYp_S^HdkJJIR4I%B@Gr!6^Jb%ys)=*4I|Hp_(xD~wMs@zR`E z=S=si&UCUUBaH9oK}9{>!sdzDbl7m-jn*J(<}_V!@v;wUek!TSC`k^q~_OlCR0OdbPs_;mL|M(;gCYuk5Wjh9fZS||I!+xW>klXlf@P`J189gGPcexCe zAh5v!ZqOu`7v9ndy(+z^`luJPv)6<>Rs{Kdjk}*DX3W1neEg7l!coG?Vw{CI{wBCE z9vK7G_N%#7S+4omR212!X7!mwwBQXGZOa(hx65vm62lJgbr#H+`hVrQt9(qX26B6K zY!)r*Tzn5jsb9d9vFnIkPG6@9%G?xEr0zKYq>=o)^d^T{L0 znV0$Syy%#OpO$bdQH~2UR{)!uINZf_Q-GWHq^MUYOFqQ$**nXNnKnz3eg(81@*S z7?v@y`k2@ym1;^vbp zvsn>xODhfdrfMS+4Zr=C|83zm&q4F$&PVDt)o9{k|!GYWHF9FjtF>~{ciW{}hBU?-# zYk>Rm#K1K{_TmMWg(>G{fFeAP3Hn0QlEH;kg#dilDJm{9{HRFGcB+sO>aai3U!25O;dEW zZQebPp%R0kCLC(C9?%#m_N5jFjst$M!}JY*errWMOB7=c2_Bd74ME;ouZP;q;RTL0MlsfTp1;D=wFuH6XjYhQz>tj@XM&iwSi{%9b* z-GBGxX^G`Csu(|7jpo!o0pZvRCA|WNDUqt1rHFT!f&P`T4M2Z<37CU`ZJ5sf>
    uZixYgr#sEzO_An@16gKtSb{pvx94NnTa^mC&0M*
    zdmEqqom$>2)bb1ns8cWE3Z|cz=+h7!D?EpS?D2bB53M_*0V-<0k6?gcWQX=~Kov#t
    zj^U8Kmau6D9oL{8?qcDiE%B{e3a&#!ltoQZC*!^RTqP=6vzIW%iKJnWi7uaSY9+PU(|=ktKFt`O}zfjF&NqT9)*8!L82y4UPcWjCH2RfKPK%5
    zZw#8Gw~hCiKb%+#%%ETPPZ+p(+yg*o|0)Ef>^`&^@n50nrLaw3n;1!w5fBrzEqXuD
    zMBO)L^M`4cG=@F9?2|P)-q$;|R|rep|NLIye-nRmi|5&yeG~$*oDdgglIQOKV5@zo
    zZhV`y6V}LfaCdZHU0r`NjSM5|M|%ADK4j-GKPEQ~#w-gir0x@+h%8neuk62!H0i)Y
    zPmSLOdpCH0{P|NV{G<2D@*(eKKknbjTZ;uVvU@ee(<7t29e_u-PsrU4kUN&Yk7!{f
    zuyU$BD5_4(a~f707G)kXSm7hB@=fO77uT$lRhK{5ziwrHW&VMo+TMp1gSi333NltTkqq$LUzFg#e$i2J
    zk$F-36p4Ro?I-_V8vwLJx&qLaav{(`Y4FTHrFaav$(#kNnu<#rA$ROQVj8KF3Oti`
    ziHvln#Grly8Wx$n*Kj+}za*A;Dl-7`m%W8Zi;l(jynVw1RuD&0=Ihr#xn-_-!5$aP
    zWq#$FUiinyNZd3y?dWB+`^l@U2W1KQ6NZn)ABe*bC9cf(cXP;p{88xivHzQi`JA+j
    zGd=*=BX4SJM+4>UgG2K))#}B`u{ff1(@RGeYeS60rD3MOZv}@(z7DvS0vwM_VK+*7
    z@HNzAADg);sX6WY-op#e*Q}8h@-?nYATmCR6Iq3vZ?S$|nTUU9`NmU0C?if5oWAmq
    z6WQutOU5TjMe>WPcKrkD0bjt0lYNKna@c%YBZXNUYvk?Nb(%VX`FW^a^z>u%XjCgl
    zIT=Am3$;?dBK~2TAmla6y!?}CEHHL0bCaNgr*30*`1~wUPqO{*vU>~}5(Y11=WH0y
    z+{RBy#bMsG{OVum^ksLIO&)9J2s3-3^%8*2me|<1)d`lG%X>|E~ISi(`
    z=*J(wylM}d
    z4)^AIetts_*yq{3UHLau@FsqZ;W#2woNcRNmbm4+BHyc*EGrV~?3=|a`Tx@utp~gB
    zyI5xoWv(Cw341eVL`>lN^S{t105c(cfSY0Toe@+$8|aF>px6HWB=|5>Xr_%tL^Ft>_@CI9!?
    z|A;!Z5|{`wL^l
    zhDOO=s@GDR`PC5kX*QbJRp}Q){N|;d0_Dxjk9+KF_dPB2aPb9aR-SPq*oPOQU?Efd
    zG=R*K`A!soFJ#>N&iF-_Pis8
    z>uplxD^xSn=-yi?-;!Jzj3C%rmFXHzmKsAxp$t0Wd=v~`60NlG9XyAYyN>1YG`|P*
    zC#fyJZwb)W&fPf4jht(EEt1S_9k?m`0zxn2g;Gkg>6-^-MQq3`pS<=X`?~W>=r*ur
    zEheu}txTDI?r6mj-uoh)$c$MXPlrr0mO5MGfnxb6xYX
    zQzuma!{jKd!9xsL;+GkmbFY&6ThotIe){mHCmxMif3~fQm;QA&>Ot%)h(iOu5y|er#n<;PF45;>oRH@d0o+s#jv-D>
    z4~pf+6BC@~Q=uju6)oW|DF@`n+z-bDNI5IyIGfP)sBPy%toxgexEUYuK*KOq5;%mm
    zm2R)*Mh*94`+etZ5NE!uB8IW=|H0d2-axHjoLI)d1NJJP-9vEfQZ>a&4Hw4X9u1Xm`&Gtuum;cEiCQ
    zTWnYUs9>}jf}LKO_cSuTh!I)R_O4NhB94u8vla}@W?=yl6lXardM!9!?NL|q>Y4(w
    z%<{9=Mi1v(o>?J-#x=Isqn8Ab|4pN?931>JBx)_7zh>o@&xC^hM1!rdXy#^Mmw@=p
    zQx;9@HyL;iech>8YBbkl>rhLGa5uc%E82iv}{O+iEfwbvZ<`WDa>OTihnKW{U6TmKa9ON|Z2^iy|LY@YW#WB`%3-bm`$AyonDk
    zxx=2hXc10UrMzCJ_4lq?yG?@eP
    z3`*;jK5{lwO}0QIa8CqZ5)&XHCQ5&qFxkQt6t*j0d}#7z__yg;O)Zj^2CP?Ob?~(p
    ztS1=`{RcKAb*RG`l@W)6bU6_NpUYnYYiXq{TUSDpP13>7{6}Q4pnb&t`VV{E2{8C!5vFE0aLsHhJC2+`O3WW
    zd#|;zcL%nR=Z0sid@-8oX5%lr9R9l{8h|Jp04dHN3sh4A9ZgYPu2G|jw?kaN|O|+M2HOcAae+r
    zi_AjFb+0jQkvXXpB9Y;kWyl=YkRdc6al*Z#i%7UKhfJBi`xxHC=lA@c-}C$a_jF&c
    z?s4`$dkuT7wbxm9ue~xK@IIn`hY#gNVvBZ7ZGW+GrahITeBeq7KN3GEQfhuH#_@II
    z>XmU0ZK4<_sVl+d!6}T10z9YeEcTeR^jjsYfiW4=c~SJPTft-ElJN-5q4CP=B>u1x
    zAu!oy;`p;YI(?$VIj$1!4I7&x^%TNYnT>ivmd305UiWo0D|
    z4m)xZ$MIuVtPAA0)xNyW#jgrIf$Vi3gkqgkQPfqfW|xQ1kJYF{)ct(k4=l)lH->
    znP^$4QHD+UK|aA0@303Zmo?48prDQ-Q&3%7c2IB~uz5RD{+{PBV<`$O9zsn=QY$D%JDkpV9|^fyvd
    zj11J_RawDsnL_vC*pWHl5xQ!qfu$giw<(zRrx9H4^TSsz?ZKXh{k?(<*YOdrj`fV@
    zd7kLx0C%xEIKkFb%(__IsdkDxLhyvwr3BB`ol`MXB%k6)y?$5W$ETE3^U
    zm5wLT4pVHrXyv2L@6Wv?`{aG=gYER-elOD_y-B!JfD6AL8pc1Vj@a|Z(orD+sB?|Y9MSww^rO#iMLq}=ii(yjQh6hJAq*=dk1OlV8&{}2x{%L^KWn>
    z7;-OVAv>9L;0!qLJta-0>`2UU&;G9LLL>zUuj`S=35%K?qh!=tP8}@uv7P)rqE0wl5C;)A
    zy%v>o92JKh&3F*Jsy5+NF=yQPv?`v2i%yCJbFfUU(a}3g*=Ik
    zSrF0!XWdWwZo|vEXiu-G5;$U>LnWnKV*)sU4Cs0{8w|z2-3hX@1n|LnVuylxA}5}1
    zyj1w6xM}kXejq<2Wz)u~Og=Nnj(_tx05?jmpsk;_=;~M0?c+i6%bj9?AB7)}h31fM
    z$4GD@IkhaMG(?jNIVt~I{5kbc3dQ+6cNjKhflHMb1s2LXY+fVY%BSb<|GgAeJ{shD
    ztr2*arJeW+Bpbz!T^a1U3IukOpS?z4D@VpX^^
    zxzGRfp@=Q$G%|)^nLR4Djhb*H5fg^|-oxs|X7Uo8Lg7#n9@D{VQFN|!S$S|&X~5ez
    z0X`b^YxsEkwB~Y_Zcpl^0l%6+F%B5VD&9@c$9lQ|*p!CYiYgjZMa{;#GH48WsA$OD2QQ%@zAd-TFQKy1W
    zi7A^L?$!xss4@?hM_&Ov>)N{0C7#`D@g6IDmIFhJ0}3n0E2`d-
    zkd7(9T*vU>*wuP)K%UHc9T_TUr^;fUzkEu)6bAwpT~nhXt^;}vO?MJjPV&t{QZ3{5
    zGRe9W1NrpGYtMm|V|{bX`UP4A#AKArPhDVTtm`-rkAPBH^yH`;*ca&wQoBEi&p4Eq
    zt{CEjV>pI?*84HX%!2%f_4hHAXVi16ysLNo=mA8-xT`(n(KF{s6?<$-@9q5_AAcPi
    zlk{qeF;(Ko`5sqk^NZjOr^1C4+e%;w!&-rw4KU=N9`?KRo++@&ZkHnHTds2X0K?%I
    z6L5bp$5ORo^N3}FFL>}gY)QHl3bntD&;?E#i_Vo^h7w)k%NJtRTHpw1u%%!7a@%4)
    z8ay=6glm+8++^^xFLySCQD4)2zY6!!?ErpZiA3*EMDnR)CU9P0S-707-GyNCuP+hk
    z+2yFSz>V)#fJNDED5KMrEp3v`qVs6*q|2XVh~=v`+%Q0yRE`&ffG;$isY>7*3%&U!
    zc}nJL>f*ox?Z{R0Xh_asJn7nLX}R?D1-(1VpTjkM4S?J9<9(A6UC;8E(_d>S@O=f5
    z5Xaj*PYBPbFHR%WX5ko$r+Me&jt9jKI`n_!3aS#jF%S+?I{%T(S)Z>v(Mt&
    zUOoRUgZF0Z_4MHe^f0^{H=ixJNbnq%e0?1Lz*X(Qv$;+OL5`frKDm~ZQ%H?Swc2ic
    z_x7>d?=+vm`|R`DI=1SZMh13_=@h%N7_%<8pJ|-g^(MiIOQ>`et$0!4tW9JDFRMxR
    z7<{e<+(!t#d8Vn$-4bmBgi3gwMKwwM`*T{*qKB_5GYK^48(VPi$k
    zUCY$tGtPkFpleWSeBcDk)Cslp!dg
    zbnjO#vxeEm@0nTKpGiZDPXm&SuGQ#y>%{y1$i*JwQozJfK~~BE=9M|g8;yLG`BmiD
    z#KfrYm)#$D3#Ys7pGd)@hqlA;?fYP5QQY@qG#&c#)
    zdd<;Fog0G!4`y;hjwzBSO;atN=>CLQzDx@|#2OX+$m|tirJJI;%BO%ya+?{1Vz{Ms
    z{`6hmy-i}zOGamy9ZL*mw`#<9EB@(f2}6=364;20kb(HfB_iELzT3Z(hamDgE1O<*
    z@3XIpA4%Yr*}vLl{>y2kNEmu?g9bK|S?u~k)XdwSmFApYiu+caN*+~w^DK0JN6rr9
    zK1$>@%R@2R&ua^fGgi%ikp?Mk-X_0Cw3En7=MMDR;R-P6Zn^^{yfUBq84@K<_w0Zt
    zqwk&@8C~G`=+3s{}jBE7{y^*BeV#kyO4SH0so5cDVz`(=61SU
    zV^mGra8%o~i$MzM5^qBTRC-N5#bOnvXPaaB@K()BUS{2kO0$PInHhgVVH(!LNDAD7
    zeQ2T62bVLgRx<0COmu!iFBXgK@3=@neb0oL;UUOz1QNF%HfgqtW(wD9(*MZH{s4%~
    z1n&YrPMOO`nCMP$d;2*hlR3+JgJE*)u-AFv+4>kQ%rVaFc(3taqZM4(2aoIB(pd$I
    z-jHJ_q@dQL#kaTb15;Bv_u#axBy!Hlk}_sRVc7x00lYC?I2QEV$gWA>1{;
    zraJPY|B?f4$R}%?{OHwm)`ZUY!<4GG_z0_J(?|*AYk#m7p^GcbYT?#R=;1ziCo(2j
    z(O(%)4$4V?cwc!NOQXh~t8ekSI_Y1Mj?xj}J^fIO>p`B0Pr(cbuO1<#yR>4vXFEn3
    zARdPeXl{(9K1pOPDadD*L`>wT7viwe1UbN4iPEaOfqOo`-l2}_4y{ug^9fr3ybR*#
    zmkJ%SoF(KtA_Q1oau?EwmklC!wb#&cW$85)UmLm=D6$_OVeKiszWhMPy>d_i6>Jog
    zXQqisdTvI|)x2kvnQ86mX~LTar@zUCvL~^!7+u}d=Q1%Ptn_Zp>;~Cz!9x?1g=L;Sdt(#``TlPeEN;R1stw;4&T3%}sgSVy
    z`HXHHBl9nxLAg4a^JhC}K?FI7*e{cA#BldoJ~`-hEyzU#d*fy5E1R>KlYo+Y%6*VN
    z-==Xa1#5XnEDkG)97tLyZ02{0Ow(1sa5tzPPFheTz(v(_PmdTc8H^1;mQJS-eog_i
    zf|Wl{dMWp*^AWp(p6SJ6V_h93k;zL%1>_~seStZEsle_yMS6ISEQF2HAx|d9nm>}p
    zXl7_i-{~LJA)eOXv`-0w>`d+bLn&Issxm?5Ymb|kLcf4lBn1`z-FOd`bk@<5Ns$k-
    z*!sgs(GrM|=nvki?0%?^-)I=>^S?GCPpCZlE|&U25;?R-=8`C!a9bSbaM2(!bcmRy
    ziS^CNWD@lk-jo$j$*`?#B2uTJ_c8|72RfR0B1rfZO)a7!xs2xFcpr4e&VcgqrTQ_R
    zk(DRs0M7}DcE~WrFw3Eo%+JV^LxYHn9QzPUwUk7DOg@EHbzUVEFhC~KR@
    z3HNd`kBKe*tE
    z)HQZD0$wLc&?7oI3$a*f$5QfWwbFzFvGeusnF=u=7$7Nc$EDf%Lv7Ey+2G4QSp&`d
    zR9{l4kv~h(g};PT4ENBhd%ps)R`FiUSGDwo{h8L0EL(L|3hw$=g^@>_X_amq!u>u`
    zwc|S!>u{eM;*WJ?Ice5_ucZ`q;cFjt%_T_)dT8DT;F|G=I5dvqUP{>M;$~?|&vTNk
    z2Q;veUD;$ByT44{bQwG04OjYoY@q+JncFAnPzt|99JQw(Dz8%~Rj~TZ65#EwR=IiB
    z6+4S}W@-4nKT#9byfh?%keCn@YB5efzq(C=MINr5=l|sQ*aU+_e+|U;=IAI(h?lf7k20
    z&htbi&Z^?0s$7?Uw7Gw{a>Q~}L%M|bJ#lSG+kw=XJ7y^I){P|^E&0gbx_vEX*sr`C
    z&gxgdpsG_hPvdLri*_2YC!cxVNy0V&3mWIGB)(
    zu+Mh$$ncZzPlD|Z-+3BFYn}G#*NBs^#<@!~Vh~7~h>ryRLuf2kxT}Dzl6acl4xCEr
    zOR{#bWO6Lx{y8)HDkDotz4n)#BytPpRhZ77^9y@xW2>7^dBMr+plcTt(f@@fjyete
    z6T|+c>o>zyZBArp9W1VO)xZ30rs}j<;j0kQZ0VRJ4cyA>SgL2?QST
    z>u!xxe*4|Ms?Y99S|G+@{gJ4WM2QS(z83jwZ(N4`!WD@T2D@r^erGUxB7yk(Vi})W
    z=`+w2Fi*W`4l>a!=~kK=-h%}@Lbgj@+FB*>*EFdBJSu)q82gIV48w(tcohO22U8v}t$CHcc_6Id-YK4OQ-w%L%(G6bE
    zn>pf-N{Rbp8J^Zd5)vnc_bJK#=F_{nGl9J1B!S#KZ@qh=d53ap0s&?$6N;b0?q|QE
    zfFZ!Xsy)8onYkdUbGi|mUo^K>wCYvEzz_gkwfttZXTR*ki+tH)c`c%1|K;Au3OzUE
    z+!jU}>zPeiNSgCwd__>gc}rWnlx?4JjE>G|EMT|W@%YU#SM#4xf|>=AYCe?~F!I
    z`E$HHB}_+quH>J`&k#V;Fr68de5?cPN?idaVb%$0xZzi>w~G~t+lB};Vm+=i43t}C
    z@a?^OkN~^t4tq)MJP;P8m-C_IWqcgndyZ!UH?ZM{Mwd_Jo74<%np?%5j^jc&Mx0sI
    zb`EPlhHaf7JvQ%!gtC~rR{FyCcTtV^23qX9(*jc3R3&b%>TGFkVt2JCdVbpdy?2kT
    z|5lOvSXt*xl5J5y1w9>Izwvx5R)}@=xw%|`1j}MWES3F>_7~B1TbMmELd?BC{LjbE
    z&`A9Z_!9ovmcPWIuBwQVD#-&4s^e|$*WXA>(5KarbsmmXAl_hVe(PkxdDknFVjps#=u<%F55aa|G*jkrhGF_S|PcUB|WeLrRRnms$_%)B5w
    z>7lF})c3sTn>?<2-p%$WUD`2sH(jRH#G~8T27e1zdr4l+(tlW|Sh@Obsjf02e+%5+A3ZsnwwzsJL=*`70C|F#^@r^Un%N#eKEe>Z(IeP-V6>EX8E
    zexzz}ZnD2V?&qz6p1Ha>>h?Ib1@f4d+(Ed(@ATYA`TNF)__;E3^B&9MwVn2y(CXr%
    z#j(Sl+hA(+5=&c&6e2bm-Tw2tqs20(E0Rf#T>~;d~yn6F5b^kMdoMsL9qx0bN0|5`^Gj
    zd9vMp6W
    zhu5;BTEMLxAgv3{vih4sze&5b952c|ZS7h<*L`d=NY-LNcxL$3g4Xgzb|BsKoc|?-
    z$VA&`(h5vna)JtX?S-8RZh`}mK)%)DE`*|jv^KM?5gYcv5g?$*0mqdXViI_Gzdn)&
    z=uayye5k*tSNC8o5elP#sZwY>1`DWh|0xfx(He*5Iw%(GLOLcqkT{2ESdZr}fVd_m
    z2JHT~qXZF*FrQ8A#&Ui$#ZYnM7$MCvlVJ(4nY;eo+LSczPNKL44tzPA(AZm09kwUN
    zsl$k3iOW^SM5PrHqtprY4^M*w`_QbmXbF&Pbto`!5#)#6aI15Pm^%yyw(O4gs_%cs
    zcr@noSuhDkw$(j+oVG^EKxMNuJP+qE}xzc5D`k;~f;)E>2o)W(tv4+OR6
    zL|%PJy<+!65h{b~vrAyZXM&UVF4Xlj<@Riut3Y^~6gIY1wul
    z&6*lwTT3yq6N5@jXRN|(v*X8jdd~l{MHkNd(@`iJP#T!l2bu@0`f=Mfx
    ze#$z5;bsG%{h%c2EOMv9%qNTE;^*3ojuX^jQ$ikmfh(#fxOsHKvJdC?a3_|n6$
    zUu^QgwE7{g{o04t(GfcabGFlQemS6i?oSG9PHnd$q2MvbETA)%-%wE#-G*)pM+-ty
    zH}hZbn*+H+iEJ)MV2>I}i&&fe)_y=!(GC;`+_+n@uoy<_=A?-Yab^NiN0z9XUCB4X
    zr7x`O8s#Q#+^SqmPWU|6_E+yf{*4Fn;haRxRjot(In*6M?0`rGB^fDPyC%^+#QQbK
    zJ!mi7^z8n-mzt(_Sd$GnMxv0m!GVKaSJbnQ>jge5-~OQ4ZohS`u@1kWQMk0M(K@JT
    zVaTH_KMK~(K4lbcsw?=I5=YgVimU0m*vQ-c5wROx+uIGul7gDJ6;EG(RK!(9C&~L6
    zLd2Yo1x^COr*518REZ+|%Y~d}NX6K){PrLF)>hM+Ya!GZfCU6rnm1t_?*JPs_|855Y3O#I4Lp{mi
    zeD(G_5RBPK62eIBL5%7f?e#j*L|57kNpQkxoy5!?47rY)Su}U24I;KTdxr14EanI5
    zFRhuEpk`0Kh#jH8(C@a`SY>7zEtdRV)Cr?$MeA8kl&iSUV`0W>S`u;HK2!BgOg^8h
    zR&~_u6Mh0a{{V|lP&OXxn6&U!l8ZfYe<|Fo{5RE&-iibp7Sa0`DpiY2P9FP+E(0{{
    za+s??V0l#7Xlk&OkiPftffAA=vZCGi%iI1z%tFE&sf$jB>5_SN$TRJ`SGnp$9OB>o
    zn9ETiG3%_b+fqdO4M-ble2BGChCBc*_+rQe<~@wOw-+-h%V2G>!_)0WBCzV1nPiD>
    zCZmt3y(Siqu%Nh=bSKFUpJohkgr@QIcPK)fuoC8ODrNm<$i-t2k@Tka0y^e#SOAPL
    zd|`TlKKay*`t)jaK$<}cI%-jJsas29Wv}ef7JhgO{~Dy!#Ez;6>D&6Wjny)}F0pt;O{@sMv1tJiwwZVJ@o`qO*
    z!tx-|Y6L)>zYK}XJi^gAZUReQn4Wl_e(VC|m&$s6eFQ3Ts0WY(9y!;9f@Vel)ZNLf
    z)qu8Q&=3d4dmDqL0lY!~L}9+#7=ACf-iy!}f}7u^kD?Euz39|2$*dK4x@xy#z@Q+U
    zGUNwnqD6Z}U}M*?3)~pa60Zy`z6rq{LTEk{(dG-7N7xHQafAkNi)RV2BO7<@m)wtZwV7m!m(-?p?Hu#Km)?_
    zXmvRB#wB>mQ*=WvmIkOOFSrGE>4F>qpolb=;Pt;l*qZb)O=4sIUs)u_9+YV(1U0(1
    z8-Y%s%-Px~cURwnonNYC2g8+jb2@*PIPCsd@N+mlhO440RdZ2zyJ@QLh^0n@BAuY_
    zrKx0s_sa|JD^xMBUDPz^dr*S{95y%_fbP}@1?m7&sjN?_RYLJs@ArO_Zg;t@k|66h
    zf6Ku-0wmc8nr>jXj{b3kHg$n>kf;a`ek+?<^w&L_<{BSf)q+tc4p#32yV5|7I}7O;
    zk_K9Y{sw-wx!Q}%G|lVc0?WkCIiXo&8ZCM?!mmNg9)3BnVGC?^r%43d;sx0Z36k;b
    zq`~se?#c|Krf}*?CklkW+zUmCCJD%4cG9
    zT8+rxG`_&HmX-m^{8_JKI+wE0O7iSSh*CS}b0w_X^9&FfEZ*Z4lRCjiauLGE+ooTa
    zK6+R5A9LV4IZ99`bo+bl!P)PL_?9BUSH{kTEMFItutwPc#Fhq72BZt$T>@1(-d^P*
    zc`D;0*yyFT;R#(;=c=2WLNtJ_UQ-8$Xf2AQ|8qaiPZxstZSHUQhqH};znLB@|aY?43B7jE!hj&ft0Ng
    zyJe-k4Kkmiy*lPtZ~`e-GP`bai|O3Qu3}T4(0C|)No+&X&ZD#9*?PyN3Oe23+hF4w
    z768rd%x{Iy#D@%AvrB*R9Nj>VjtZc%e(zH!n8esG-_86T44I6wKbZs7MRmaluYe}g
    z9BxAS(7Sp=lW=^6EhhC>#bx~LIlVvEZ1meR9+a*y;)|DLNzbqc-;89tK2JADj;Q)|
    zr)1u-LILc${|CouC*s*JGTj?37Yv9|=6%3NTp(@fh{-$%7Ntxou)5>CxPx`Jk;
    z*YZYa&Tpvb9s%Tsxio@nAVudng53%uQz3&ZQ12KC)m@f54>SzW
    z1pE$E&5k2=YSVJ#e0(CB#=DFtkU+6qR&QQtZ)ibQ&4^RVRWHHrfD(GSbR)vKQ9LR3
    zKg|Mr)7h5MBgV#mzJ4LhHb6!#(KTZNl$n7kD!-!?u_rCZBhpQh2-T&xU{WN2SwZRC
    zoWGr^r5cg5rm&(C`BwhPAI5dtJg#Txm5gz+^R}_Qjx~S2$dV?$p_re=DQ`tV}i69xbdC2kWZctx6)c@{zDc(u7H38NiPDMwUBJp
    z?t9e2gy|M()R^&Ihjty~+wp`MA^h1$WnkKPeTXDi#ed7~)jHzsBugc{z95ERk?%Te
    zOpy4tJd!GqJ@-T6Q4V9Py0zVl0yVOG3Zx=bGQ^K>Yx9Fe#Wti7Sm!nSXpN8f^&_1z
    z%w6%&SU#^&$^MwZ^9Ez$*%DDDB81Xx$qbKa;%i%DqiL{PB}#ixomkg7^=3L2P5b%V
    z#5m!{r3mge5%C=JIR!!O5n0cQOdb*WyYKLc*njsbeSQu%9nKJ_9oB!Ieg*gI*q|yA
    zO3UYxKRppFOR*tZ(*zW0Zp@rVx@5BH*hAudpS~+(HF>X;q7z(dNlNt(#NAj^o4m(Lxw{kPw9_x$g
    z<9&_@{I2TDHXEIqB=HYe&*&`M19N~1?&eZF_mo;-ZkAOLBT(f1qBq0$>l6=R;PR#T
    zBUYU$x$g*kJtii1S=w6|5&e>tCP8H1Vt5ir)dIS>Q?ERpQN`_d)n^OkPS?)&+Tb5-B-XU(8$CpW_
    z-LjoOEWt#hOWa>%J*S>;ou+xf%_3{^eY$pkN=0}ljG=F6>>AJ1?^(KsiRsoeTcKQR
    z>%%Quc!8rG^*v9lo8o^e%G58W%o4az>|2M5xI?j*+t934MjFYjIl7KAZD`a%KizR}
    z?DubhKWkK=R&P_z2>8m(fqlAeozc3Vd`-T1a-C|@MZR@%8|}ZCXV>6fh*<>YNdPHg
    z69{Pro)T){|60LhQYCWs5l80u3yV96ouaqTyi(0fn278UJ#woov+9OVftc2}OC485
    z+xG|}Uih;U{#52};0K_t5?J0*H^i-H(ynPcw=Upyd3{8>``~VD-bZhqK{ew6Lu&`V
    z<)VE4j$@ORlLRkwSmtcqu~~ou>KJXB&dNSY#-m2^S?Eot@tKIaQfZD)^eW*3Re|iQ
    zvDEogdwlR4X_>9()@{RIzQ-I)T__Q5*E8tDzoWgi_$s|NI<38hWMSXP7B=`LHRUUb
    zsdCnclHoPNYhseej5Rtok&j<5xiesHm?xUW7+{`JFDVu)P}F&=b9is*
    zpQopn)k#a)zppL${-O$e
    zvW6PMcb!uI*N*8EUk7pcU|o;Z^YLfQ;j#^zxG5|a(u===bIm(z5|g!TDrldGi5!dw
    zcs1CG#kCPrC>^BiqK4u@c97_cYW?QA6(WFKBeZ=LlxftH$|wy9>e<-=<)*o&w8*BZc4npP@pIBMW}bs@>zhKbHw&}jCGLq_<-6^WN|$B_Zo
    z_$x|QrH9I?jg)rlTkAg8rb-?=+$38B4LXX=l9OX>j;JH4qY+u*i>8CMA7%^LVau3f
    zf{0HgeG``%&P#?U_3yQd1GoZ@?QP{uWVtEC`gz7e0XfUa42z3zWQtNMm-zZ`;)BBk
    z&Geni?tDw_6JcDZcHQaPf?sJCMNV|YESB0j@wDe#i#Ek`7>1hChnhN34|HZOFWtl!
    z*VGeK-77~oUGmLW8@c6iN@}zHL}aeEf5Dx}XTKf`q!)x$HYRD2KQ*Va&
    z$d5L{B{?&)1mMo1n!I61mP%7ge}DLzCz$)EZaaOrgckAZ_dlQGKBS1u+ZTB)jk7-J+U%o(ag}0wOai+~dL7F#qtD<)+3dPN&Q#+U0H+ba$&py4YpC*tYsC
    zwA^tq^^bJ+uy_&}$kki1;;>T5=^F9>aHQo^DPydTc8s1sdm%4O+i?pUi2x~$LrUvG8YBga395|6|4xK;S$~ILf|XELd_MkE?Fr1W}Cy8>h0lVBRTP&@UopOE
    zyp!2xJ$H_6WBuP;qCnBonuL4V{RXcJpDLGp(U`5au@Y`NlOo)28aebeo7g?LcTT|}
    zBn*qhskn(w-Ff^UZ*l2Qtm%o7Nubo5X*W(4pk+{iGV#-3weu|a5Um!f!
    zV9RPZ(_tJUK;HSatt4~IN1YlHld?g4%K8eo;24QreV5jE*;SLg=jjP6f!P)Ik1}U}
    zY=aug6O{T#dP1@D;vTMrB%!_cueI`>!S2#dv9uZPiEf^Z;iwI0z^h61tPSG8n6p^?A!aGu(QX*j0Y
    zkIfdu#z5q5{i*OEs_B6f{`%lqG>WtqFVp3NO|-I3_FwAf_6%nR5iOdv(3LJH{N78<
    zx+wNxh{)drfhZqmdLVcI`TkZf(0McF20D9GlJ85mlWvP8Q#M0yy8N(7%Bo}ytNQED
    z${|qr%=Sr%!0@GUXXs}&bl7z!90;Pu4=KdZs;97kxd9=;
    zbt(a4%93mk-sCV%t%7^uUd}Te^3rYlK(HU-+gy8hKfcpHv+!Os9
    z9Yd2$A%Q68d2ky9gx9auW5~=1Xxp4B&Ncb{E3Qbl_phm4YxxJDzh>dT!{s=<>|UIT
    zas~uO(fK`&hI7|s89dgqdp$l3)av+OL1}>a8lmfIv<`41292T*;;(B{1B4#MZBt2T
    zK-6}9CIOy6dDms>0w5c7@gUoQfGHZeT?2?R1YnN_UxE4?f*)qq0?-?yuZO$;AE1Dq
    z0}TY0VqLE`1G$*HXasn}{_L(kBjp;j^~7$a%Ln>dHM^BDG+?~f@j2kH!w9gfG-^arHe?Bm&YC?U?N-Lz1;~Qp-5Agg`l2PuK^y3K
    z7y*6PMmmbneQACNYOLMLZ)B-EV&T{aK^5Bs4=
    z(|&g^ChZnfnZCtV=d^WD%<}_#ozo#{w4>f>8u=m8X!`aYQ)!?a`U}=-9Nl+cA5e(=
    zEsjnI-hx)42VX0Y=Z7spSWv{g7W~kJr~Ach02+e8?@L&kwG!yU@RoUn#YeQ+w#UG*
    zjkQPaR_wwjINhz#0sUxbK=64B4G4?SflD;Z2wor8zQD8K)_G8O95kb_{zpydyXWSJ
    z|Nox+7rg(4=-dr_Bc*14_>nJ7=C(Q<^Usw!f$jU%cnVdEIl3$930u7w`)bxS6)*@@
    zqW_OC3zYkJ4b%v=ly5+>X=s)-@!f0Oov(y?evB5&p5p^|3BON#&f7DT2`(Fj4)Gxa
    zi+11=TgHN%tLk099)AC5y0b$&9o&zy{@r_o0jCSxKpOH54nBRMjx2P-uo<#JhHq1g
    z)~;PaUV6}MHV}oo^>GrG%=Web6AK6HTtlVVtEu~GX=r}I*_EA^tS_FRcr|7<#^pa9
    z7PN_q0fKTzEqGXvFG6QI5j1^|{3Bmuocje_3MpN^E^3Uz)eSPdRCWejOf(ph9PGf@
    z-!+SBPFtdF(qApD@b>5}rRVt-{52>Jr}eCsjL{k;m{zdOfzdJgZ=v|{oUFK-)@XGZU#4e@nz+7z3R
    z^7bxjNEwj1>dssNT)XL@^ern?bQEQN$Z1R!3%*P(UvO)a)PFLf$nS?R|pe5h&OfvkN+;q_6es@5Q)
    z5fz#aq8=)7d*QV&A#yebHc8#AC?<4Js5RW(`(_K*$
    zuO06?_;ZHI#%)oq;mqj5@^qDMzcbgc6*VXf`8vJe;pvfbG07;ERe7HAmDuv#x-|W<
    z#I{I1Ig{hXuY(an5kuoER$`4rpna`VoR1yYd`H+TicW}o;W0?Q%)
    zCuxTIIafL^hDPUnZpdset3D77PCT_bh?0{uf1a>n*@Go!92`#DRR;yPi6>v`!0A7{
    zY7muksr-VR(UD@?1~rdjHO!R*!FaZn4@z-`NhbHwE54L2?)EOKGhQ`s#N8%`&Gxztfm21Aa
    z*mWtXZ#w}oI%S`t)N8bQ2n_2dQt|zyECMD*QDTU;&U^5P`Rk`*ca&^xLvuO85~T%g
    z!r>SOjajK2D>hVqE(I69Wi~qL0O9>;KXd(1zIc?aMZL=+%}vnEX%1v=s9_H5--WO_
    z@l8G$QI>bB`KBH5HAwT*E0yrqZ*R@KXC}M*;nM)81Mm(HSS!nzy|)KV_9>VB>3u4i
    zr~frbfZpGmfgeTZJ^N>TP}OCZK?u@d%cpZ4dHafSKmL25V%w8TD2wJf8cL@0k3-@H
    za%^OV``B-kAoF3>Zxl9>ok%gqd=TMCU&%Jfbm83DK}Evh=e?qGxb_D$T^2CVvWG0>
    z_D}Okr8|)zZ`I0&REo__A&6m1kgb{Q{b(%5Ww6^+Ap5ni`jpAF!{IF7EF^V=R&d_9
    zrdj3(QnBP;4|KcEr&6$>5&<%Qbr;gcINr?s$c(Rt{R(Vfy94J0ttWEbn74_7H|J=Sp1NQcys)dS-T!~(`TJQ
    z%(rt7ywfq
    zU`OZz0G3$*Pq5if%o62MEO{@CK$dBs3WQxPprW(=@$B^D21Sn5=A7!H=J;g}59`-i
    zJi8yrUvw#ty`}wQ0c`6L|Lt$IKhZF7muv0fo;+a%zP>`5>Mum!*KaMrQGBG`2h_F9
    zaw~ciw#Q^%d>}njw?v)p`E7qAQv2w|UJ7`F>`G^SbaZzudZOj|{0p#PSb@|C_kC!k9DbVTnh@H@3IhDJL)ljt7={s4mpEpH>5up)#P}ho%MRx+uwF~r%h#I
    zL=gad3wmte+bB_Fv}7a_oAq_HKffNsm-okC1y7ddd3|i$;VEu;F1H2{Jq_ieJD5njch@fc(8fFPBSr`9j8Dp(K~Cs-xrE79@!a24
    z5~7MpT{v#%6?n?aSKP$-+mFX2&&fq7JxcX`gJI+D35!CZA9Q}g=z(mP_`z|{x@rWi
    zyl|>J$-aa-OX`Yx7UPkZu_t=EP*JGSNGv(%Tgb!SElRIb
    zukFc=?!EcU{}k8X!$rq0E2e)Tv=GTlc(8J!l`FGG{pS
    zTE)e#W+-lmVzMMNIQKbfc~YpNYPF8@T5FKcbC9QY;-6EdUC?7H^Y|f&4SqaEV&iMg
    zkr+LXXFBL@Zj2(PucP6#+Vq!7*JtWeH6*)d{e21#
    z9iCDl3WvJKG5npa25%p43IrajIV~~UsVVdLwEA=bG&q>LFgLqRZ9^WwnV-lh9NU|Y*_VLm2>a^>a^Ix?{rJyE#pT(0fq7S$IIvgEJQuCC^%
    zcRWwjnBEc^+V_y?g?m##v{PnkuBW)02Z8zV{?rrMMj1_8p{iQN`mS*Kifej>i_Cbkbq=n-S6Hq$Qd
    z2cWRo{XJF(x=yW*i(5wU)KqlckiT3WFn&_u6U#oc4$K4JC*v
    zEe(8SeSr7o#zjQnwERXmiM^HCs&Unw*LvPF{mv6Y@~q%DdPEM(vw``9#CU&fx9^0G
    z#Mk`h^QJSO=F0vB?TOn=02|{^7eqXY@|2yzmheeN*%u!X
    zrMqZP4uxK--oGqVt8K*l_4}`4ooRqU)jo(Q_`&i(88oq>iUgVaIEtg4f2~`Hw?(*hJ`%e3J_V&
    zE05hcWq7vcC^^%b&D&{z;(}EoYa002!#-K~LkSCJX%tSKYqL_I#;S|%-SX8Opa%HF
    z=%qiY^4pdJ#<#RD)nbo@>NI>^57rGFO-&6&{!7)0s~1Rf3<*2uPAo$d@*W
    zp=?2{%$qMHQ(I&)S*8x#Q%kb%o|%aaf^}b=&^Ja>;+}~m4XcTpa)}ZF}
    zl0_@1GAeeIA`?XgDW8+Ht)-8ChQ9>h`hs+1v%S1+F+Qgwx29bD
    z%^H~}2X4cUeyNpzjgl-`)SZm_^U1iiE4KIQLz!2O_Mn;vOcX=%=#k#tZdZNI@{C)<
    z$dw(yd?iYNW087gF6yc+YH{)oI6jcVe}V{kRl{d7>K(3~Gbv+>5w=D)?7FY#d`|#z
    zx!2tIm&z>WH&-xTN|OEv1qOaM!pY9P47W`-`fYxr8uH=#DO1jfm{xh}B)nlnU~TKO
    zNlJb{Mn%%izTN)8+%(D&f(JSDK!@yMUO36)M^`Oo30KRS8zTf@SzG#4PFt?D%flslSazYe?lak{5B-9xyPzs=
    zs6n`SY3>qv)a1s;C+*;L{!raFpVRI=md88kyx_*_`W&~67DignyloTfBk3^QerkSH
    zP-l93e)r^wFWdgsF>7(e;X224xM{oYX9dihbg_O~d{sTrbpkDXmA8G2&Nayh8JsNr
    zAed0tb|-qyG%M$AU$%!mW}>3D=BaK~D>SmDna%nu)XBB0bke<9V+-vi;RlNEyd19=
    z=jA8?XA~UZb?e1qLCU=#(Vsz!;n7pC?sgH}-=9N-zz0VT>YJs(wF%L>gdsbpR)B@*
    zSeP2kQK{(sbB-L;P3&y$B7SW3!`8Q7ba|Yx5RN=;BK}r1a85je(RSPxf5SW#l>W^d
    z@oDPd=W*zc9tFrmVSPRxcJ7<`M0AVNzde67NTE?nw(fEoWp!V&*W>pmT6D95d6Q3^
    z$7q002h{gk2KzCCI`{J&V%DV*B80@A80a_D?C_?eYA^xcEzxLxc1pFPp}PRrnN-@t
    z5Y=}e)zCG|2W7caMby3M9BEtq?gFVvuPSFXlNjm@g_!a~l^9ivoP#7l!{xv#%=
    zB#P>mYq@ywi0lC9J*bJ9lhF6)tv}`cP(LpFE;efIQ;1)YZ?0emn>_YUaB5&;ZcEQC
    zxTrUFN^Wa67FsC8w>>F&B3E^4seN$SP)q+j(Hj!sOlb5@<;3zW1?dK#pv^4(*Bz?5Tge^Pv%;1DsyyIZ86E|Fq@xha_p76Btx_*L
    zC0h_ZuaujG-44B9`@GPc#wbpUiF|K;o95Ox6=<@rq_?_Z_qA1u>`B`ju+k4F7$3J|
    z!I`J2ttr@uBtUPof*p5==)8q^>NB@d9G;hN+!6i)PIc^*bN%Y@p6lwRNo$eq
    z$aGq1$Nc&7Yh9-jJTTrOxU|VRAtoWtbP7;~_l!;XZlycYdk0^FN`YV?yqk=EfD@L7hvUxe
    z5l8gv^|Q+uQi#o_!D$0Ac@fs?6US(2VbH?OdMc%<-jgw_>mJpUt8hxsvLGxv<;o=@
    zW_sK2n-aX^{XxS_#`f9=noVJ9x)nCx$H?nf4AS)AM{GYY&g{K!bVD;s5-ULH2yC^R
    z)s8hyEACgzbQ*<2v*@u%UwvJ4&*`nes-Pd>eu!!kIeT4UthweZr=72)sNM^AEqgqT
    z;*tN;-j~Ny`F;PANCQ$yGF9dx>O5v4qGZZgrer$KF%MD47>Y!uGCk(f$xy^Gk0G;T
    zI))A+bdF?-6B2Uw(dYZ?`@OH<>)!jif89T>*Nf*k&wln^d+q(K{a$PBwf2!?;ep(+
    zUi!kFS#3dt+*-R~Z;+~|tUmU!+{0gu*}0jH(b<>3i3~6-gph45g8{^0ueB%O)@WM-
    z<{shgJYV9gd*t@wYwYiU3Hu|xRum%N-njNH(%o+y+63nq${R1UMr|sh_WYeh(Lu;~
    z&mW}6vNzK#T=Xv?N!eC}nq16}p7-wu6ofmQwfybNiWO1@MZsG@=F7sE6c$|nxpq}k
    zP3aCjM0o#bOG7A$s7k<^Fkv_D1upV0pWUa_-d=6g@ooK}D9=NHCPLB7Gk6oD*Q_1^
    zvG?mRgg5&nFP24jbUbM||TzU|0@rMbT+M4@}@oA~)Zc!G*3
    zGMHf-LJc^aP_82C?6Jr@E~ay?;d=Bb5?mpF1?*?FITLP
    z*ZB~?M+R6-iNa`k@&U#ppN?L}tUXIXxYC}C
    zl9Us7xh~$_qdTLGn~2Qw#GK@@jUgPO5C$U-{%ZwDA}1p7K1!&exv@o-L|++R$168=
    zt>8;d*kqEZ$M~kwPB2=EFlVWius)*P@x%Rc9NgPQNB{E8daS@-QP2cN;mA>ys_bPRhcpR!0(_=$^
    zv+#{I{zV&+g~2a}_{s22?cf5JEyKetM%avk9*`$~R;pU_PL^M<-IM%NL(F6{Sblb2
    zGSZ%*?P=meWZ-)~NKeJT>r5Rl5J#f2g}NCzhm#-X8vLI6^CE!-8oRMi85c^Nb?*sN
    z@vJ%Beamor*i{PuCP8h821XE^3@&55`^pm?N_qLiz8r_d9nNYIOW8|*S$8zO#LDVe
    zX?+yZQbly&B7jOX!NGLS9MbViy;0g|^m&VtA
    z|2!{&7w!RolM62AYe9F<7G+Nrx4}vQ9%t}^zIzCM<|
    zwOn%?MxPVzq|Y|yo9lZ%Nk2h=Hg%TwfLDr5XO{f@i~hc67RA55I*@`}RS~P&xFt6B
    z@<6v|TlSZ6hB(fhI8&a6qO%+VYY@@biu9u`&Ho~c?e8EXxlZosPZn9pI1SZURM?m6
    z{?b~wV{P;K;4F)w-1iXsoms+Jb_*_L&)1hdkG%E%EkMlDP18KxQEfO?uf;pTYcIC>
    zFwnA@A~W0SdgArQ%_xFs&HY=Cau-jw?MTRkOfkY516^Ne2%;o@c`*sR(kKM-=Y(A^
    zes=d1G-u06!VpBa+)(H3aACB6A=evhr6HE|gq+No244sbsa|%80Y61yT1Gsx-DD
    z5lrgn^PBAm0-YA_c_60vJyd@NYW?W6^|n{52`k&NhC;2m(Wm?y4P9811raUW)wMmC
    zPf(&Pdyj05!3Eyu_9^ImdOHknneC%@mpw7jmbrl!RI9ZREK!8{`pPanjBEi1fKmnAh{+f?Cfi
    z(f+eY0{HDR`S$0<>MK&m$KjpMnVRhm<>gqciIW6t42v?3ISIKssJjOFvvR!21`6&~}92NC_>z^GA$;0Uc+CyRPDs;)Bz6?bK_a%Q;D*En
    zwyrFw;t&W~Bl83zqI+Ms>*GYjm7Cq)7urh-ToGUD8Fnx?ZslM6ga1$ouLClWy0pnbMvonkFgcrSnqoIsds)e7DT5@xAWS-(P8A3ub#^9
    zJ%zcZCCvn4(dXqc1JzJ_dIp8xn~jQR=>F(z8<|8CH~AKb@&L_KT%j0!1z}iQKH_Eg
    z`{$zVMF9c1GBX1^
    zDlg*o8b&Et%&OfTIB-9BSyG>@qj>7AJ~ZVeyou|D66dCUjS^dR9y{*OQN(?iUZ-nEd_0zQ`aP1=z
    zCwhI?eqF~_GE|D4Vf-=*K{F{K=zvuqpneCl+~-xvqRDHF(*3@n_vOB)%RACrQ_OyjteTg0)c^{DR!#-tmZY|#*p@(kUPfCEJZ*k8g
    zhyo%RU5W$R-0-s>;$$=rtO=+9t16}q(mWbrV4o=xD|hv~7N%_cx>^$1(gE&7+(|v8
    zc{jd+17Pj;wtGiO%aO~wK!xFt=_##IdcrYF%SJxMf1;azPC6OcZfq!OZ}UQS1lqi)
    zU=2&2NPx@3#V4Oi@5IyMhZD7CLm$uDNUaead%KJyB!F-P=766y7nUsr$vw2sW^MKq
    zeXQR?Tj*)dt(ZSjoH=*=3kTti^xTM+(Us!Zv~Z;`a&@v6n6V|jT%MWBlNRXa>ptU9
    zq9OOKB}@?4x!H;%?1BSg#7M;j`^`%=h2LRK_;h{7S-)#%^m^&W#z
    zCrHFcjt=*ieX=so^-$M)zx{OMFBW2r^EvFd;bkDWar2$v7W>b!*p^d@K>2v?a9xLV
    zx3q3ZjHhSfQsTCEyX4pMcE@Jzm7C{#)=;#Ja;BfT#QO){^T!V)$&8e6wQemFxB}g&
    zLiQh`5^{_L3cm-Aw$NV-9eC3+XQS=;2JRtI9;av$kc#08#RiYi-Lk&m=w&}m%O{P{
    z&cTgGMuPF%_BXqYP*`RO%fi>`H1Lv~4sN85QHw%|Cd}LQTU}Z`^GS2{d5>{lvqFHb
    z{a&UM06lz!q8*LXzV3Ir&&sK`kJ;!gPumvsU7u;8j*6*h|LFSKU0f3LCnR0jKltBR
    zBJwQseK9teEBY{AAn1Iv(T8s$?IV|4s*Lk=3$R*LA}4g)uYD09+U49MN?F62
    zed<(Ifz>Zl8DeMRf5~=SX#5aFV1$mk#8EAgr{wXW%V#K#QQA1JwyldYW?X+)V}F}5
    z&z1D3Jbu*gc}$lKUSM3)cc#mGO!KSnLZ-qdmkK3xWu7jx@)-WNrXcL^zzvgd$@Z$J
    z-Ih#wu^S@3Jy_EIBaoQOTFe58MYT6oG0{{k()b=TRVaRfr-KqIY$84=$h*QzJzKx8
    z*NRua{DW?(_Up}n9??y8=Q!)%7o#Qd?l&z@D$(zo>mHg~aoV4ite5W31v$!Q9~0AD
    z(fq+B0Zfzz-nZ+j(SpD>Ko)l28DOr&W9$yYX?|2Vs375brTD12ms_kYT|9x{46}19
    zQ)1OVlFcIN{<4||85Me^-y(CZ!X2L8v*7%BKg!P05e3_zyalgf)~tF(e@9p<>s^o~
    z3UENasAYu=bb`yV-mNWX7>AQO@10P&;#A+H8qzx-u_)TpqP+qR)`ghM1N~xUi_@j?
    zb=?{jV(j7VC$ay9P?gR*aUk{`GP{8EU@B3WjXIm$bk4>kz|>KCDhj<0O$d|1D@
    zMo%IhoVe}wE>>5nqcC4bHsFKoI7Df{CMVuL2JCBh;54a<_g~j)%H(4B?JSzs$?>OAWts`@s5LbJ`%=(?C(S~gtCrozetod)$Y
    zK5nb*eOpAt>DT{d-81WdWVv`F<<_YbUTKir)Z0Xr$9ZuIobc|?;Qnp3yENk3dichR
    zL#XkCc>N_6wTKAL3mD7LOxX)mM6mOizpepUrsG~V<4*&(_sE|NLuRyCnb8{LJ_3G%
    z4UnczFXw%BN4fL-^8w{4gNK7PT=sA-!&JM9f{=+q!x`G}XB>}mK2RB>yldn7bis*d
    z5?_B_$#pBk?+CB!7Oy3CWB4q&FT)O2&2`Ek-n*KWdOU@UQ|cX$L&{6_6Hi8n0OckB
    zZmy;LW40!Ff%Z<*keD0};DNzJqXk(7e|MVCTiOD1!ljs<^m`y#V6+=0E_vas91Sot
    zF(r|Uc_oV4gW$?X!&t@Jb|b4(
    zg48!P6DY{;V~gyP(Qh17+qLtyvd3|+bTZ62o>ygzjDM|@!cXBCLT=MPEpl}0@-Y$6
    z^7OxE@-{H$TJJ0UbKz;tzAw2Fjk%Gi3`D!+?c2euD!6;%N&s#hJOK!gp5n`zuweBy7kwe?CaFQg=o>$!+ojg3W)$GIP&%pCelUR0QAjVAbY
    z-!!eT<2f<(u_&M)Dip0*J~>~$_5{~+=>>30S!OxJeS0*JE@j(q(8aSIj81ql0#{*W
    zNyC{E_!F;XHJ=*gc#;Wqi$Mp?6wK2XxG_!8&RIh0$F7$u!-m6zc3U!Qp7cndt9WB>
    z)x$cmt4T=Y1qw-Fu{hH3&a0)PCC
    zDd)P@+A_S3!=A)9TVLH_6UTEEf}{t@(<|svM|k~W<=rHcWH|t+QFYD)(cF2
    zVXJxs!rAGug1u&PQ$An4bL0K97|@gj?^{<82i>lFuBZPv>wVPAdubseW+`A!T*slB
    z_lM5=jRHSWfsM|+r~owrS71*{W)AkvKc*B--AEzba=xTvmh|1L@lRVE~
    zA5f{}Q+2vycYEEVKMVJC-;m55D0KAmV8nmO^X4Q$7j!(^yUxnpydE}=TZ-FB-}DTV
    zAJ$E^IAb@!rHcEBQDDYr$Oi*sj|QeJY~a@;-wM7{n1g_qVK>ZekSx(Y$O+$qBU_nZ$2q4~fmI0EB}gihm?eAd5MHt2<%*(5g8{q5
    zMwn3?Tpy(hJQq^<2>U^;W)e@b13go_Vk0di|5GOkxf23>oJPG|O>g@9BM+HRUiB+b
    zFv9gk%Pd7tii)kq=+tP9`R`)1KmHHz`fCh6w5CfNpS|z-iW5Xxm3_YG_C{^aBMzl}
    z7K89L%PozL$3-;i(9h_Kd+b#(Yel_XWW9its@43#jmoP13niwvcP@rM&dFP{*^3`}
    znx(M0q2;M?ctqfvSMFN}hLv_&D8GlK>7^?omX8AqnGwcY%lk+z3;Qy2X;_5;d6N(!
    z;dkG%EJr8%5dA2+O8wtBh4@w>Wd(Q2gpT8(3{})3(UU_8|4Feq+X~(k_;Lh7pI1jk
    z#oo4px#8F1Y{O63$&l~d&8G3{!IkIy`k~gSC_2K{7MqUi8>8kAyy?j$Mx58VF9bLcN`_BE@B8HtX%7EetMizV)nRuh+*O;h{qiALx
    znu^~8FIVE;p(sAd`nS(@EO-w0T8
    z@LmiOe{~kR<&kyfwVjmfxgAoEYn6ihN%5VE5q~Vnd4JsaPoH(nx;MYCdm?@BR<_m3
    zX{gFx(BF^UGBMY+l*marans8vI%N<((R_ag*-yqp!-JrN5OH_L8t?
    zyUke}#RMarf1(LPxY%0%$}9!nF32po>ptT`%n|+Q(y+JqXSbY%J@$g_Ch|RjJwu|8
    zU*u`cI_77Wb02cNTtD^OdH~w&Iz-s|<=W!@xXwOT`gVZUk-&8zAk+`ND-<;U`vZ){i$BTRBU(Y`E$Zze;M
    zqV2yWfUk^F>~JRd<_)&upu7^Tel-7sz*bP?KmI?=T8vM1xN#x2*1aF
    zJRqyIr%xpK!er7hmA%WB$5{yW`En0RAd`JVVfx}9|DJC7wVth9o`B}
    z`Enlt2JQiJ@9t&?zi#gvJVxo-Gbi;mH)`&7##R;kOopQBdfU}<xMRb*78vC#bW~~ZIPj7|V6Ok^j%&-VZ}|bx
    z=x|=u)p5a>WWSR0jk4c1_jcFq*Jac5GKN~`^agR}60#@WaIgh2b^y`H`Xl}6DZmWZ
    zmR%dS+>3oAd4{^Up_l!~zgE%b4>25Yd}TV?6kqxwcF%CB-wWoB#uV4k#^DyHkTK;u
    zaO;^}M$!Uv5o-+x9eC;29^Tv`&zE}?Oetk71Yt2GC8jvTA=kcR
    zD#GSGoz;AflXDOFl9YBkBY|fef%q6RIsV0tmUrfId#Alzf9E7KP!gLA*dWvVl%c9>
    ztWmcE{;SFLVx_j8z*C5`dsv^_vyhbl8~zT+t~qVuWP(+Sg|*mlP|c?-qD^t~3U3=Q
    zkO6cXgjPSSj0l#tq3&rqeXlEH)x?wW?q@ls%PGjc)Zbn|Wg0xlDjXFzI%FmMAnHGkUv4X}hK<1xVjvy&u;Ue@x$*GTEkV5;HC}U_^BH%$(
    z{R~4R(^eWX2Kw`rVrm*v1Mvj;ju7eAWEJ_sq%ZPAKS`}0WZadR9>%fZfBHy0L8>8`
    zZPakoNBQw_NPc`Kss*IZB6`xTL&xyma1r6q6C_uQH+)GNWbs{g(m=ppm~D>X?|>p9
    zTWS=y8`Db=-`JlvDT-o>hHAJ(VZR1W=JgWps%58nh*DVH5*C}uSmDDpKi@QpUOPgs
    zhIm3AuJXcOVj@Foh}Y#UVW(wP`<8|h6V63noo7v?IjUsnl5v6Fs-3D7SR@!4Lrk#-ex%5
    z2~I2t@F^mQqC>@nrDZl{In*i}Of2+E0vvvZ9zyOJh_*5b#b{<<^Qp>7=JxSBOQpx}GI)Nlts#eBs9#KIQB`o7Kx!WDc`g|_x+a!+Vm#?mtJuC<-PJV6f
    zI3_}gwAX|u@3^~`=o_EjXIcHm@h#utV4O;{Z*4(7!{Lcr9j3mGmdpCn<3rc=JikAk
    zs~S4Ku8!6Jj2$dKX+6zpCstUiFARp)E&HTI{&|70NfU{D`AFINxJOqTN=(;w$COXZ
    zsJ3C&(#>%lN+NW)8{)YZex{lnJSs`)nTIrC*{GXb1!(aBg~K|5+Jr{i>*C2MtBW=R
    z9!Tos<7zp_JPe6&7obg(<_E9$HD2Mo-6x7>*kE|Vgy)SCk%9tc%5UQf-MwGFC5=(*
    z)01jK8%O6ACkvIt^_{^^|3JLWKS#f$6uAIyUT$cRe|lTfxO9Vq5;M-#lKKgi%wpq(
    zSW1hRNEbtgPM4H14NKM`%Ery`6Ti_mo)*)bHk@xWCU1^yKiQxZRwRt&H6hG&Nf6PnmgY
    ztj+_FRTjkD{%2kP6qqLNR&wk=>iX~7`?tFO`^Nquh&uLw=>JW7{}I#%C-dr$G}%=Qug?M@UQ2#Bt{T(54Z|)
    z)&lN)2B~SO@l7DHI+bxCTQBuLYPMZaW(Fh$1{Z2hUT~43rkACmaRRA+!Q~FMAoy&JP@Iqt;w4W}vkikW!OAu7Ea?jsQsX!en7l@1>dabz
    zuHO2bBaS$EqHZsh@8HnmXw)eqYWX+MysFgc67?m)=)CKCV^AWo`?aVze6=KoWJ!%v
    zzQs4^63v4h093r6nx1FXp7**(sR1`?vUtw-HRn{LhpD&ni+Q3@(=YS

    3?iFp}Slb}%o#tfRQ! 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

  • _H$u8(Ho56g?kg>8MhQ5rGm6K<|3h#}=lDIxo`_>K z3rL=eI(|=7*%&sF_W@~QQ0@1;N6*ypdos(XGNUh8&l8gy7v;?OJ=D^)-!s>n!nF56 zov#&3raOL5)J$Bp3S>RPx5RK2I(|>RUo%+8F`(y(L61%8(0)(zZRJ^s5AQ=bg7fSg zzo+NAcvg^3ZwsO7xjTMO)U0fltqY`~E9>|@EkYAmwiA%9MppYh>b+2Yk2N-r8RNj3 zX!K~mN4*!y?&utInhw~NEO-g}+#yQA*p*grA)kVt zfe6+Ylx-10hwp?=>F80zGYbUD$A@(JNS6tMwE9EdfPICkA0hwb^ZCB3FGj;6Bxjnhe*aFsGVshgm&Bm@!OVf5` zXJ|R5{X^75r|6RDj$JwQ9L}8v>Ia%m3|FCJS0=p`&pK)Xy)RgYwkreYlw~Cy0C(0( zgdSFUA5)~1*B5|{&tR%~>1hUS^YP+J|3uRZTyy0iY zuV9@rdbC|p?}f4}L*lV<6pV1Zy(JJ-+ctJ3=wTQgx%)z-D4B$=AA;gjhDDNN zdh#HwP0!qV*fs-N1BAw!ZcI-V!yI8RpPRyrK43jd%o>yjZF=T6^s%1TfJ`=ev`bUI zx@6e}K$aTWJDHyCb&iN&r`NJX&TU&D9bMEhJ%3(FVssFYp)Tr}o)vG0v*xKl-f>aK^b8oD z#ptI%RvGk8rpJCXni)TVb<8le>3IkflO%r~L6$LPcT7*+YwCa}KagaDYSYtzo~dJc zjyJ2wjCx=-B_=m6(rio*wKQ#d9x4{jwEmzD)ruw49n&)wOR^}*DG2Wq!&T^*p1_i_ ztm8AF>xn_lNa@g~r}uuWEd_K4;TNK)XXm&yuVRLt^7;?L4MMpcYSXjh6^mu#@%{u5 z99hTo%&Zp5vXy~UCzNHi=~3^6GCf~(%VkD;u%0w}wCPdrg)%)&#tLSP2J1DW)0iIf zqGR6xz4#fgR#UTN;VG_7iCK}wE)Bi)vIJE~kV}(*7;RHRaYF z_V`EJl#`u`Gwp3q-`8|wQ=T-;5%%@UVa(VF)>dNnAf4K#jIR>TdX54)Y4m8Da`q2D z%iaRwP1Um6rd&h0_3-eC@3NVZ4OTueskp|b+%n8J>nf zxTs@OhK@>Q)Gmwp9|V=>JK2;fSo1`TN(hC9scp*7Q}P&X2Bfu%IyR*sIgZ_#UO=8P zsJ1Bs=$Se;W#8IVW=sQX7BRVTQM$&aP)pM`#rH{oX`4aVLv*Tg$#lo2e3Mj`6`lfm zkr=K*$EM_YvRFrPJj!^4B0989X%(+>RRM5iqNr!**p$Zt8LXf&kQQ2jac8=nPvi{r z0Mf^mb!^JzM$s%g8pvx#R@)TyUMQPVd{QhkmV))U(W7mOdM}hsN%%xE<1ko9jZU^H zw>b|!G9!)hUr!Q^noTc@Yu-m-Y9AiU)9J2t*%js!=~zox5pi+|Rd0}Wc?mJvx*TX4 zE0+CMOgyZq%DSw=u0+>|nkdm>`f+M$F;T+8w9RrY45eT!Ot;o)Vg@4SB3N%wvTxy! zu`s05N0_!SJHIb3zQz9s4F5gmI~HaR{?QiZ%e#`8b{$li;ixwjX1-yLu%D=e`T!#X zA(xm-NT;?ig$WU?ryh_82&HT~=s3I0bj&>>_Hl%6gtDx*FvGCyUt1W_y*M*o1#1#9 zS&!~8jWoz{X_}GBdiDZ2Wb|kYvn@@@{t4tCS5^TbNxy_8U}Nm^JiF9Sbw~YBV#hf)!HEsclK=8Vf@$ zO5HVaG+QJMi;bA2c z08b?fw*lQ@niP@F3KjwRR4XtRrq|OIS#~>+J+7={VJdFOVA<0^E*M#DVbpt}EKFT& zekVpO-bp`#(+-`3TGe}@EKHwjSkDSZZG?Kn;(qKzTYuZ=>EH*ljX+XA%96hU71V>-~YdutDoLda^i;0JHW8EU!pG2VG z=ly|)DwJmNwL#*N{{0{O1FKbu6u%obC9P64`vWge%N3LdAMz~!r0OvH12b;=IHRcs zGCSt!37gG=lxf}^ML%%Iby%mh%Cmivt$0=h0$U!pq~vKMX=d1zw4zWalv5mgbCk6 zh~O6j$8s)w8mq);`#T-Wxej@%!X>Lh9J6Eon`4=xI-83wLEu-P$x@zE%;COz^+jpX2hl?`BpXm-X2<;c@@2&YVABoGo`%^mKXP|*u^8Bw zLAX+4cFad(X^Y$s#u3A6?52Vp^S+Z(TmmN0L^*?!>)7m=FY#K2h^OXjaFQ>YRqU9r zdLmZT0HKi~QBkByN$;3%+fs;*AoSEEWiiaLoZ)yJ?vD9`FO|d;COiPJXJ`rKYbEPr zITv;e5lexsH#kWsk~x<1VokrW4uJ8iVR1bg^X$H_KC)Id+aAD%7dnkIz6Q)W{TK{M z{y`bxA5;eZL2ZbC?9xAyQJHz9sK~LL(`ZBuQa$b!q#`G%xgYF*7`Br;c8{8PY76?`wYH;RQ&e2uz>FI{}{u-0*iC~W9q?b(k z2sOuY*58g+{0?Fk7#aHI2;TWv&bAk^JAM~f$Ae{_q^eOV>SH;{gi9as)XA1Oma}mU zL`77@&_4o~K=zUbVLm(9@ZF4MV&608A zSrEn<5@})5ZO3wcFsg)jAFSnfVDghvDdSkqfu*qYVjE~b{FmzF565zD>xXpy07F#L zMNCACSNSu?a`t*XN63<3q-vIWZS}F79sf=d&r*(S0B@i#osQ*y@TRqd=HoNR%h%z)c*>*{3Q7kv{~u!VtJ6&{K6-IF^&PiOTI@d~aB+ z#vIFe10M$WSk8TUsmzo&K@Yi0H(7Hmr`5}_aV+QdX1L=7Bv~GR?jrW{l(;#Tv&3>o zTN7Xp5za4wIhJ$G$JjE1X!$h$^e3F<&9R)x^bpLkoR7aA&m=h=%$dYyZRS|cbeD}| zIeW(^Gf8d%bEna5j^(`cY+0r46tMF~n>m)Vu?$!8p_RQN5<%sScY)HeoINrvmG>-Q zc`i;JBRZDzD*Re5TSH(?U7Wf`bS!5htPh|<$nL;;yEt`@=vdALXEGE%2H5K^u8-wx zT{3}ffSd>H6Bno1X*!m3@egGcz6ID$gPUVHcRiPa^*@NeKp54eq~_xu%NhAT-g|Eq zc%29?L8|tpkL4`$YOavEU{um9_gKyWE#p)c8Ut%VI6q!5^~~s4&UMeGvsIT*0qbXQ zeJp3q3s|1>3Zf?w$A z|A#~x$?!-)YA1+aezMF{#>&Mg_}#zIzB0$z(aZdUcNoOSUqDNC|7@J_*c z%(0v)=VFzjAt1b@6$x`J=Y>AmO38F!Gqn=I`%LLr&UU!Ygfp@l*jKJRb@u`|mUD=O zBOxdgKL9)8%Ijk}+XyvCBd-AyRh@zeuRfOZIh+8{3jG$D2rPwgew^l5&d0Z7p-xrA z->YSvwxW;a{J1!JVQm0DVF<(7Sm|Rq!w=(l$-w}JX@WVHbLH{U$}mj>G*`ot-!N{G z>Ih97%bBo0LowHbwI`U#$tfm|b%w!{}m^hX*_Mc*k8DEGV3xaya zoVsgt&9R(cJz7H1>x0@Xi0&TC8M!V(k$QmeTo8$ic?^qtVB5o_Q}zSbu?WBZ%c5%ekW?j&zT$hFLEJ zReJIr9X0w`&VOrS{akf0ni>{YuvyTL)__2op33 z+c%wKIV=B|&-G`03~ZIgRf|y1Ss%;!bGB+b)?ToV-HEA><-FO}qa3RnU`14Snz*X4 z9(XB)IhHg0e5hjPfu#uSNtt6guiZ*kghoUd&Cg38%h`T*lCU}<{wYd=%>}ud=2*^B zS4*m*jRHQwaHuNHv7FU&Rg<*l0bd!!kxVqla{lvbo%`q_NkP<4o zhBzB=Vw6Xa4#$gCkgc^^iVmjnFL5Q5hb|FJb%<>U|u#|=qo(QAksrlY#90Ti`# zVa+Dj?Wh-b4RKy>y7-(5mIY=WvDZ?5%o^eim8JT)Hw4zy;ARc+D`{$hoa_#)w~OmF z#EY_PW8%8sg`^!D(P~5Wko(dMuLa*j^6)S`5-Hi$&OqkuI4XUC? z_Bcr05Uj1FU#|=vd>$t%$)SiJqcORQ2zq7kW6NuJS;dh5I0Vk8i@S~)d>)6zh z@Kr+^jk@Dv8ec;Y8%?(IMB+3|fAPU-jqk;qsRu?wV#C~l(GAzLMHdLXfgq!R$T|4s z4vdndkH9+*j1E5$%HrP#iA(zTe+-P)t(7N2>gdEMX_cZG7%f~9Dku-hM2bg_+=0*QY8GN5FbNctVwI|>nA*)A$I(AX@j^lc(eFQkkCR{@_*F%-%Kz6MWZ|$u z2yShkDdzu2a5@RL5y4sI|7%~Wi-o5U+}<}{9Q%*pUJ~S~0@aqdR*SESKvth!oW+8h zo+~Gk@O*+FM>t|4=;0L2>VSAE>!sf)t5v7(ixD1O9$ zc?bFzoubHy!;;hih#!JrwJZtkdWvFtNgMtjqNi&}b|73&QT!g7Ejl9t_rHMfWiUxk zQCxWz>qB;HOixizwlZdw#8>RCg7ApC7_z@HObxX)dF1^p5kVK;MSQay_f5Y}ja}57 z{98$NFW#woD8f;Q|L0!32XMlMyc@deBUoKY&fJUFdNi0jW5&;fO8FD5E0mJ(Y<)53oJ1dF>*Z!-x?BYQKTc%uGc(Akxqc{ry&*5 zglltV4~$TxFqE|<0vE=~Fdd&0mu7`uY>)45d4Pq6K&h(_VO$j}di+h?M@gqSv;d(E zkw$WU^}Tp+ox(xjg!cpXipC|?yri0!T=V9Zyp>ba)h&55LH$V6-COdeK)Jakk8pKM z-l%#wzhE!^{h37Qp{ORnx8z;tTk`1fXN(I?6BThz_w)DR@m6>VkJp^j-7pIcK%di1 zuS1GCr~C0zDd_*!NBh#^EMe|pD zcGBhq;R!T=^M+8ebelYJ8B!5+9I5z5M%K1P>M~h59N_1&Cdw{E%XE;o$OM8um6cUV z+oz+r?XThqc5Q+ewZ#Pxqki90g45W&B1U*#go?Ly8tw2Sg7y&?Nu%%om&PlB|E7`r z(}sAF+FFLc)u4>{3L17Jz;adM>p1b_EE_~_`*msHH%S55cNWsOPh=ui=GONj zM8#6eWmv06y<(#r(;*iBeqa@|DmFsulp|4P^>=iZ>`CM#H2LfF6j5rP6|&{NilQB~ zb|TGBlV$}iwn8oqDI=am^h+9&gIs)-6;fecf|v?yroo32{xGXvZ-vxN3l}SZeP!^G zuKXq|B<0miu^-rP1}Ax0gtXlXX?swJYakRyF*twn7|yX)q=Jno#I*Y`ng}pc6P)iz zmy-d}n+ohpgLwQ;yGn~vpUceZXdk`;aJ>g8rmAJv9*`x*Qo@fTwi{`gK-pAy4a=_Z zf0TW9d{jl$_RMZ}Z$c81kc7adLlPhf2^}GTU=#sqf&x+ml_p)JNRwirh=NopA|Oat zq$x#Eng}RGx*$?S5Cl;`rM}NOb7$@@;`@HzAG5!^^E`8=+_}@wnao5no$%qnMiM@o zaNZP)EAR4AC6rzQ*e+^Z4VU#K4(gGIT!o)?PLSe1=7_kBGK1c)%X2cbPk^yGkM|k1s z1Q9n15?+Dr!kPe|2qduO+PHnLWGW(LSs2v_l+#Wg5# zzqzcg`RS^(8v|=*!WU1Zce6=m(%0qkF#D>@dT6pskzNJ!bw}EoM?ys0-!5z1ucbsw zO5`kH^NchPbPBr4mJo|n{ht3Rd-^7%4QY9D2bvjV@Yo7 zSWJe>)YF8~%Mx{;&509n#oSi$@}*U{mz;2n!Gde0kFr#_x1DgD&P=xzTQ^CibCH8_ zI&<7smz&Wlo!cDj^{YiiTsgP3Z$YLiz*A0qj8$@5_tv;o;oWh<{Z^s4h^q=Cm@&aB zT+xOme~i^Ye3qrcRV0k_=UH_=Sj1%pdscj1SX94+J?lomTEcPlk)Po`h~gdIc8jbrieQi?3uX47Je4YYYz%XheP8YahI>q2H{d$PtF!`l|wv>atks& zzL7_ifm3;*m(6cnH4~{7m&KqR3GrM`E6MD-U_KMb=Jq6YPaYy^9^y&9T$qWyK^kI+ ziu00)5OEXS)~eoNTu-I|pJO;*P%$QxLBqILEYAytL&O?jUm0A2#`;XRVMOoJQa$S)j!*Zf8BE0&7A@`NSg7FnLYDMeX!B`}{L zHnlQbApWwMz1H&d&WUE(?ZF)IU$P$^_BDEpbJ=PW~8pZm|Z9R1XJ0$zTIAK^^c8ajcZKa(B;ZJ~f4Z%;s7T6$u52p)bo`mWf zoXQPF)jrsag|5nQ5T*o@ zsIRuqLNN1?+bT9US1bYR%Lg#kSqNtSh#lqYun%zvv~&Naiin|9*uS`~v!}2aa2pJ( ziJec?!SmEP?zGo49M-V+P&!gU$krsu#p&stk3Q^*+d5Dpi$?>pHVE~JqK-?|2b?zCV!hZy8sR^&}dv2?d zj8fsZ1KVxF^T~p^$J`Y+K1=NZ*_V!U2U(uKLzpD5fqBzNTwy52(l*P6h4Q49(ZRbJZ+1|MF&|o z!qf_k906>U!Px?PTv^)!yNAvJ#Ki?!T}44A$>m_KF>DW=1Bi6mfo&NzB?L??6)DFKf?-(u%}@E1Ww`9zS{T?XcV`niELoi z0&vMB-Vu$1wb+I4O7*^)f%RMfQ|*YxZ4I*Sl#5oRK_I+oNYp^vr1K%3QW3c-KeItt zVo2N?sp!rGSX`&%|@@KMj2Mr85Nu zt**J|&4mG9US|_tiaa89F9vzfxm@#yWC+(D_?(2}9R>Om&Qz5R8W^aco~Cut@b_`K z4t#4*i-KEVuM>^~(jWhTEW@*-KZfJuU9OUYOQ_LnCD3ZaxqG&eeg#3}XSwfsm=LK0 znxU>dWm&$D)O?^b*hBs!1dpivf{k*!#MeHK=>r7$^oh4XTlpA14| zeOe3bjwcbZeIYW8myxj>`;Z+Gc9<4Kf0Q6v8GEpxVYJ}Kf;=z(f_?!nD6wO-D(sID zexnvffBuyzCqJGYyHSM@dgnK875XXycw5?eqCXGL(|y_TZ0U)Q3vxP@EUx5KfsBS) z4*hv>mROEoZa%1hKDSGV^-r7PVpwNXkHH8!R?DG3|66YAx(kZ9X(84xXey~+ked+T zs18kk9-JF)`R~ut{39q>2zz#-Js1hYEFlAqUpM`EaF!flPQKiub|vw;t63;=*ZdJz z`^@qR_o6wacrfIwp?PDm0N|^9G!$(^Z5ft}Sw?cm4m9vjOY5b_%80>;djy=TAQ{(f z#?Uj;s(d$FOojJc4M}W}}_7!cj%Y<0hPFjo6bp0NsKeS6BMz(@&*y9C7WzofOZU4DhlYE^Xt+)ssG2 zKuc|Z4E()h0@uRfwm*is*^{y~&CR^zpStKf1n4HMt>@B3CgOe#o}(!M z7lVRdM$R6IU^#OEEz>Y>n26MWjzGj9Y0cRm!6LQ;->o?|JVIKl_bCxS1NvRVN<`M> z(#YbwGD?*#83&DPC^MJCI%q7}?2Kz96AFBWKfJosRA$i%2JdyNTWDG5Isy9(oT7QI;Va{>zPCHzF6Ctt$ zR|)c0MV%sR!+#Los)S;PKsB3oK7TEQ%$G4N)ZW50>= z()uhYm__siG*H9-Z{iUdrHX>zgxCK~SpIJ!RHo57pWmCH?9}@dH`UbJUC|QV2Xrqj zx=*>0A}T-93X8Y7?L$X&f_hK-?r@PisT6&YnbiO0PK`Q=bci*w`*XcS?q^mE7A~cX zXp2=%IM+eysrM`JOY82tXs5H_pQkZ3{rrhoX>^xUZdZHBk{GtoZ>>=cu!t_(!>gwW zc#gu@jDyysFH^vH6X?5!afuiURotgxwjMGT0Nh{*BatJ&1lY;^)q4F=Q1^p&!caMd zwyew6%HudF|0h6qJ3EiC2ZgNpv;MF;W#i0wQ7}pw79}Zw^|$reLYz5&7>q`S#pz;M zk7mQxP%i4l*)lk$B0GZelBTJdCZC{Qt)H-r*3u(O*pTO@?-X_9xaDP*Q^NrKFb91=E z;VEkF^V0emiuuHmrSOwWWUd)}jdbpZ<++nkI?e)FD4jDX+RAqAK<Cju*O@U$7|7jiqt(Xdi_$)B%B%KcSZuT{(vZX6Yn zjo{moLePtqA#{2qjn+SNJL%<56AahxrQwbz4)!K|-!;J^C>R|o&y90gS%VW4XEE^A zhQp$nlj5?5PDv866#aL=j}nL8j*6a7H|M6ht+GMsYAE(62zQO3cupg&mFK>grIyMG zRKZGO4W?L%3YOU(Tj+2qYpE10qFqvs$gSqK8m~iJ@C3kShM>MVCbV>0F^So#=Jx_& zm?6;zB{>BuzV^_l_yOu`-XLq|?r6o_3f7(grdmkI#SKKy!MHe! zy8yy9Ln1Gmloe#fKI&F4ykG~YKEwIFJ{8@=LDswD?JSfBA>WWV3-qH-a_2r5WTi_e zLOlaUd&8mzPMze=?G|JW+XHRrfdGeTf=JtX4{xAL0&T8IUSP}Z8)SWW*To#U0K{cP z=FhI)aNG^I04Hh~5&;zY5XPMefERYt9!rs+=l;Q0qPttxDux2(pTu#EgtyU@H(h63H(*Cb>M; zD>yaAB{vL&x9*cfs}i||Jyxv_xGRVx%?DxmeUg}z>9KbHjTVGRJ3%;jpCnq9$bH;n zt;FbwmoBb=aPvM%Olt43{#+#0(nSoqi)1+eBG~a#h{&zsa=qF|s?VVT2yNha7D0df zCp4U6XL@F)4Loe2_Txdbh5Zb*%AI}}8$F>oA0l%UneT8~?&J;8zk%F=+!6I_i>^^~Ax+*(gq^@_xDG_pRR zCI%iaJM?HTYBjQYUvewF8?fF64{H0Ez12=lMSAx$VImSolIFgM^9G@_kW6zViAH$l zND{U3!RAQP{jLngxTGO%O|1-ef4dG)Vm?KFk4~L3P@CiY@ zF>p%A21wKV&#Zh+~cq#sE2{E53g?#^ePe7-d~LN-4dB8fD!! zn=u}!1D_Tq3_aNa1C({W1SqvtT%CJ#bU4mGz-LNez$;WfDq8B7<7Y^F%t1V(vAgCT zlDY{#J5A{8lvJa!o0NyM^YRqXONMca7)E1v{0?+fu5KuGIF(xxq2e|gyEUHjiV`4H zGbED2r28~>b4SIAC&B9Y04BdKqp^D{4Ot%y+Sq?n9gW>yWJY=}7%L2GHtM!YpV8Qz zc{W$b9bkN~S!#x%HFoolDChkcu%8@UYwSL^KT_d0 zfr*|vZyv3&+op7;lJ5hS;^10i_hSE23a<*Rrh{vZ-DR)g`cHgsvL&!~4z4wJ-6s56JBfV?x|ttb}X<7PI#@c`|+xH!CDMUfvs@DYmMD5pQed;tpCZ~!1kN) zMq_trTbx}#5C1=PSi7!hjolq{(Ljdu#`p(Ll~N&UFCw(YZmo7u;>iS9MiY$2ZrF;_ zswt@p=ot-5{sOs1D(zbARvs>vsF*K<^;#g4qf<<1?Cz=MRm}InS{BIUMp7}Mv0D@C zsoX4n4c75Mrqk&16fSjnBqM_&mVQn&4>cZpeqm?yK;BM`K*S?N_5UcF!-C*Z~CN zlK_^Zv3uhV)~B`sJZK0!DNwC}*4Pc(0=?dgV2D0C(_9Wt85xb;8Vj(IRT#8XL*@3z zXzacgr}X(-%I8>BIW4Buc9Iu0it0nL*0UXIhqp|x~zDEoN zVVoiHxGGR%x7<9pmrpT+z^P48JSg2Vl?{H|tXmc_ zwFPeCMWFY8#O*5u`{Aw&I1WUAlwO%%Al5635Z@Iu$AEi&`7l`%ABE;Pg6;lt)ik5-*g$_i2lrEWHAl4;|X!AuJ z2YP-FKC08;{h)7y)$Z2QxRG8C1$_)0$3uVo z-x9x|lylII0DbRk>6ovBu~yURkN^AOSCjHADlO>wV>8j=gK=Kd>5u=L;g^zfD@b`W!XkQ~qgeEs2F5&1r$7F0Kox${KS?5fjLQ`|83%Q?fN})ReIPUU zfrZcCeMD?!RdX->ib{Bg#A4#i8RkFgi~x@e_#0v6nUqeWgD73?vr$N8!LO#n&>y8F zs9rVGJxynZiuh9=SHlHr66$ITS|2#B7@KO~n=xY#Nq_lAZDR3i5Zxoqx`W;YXwE8M z>>A07K*KOm*NZ@0pY$ToG{}DNBG5`8W)Z0Rnrv|j9#`R9SE*LglO&E=1Y)^*5hy)V zLIoAE7KP&wW)Wyh`7A*JWjR0(5&Rb|0qaGerOTr@8u=uk<_0#4K!?wTD*Pp2{S8iw zKp(Ebf`@l3Wc#ippqgdCOypuPjG4%CE_=hTGsWmDHXoxAG80Mb7>WclkyMUmc}=9Z z4vS(-gflQVGnNS7z!HVFL`cgO#u6d@F_sAFkFi9UydqbmQ7|}HKbpd6ON8Ur785n# zTUR4;IK#Fj!n32pL>oYz4Lp)yV~H>umN5nx>}|q?_c(H-EfFSRNNg+-()vgRt|1kO zV=NI4zM3euK*~2HX(GpOTO!=?R=PL=-}4%gvmAJ=t3m5faT|~Y!5mP|bKvo=75S*q zfHDlc*nuaxHmwd5RRPrtfR%_hWHFdeoLC*xAdRZ|xUo{$2s!goj+7Zf?2CWp1GJLhuLw3)3aMPYouVPRn<6t-3J+e778QZjG&oz=Ggb;Wdn3iuz&ZrrN{F#i z`1vMi2oD0|O~cyn!~!dYN7vx~@ZJ}ZS4$`%*R zfps!Cg}Bd3VU5EGJOqqUhQ;M*K4CsaquNCJ&MTiS7{zVkB&;UrHj!sNx=maLK@V;d zzXoF3#Ls8ui0kn1K#r>+O)Ke1634WOELXRQg%dH|Edfqx9m2GUGe#x}3Mgv>s!#A! zG@jILVz*`S9F6P%sH=fZn>g>eScSg<>@9;+o57d}q~yW!gb zu4(vkhr>i!+oy1d0T06W$UoGCzU&UW3Q~n>)6uM$GOd62+jJ4meU|XamRJYPnCcFT z7zQGVbcn+DK1MDw<9&A+X$MyzS$=5cj9Te98NM-R7r?41YZFE4W>3sSbmEQR@id$( zi3*}>GC^BBKYxss$S&~it07g%RM4%S-1ay`GX~gXjmtC&-|hgezf0X#$TKlSWWr+^ z;Ligoyp*o=No`G7;iV+|MjV9FXhwnHuuJ%-3M(|YNFNJ*jc<7eIuO<%N44ERi;X zcOiQ5Rtyh|V&J3Bf~veZdfwHiZp0;Ku)Gk840ifgz$O%slzeO}3S2TA+Sv)KUh_>{ zTLuxAI>L_czeG$Y5p;mh@9?ExD(*YlSN+cJT(-+_xP7EJ>MzU*BdR|ipMl(4-eXBGUJF?83b0PuiqO`{xm#CD zqnZ>xn4h_rO8oub4_=vPC+)TqrT_6UITWg+p>+K#*W>XOfDBWUk1tfM>)eRU;m1k9SSw9Mhu zzI7amuWhVHhDDBsV!5kF-|k{;m`wf25~3zf6z`SoJM<7^Bb1LEg#q8SBEzLrelU-Rq<4{$#&5dJw)}F<0lP`h&AMAgc53`y$$6B0BH(i^liP z&t$m{U&c(xFkQrJb?tJdyo$W`{jm-~<$MC9oRcL2%eh4pl>vp@>$Op|Nb4q3V+wA%>eRj!%>~FKP zKgl-s(TkOpMdcC?qm#nW(fgJ&bo{ge^eM+6(0Dl4m-v{?(6QuXL_8nf%QX}@bo{&( zie?+Iy&9L>DZCy!jyQ>v;qW*Q_|HHJ4;{}x4&%gRL`9vkpp^TYdq!(OM$3XzLU4@VMIlUGVv`dZ8uDhbwlZ;zj_I;xxp7C9JZeW+Aro^2h?a&r?_0UTMMLM!A$t76SiMj8^r@n*)3 z$rg?0D?>@y!O)^%%Tn%5w+g9d&`TxeoBU}k$^fcCQ^wu@ij4{3=e7=>ETl+XLFi{l z+la*a*^OJctxLb42OJAO`wsCelR34V#gs)W0-&JF^o0QFUfyE z0Jos+-X+qhH|)W2wjp6~ym=Ij5-=zPnM1L=VEZwy3=%@|Yo^^bP5yDZwDUGZF<$)4eW+ zgz4T)j5IhpdJw*e=sG#NafXEGF6rp#LHHg*$~fVx3<=R0(vY16K}x+zxkGeE4GGcx zuA`#|zv%875~AyV&(0k^_(fNIiY@{~XGllCL3DX5n$a`_pYux~<$O>v;B)>i**1Xr zEI_}SL$6y6vl>^oCu;L%Q_Tr&g#smM>qy$YN&(WQoQ_vV&=weJJmTQ_<4i56&KweC zk`+7^g4#Y5ASm3GtOQ**g6DQw9ne^-Rp}nz^D)J<{FaY3D_-8(w z9UJYo>)>R(iM*tP7++Jd=e>svZo=K#erGJi3WKJUSAU z=i`m(D&BSoW#WDD54(nKtA@#8-sjgasiKBr4#k_CNAWsq1!d1;DEy9&RMi(VhkbS$ zH3|dP+Y55r{bQjXguks3Qz&;P7Hb+}8CoqcmV47N(Y^K`vAi~&D%0H*%oM128k2yN z)dPyB^Y`JZGF1ntif4+c-eYyG>^p@7EiQ{fAwjc9(8CW02%45{TZ4Ve2+E;W!I8F9 zOY1O|q;1@YT1nC_k+ctL21x7DKSCwzsFC(xb-c|aD$2fJ!`3EMl&I-`FRY;MBr2f| z6~52CDIlR$tYk=NH(JiNCmi%3@|v&0FoV)H8l;?iwF1($`FEd6S3iLN54CA}Kh&o5 zmky$vZuDZ`20M!5WBT#q8+ z3O=(#@I3|Rx=!ERe448$&TB!|n%fq0ZUXl}gyMWk9QR|V5(PykycBzSr)&%^k(3Ic zaZ;9C4oJ$*DyS@!l_}FfA*(~1@PvL8Y%*nn)y^L)&J~4PCoqat)7Q_l3gejvW8^7(6UNXu5nb<72&>vWbiKJ4 zRa55o7+(^!6;jol#AgYXqNjyXGhjI#_0UGFpcI7=p9jXLgmT2BFK zi$Ce%QTA|qeG)qH^p&;nWgt7}z)2uI`Ua~qw_+cclTCM#3g0uk?PXokuu{oJifl!r zUaWB>DnH?Z#ThKoEdodH?%wQ7pLxD?lcb-RU(;3*y z8kaLEyk4TK-qXPua%cdC} z_Ukthks`LM8gKhQ^JO|v?AM=vOUK$-e2-`Nex)2q^`6_qPx zwk}N6Ky$8OEyeHq`wWVP>hfcTgqqU>oBmwk=|T8@FNVPdk-GSk;@^^rL=V_j+HCKM zj58#BI(2`tQ%nycZ*mYS6_xN_kaAqL153DF6sF5x0O6N)-*ACerA2zF${5t6?fxAs zZo6q`n!6Et!0u%~6j-CKL1E42phzedyY227WKEioD(G-!BA}9Ru1H$(Su{`$l!fxQ@zq71?s^fko@Yw zR|Va6J?J@x6FxbTCP%0TUlWl;s=_6r@Ll`?%ac?OekPP;`J#3VM)lwLjttz+}HVaLJ22~$3wmN{38PfowlAusLC#J8Nz@^1 z>WzIfqObL*(_+Sb^m}g-{dijpLWq9epH9mf_tAIGB6@by6r>pSENUL|B9d@bEJPH(eMRUaMxiwzlw|p%OABDph6=4Kp(H>R+B;uR*b}sT zLf^x90H&UiTrLG#F%iBu24O};CA->?P&;n6vnLhwAbhiD5ebrx84_A9Lt67XP0C{v z=!1czdxiu_yPvZq(F0Z!Y7z;O(&qc6$&mhevLHz1m)b?$RFmjM(vrh{MO}R{74`hb z@D=C&ky5We5uqXr$tl4nSeWJp&Uaj~4W z_pjUelX^irhSL=N9g$3QZx|Ay8`jb$(Su)fiwz0U8PXFR-HgTDF(gR3ttHWe z@O6KdNJ#iKLxLnjTF?+_%KP8~ZO>r#QhxzDndcv;PR8s!kN+%P&0eYiRD%LDt5Q2s z&eFy{JzLxM1I=}f+<7E-bDaRWd9NiZx$pje$o&L^MB%Ge*lwV|K~VGIT&`=EVeQHE zUVlr%pq6re*`E}qNp-f<+c2c)g?^GE>)4X!Z6ng}J;OwBq}LTz1*ELrIO7xDSZI2ZP5b!1?>Fs3nL+)=DmJmb{pUYF*az%?LLO%l-jCDG@+pY{*rnFyL zV~==v#^}rXhX$f3?biOJd0*S4;GU41m-quJ7G0Tl5hQbEUi40U%I3-Ytd0wwD zei!B9T$%Sns}S)WWvmsL&k_3orN>;E=i8E_zW+hMh8x^mnU@SJM06NI&Hy&Y!OK*H zQbCn*a>POI3tp#0tDJ z@9U#!d}UrLNZCZBT-Yo1XZm^F1PXW zgNpViPFIy*Qbgp#9@n&wB86)q=%2%J1GAx;SE=fdudVsS8EP>dyBs_oHV{w zo7Wo_(<4iHLzjFEs|myE7Z#C~yiwCmBNx{p?iQR&RzLU}$})&GJN;qZ}i z5EyS77DvRE1|s`?mEIJX=cq2*PE!z^{gU?XQLkK{{Ve>jigTv2bF!w^c=hJ^YgC7E8K0!z58`h74IkuLz~ zp+QMGuogXONxlJeykVr14E|m+E4Zvx2P}~VA1RlBvBt1ij$+|9mu7G0*sOhE z95*bM#UD&&6PNYJZv_NpN!|eAHj&CwTz(n$!83jEa^$JO#IUN!uUbc&Uh!^gy+k;( zVrUzb^zd~df{cKQ^kaR{Y~T<~U!s%k&<25rU`U%pAA%tbHV#UjBK_(CEK*?NIvGJ9 zFmcWM?GT0tG;l~;;Wuz7vCDtp@Fz}vH=$~=3qtn6xmr*Wn}Ngl+F9aR!Y=~5YH%}f zxH34D@dAh<5>5r@GNFk4+f_=YZ$V$0b7A1n5M(th!oY#3CXC2yid{6mYq$Ao)ENrr zH*olI9zLM~2tAadYtI#e2NmOjtV)Y950g^>%+a9iNenY^*i}DS^rigB4Pbm7$T9#2!iMF$0Gua0d_%3|0YKXK*uc zxOpN{;Rk>nb8tOynEG|7>JF{}yJ>JUaHw%93zcmZ&i}yiYmrpW&cLDJ^cZ|G0Bae- z+mznGfkXX!={#^~2~r0lQZDWrI8Zk4A2@uNQh)~zAs1rBLWElh#{&ndT0C%|2bHdg zoUXK$ULH71{|gG-=Rm&&$4%hO>h{2ad|9bEe6GYuT!ns>Mh~RkEZH-n@Fu}>3O9u< zg&b7ae7Hb4qW>F4xuhnn{CK+-G{MTqqE+T^NwT3lBkGBihA%lOyMf4@c>Y3$bl=m*$ z`bz-+GK9cht7OGgu^K@z{#k?Z4;&{!MPqucQ)@C5t1<|W7!t>2daXsZB1CgwoeaL7 z1gl;v1MiG_t+j2k#552-h6^le^7VgZR1)&OSC(7^uZ+aZn&1;ZA;9&2i6LMAH|B_O z-WYd-n`@)Bx9~m+!EvVjxz4R3Y?ri!~M?@+{2|^asd2?!ny9zi_+%^-fDp1<0N>0pdncx6}Ub} zFu6@Z96zSlv=)S|fh2u@-j|gyhB>G)l^fxu#QLIIVI`Ed5no@6r0Z?O{YZk@M(nqw zfVc*3>gQ;j3R7I=@#JhHk{mCA58g&B7LNNSK5;YZ_p={bHiSX z2_yMG*M3T$NdM$@rL^Ao3yeZ$d{_V)>@5mbUFRsRKa6Liv`&AF(mMSyO6%nZ77#}f z;Ym1G4i%VITA#KqSo{g!yBd*I7`Bzxf6gx?3PDmL90!yS6Ks^$PvDm59D_YZnDD*} zSz2km!RsN8(t6SLSp4OjRUnR0THl|QBwm4(S4q+n9KWr!KKhv?F#*2sYeY74;IXcT zH?qa2fHoMowF8fL#h%I*djb7m;O8B9lIuv9XmJJ5y#QFUh&Nbi{qn4A5spN2qU`S` z;gRQ3MEp~+uOeq&%8^l8A2Y=zIwOL7c-Ey*Jt#J#wElg|OhKuC9#Ch32M}zO*7-9c zf1|Yi(O+>)oCwcpCV){|?^P9@z$fruO&G^zl-6^PB#52xKByu2Iz?ub*8h1ZSNsa> zy1@gL)^l)8Ux5v1AK+LtYilbZMrpk{F3po=z{oSKF-|N{T0bxvM{9w#GB}sNQCc5; zCQI}JHq77@-an~OTEBiOUQ7mIz9CUoq>4!^t-twHwpa(kHce75%P6fsfmiG(tvAG( z0s1~Jf&G^bai7w9zrwix2%lX7oGJkdai7w9kqRY*s~i~B4a-qlr>4XCmc7)#=8d#c zm9@@-J29$=A0b1(NBsOi3E>CI13yq5;)hKAFc1$pB*@QN=k@)Cd6c&vNx08i=kF=8 z3>_kfEd&{BodfqM``E@>C+E&s>zuU#_c9|?+D3$=2fv^3RQ!R~I_Wd;64zMktkt{> z3+V7)0ysIwTIb3g#hE_tKj=aku{ixhNu375a)z&&=Z@kW`R-3 zuvm<-);SBkgJZ3;e%};k%4b1uuY)+&I#0Z5*w7+)=zEJvax9n=h`os-H`Y3@brVY3 zQeZ2LG=;-j=fZyyRruY&_M7m=T4xb@3C3FI#hD>Yk~hH=o9#>sW34mMVZ&PIuw^Ms zk|n{+AvUMYSnFIdG($+E|3r|{q{&*SH^gKKM@9g3FZhCl{y!4>In zcKWon&hRllg_i`DV{l`w^ROESYaWGvBf_Y4;_BmA>s<3b#^N0S_6;CNRll^g&U(1O zRK5kqyP73DcS>i8_%m*6M1x3`geAZ}C0rGuw$|BdLQysC-vw-+!L_x{^H;GQa1P#A z335_staU!aRaaZ<{OxDhaRO5o-HPr2&OeB@*4e=c0&AV;gJYN}>x15$f=~kOa?sW~ zlZuoQuI>O|2_$H1ogJDMRq?(Hd?s<6q-txOlS>7wh*kstGEk1O*4gcHkP>tZgrBq^ zVXSpt$CbL2FL@I`Vw;^>$6DvU!bvK;4_FG}+~;_-wa!U{qE+~+z-l_-wYAQkpA-{3 zb!Z8!ofBSL>#R|!h`3Bsi-Ev~nefJ1XK}hlcMAOH=&*KO(bhVL{DVc+&j4;Vgq_@2 zX=|MWpm{Ej0Q^xCjJ3`^Q!`Xk@)sa$yDnvFqEsx#TIZs)Y{g6kt85^XqchezqYuO@ z<`ZDG3S@F4X{>dQdAYb^_62K9Ad~xG{wR#K&O7A_Df&E6KM9~a);d=;i&dm=KsXve zl9VmSTIaaqI9_oDjGKl<{fuL+Q+7oE8u>M>!@;Sy9 zuEj*y%kN8D>zp_Om0n_Qk>v#aQ`Em zlEcN#L}RTpqp672@oaDMy%$jlMuIUFju!{$ zk6L>0i=LMrQuhCmNR|k#%}|zE588GehW_}6VS0r1g)+JMNRwo2>40)e^XZRTfbffh z7a(}u^1j*2(8iVG zQP`_$BNV9+l2rtbqZ1ywt*%;Om(}ClY=xHt_RxKJyvv$;-YckNWD{U*G%m^dj&Q#O zGks*)QFw_`xkpGCuMOS-Ehk~L|Jq=KYdB&y8U8a!#M{W4SsOgk9}WL9JbbTw;#O;e{lE2F8>FjD%-UehPqFj7 z8y^9joJVmr!jrQ$NOHUcK6q^~wlX$)fesG{F6r-otPNT}_{1lMO<`4xW^J(3hBQHG z*h$c0Dh{(YxVCl(C-i3nRsUu*G#0Q%_hQ3bk%V0G3LxFP!k=M5_=NNIY$|Vjiwpm+ z{^Ig94!8#gW$X9{Y)U589J;7p`uQMUD{Oc&L3H ze9ONo^ng)WIU6EAf^+Sryy<1)YfZ6(wjSQwH6#xcuB*bLkV4`Fy&m}!2p0oMx+?5V z$if}q8q-yQUcPT<3G7ACGV!)OepP`!PE!>Ijf)iVNOT=Id4}R@i6^HjkQ^_853UMj zD@1efu>rv){r!)skUb|ytTSwiTE%Fpf(VKfl!k)@U7+GHRpI1_AWrD-2CDv0uP}b2 zul$rEN+FkA73dq~s!$X@;e11c${S@}-561Q(^n-pV7DI%vRLmg!bz6k+C;@ID(~Hb z?ScGPLd)&L0`mO7Flo&n6ml2g*n&;|kOEYtO{IsS!Cs`j!N zjNOY(KseW$;#BDvn`jMa3cZRl@Xphaq$iO^+X(q%!%rd}S%MC83s2H{(|^^hmh)&r`BhS{3%w+@n~=(P+rM! z?mwm|$((b}o}`FSW>Eg7h9ao#qjs5j>Dx%Zw-LP=%ve;~@0hVz(>q+WfV5}fTo%Qw z3|tI}T3ofT=ndZ?8d1`<8H=3q*fW{{?0th5qTt$$MZ-&2fn5RY3xgMN#E-NZ&n+PK z0Xk*if19z`m7d5&dkY+yMxnJCi(W;Fa;e55E0W{YW-Pdl7z+)O%~-IXw=$&o!pf#8 zGZt;WM(i!w7xbA)daRE8j9#-c`CjF6WASnp3h6Mw(}uvZjTwtGLrMrr$SvSrq?qOV#}6|WS8u_bJg^Ld z*P=uiGZxGHBV09rj~fE#%_$^hl7UM}c=Hfd`s1exb5$9Az^N*=8>EWYAYwF$d7Prq zRpmC0%e@cZg&L7f2-a04WCE(n7r=HHyoG}gkD7^dxbg(B^9Fy`5kJyeuRKvwH2%hFzb04=2E#gNgfOz(DtD`h z7y%@e5EhcbW>UV38o1IYD#AAp&NYg}w_;>})P}d9gbLrb8sRr)f8oqI9@Qfi^7?=< z)R0&@>%ukuDQ59ipP<}K1w1#9q7rb%dZ=Szu?Emr2A)W%P*t-Uu8)2`O1KUKJZ%VE zKCRCFR!lTL68+e_g+xIVYZ9D!DTQNj(I)wZb92WTlk|>M@|_o@sx`f-aJz25g97!n zC`lRzIF#KIGSrs1G0}4DakQ|6QM+p}WuoP~loEK)L)@XS9Y)hZqO^&YgYKx4W6a7Ukt!ub4ofW6_+ z$(H2`iidLC$|;#nnf|*ZseF7-Ss2=7tn-8|gA`R->pg|({z%gYiOS~|rK6u;8XA8L zd&6{{asG-_>W)OjjlK~gU*dMycuW{iK*V`C*AXg#Go0G%L`ag>Xp)kmNH9|L`rAbnsSXHD4N0AoqN!CrF5FG~K#D1dNp=U} zWg=anq^NPj>TnuFNItHX-wwCYX)kb65HO zWaQy3rPTs!Hn4IA_r&4GzkJ-%$?s|p2*(0R zDWk5!0`O0+Cr@Cf<8NTWs5FnzK!-kHRW&F*lFGoTWPSr3s)^~*e--53tIiKj?^U-( zAyEs`9*1*D{HBkHvFc(-k^s|L=Z$-w|e8bTa}*CU-*!|>_P1h&B7 ziH`h{R#HN$SPy8If&V?y8C*4iwK#tUM;52hy8DWprI34saJ;(vB1^?0Bj(vm>b{nC zvP3Clw*nlul%y}n`IO9aT1D=@*w32+nZ8Cakimw%rX9z(LtcI(q9)r_>_Z?{mZEf- z5mDKeK2Gv`1mzNBMnsJs$`H%oy%Nqq}f-t7O8VVr+Xa&t5y;E-nA(KdEf0w zMq$Iu*ZLDEY@)-8id)jCITg_R1m{sydRn;aw^T8K-oqL|8=TPg zw6NlgV9}G{gMfZ8q4l)z&R}f8{|@h4I;5;k()G0P?XyUAN=(5Nnik%wM%^&Vs}dYf z3rRBPoU%YdO})XIM*Nwu3O9V-xd+0 z;X6qqO1d8F#~(odun5>HgTG0^bz`}96FQi0fE_USSV#Owt6{g2;yj?g4gBxMGQW2U z7i}RVSiVQ0bz|8rB#lcon-GpyHDr3BRo_Bn;`lDzyH!O1^l zb9^I6>MV-SG=hUZPUZ;TCukl)rV(6tI9aTK_vdh~#RQo~@c0Y4;#+th(U2-bGcBC| zBC6?Sfd3c*%QkJ`!4olp5>g1MO@w3l{_&#?9Q=KZC^69?7pyV_sgyYp!g%`v!+CCwvUu|6`ObiEQEF5AwpP)o)%6$8Z7F=w+WouF)z-;xC7=3~HX11Wl1nAf_5_!iI+16$O%nQ7sUg*YUC8Q?#L zz~$4*)d}WJk3_G$5-QSBtQFzROW|oD`G#|I#~G9Kj#TnZwHB&c)0+yn>-KyUsP8vY zDWIv}OORove(DmAL(h>F0ASSa8ca zsXHk`c{S6*J7nNr{s8oxVI&d5Obff^6ccF_P#}U(I3?x<(4A@F^m`$Slnz1}LmEmX zGcA1lLO~2D06u95Bv?c|TdWjM3(sZZ1ls_Bqv3d3NCn8#Lhe#H{Z5(wyCkW6e663w z?31R2TOmc27N&)?8OGB>-dw62zbcofh2_pW(?aTwoN3{Q9*DUH5%=I+^{E7!b87Xp z&;?80GWHyfKEN^IzG>mgZf?##S}$q3qlt|3Y-?c^(YKZAsO;@ z5XKPc1xkvZ7SbTXnHH9UWl7@5Px14aA)9I8H&;t2d>^pG2G`R)%?Fq(qIB24~BF(X~l6V0ZcHrBjYb1C0x+y2gwbL zNeAzcfy1_&ZF?HE{7KEa*eY-NOd4{C%uYd4M}N}Zt~Tk@+azi7q7+4X%b!#b#^*S? zWG1~c0Sz2UTJBHku1Rm-B1wfJ(e4oGpg(DuPSdTMWJ~XprRZ1cbqGtlh>?5Bt{748 z#gN8lOAGI>XyobA$^&DdCTD&`xxJgSiPP!vV3Dagho}abA5m^!PCRiY{Zv>q)SQAP z!7)FgoCg{c;LPchEP87WpNcgdBJ8|hyN1FsKjNVL!WFTxTCk|*3$liKuvpU^ zk+gwx4WqB8F=I(V)?yf8lP|;nRgFn{62;HqO73dmL5Uojr}f2BqFRX{tK9tJ%#rLyQ7K4z62(d1 zwpwIR<;F0_Bt1{=L%dI;C_)OWcu#`#D+Qs%t010ylG{4Sn%gW{$qhm=M!@;W^*lqx z)Go++bek=y6bKcF_nSCxE25S|H?#0?Tx5ie!J_rf|%rD>l2I(VwV z#7YL+cuP-d9xWnU<%IRQjH$qO*k)^0!AdRa74tz|O=4$KE<6KJE$Oe)x@lD=eAp1T z&97y3{|4v30sdt83lKwbaQC1+;a1N? zP@03?yj|UWFd2fXcNLph)P_w%NL3bSd|$n7_ct%CM8bWe`cn@BZM%(z1Z}(gnYOhk zdJw)Rd)X$X&KMFTtsQ2!t23@rlX>kBl+8276$p#Ef_G_~zN+0rG>7q*`Yk>vX`7B@ z8*ZZV<0CL`!^w=fAm?;=+y7+7_pl%-tHQq~oXeeoWa^U{c~7BNe;VHHG$acWu1{uc zn~@`8;34He5Z(wR>60116i2yC(U?A&L8WZHmMXu^(7_L z8J}~H!9+d^$&mQe#UBV3PC@*_$a57Ckn1HyBht%&F zJv{nj^zi79(Zj15DaCW}=mh5~NBP!zcsp^e>>&8QsS#P7VOtL`W@?(44rsoC^9eS3 zcm?Ogi8ThROPKH$g@@L|ljHsL@aFu1>drZTMzG(7qf*A zzUdl~Egg8QYxltfQ3cSW25#rT<6TdElOS3EdcnXQ9e9#!Ta#jfKKUNnJs8x6@(6q(V(Ya3cd z^aeJ>;H*EU@N8*?%*+%MfXxlSl@Ozc_rXyd&iWjTEr#`u6ASe4>h8`EM}VC%IG4ZC z!>jQ^Y4JC(U{r6;fTZyLNrfI>HjXzXf>7F!C@ahq$yyKZn|%r55fB<^l6qN25AS=b zZmD1X83YYVX?;FFPSE$!2kfCb#C>{r+e8U53D`V?Q;7TY@b)x|6Rve&Y%?q_M;=4d z$L)N}UTP=vCjA(p^zfdOUZrE#3L#n9juOHTlm~vGI>Zkv^n(k9l|zF3^zgb=FT=Zn z`PY#=J_TGTu}8RwUoEZjtCfYPX9)__!~1x5CWkV5c$_<yi(mUwO9e# z=6_QiJv>(dtaKj%7vCdrt8FwlZ? zZK24G9^RyTMU}J)z^W3?UxA~C_kD;8{}iy6CcM$Z>q;-d=;6J$EQm>R1el|YG^2;t z%V9$g??AIcOp?pNTw`P#J-m=BiAvgDV26w}qldS$Nu&z@JFpv0c&&%mXj-~Td*n@Q zJHn~Fd$bybQ2P4zBg^8gEWh@*4wd=HOZnFE-Jq@Ls_BIk?utONh_qhCq%7 zHpRiU9^T}s5ei=pY>mN<9^Rn^STflS|HFjQdy!Oq96h|u<>5m92JlV*L8|(t_3-+~ zmJu@g7B<1*)ax~RcxR8{oGfI@^1!MP&eg-C_3&mLQkpihDX?b@uJ!POZ(w1y2fPOm z4W^TbDG%W1Bn6=a+U212@CF`B z!;J?3#q9us*25cA&a2`r3OtQCPExfV-sv*wDx&JZ>jcU%dU$Cbq6CMIQ2S>9$wP>(3?zxe<{Ma5L8{!dU&<>V5{w6fb|UFJ8rDB z9$vy)%t_k;?5GJw5AUmOQK~5!3TT{$B{fm1MjAc5rX}MPa}ii;1DPD1(Zg%M#FqIz zSZ4y6+(;TdyxNcXl*~I|6}qdl$FVz&uF=D@qM{W&8`R1HbVm>GZl0w`PlE7V0Ex4u zmbK%zd90c{@g?>LV}xN*KjY}(9qfyt#(Mx~X@W3%cnew=60TM7->NaL-}Yy$_3%cX zfgz`3VEi1wa`f;zd5a0xEr6l-bna;YX^YW%cztHT+(RlDl?;pe9sd}$9^NOBh_OCs z%?*{?AESpi`m8eB;Ccy!{+i_I;eGgc2$!GhU0`!Gu4;sO&sq=fqpc+sb3ItQ9>mmo zcr9R1lTzXO8LaEXG!4RidU)49E2fx*1^Oti13Z#4dU$J#gegKfA{^lNrSju2P;ZRW;J-k8L*(y`xfzJ-$NG2LRJU3K1R)et3ka%1b zsE1d5vr8NU;nzTt8clsXu@vj!wLgM)7J+Uy8IBhR=#N?)P}$(O&5HvmA7HoyJ-lcf zVwU-!HPm6~kAE1ZKWHLy0`rS{*H;u0^^U|~F?#VNuSjo?Pb)HYZ`fFu7ncovfB}&^ z^GlpYOg$8O6WdGXHd)dl`ya}_J3Ol53w!2nc5fgFX@s&Yke-kb5^AJNFVc}FQJVBF zD2NIOB3+O!A|0s;QdEkFRQb`Hiim;@5fLni1@L>%nVq@20l)A0{+NC4&ikG-<<6aZ z?zwa4gsNb%*)sZ%ES!VwD0e@S6`F=gECWBnM3X&P13NK%4)8leC|DT;6HWHR#B@;# zBKLq7K-o&k%%!M+;!KeCiFt~X2t3PhHV~&YeQ1%eM%w2;EiCE+Yi@ATDpDVLG*Tpd z=RMRdMhpY=EKz7dEHw%T6$CYi3#IoSDjx?bUwEEIwQ@_OVFeESZ;3AS%{*9Ya2-8` z^%qqq+Z*EW(q;#g?xAvXs7UR9i@S+g`5dw@X-HNlT>IaS^$QhskRj#YAh@BMdu(#sonAw{jsK$Nxs>!1&*0475aL2zN)4ji{{QICA`Nq{lL#)Hn?d4|{{DymZQ0#0an`V@XjP)|zwMqIDX0!N2x?BtRQ+21xsvG$OC3mw`+b`{6QLq>m$hm8Ih4_U)0wiu6$ z$w*cgs+snXH8^RBH;}tVBeEaEeh*psTSdh#K!*%Ggka+#bKP-?&kXhqVfYLK8QMd3 zbWVVWY@gdBDsjsy5yyDQYHb%H5m-8s^*opF_mJH-G9I!i zJ;KCmDBwCWe`Ilz_}JlI3FrM*XN1-3s3S4xbB zZ1EJ>+Mk2*ongJ}lmZV~_c<={H!wGbFIP}<{~Hh4pzm?11IsWt$p=;y9*p&_1VJu0*ot$<#@>G!gj7@56xuNr;nno=deMQx3J$s_5vi?4Mr8=18M^w&=}%_ zv-%(zomq|)1$fA=xx(4k)iV^;3-*wG*u5Y_V+jiOkX_oT!Xp?D8Mn@O$Y$*>BVL8n zagwBifS+B|{lOkGx(qzTH6F5&h0<9;WPu=AR>cZ}J!BJZ7G`?Y|DZb_vi4Q6v_`f9 zuRW5rmj;~ikiC(H+r|LokI2sIwEi%-z{59DkzGIZn@4DygU&aro~ zbmA;nSA%8FP}isuwR4O{f%Fj1IL8)bqLwiQJ)$HMw?Lk!S{mnA@=?5)l9hngHjJ-` zVVq+nHo(8u4q#71AQh@?;~ZPKwTu`A!VE(qElkSi9NQC$70_U9e*iPsIo5C@o-0m( z_SOAV$2rzvD_lOez;K7@CYHvCSM@W_v5f;Vge(C@s%8Z{#|~p7xbLXOwShO)9MxII zIkxx3I7NCAgu#Zy{bihEyVtrDX)*|N42kOGILG?AFrTdhxWf>5B+yxPoMS!fz&Umj zj0=XvYK(KN&Ag`O2zd8wj9D-EiOFPHx zLwGLF0i%j$Ih$0ySG2UMVk=07LVwYy#?|L3GDCHeryTGzf&zK_qUL;~abBS@;*` zfU(4|=sx2($7Y|!U2Yq|otoe{#|~YD`E?5Umo>)Y+ka}bbL{q!lES)8j2PVwYBqTG zQS477rTd54@UayGm~IH{98iIMkKKIrc`=5{mN{@DGAGl8MGScBq9%oCe`*Lt?us*f~}RaR6_F zV8g~xHDVH5Q|!3P_k8d#%>LY@0q|7S$qtLfoi{laZ)@sQ@$w9j;c1j5>Qsv``0h-5N7>fmcN znt9?`pl)>c8Gzpeyg^HdG`ca?X=LxpixMO#58&qr!AGD_q+QuqMAUi2{`&92T#Wn{ z(2oY5DSHljQq*Z_Z`c*7@DQ}AAd(Wt=Wl{~KzL|kXqq%24j%q-8Tk0b7cS!Atm{w& z&pJEE4`!ToP2kQl&bl6Dus+T>>#TEF``ioKhf)c=M7A;(%R0`wzxu-Ho(OQ3AtVMl z>sEbVP$WZSJ@9u8r~fikz&Ps?#zisb1n|!dXCiTov#!Cs2yp}0-v%eGqV$Q6V?;u( zj9IzYD~h3Q=}7#YLc0*eTi_bgk-R{Gk1H46ohr&dUrba5t3DDFly%ImJn9N|uq$zT{jR*u?O@tYK>k$HRh=rNU3tYG$IG~-$X>4@*^qGU z%Ikh7K{P{#lm|dK8BEfyysqux3cai`zo*2LhYWAW*?5>CSKh*60j@l1uW{uK6R|=R zh5r*twxP0WNdMXM5xD{n)Qa6xt0 zK~P8P4&%yOKFY@xJ!c@}%A>PjTzORKnge>4<-Li#Cku#lw4YbW5se+;#gG$0|NO1y zLBON3=E_bHyd%+}wIxLJKta_%#1u9A#%8hh^rdNHW*~{RKS$bWNJa3Fas;I_&e%Ue zH5DnH#;VnLy?g<_##UGst9^~_aBO^y^vC!b>5uU>4*I^7xPhW?AzA&Xp4!(qa!`mU z0BT_*MB`+bc~UX2#%fGQgJIf9L^u>fMB);HLTgbB}Tl%jo&1s4SP8neCdHFC=; z5y$u%tN)TEUV)Z5q-i3T@AoyXJryO^Aa{#Kq*n zzZiJ21JALRcg_-SR4ERLi!>v2YwWWwO;GJe0vb*5HiC_>kuNC9H@?POF$I{o7MUB3fblh!y^2-32atb+ zFfPmZ8Ylma*8s@ArXjh93NyaO&8;yLmGFo#Bo_61+K#qO7A3G6@8zjp5f3aU2vFv^K1RPATv;{`pU+=ml)3!MXp9ud&yvLgHm$^9)Y%fmMaCu~UL2)`PIq zkf&<9E*N276Dgr662Rc0K6D2xJd&R9tl+u-QV{HG{P^E!rmy-By5nnHwh(ts zxeL6#NY-f@aK_iz_{~(T|3dyZ8j}}^V0?{qkx37s#@F~)DDH*fr7&e7u|7#he!(DL zqlWSnY76p&&iPGY-ebZ=ORN2PiI4vngTmwOr*3Ba=Ov>kQT(vAp#DSIZ0A{em zvBqmzLOu*ytNW>r!|{_0STVi8c*d|oG3-_SjKeWv4ca*kjQN_Su3fzv@A@0z;uh6- z6Y!myBe}DT!?E{_5Jfr%!X-oE{xS~7K^qGw(%&Gs<8^mXog9bbhlg2WK^2)+u~u0j3;|pHW)GS&g@Fp<%<}c+m1ONiGL- z4YB{B!i~eR>6ju)+g@NF8*Rqncy1|N%*d8s8AtWd<FBaP&BAI2?cN9l<173(We&X5Gf&n1|1hSlbi8o;2Ew!|_sSmy#b1>?KEDI~+fX zDXi+g7}!b&*AB;+ttAw`8`ypa*AB;&$J3PlFM)mQ;M(E%a391xLbkkzpO8dTf9-Ib z+9{GJ0$B=JvV&`fAIaaH>`=sNyc@6qsjFlTuquQrdF^m~Rb(ppR>0aj^4j5;ixn08 z5HSSUGmgA=IDYa;w#cCVnF(y3kv9&<)AO+6V*~Qv)3W}tq8*Nv4&&v=F@T>Lf~O2k zR@&iM>n=3>4DfeNa2$?}ORA|PA_cBrB-P72d+>-f4#yuCCn{zxSdD_2T%2(@o>_|h zAZSAA2G-DECQp*a;dtO}>?cdisbDP)W;&CuaX9W6oTBJEKs^vdcN~rdTKY@>3WOU$ zBuUM39FC30;F~yiDm^CYcGG>vaX9V@$EBJIu&gFH4#y7~rVFbs^4n-kSq|sboIWxR$LDI~VErFx z-x(^goL%wvpDLvsj{kz-PBX(f10JPnk4ksddU$?CKUt-LWow+fPO9^)9ge5rm1brW zusS`6sU41Y|1O}ct6^Y`C#Jbh^En(>&W};dm0$(fVaDP3-n?P zdD|A@^1lRun_8Ow+$Zh$7ueC6@8P6B`YAViX$(6$@4z6^j!vGLw4*bQETsoJIqr;lm(d`KC?M%#QPbpLYz~e5n7= zsls9xN|Q%`og$o@Vm{PA3!M5&UIX@r#`Arszhz9EQW8}bS09pJ34h3s5A}m67_a0VgFu6Mv}BL&QVfMi5M+uK>IuI$(VZRO8qH*|u@~|r6T11H!%?gYy zQ;hfAmrWzc=XP58eZX zzY^h3LHLKiA}?9Adm>4VFHwf=)&^SYH#q27imh4tC;5l{-X%ATE=y9=zb`2S-j+P4 zrTR7YOHr<*f9i++ijrp<$CA|Hi=_o^kMfR|qTO(~EZ#JQ{z?9!zoO(Xp;;s~u}2w} zx}v3aJ?rm7mZE=>f0WdOPXtMA7U?WiGRNN=AJ)PF?FhqC^iT4Sk{Vo=$Hs|eS%NlR zX{)75RrX8qb}aNy@(=wLC5sM@p|UQ$UV_i^WGzJ(1ee8Unf^)sQD^y~87U-H#40A} zYWz@3(M8EpJU#M^rlvKT)k{A1bv#M!sgW#bvyEF?iuT-KDc)Iyw-MnV-jSo^7VOpl zsa6-T<{qaalPX46CH-M3K3~BK6XS%R7JXOMm;ksGAW+@5x$8qV!0u0&BLNnZtzNJR3p_3cUN*0-nO3yU*JHU+bl zVVm1iZ2vIvH_hq&fDIv>n__NHu6|*H&;Ar(b2Xmt_B7_6U&%%gwrP^Hk4$TV5BBRFrN{N5M0< zC*B;^J8d#nk&un_i@{(coqxt}o2}SE23(14Fqw%|q>@$uQjHOQQZ$qP4W*s0V4Kwj zDZn;sGCXk06lmMO622PJ_GF;8Ia@7tM_h%?t3=Ae)o>X0SRDQ;I2@6r$CAR0(}gJ0 zrAuE?oo`VPS3>gB@1B9l=dJMsbQAqXApOz{_tCAh zME~<8d?!M5ny$H6@7u=N$I zbn7ej!w*B4B<~Qjiq>te*eO+Vgb$@jAFxEixhdv~&8wUvc$TjLtdYj^U9km5VtXP| z(hY>(n&e!uYo8HH$&0|IX*}N*`_CVx6zNS6-XRk8f}|toimf_3@QR(eFIkm)9;9zc zgetE@%oQ6}8J{+x@$w!B1<;iNdd(I4@GE%8CfOtq$`L6*lfGg<%?njM-x!3p!J7Dr z}c@J6}xCYt_*KI+Lw_opA`nf#rP0zqkKiYhA;WBUD77J^&!&7 zfuySy{ZCU9Cz7Tj|4UN?`?e<0z}~;&zJVRi*Fno`SeilCLFz*R*Fm36_tB&II#{<2 z^FiUlGHf{L<;Gz@SFC&+gV$(>5&A!U&@XDPi;dwkv1^^-9y@1mGj2`hu$azIuzb#+rhIymqK~yHMfL;AKiB;6roEYrENU!c-WE6Hl00d3Y{Hv5m2WS@rwtR%ZDFupgTw4F%S5Sp5v$B(m; z?9?9I0#5<_!Vn6PpU8anIpTy6&p_lBaDlRw64!eCGb_o&pGnLq4m{a#N)yMdBug0S z5mkZJH#ljfsj9qi)_7-+^T7|?^OM)dG~b)K!F1KW%=dIxQKs;Y z_{e_+?1HSh0tQa-kK0DWFt~GPt;**0Wlz;af1XExYhl)x?S2Lm)_0J-Ms?js)zs_D zcK1ZB1VqA+7?Q^c*Xzr2-o$+p8B(TzkP}RbA5kz~R9#@#IErba0kBpYS1)eQ$o8u+ z{Hs1!K>8|u6)CDd?_1Oi4}r5AmlN(5HcTB4waB{=n=|rtxd`&6eVg8vk)m* z^x_yoAWQu0U zz>;6+jY491MbhodJB=wJ1z3*8b^FfDz~mj+zOP#Q+t;`)w~t!ny%6DV-}8_+?W?Cv zz2%Zla=B0aTc<7yB=y?n?}TmC3EqUS;F4?B&kCpK(n^tI@%1<_EP133j;g=qG0=W0jmM^6A^s<5kKGtf>h4pT}jbXX{oUy1hk&07?vlq3Sn z(s(`t?d>at6{!&jZHPp@AnC|4(5nA0&_LTAm!rxZ1=0i(p~@=}W1xL8u$_wgV7?(X^q!<|@#Q^a-3;mmUXX@z$Oh_mrdT}*l}ewN8`HeP^$4!?MRoQ*-v zFoBuyi=QGyij;F8u@K1$FN>meoDC}rPY@fCy+cEij!c}5C-BF_+1OvhCyGK^UPA8o zTEN8FXtcHztC9Z#a-+6ZNh(Um*(lOCLcBp|r4*oKg1IINUKBGnIaG`yxF(=_Mq0<& znA6mSrK!m7p(SNHY1eT!4mU)t<7bu5qBt89X5psx3W$r5IL-!X=JL3ClK!f>(8Sr` zKJ(CtNEvh^n}a88tA}s(IJVHJ=#=5v;!|k5NX5TQ;yQT3vVJARFUY;45v5%RPpCT_ z%NC-c$%n*}@>LSoaW*=1#9UtvzB0sD+rAON3I}g z9X#PczjW@^IfQVzI(P!N*X*^g;%ulscoz-vo~o6o;%t0TAGZg}5>EKVL*IsTc|VfY zwN##ovr)NV92e+@nA}K^iLmqd6M{Lae8kx(dNx%o1h&fHd#Dm7&c>FuSqK;b@Sq`Z+ni2P z+vsyI3C|8RK4sZ*#4bii!D$$Nl_)2F?1-gd=^Q&Et^xYvAeE<1%|Sb&S2o9v$R^|{ zAv$&h>G4pujvX<4aE>?)#$%2Wf9!~x*q8J(Aj6Fk9XnzN=734aeFe$-lGN+i5g(sS z6w8sjStBZT1YZ-?{IMf8R>2+i5D2FYiL0n%M|7`h32M!cfNup;bnJ*f3TKJ}=$67r zTmgBNYGGnWjH`es^BDju8v^%F=Pf-_D0akvXiIbhG!!W~b_C@{aCMblj&s2O&8Z5E z9pOJ;mvL6TPZp-PkcbcQ7IdiD*n||E?}hC_7|kUHQ?Vl|JXS=-j`*YzE(cN-5If?n z`gr>!Z$U}`wQiu9@^5OZi5)TQVen;9poxYdX!_z6bQDt1o|qs!G`H3Op^+giA*G6h zkb=#Vq#|_#VSpj+B$A08@&3Co-o^o(ZV04UMBaJS%dsP}6EWj#19$+5zsWGMBd8Nq z{hdAyh#leYN$Q{6(R+Lx7NSX0ENk>f3#8f82@CPUIlPewYm8TaNLD#&Tve`!4h!)E zZQxiIV6G-8GmzU$(E@i*$`G|lt~CgGnxwQS5~2mZcdw8lJp;mvh7=qYBIaOm6&B)k z5S9_C0aYcLY^8eJBIusygoTJ6T$(xZV-SxUvIz^ZNR(3e55RslxDE?Jy(B%9Z^AuPWl7UHSpB~*<@ z0UJv=b+;21qUB;dR?b8IGL1><1T|M2rpYg zJ0HQ!+pZ{vIRa5ngeq+bktdtKIiaUKtV9?h;vWgLgzCp(M9RgGSczmMWuY`}3AJf~ z9@viT{Th;VWGtaR_+u=gDe0v|IY`SNk$Y1MIF`^37psv4P}4{xs}dEZEup^qlf@%5I|A*{>T2j^~?b;Ihw-ss~KVnX4vV^+r zfc3Ee#5G8436W+lkDDjyuj+BtX9z^iedcL_R;75Crm!XSVKc`PI&?f*T!ywQRQxCs z*Ot(%&x?tFkm~`P5v5&QLOZ{LC!qvsGWY}%*OpM|1x%yWfi*PvR7d?pdy*$qJO-$r zf$z73ygy`f*S-XfoKMo)5*oDG#l5VrLKjCb)DeoN^4<~UoF z6<`Tfc`t#>`<=ADLFE}ssMt@5Two-`L$Zo13 z)rZCssyH3jVON0t4S{tVOX%F#WI+{q3HXd)jj3*S)! zJZT8rHm8%+O@Vt!c=n_5DPdExc&Nm*bcRa${3H?H0^cqmSv#l*JydQj%oeH0Ew2&z zL?mE6R9;*G-%CSatqp#F#Pv|wM^3(8z=j(9h@*a@{c~Qnm;h+5f$twG9alw&QxMt+ zj{KCQ^-wAPdZwW2943Uz)kB3}m8HgB=ZIsmFQJpq+I-mh0A&kZ%alRwL>0P`0)j z%Z)A~u7WYsQR256=ami@H-M}&N>bVGJ09(RHcjkC?tUce7OB@(4!~@O@rl<;hV_!rBklKKn8d%WeW~|0` zdsBqf6<~iu;Qr}6zPLqJW7WFpVm_eNNamz)#4*Z^;OS1)jLwm&z8ThjtC7xBgnw)o zMQgmfc9c<;;WyA>EJGD>tnp54=}A^2&ASFuR%6#H6j=@t$HLoS>L67CR%5$CC|_o_ z#@!If^3d%hn%Zit#-cybgL`wJ9Sx%>F^tuC@-2*75_}4T7Yykfs^VCU7g`ijr1>B$ zH>6*PWUR(&@1bt*1Kei_q*z4O8jd$C2t<8XBw)1{z<-d~YNQUtK?R=WRQ;VkRTD&D zPg4JQZ^Yojrif!z&?Bn15OFO1mOnBQ-GfB#xxZ4`v|Rb9V_MSf$T2MkcEnqbUQjU< z$!b77(28rTO-t{vOnmIBEM9KRjsDh8*rB$7H;)bWmKc_$U#^ojs$8Nx6k z7}K(9+mh-ubOfPCFiD%1y+dH(z6k79BsMLnuT*hVA4z@iKtqQ{qPP7i+)(Is*Kvre zaS2b{vyfqr`9qPBaM$JSgn>c}^nNoWEYPDsxlE!1k=wCyI2);5+hd}i-3PUTky^H$ zW27qgUb`XU^b;fqBlVxUfkx`~hwxM+>p`Lkl9g5t_0~q}geUNJ;R$5-)sUnkW28pl zk1#7oQ^osezdQ!$48dFzZKNKH zC@SU>{1c#GjkGpWyX3*cZ=(xhkXTaIBkkHq9r+k)9lxYuDjBJze}TKMCWy_E*hnSK zN{VYpe^no=K7*0UedeJPkrMSw7+W4sc5p0@nk^6p1=^-j@ykeDTONxCcqvw_ywwjF;ZLFvG}eY;M0b{ zZF4$F-GjK7gr_g+nzE_~>I8RPbqv2sl!F)2XRuSZOPzpycHeQ~>~`M|o$@l3r;vm8 zw)bO1o1`%DB_US`(S{f4@ldulyk2{uu(%FJflfw=-|)KnTS4&~kR(D_i8j2pUWygD z$gPQF{YC1v;bk8xEm|YDn?@v6!#`^MhF6t8a9e!_gcl8owQIv`?}7wDt$7Xb%3z8% zyaud{5bp!pXW$UJV2$B5Z3A}rIS=q#L*V}DJkFA{oQ$+sm2o{{yUH2&7m<4jE>%;Z>Ff+>-!@ zBeCH{9ms|kPm^4Kr%%JMzA)igv?_`>IjO0Wf-hU$nXfZa`SYJ^^N&z9qkb-ThF@-Y3yiai- zYzjgvB6X#zXq$>}3T}F{S+6VhU7c2zIdTMuFBr11sS>`z07bT(kDoUTu5BtBZ_-2g zj!iYbfap&RIgH#BBthNb*i>5@CyJqjUj=r9aIT)Qsb+SMQ#Mrr^mZhY!i`N8{%oqM zQ5j&_gtLBQQ=RFBx6%!e-%4YW8sOMe{WfEQ?FDeCAyCIVHr1}WFcc;NoMi|jh+u50 z{*Ong)35=A_ku~PksS{`}J<}gkgnSATBay5U z+0d%ZrPJ|#;BTTbLr)knPM`*B>*K5%+lIidT$6ElU0yiM@!0F(yq;=)wpko z_;<^Pkh#?1Q`lAmKztsF%_Y*z<#F>Q{Z*&MyxrtJ^U#S%d8fJZ>CNuym`mY*q>F9P zwv&pVOXAvGYF{BsoIvj98d2J{xwNG+diVygzYV^W#I?C}d_7FNNR;G7V$JeRNBu;5 zLsnr?4p1!v-|wht(kGF-wj(%lGf8W6X~ew*?$xIV;c~UP#O*b=7iBJ~KA3}wdY4#; zxk~2Jj&8U=P*#Aslvg*N%lnwLzE9;DbLo${CAq+F2-;1MF_&^?C5bpo(+^-XoY}%%yIlvHuOQ@diIZ zl`!T~kI7P4uK`?X2;4TOlhmDqdr5c}pcyGuKEksM%%y%9ew8RE|J%*X*JAkX=5Np` z&rx~WTuMOn!-EJ(9?>1h1wypBM0z}wt<9y6%BP9TU_3-rrNnP8J>90TxB{e&QKHSI z*GqUrFXRqDvaXYQZ7z-fu(%kD+?g6tZ#Vgx&~G<~?uBDz6$qOQiL0p1rKR2&K^6HJ z@R?wWHkYz5lonS2{c7MpsTRguivFNDViBOS!ZG}!JdKCmq^wiZ++%p69rr=KWZJIr2>qHyE-pmtuQlEBqj^qXyUJ67`bwP`)vj z>URzmU8o^{BKICiPZ z--uSH;Q|QX2a~k9bn-e%3BiCVjKt;=^_3bLR3Axw@WA`>b_^kJ?zgz=$Xsd-adm;h zT$=c--(0$dAu4hkR)t3yi@|pH!F4qB8w^31OH&}A%_Z`gA#rb|L$ah9n&sbE!Z67<1`Z=WOAHw7ibo-?V@+mqPw6!fIqV zY8r!N#Zyt*Txv5nO)RA$kqM|g!CVtXA#rij3Weh%t#I?E9rY>$wwSYA- z_(DhhM7vKjeE$zl%34)qc1?P*#AsA=QV*Tc9ApTr+n7t`tHKtC%89^d1#^tKlpY=_Rs-8? z@O@MXV=j%@Qbt%G13Y60+%~6^)SZKSNq7#S@hO*XN3yx}8irpb%E|v)Z~TXu{8}%u zKlATe_Vk2@t)QEbm$Jc~5mtNYDiuey8d}T;nMQtwin^H_rYi<*a zwsQ%p71~@H`((T*0w}@2KT$1=xm0d1!e-?HtZN9|Kb@C9mQLnU?t$WB5TMaW!LRiw zH-f9Hise^O{NJ3az}I^I^Yt^%s&_Ra&ag?e13HXJq|BvXU!bKbFqdd9F_pt-dP z2#*@l22{l{m$D<%6lo9$&l=LlL^9^m^eK32Hv`~8Lm^2qEWY%ZOoPgC~-JdMQW zl6kF1ov7;X^r;&3{94c7lhi-CgIA(QU@o;E;+RV`dphRQis!IzL9sy|k%VNGr^eOb zifD7`as^D&RRPx5gnZ`Gks}2}U6OkOgua@jv>0>gvrn@WX*>w87*epgbhcxTdSkZ+ zgtv**n5v@9CA#N1=F*jyE#}B`AYL$JV=nD&>{9qGVE-6gn@iM7(nI;iTzd1%7<}xG zhNKO~{D;Kd;h0OOJNZN>!W#i=PB>T3m`hvYla+U=H?V;QH|COek5o092y8mx)ZNZv zu(7!q_A8M8w#FoNf@3bt-GGIV`vIOX1nPLlTuM0v_tSR(ZyG`uA{cXN>5Nk9G!(>u zh(l6moJrbTdM*Z~R0LKJiOnVID@COGNa}+J-j{#CQ1!n5KNvq`E{&xkN|h`uQeiGB zZxPnclZ7w5|2E82SMef4!g9~+1@W3W<>{$dNz-v`_<2D5%}~ejh3BBil6#gXiH@`E zzhg7ST3{!T+l-H5vL>HeIBOG!@wRfxK-ZZFGhb{3tit8Sbu|u60X!wwBPwM zMT`M7!@v))5O$Rmg&?#R99fv8wS_SMsWO79vyTuiS6c}GK7>9?J&2unTD=t8#}y^6 zgYqX5&&GsuGv()a?$5vSg=Ib8p|8BnUc}oLa=hdX!_-Mx0hYw}n+3RDbh2R7@EL32wYaRpV|+Q;`rXXeS+ zp8bo6>cAQzIlW0O$={o5_T}yro@kWkZT+wRss05Bo7LiktOEsxWZBnK4|~Wp5vZJ5(Ehj~fEX zh)8NftEa5kxIA3s;{Z-aDl%q8x}ZN1+)b)f9+W|yM_p3AL0MSaQCD1HSx@7>wD@fy zqJDHmOj?S0i9fQ6y6&?7ii;D=s2yja^K&F?HMf&qK1BVF_};G;6`KkF9oXLnPbk;aLo6@58h443?T=hj##3ozPUfC{c}! zsD7gczB-6{C?u>H96sep4o=qHL+}FbiIC_K*%;L0AU%nSd!K4spRpMs_6Hlu^jHF5 zod)GTVmyC#9M;y(42gT~^=NUJ+9MBuaWa@y{{t%H)ew7h58Tz{6`;RrhPqp;S}X{$ z&rMGeGV~evzmT{V@&py62%m&R4;zI_mjPJG5Y%0oYjOjN-Cq`}CM`hdWJpR&pVrAD z%Hy_=e1@tH2Kcll_)lbwkcfv-HOcqssFH5mcP37pqlUc!<_cn8p!)D#H7ed6_4&aP z>aO|$uzd!1PZ$~|qLSTqR#b?>F9Q3>mOM9|Qx`!inf(1EJg=NyT*-jy;Us{iHvTxW-bP$!_l~6q%8gij z2dm|pHx9?n+1#q@4e>66G9_o4VH-HqX>d2~^KGo~l!VgU@4t!{Q5n6%<~@tyOc>_) zJs4^kW1_27&cxa-klG_zKT*q`VdzCWrvO}mascv2XiVNFf|9*wf3yabm|gv{5~ zd8_Xg7Yiz((Jz8M4T&qFu1s?tgeMKvYR|AO(6UXlI%idO~R4jegB(H zkrAZFL*Ro0X>4pfl11Wl!o36G&s~ zH<4V?QU)@CG)C={P9P1cw27)gZLj&(6>N)hSz7W%JpUqt-Fqa%*We)JM9@Ef7f=t$ zPCIZp)@)O;1PgYJ4;Syrx$6-?1S7ueo$i5{Kikb4rLW0tFqW8lF^Hkvpfo z8bC{*#{la4X5av7v=dKtk;sojvNlm^`b+sghQW=Kf$Yi}k~<041E|@sLgFK8jBE+Q zW5Fc-CHX&i2$q9^jncRpL{HJ6t~$?J@&@LJIl%ZEdFm#vgc^myL;dTWU&3!geFUDd zp}0#^D%a28hlC<8I1dTbQTidF*%3<|huH5(@(@+u*Su6o(Q!&7vGnmI9P`5iWtxYF zEs#lB?v54lzCqzt$9hDAHFdC?>$tdYE~X3GtJc?~mnD3oOFe?ZlVdN12;az1D#(@b z8|G`@^uo0Ph>Q=g&zSEO{u7#UrbtoYo56pgeD92L3E!C1sR8l=$F7W@v%JDLv+x-F zDVAFC4b*g&yVS0BNS(zeQ9iAaS<8cXpSFQZEx8v#cj$Rt))Ms zwti^Q?cBG%SoFFi@g*tsfshtV@=@p~-}AnT$WAU=46PXznh0I4^t6wP3*Sb&!%x{P z(-DLxNcLOq$LAZD6~0MDtKd&MeH8E8V$c1zBs0c=HOXPp^x>OWl)68iEH~eKcCAO^ znXv(^%?|U)&r4x9i3BP>eeH2DciK;Um?UmM@)NMWASQK=A3bD$wL6LBe+TlfM%5SX z>GavV?}Yt9?_^d`bPOH>ko*c5yfjq2Hzk=4-^WFE2y?seBR?rb}4@03N zwey8J|wC;VYoPl{!Y6G50obm}h2^z=^D`nz_sy2V-JI>6hA!Y7<53H3;e zl=ed(DK*D|pAS}(KwrZ9Lh;?$r6lg}UxD8Z=9HfIc!uyrOIv)MEMhRcOCqUqcuesP ziLNqNo6#A9PNH*(c&PseHf;hU{fiCJqLuF}8Fum|kJw|`A+!&sZ?Y9`^@YCjpIyS& zIbxrj_H${_a;-wvKunXBcw)+|@kN~QRkI=~OJv5J$r8TmRsp)SLNgECDI|O~tgz>R zMP(kvR^h&y>R(Q2Qs%2|S#>VC#Zi=UnreQF&bor?TUO1^cr}geUo|8Jg$ZlOqD?KU z${*pdf1x`TiDjjS2ueXS%bNXNxJU<9(cs~X?<<58)W)*!HYp++18ZyW7{VvWsi>TL zbFAp50sn0?iLdqwRyOsn#o-csf5{5elQOApw|ERB8JCLL+44+=CY`{G33tic#5-$*-0azB|$$ejPWB?~s3uup|c)mi@nLz~nf% zK9CsmM|NT15X-*!DBeIN0<2&N<)9&u6>8a+euU$)F&J%wSpGUhSoZO2c-z(&;IoEM ziPWeKpt-PU)aD>=GBdzf63pVgq*Z&0TXus6c%0b=#-1RSzp#>)-L@2VocaXdwIG5F zsCW|f&6}3HGQu24IUemt;`XcabBWB9J zmVNcHR7F}2<{DzFlQ&~!3E>-J*=OGh5!PGW0 zXG5Y(N<@D5bP?RHEPE)-1}g-YYhffc1W3kzhA(f%y=$lCzA**fz6>xb8}F%A4~x!V+r5Y|vIUVH$nr3Jr{Z>kkbbA_-HuJ)I> z?^$-Wg{1^#t%b}+EvJHp`2Lo)Y5|hY{ItAWwBQNFQx8D(!qF~FHLYD?iL>CmqyuUv zA5c^HfU3*~lh8+eK)uZe)U|v--Ny$s2>5`83?EQi%28o>mm=9Jc-9s7c7sGV3#`bt z-O+`!UG}6WV4e@0fKBj`tcNjZL@UM?y6n1L;YgT_{5cwvj}Sp!_s_Vz>bfUX$*gwS zd$W_V{|j=C85uhA3sS%y-*A_g&XV*HpenM(We?he6-<91C+uZ^MI;NhMu~oD3fSZ8 z?%2cd=`aoZHBbBH~3 zYK$Va2cerGQJqxO9N(Z2yUaXHmm>g9Gz4=3{H%o`cFhp9;|(y@7#6Eh6aUf>d*#G9 z9xrk)2pDq)0O3CzY}8D zZ(4{+veYD)c}Pk($JX)f2(iN}mr>ek0jp0qYg72X5PMzoP$mBauqTZ?$KLS`bLEt! zlfTNXh>VOiVWN6nn>aGsF&iHBr^w3oPEjDfW)>Xc>+kT<6m#=BL5ZF=& zr`S8bqHa5>xux(O!1frNWAFG<+;;Dev7Go5uA}RKcuZ!FMuRsnc}urJX?;Laxv&@bpif%Q0yGvY}6vh z7S@LV{})W4xH!JGZoA+FtSJE`zroMX#Bn-b1ogIpwx^ngMI0l?XS*#_@gOwyzZMcfbH(PdW08Uv=BF zj}%k#(}2w~@{zSj{~fozv<2R8uR;D6E$cs5ObGMX9cROiISlZuAq?k}Nx^Y^2_AdT zSD8Zo2=JC6sI$$49FN`fGG_X)Y48;yseV!#D&eJtuYt$z-y1HTvH&Y+f{Lu;%k$Wi z2f}gC82K#>me#ctzF0fyo;Wa7O%%NWjnJ^92}repqu}@!dF+Et;}!E&u$Bcgxhjge z)?;^z3suaWU>yl&swt8R_wDxBr)K#S^EZc@<;Pxpw@NU9^K zvOVDOFw__8L5 zCfo9GJ#?|{(8&qPfLINTtub{|;}9^uKDHg*0WlHi*1wMkqeyWaKRNVrWz#c*hw>vg zd?7{OiPAm#q8st8k@E+VY8DTGc#6@}x1PKByD&Y&Uh#-%BsIJvDIB=(jBS^%2}3gt z`S>u!FY9z(a+semFLua_eFuCd%TYGUEZCeRN2C-vlpc+t1L%QG3J=`Vf7nAB`C%B`JWWIGJ*_Q#2LM`b5LHA{*d5=a zq4xeEWzl|s9fJvJ86rybz3LuYK;3|?p}?OH=D3-IDf5-)$vn8Mc_6$QMB-i%9O0;M zo^)S&C`VYkz&K=B)MF~bQQzUx{lb<+o};bHAY9QT;eL82JO+b8?TF_yR8ev!o_~;3 z`<0Tt#b7>;47Iy1D6B}SAe0X#MSi(Lh`s|{?wZ>W1ga6hHu(syr(;Cl2`=~X&Pl@R z18`VA!gE_v;mr!QW8X!<`N;t10Ykp3+sj6!dctJZ)=>M&699{XkrvESPpcJ4 z*NITu>&d`+Q81bZvy?7oT@1Cy^hDqE0ApA%i*?1Z7od+Ti=L7q!#+qAeZP|Skl2NbEMIKgw;a&JlZzBaf^q#{2<&FcQvza!K>)kMb5PK0AuzZEUCBce(w}*O=); zU{OUPv3mM*pZW(qQJsU0*fcWM7ESBB@H4(sQIY#x<9NIn?-7lOXcC7sSey zBDe*)aPA5ralU#qa!!B3z~U?_JXO%0-kgb8^I{E?;RWZyV0!FSrm#jxYuav0EJHl+ z?$E-bwed%OV15Y0>y;>kc>{ay@)$vG_L-VZzFxV~{17H$5b=lEYidP_U#x;+w`Nxt zc$}MwePh)RVIt=D@-POW`-Rm-#6m<5_(`*|2`_w4_}X9n5GKl|eQELJD9Vm#@87cA zHT{!hvHuOA-b1rtLDTE3SLWd*gMOXW1iP!7*I75Wg^6P5fd)wO6uMJ(z>)Jhi}qyq z5cuHNS<|sAGl@?Q5|{M%KVD~@-%(b)XV@gGN;I#tn#IKns>5l5KBW_EUT1x_Cz>mI z-9R+?*cqvd&bsrU>-cwQ63GeZ>7{9b+Yzw$%$rzmj9$%9we2Mqz zlM#yaSs>~4d;T3tW-w{j6fB`5O?LxHlLz}X&1KS__t9&q!(8F1^Wl+xZ6R8~<&Xor z8NEJ_NUw|%@uB1hxN%bFyTa=ekyJWF;oZBCR)oCa3hz!R=?X-TW}!{Af$>;ENr7td z7B>c^_iPScU!~r$!&d=NExv2V4j2A<(t+@Ho{6DGjrpG;VI|%CB$q0u76qEA{(I$6 zweNbd1#nG`YftYR%^v-|U-Pd>bOZdq@8bSZtV2IRFPZK*xs^`RR5Oxl(| z7No6NhJT;`3tC&g8a3!ZIvTfvXPb8B&wdR$tUS`;?94x;9ZK*43E0}-?94y*F;bAX z9TN~Kc$yS+e>_;hLK{;^cdbCi^v8MOj_I$rvcE%GydPA@Q#PH?h2WZDeh2Xqc=)A# zM|+tZu9>4q9|n?c5Al;8rajBOIa@LGX!H7?HHpGL(Ek4Uf~(Zd!S$6ge-y?@hc4lT z7UJs?sovCd=oVi7qtPx5b9{BV*I%)UAef4cT;mVt!VU7CZ;FLORQryBr0Qra*FNVU z)xKCLVjV?!tnkqwWj^&yf`|&W;&`KVUN%9ypbKx|@Dhr(GLY4fcIIRj?In&NGv{cf zHwru)SYV6I{_k#{=FQT3#^Hib*j=vo>-bbFetSugu-8qSWy)(1`UT0#rG<~xN)xot z-M(6J+?m0RMq)_a0+r}~civ69E`gQTxU5O?yrMqgK+NMk!bLq~Gy(i*FooA>lL?B0 z3LIEVc&O&yN1Nj=N*hg2f`IB>Y&6}3)TXrk7%#aJPKFnI1LKO=cn6Hw4I<%_Ft%nh zKD!es5m2C(2~kC zu>r>aQ%ZD2PV^%9v5=IKQD8f<0S5oCAag1Mf7oy`QBx;2fK|j6?SOSPIB6B7mmW$J z3GHO~>u+a?iNNL~1$WR7IDM+rr^0Y?(O*$|_Ukb$Hfgk5?1sqk`^2at0>rA}-U_jw z3bNS2HePWHB5u?%xU`YDBm=}Mkr;+;d7g`KpidZ`B5&+QTEUDHRuy{83F8j*&K!lQ zgw}4hGZ+>w^S0vNAx$$CHZ%}>1vM7lc8_97Bk7!OFbskcjLq7C36rq3fmk2ji9G8y z+7}lW!EuA(99;`AB44y3{gX(f$yabgqB$dRvAnJ-ozhyg&M0k<3sEYc(+WP*}xYY&TqtVHMm@oixVCy z-FxZ)^*Ne%8vo4nq&}#_igNl0LU>PKg>jp@*&Tk{khZwv$UNbWQlYZyR*F}ed`ki} zRoL(EsJ~vIU{SYz^(s=GK+@B0KWQ*8V4uAS69x6=5KW@qq*d=uL0?UhtaH z4pnnCJrz4ty)@oG!_tB9rZx4OK|2fy=lTKy+;J0{(CT>aj={LuP-lD|GpfG+F@2q#*I^WsOH}FzmqwKLBALR<|4~TqjOm&#D78T z2*e7KQIVnt(w<#NZhJu^+=G(Ytivmm3 zxGX~Qx@r5@;;lb2ssU~gOyQ=f04Qi$k21KIdZ@zQjz7^&1WkJu0;Xw|DbTie`*@lo zfXxlW5~)b<<(ZfWX-w_c7>%iZ{}#wUrY5|A;Zl7w;$?AMLD$NFAQ)^qIzcd2VZ$AH z8~W}dS>>o469nUfn|KzFU5-zGkr2H?;H};9>IgDG?B)1bW7sAL#^}~QQ6Htry}&*u zoSR~TV8lFGR8X(UuYq0Hc)lPQ35Yz-O6(PQazXMd(LpdG?)a3FG+-4po-YVS0e7Y% zH3Ojok*F6W9XUZTR{nsVHE{)Jghs1!$AC12M5yvg#00_kb&X%|N)R>@$sZH z*K`(V3PbK^PxQ(hDWqd;|k_0k9PsR}<7z zYaS_03nhorHjW<&;S*?ty!k5UX*HjBA#y^a!mY4Ue+kiT4L*pn zjt-9y@u5+Ltcb|fIJd`9S<#9zqhhVFbCt5N*$WEUM+J?f`f~%__H=|_iL(lBE>Vc< zCoh8VjV6gtYMO0BM>66t3Fc#$|c?2q__rk5hg<@Ehs8Pd0szb&Y3+4IhY^0x&bh7j=(IHxsFePfWo z-x##9!V`ZhC8{HM`!(RdXpT58X~9j@qgKQ;$cIKH6>5&{ok~~{tN%bHBa7dZBC51y zWsE>=D&eHmM`G^~{fQutn!hWk@A-*cO#(C?`H_wC13x67YI?t3hHI95Yu(r4D%8F; z>QdudyLdHJ3`ZHukmMQa>@7HQd}}nmJp?}3xAs&@28(|eBrfUifB4oGto4dmR7Vv? zMXM5xZ*6G(l7i|`j!5U}%p2d@l1l}+qD>6+x+IrxvuQGd8XU@9K~)whPkfK>kUEzO zr+{y%2m820=Sp_d4JE{Q$j(NxzM{tR^gw^r^w>Ekf@-Arb?m{rvc(pFyAA(Gs!!?x zQrFP_u|c{x4d|kV)d)~mye*9gpTgrbGYc- zE;hVRmiPk#sUVlt0%8zdXq`Jo^3>-VMB}V;r%0-EsLN?@?%w)%XAHaSCIt0^cp2=J zCx;_r6luFdb=P*;zbV-3Zw9g#YDiUHKZt*H0$1TiU^_G}EqZ9vc3H8F*jE!7rvYCK zrsT8BI4~WZ1@FY_WQ5~p7rj2f3HvP*}>Bd{f|)3R|#ynGZYyom?k{3pdB8?@qLtoX(Q6({al-9f4;6G6sBa`D;tYKnFY?=X+L*Cu6|-P)o8jptFvq(+A93 z5DWb{UB(kj}Z9PC9#HCuG*iyPtcX5xCW{{jW)+ zlb&<))srJhc-P;fCtm2hs_CTj;d*|Zys@XZaLqKOv)J1KZGXU1KW#>d0EI*S-p87n zPCEBvyBw}3?{?+=C(i$zGC-65qwTyqp0{>WIHRbZuWCB!Y>YK(tdqBd@UDnNr&HVa zXwrYQowhX)-iUhswtuJTq%*y+|Ge*_r&I6B3x1u2HwLsl2M_Z3`ZI;k`}iH0@Tm&) z866L5sscTJ=cC8Jg2%7i%9UXr!)E*o>~iVr0&T{X@Ndci$bSmST1NAhwi$Q##5^+* z*|RhxHxRCE#<(ga#b#tkxdDXtf=SwDT+kQ(+M~ce)wr5G&&Y?8@wgWlrt#@X{xFTX zQ#ec`waxq0BL9Szw8`I6>b+Jj|F^94jUXa&FM&x!r>$`y>7^2Wmj!=A=xy9IL6HW7 zDmxH;k{axymok5^9vEFBsIQ>h=_i1G+^+uCh{Giq$?2ptR7_PWla{Lq(E6U z^sYsuJcaKQsP=sTKB)GE@MN!RpNwO!J!J~-r`yp#G^XZ5){Lo47?AnKR0a>h^zty| zsn2(5I-QvQKEHG47VEqohw5~Qm*HnY;!dX5o+72z1UyM}=n(!pXSW?9{$1p6Bx!?N zq8pxMI<%JIF`Lmy5)P2|uJXd$-r->xUI*xx`XxbK8J>&({x<~yh0Q}CYbtC6&@GzX zDf~%IrlEu?sJdX%r!s{%{5L3e0_kjzzM5FYa;iU}ZZMv|e}GD+?yQS$G;B~?+23D=3avwWpg_+ z%H}qvHfF%q{-JUOY;_C9PyTDmO@Z@B{&?UN@N?Ta+HcAHmSfRIEzry z6Nu*Z!sw(+a1)`VKwW~Z-Xs5Mq4VU6!28m3090%7zLbm+ZU|c?DQCB0@@qajJY*ZL z)2l08qWQwgldzY+x@H$uo{M9?HY+_2ohhLUGMHX5fIjb8tN@$3u8?THsPfs7h|c}u zjsjxv2>rl^hxG?^-DQDNQ45&;;~F&bu^QP7P#c2xQBivTxQZVn zi+Uv8AJ9-oIy|D3sJAF)L5wBh37!IIrjgeB$2EQ(eY^_Uo3x}nPTKYUaYc5b*736w zun>8k-MKHO^a~(fL*o78NVC&CNq^P&P_F?Hoq+qyL#HI=uakIHiQQqW_nqBg!lTNG zu5|UMx#P#klGcT1AwUFCHBTBp89mabVw(b+a`Wif!#P$Ah>nh`F9Sv-r0vKFk&c6IKe~XXf3z+3)S{?Pid~cYPTjms1Qu z^=KpM9P(XXRu=%T&4aj{4JtO@^(C-rfS`fwhJM7`!*_jI_-T;12JIf}?Pw5u*O$-k z=E416G2KWMH9$Q#J4yO}Bq~e7;Y66EWlyuK`^TLIA(o_?toM(rTrEkRhH8VDvNQE( z?jLs|GeX@zZU8AgNHO=1qc{$#HusNPx~s702ggD?i2MF=6E_EnK~T1F5Pkc$gW<(~ zPZY;ddj`cCO5x4@<7(fD5PzcfAEW5|$EnXmS@+WkD*b`4mf10>I26@f4^e%|u6H5( zvuje&Y|km0x%tj7xF`hLybXySy4$*4-;)sKwPDE zGhtY4Ogf4-;bEesip6Ww4j2xyNgd5n_XMicL^|t5N9g;<{SL!zGTo%17qf86bhzIrp% zfT5wc$=p9~frU?4PiUW_sQbrJu5@>5_>_Z}?w1Q-wCNv2$0`!?{{buSf?3$Ff`pDC z)PIvujjudOsIvsm%A06$7sXmY6EGx{wjPJC9b0kz4~mi`{l_G<8ZDTF^8OwpR-&~` zho!t}z$CQ(6HA4WjUY8Ac`bEiNa!#8I5nMG_lES5-P%n;C&uIv*-8Ea(pTKtkWk|X zSbJ8WdV^^xw^MXOLh(Oh)bR;9V~B*}`rupURTv+lC=#N`_VgsZ%#v}HGsiT{H>v%( zT#AH(x7j4r_Es#OsfpbkiWN`I4GCQ-8zriv_AR66=!S$kmdAnJ4$ykCo=VLP2@SY` zuR8C0W67s2yX8@s_H;^D%iTYy_n$=Wy*qo#{Nn#S}+#_0a zM|EEmt1d}QLPIYU7Nbx-#Yj4bOhS*Y;w%0#i0jy(VlxRP55ZGp5%Mtfv)&#ip*@#U z#a(F6SZ_vyU=kWK5kKOIz;t6#)ByF|>?G-(g31zZYlkpNKgZ@(By@QP-WpVsm4x~g zPf#S(88Kxm>d%nSrXfWX2@NNu9Vv!{D2{`w4G9%H>?bmcnx@g^av z4N=3@!&iH4^_n-8CkeT?S7}Vy67#C)gf!4Rbv$EGfY!{L33pinx2VntL5M%5KIP#Y0?Zn}P~da0iPAi z3UQ1vWFesrWra9R?H0kX%9wN%CZV0HEoeIAzclRN$8i&ewu_e;XqXBL52mJNTAfk|l0-F$j8ybVK3Z<8URpWXo*4}>-v zMUfEYN_VG*PdRw$ez`bCoBrTxfFhxYpRifZjKR?=kkC1V`fn1tI@Obe4#cB>`4BCh zqF7&*L2rhHW`2TWOksO~z9>qP^dFPZRW|IOROBviIof_Mteff=d(WgQxXO+sC9 ztD4*p^Rq$C%}$cuDX1(7M+`zGeHVdydg2jGxAudCs3t231s^S_NT?5D%D1UMLqaRt zI28$vBc&NBhJ+}NgQ^V)RSyMJz_HN|;wGUyV~U7&P>ypDLqbOf=N8vd`zMOknZg?q z>ewq$_+Y$|C`!>Jq&^ddgvR`ey;uPlO0Y={(U8!B={W_>rY7V@-WEeb)t^bx2~uyC z`_d?wgyvkuMQkG>PG*D3PsX6iNkl>sivz`WNJmh-Nr-Ag)Nu9i)m~e@=1t{ELhkKV z5s7eB=z#A?L_68AUNG%w5-L+48-g@iOIXt+)H2ikOo8-+_&87~4-yJaMMK#Lty-g4 z12IiGg67I3H0A~l!^nP6KV`=laxe)^!8KQ3P{SE8EMk+ue>Mpf#jnzoX*;S9uqij0 z_?ZIv1Ma4-#@`lJb+jtP1Wm zjAKII9I{D>R!^IR7Oce84xQ0QUleN-O>Vauh#{d9=TS8p;#6bELP9I|C5i*o?mHMZ z8LI13FSV5mG|}-9K`|&{fG%e*f6y1L`{!^=wEe5T~!2qqePA9Tmo9{??r^+;-NNT|^uT*WmV+CtWI+2J#tUC;W8jga=S{BIJfekZp|?NxYW z616rYw5^U*S^b9;)vqBTHDBIyXcE#nNPyS%cZmC$2-S{Z>8C0W5^A_PN%hwd36iPQ zACpj}>k+EMZX^{WiAm@X?kPG9)gw`?bds2a{9Z^g8`VpUq;tq5^o0+Sv<>2ZHmKN4 zLhVl!5;Tyj(C>JAn1uSKSlFrHR5Oa|Usj|+FbN$9z%T2QAr@nUnwy;@y;D$G5{@Kv zlXMrqr6&^l`#4C5YO<10#aY=E34MZ?vO4u=NT_=4a7992ky3{gLqZhCLDhzYB8$X| zx8c}n2XT|o!jA()Gbradh#{ee72?Ew)ILVBT2XjILgkKFA_U`&MNx_-A@!LsB-H2} z22~t}@@!H=G$a&+`@+*~8bWU6Z80R2_m^Cv7o?9_exF9cB=oRiGS0+6oXrN6pNwzw z<5q^JBJ)nO#C}L;QM^frYD3g;_3+hRTfOE@H)06{fu1rFWAK@Fd z90GMTJBE;hNod>I++qYZTnNK=YzoAGHVN(hPHNMBRG(y1GMSi!%C5sSZlUTC8z?aD zsMA=V9cyz67skY69z{{SNr;lD$8YDew^0qmkkHO4xV&u&#JR?hg@nG|j`P0MZW9c zlhCPVF`9%Nr*IP>6l*sP#gGu~^K23tj?0u*78%DN#T%93y=iO=K8qM^Xz)hfP8aKEWevNuLjG3F&HhOhWkv#%dDU32h(iOhTbEqx6Wb zLc2-2iq9nU;dxx(Cb6Z0QS_#u3ECv|Qvg6GFT}!Zpv2oG^nEWtL?wuI*l>;vOhPL& z;`CgeX_`cqHZErTgWo*skdd9dtsrUr_QHth^u80l9#L z?jh8FlTgfLPZH`~ln%`X{DPB!DAtfy(VHQmo+a>R%!leCMw0X&lh9H0!z45_B3X<^ zYuON%4AX!~Xk?wdDvay}sXxgRsVhT5b=Jj;NNPP1(wBB?Hwo3P94PM4o8dc1>$tTc zp&xKhUwHu4r%X#ZlcF0Es&F2ojvrGeo=E7!dpQ2PW1nLY91d+f>rNWD zA)!`flJRUvXe(I{Azg>hbk>PZ6FVUtXZhbG)aa)~mD)eyk-4a~A)yU_W>Z-Wz*MB_ z*N~8!FYh@t3F#c9B8sbDOg?=~sQ#~5`l-r;gg!iySM}GDqQ+5wOhQ%4hN=$xlaxdf zlTfF@A!015C!tuWBryqX-sTkFpnA2DbPkz>${chGxewwAHmKN4LVed36f}@Op+E8V zFbNGD5h+438yAY|UzValFbUy_J;Evq@l`gcx!Fn5I|Y>`;V6P`lDhnb-~51tB;I}{ zsU|B4t;!dzNa%CKl;x;DLqdLgT#AIgCZ!@NhJ+}NgQ^V)J=$JKREOhdJBXWv?k6}! z9Vpj1h#{egQ}c`GsPzHUSZ`B!LqY=sBScQr<~NEaA@!LsBvkteuBRynLp3(3AsQ08 z)HO}eY+6F@u#n zKnw{T{{{p(2jWs=$U;Izg7S;i)NU6HhmA=`VG`;$E=rqj!tfWHyh*5BuP9AIVHfc; zM-*!#4aJZU?elCBI(9dw^2qWqR$?=gQ1y_!T7L&xThY0QFj*bz#Xd+`# zJBeCQI&2d9V@rtGPx=aIt4UYGV-h;uKT(s=&(Myu&LlMCXaPNrtj#2U(kYtieACW`y1Vh3ncUmq5hkM)=cyy zq4}log<3{l#z{aFt4}%fW=Lq+H@IJ48mh|}Nz#8zLcgLPCZU$jFfkadWlLDzGYy!8 zZf*2aVdNl4LrKo0t_%tNxhJP^QtKIz=Gm>?By^=)lDI-|hE0&Rb8ACFfv0d9?f={dbHyepqi@E;8A9_byJRgdktBD2jwAvYNS?o}`yqGOlvw*n#;bJ?omP zNT}phn}k->2o#MFtvQNyhngD_O6wggx}o+Xqv+^{goY0Y#*f&cO=JBjH8&(w?F?}J zTWA|umoza$LPaVR5kEsZ&+@-X=)GK0rS>sAGK5+i5=tIcSY{!NcSo*2TgM|E^51q^Ob9ACpk!y)ml8p(N!ZiAiW+<)Y$C zRL?@O;z(i=Iy+E^?@_(gNIHj1LPbBtp658k3v5uanS{m<2b&?}W9YsZv5N26e>>^y z_8_Oo1uY-zDKrQsq33;5@%%f8RoI~BW+zGS6jYXkqYS!A^0|t;+=7IH@b)W7HCajM zY2#dqguXybS(N%SB;*@}8!ChbiRGk}BE^sp#c@!zA)&#K3yX4aoVJ6wNvLZ5G*J=C zeGXzsC}J$$6W4$YC{}d}Z%Alz!AOyS+G0l0B&0qQhJ?m`jBiL)VW`h0HAF)~9}KVr z&88#dUfvc%LOx#wh!Kz`viuf}f=Q_JCfo{hF~slLpz@PZ_qi{T(8OG+;sT^QDBdJQ zwIOP_YGRs%)N9^Uo+RYnUagQK*Bf8p)Dh86A#5^R`40R4WI+24(s7C=m(Ty5z zgkcw(^58$4gkm4(KnVwk}wdN34Ngw8CNsz_+fNKkG`h?P;i zNr;lDnBJB;@l1KQnPm#Y-SRQeV(TE_RzYpo^J>qVpC~t2xUn+sGdpa#^flmfhO`L zYG+XkN{3BC*WYuAA4p#hZ7b<&cuYdUr6s@8y3+cdJOF!(p7vWp?Ytn z3K@kh6_27f1x?Tx2dGuyTD7q4kl$J(yB_m1tk4fknhRh^Xp=E^Vjn=XwEL}|lCZTV0 zSSpMh0ci}$A5m9^gr2R%Wg4`#7eZQQw|0|Io-?816v?|F?dR5pgsyyy?++JI{fB8O zhf{PzLJjU>)bVr1<|Y!FJs(R`PUI^;iXtJ3tY)sJC+TIDjH{eE4q(1XM{D{j5~^_9 zCZR#gVnr)NYlmW8q2`8!#vkw#{ZTv2C^|Zm&{ce4{0iE9*8imDhJ>P;~osHwjhwI9QZ|@|=St ztDGGSk4Q@r;dk&5BowP0g*PO0ex1KaMeVCb(Ilik6NZG|T88Te>cNn~CN)GuLS?_o zDQGr5ArJDl=mA`IR@jwCOn@|l!LXu$>pK0~o;W16xF&6P>$^xwovv!O0wM+Z* zqoEiQqJ5rCLT5GxD37cUV`DZm2^Gu{qxJ64`m%0Fh_WOdRL>-|qr8t;P7|4j+Qrm@ z(qWTOT(}h9lfDDmPo%5iF$v+6jwYeY(5|!2Bov9KO4F>Q54J`CijL1D^yo6qsKn8h zGMXg2O+v?C;5gyy5Noo55^s}G!{s=f(;8xDHf$gRlTfAcF1;Cs!!X|4WJqY(UL2EI z0c|UaA|c9^eru@VQx0CbUw#+cHvRZrd>sJ^RsIVrZ@&lnis`V2|Br3 zW0)T;3ZqypDxfz*LO;jjBU%yFwT&d{KPI8O7&4R4s~4k0N3@nbVfoNBU=r%F8+Ru_ zt(<^AQ%UYhT^SO3C$*sXleYFsNNY(}Bhm8oh{iJkKqMc6bb?zO66&4}TjD0F|1vFQ ze~NBMsQD9&I)380Kq8@@L$Tf^AYa8$6bVse)t{Q4q?cJTu5#u$iTNg7PsL@%_!WKi zzikq_k(Nz#LbPru)+uUkNa)a&>|!Wt#~MXPHzf1`53iM9LtDZ6Wom9n=-sV&ll}