From 3495a234922244329cbef92f76c33067bc8b3fad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=94=AF=E8=BD=A9?= Date: Wed, 22 Nov 2023 19:01:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=94=AE=E5=90=8E=E9=80=80=E6=AC=BE=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/ShopConstants.java | 10 + .../framework/common/enums/OrderInfoEnum.java | 6 +- .../express/kdniao/util/KdniaoUtil.java | 58 +-- .../admin/express/ExpressController.java | 10 +- .../yshop/module/infra/api/file/FileApi.java | 41 -- .../infra/api/logger/ApiAccessLogApi.java | 21 - .../infra/api/logger/ApiErrorLogApi.java | 21 - .../logger/dto/ApiAccessLogCreateReqDTO.java | 85 ---- .../logger/dto/ApiErrorLogCreateReqDTO.java | 107 ----- .../module/infra/api/file/FileApiImpl.java | 26 - .../infra/api/logger/ApiAccessLogApiImpl.java | 27 -- .../infra/api/logger/ApiErrorLogApiImpl.java | 27 -- .../yshop/module/infra/api/package-info.java | 1 - .../codegen/vo/CodegenCreateListReqVO.java | 21 - .../admin/codegen/vo/CodegenDetailRespVO.java | 20 - .../codegen/vo/CodegenPreviewRespVO.java | 16 - .../admin/codegen/vo/CodegenUpdateReqVO.java | 59 --- .../vo/column/CodegenColumnBaseVO.java | 84 ---- .../vo/table/CodegenTablePageReqVO.java | 33 -- .../codegen/vo/table/CodegenTableRespVO.java | 28 -- .../codegen/vo/table/DatabaseTableRespVO.java | 16 - .../admin/config/ConfigController.java | 105 ----- .../admin/config/vo/ConfigBaseVO.java | 39 -- .../admin/config/vo/ConfigExcelVO.java | 46 -- .../admin/config/vo/ConfigExportReqVO.java | 28 -- .../admin/config/vo/ConfigPageReqVO.java | 33 -- .../admin/config/vo/ConfigRespVO.java | 30 -- .../admin/db/DataSourceConfigController.java | 73 --- .../admin/db/vo/DataSourceConfigBaseVO.java | 25 - .../db/vo/DataSourceConfigCreateReqVO.java | 16 - .../admin/db/vo/DataSourceConfigRespVO.java | 19 - .../db/vo/DataSourceConfigUpdateReqVO.java | 20 - .../admin/file/FileConfigController.java | 89 ---- .../file/vo/config/FileConfigBaseVO.java | 21 - .../file/vo/config/FileConfigCreateReqVO.java | 25 - .../file/vo/config/FileConfigPageReqVO.java | 30 -- .../admin/file/vo/file/FilePageReqVO.java | 30 -- .../admin/file/vo/file/FileRespVO.java | 36 -- .../admin/file/vo/file/FileUploadReqVO.java | 20 - .../controller/admin/job/JobController.java | 145 ------ .../admin/job/JobLogController.java | 81 ---- .../admin/job/vo/job/JobBaseVO.java | 36 -- .../admin/job/vo/job/JobCreateReqVO.java | 20 - .../admin/job/vo/job/JobExportReqVO.java | 19 - .../admin/job/vo/job/JobRespVO.java | 30 -- .../admin/job/vo/job/JobUpdateReqVO.java | 20 - .../admin/job/vo/log/JobLogBaseVO.java | 52 -- .../admin/job/vo/log/JobLogExcelVO.java | 53 --- .../admin/job/vo/log/JobLogExportReqVO.java | 32 -- .../admin/job/vo/log/JobLogPageReqVO.java | 37 -- .../admin/job/vo/log/JobLogRespVO.java | 22 - .../vo/apiaccesslog/ApiAccessLogBaseVO.java | 74 --- .../vo/apiaccesslog/ApiAccessLogExcelVO.java | 65 --- .../vo/apiaccesslog/ApiAccessLogRespVO.java | 22 - .../vo/apierrorlog/ApiErrorLogExcelVO.java | 90 ---- .../apierrorlog/ApiErrorLogExportReqVO.java | 34 -- .../vo/apierrorlog/ApiErrorLogPageReqVO.java | 39 -- .../vo/apierrorlog/ApiErrorLogRespVO.java | 28 -- .../admin/redis/RedisController.java | 112 ----- .../admin/redis/vo/RedisKeyDefineRespVO.java | 35 -- .../admin/redis/vo/RedisKeyValueRespVO.java | 18 - .../admin/redis/vo/RedisMonitorRespVO.java | 43 -- .../admin/test/TestDemoController.java | 97 ---- .../admin/test/vo/TestDemoBaseVO.java | 32 -- .../admin/test/vo/TestDemoExcelVO.java | 38 -- .../admin/test/vo/TestDemoExportReqVO.java | 33 -- .../admin/test/vo/TestDemoRespVO.java | 19 - .../admin/test/vo/TestDemoUpdateReqVO.java | 16 - .../app/file/AppFileController.java | 44 -- .../app/file/vo/file/FileUploadReqVO.java | 20 - .../module/infra/controller/package-info.java | 6 - .../infra/convert/codegen/CodegenConvert.java | 93 ---- .../infra/convert/config/ConfigConvert.java | 33 -- .../convert/db/DataSourceConfigConvert.java | 30 -- .../infra/convert/file/FileConfigConvert.java | 36 -- .../infra/convert/file/FileConvert.java | 18 - .../module/infra/convert/job/JobConvert.java | 36 -- .../infra/convert/job/JobLogConvert.java | 30 -- .../convert/logger/ApiAccessLogConvert.java | 33 -- .../convert/logger/ApiErrorLogConvert.java | 31 -- .../module/infra/convert/package-info.java | 6 - .../infra/convert/redis/RedisConvert.java | 34 -- .../infra/convert/test/TestDemoConvert.java | 36 -- .../dataobject/codegen/CodegenColumnDO.java | 142 ------ .../dataobject/codegen/CodegenTableDO.java | 119 ----- .../infra/dal/dataobject/config/ConfigDO.java | 64 --- .../dal/dataobject/db/DataSourceConfigDO.java | 48 -- .../dal/dataobject/file/FileConfigDO.java | 58 --- .../dal/dataobject/file/FileContentDO.java | 47 -- .../infra/dal/dataobject/file/FileDO.java | 55 --- .../infra/dal/dataobject/job/JobDO.java | 74 --- .../infra/dal/dataobject/job/JobLogDO.java | 82 ---- .../dal/dataobject/logger/ApiAccessLogDO.java | 109 ----- .../dal/dataobject/logger/ApiErrorLogDO.java | 156 ------ .../infra/dal/dataobject/test/TestDemoDO.java | 50 -- .../mysql/codegen/CodegenColumnMapper.java | 24 - .../dal/mysql/codegen/CodegenTableMapper.java | 32 -- .../infra/dal/mysql/config/ConfigMapper.java | 36 -- .../dal/mysql/db/DataSourceConfigMapper.java | 14 - .../dal/mysql/file/FileConfigMapper.java | 21 - .../dal/mysql/file/FileContentDAOImpl.java | 46 -- .../dal/mysql/file/FileContentMapper.java | 9 - .../infra/dal/mysql/file/FileMapper.java | 26 - .../infra/dal/mysql/job/JobLogMapper.java | 43 -- .../module/infra/dal/mysql/job/JobMapper.java | 41 -- .../dal/mysql/logger/ApiAccessLogMapper.java | 47 -- .../dal/mysql/logger/ApiErrorLogMapper.java | 45 -- .../infra/dal/mysql/test/TestDemoMapper.java | 45 -- .../CodegenColumnListConditionEnum.java | 27 -- .../enums/codegen/CodegenFrontTypeEnum.java | 26 - .../infra/enums/codegen/CodegenSceneEnum.java | 41 -- .../codegen/CodegenTemplateTypeEnum.java | 24 - .../infra/enums/config/ConfigTypeEnum.java | 21 - .../infra/enums/job/JobLogStatusEnum.java | 24 - .../module/infra/enums/job/JobStatusEnum.java | 42 -- .../logger/ApiErrorLogProcessStatusEnum.java | 28 -- .../module/infra/enums/package-info.java | 4 - .../infra/framework/codegen/package-info.java | 4 - .../module/infra/framework/package-info.java | 6 - .../web/config/InfraWebConfiguration.java | 24 - .../infra/framework/web/package-info.java | 4 - .../file/FileConfigRefreshConsumer.java | 29 -- .../infra/mq/consumer/package-info.java | 4 - .../file/FileConfigRefreshMessage.java | 17 - .../module/infra/mq/message/package-info.java | 4 - .../mq/producer/file/FileConfigProducer.java | 26 - .../infra/mq/producer/package-info.java | 4 - .../infra/service/codegen/CodegenService.java | 94 ---- .../service/codegen/inner/CodegenEngine.java | 301 ------------ .../infra/service/config/ConfigService.java | 75 --- .../service/config/ConfigServiceImpl.java | 123 ----- .../service/db/DataSourceConfigService.java | 54 --- .../db/DataSourceConfigServiceImpl.java | 107 ----- .../service/db/DatabaseTableService.java | 33 -- .../infra/service/file/FileConfigService.java | 92 ---- .../service/file/FileConfigServiceImpl.java | 182 ------- .../infra/service/file/FileService.java | 48 -- .../infra/service/file/FileServiceImpl.java | 98 ---- .../infra/service/job/JobLogServiceImpl.java | 73 --- .../module/infra/service/job/JobService.java | 91 ---- .../infra/service/job/JobServiceImpl.java | 173 ------- .../service/logger/ApiErrorLogService.java | 50 -- .../logger/ApiErrorLogServiceImpl.java | 65 --- .../infra/service/test/TestDemoService.java | 75 --- .../service/test/TestDemoServiceImpl.java | 91 ---- .../infra/websocket/WebSocketConfig.java | 16 - .../infra/websocket/WebSocketServer.java | 86 ---- .../infra/websocket/WebSocketUsers.java | 178 ------- .../codegen/java/controller/controller.vm | 111 ----- .../codegen/java/controller/vo/_column.vm | 13 - .../codegen/java/controller/vo/baseVO.vm | 39 -- .../codegen/java/controller/vo/createReqVO.vm | 30 -- .../codegen/java/controller/vo/excelVO.vm | 45 -- .../codegen/java/controller/vo/exportReqVO.vm | 39 -- .../codegen/java/controller/vo/pageReqVO.vm | 41 -- .../codegen/java/controller/vo/respVO.vm | 25 - .../codegen/java/controller/vo/updateReqVO.vm | 30 -- .../resources/codegen/java/convert/convert.vm | 34 -- .../src/main/resources/codegen/java/dal/do.vm | 47 -- .../main/resources/codegen/java/dal/mapper.vm | 66 --- .../resources/codegen/java/dal/mapper.xml.vm | 12 - .../resources/codegen/java/enums/errorcode.vm | 3 - .../codegen/java/test/serviceTest.vm | 165 ------- .../src/main/resources/codegen/sql/sql.vm | 28 -- .../main/resources/codegen/vue/api/api.js.vm | 55 --- .../resources/codegen/vue/views/index.vue.vm | 369 --------------- .../resources/codegen/vue3/views/form.vue.vm | 234 --------- .../resources/codegen/vue3/views/index.vue.vm | 285 ----------- .../codegen/vue3_schema/views/data.ts.vm | 129 ----- .../codegen/vue3_schema/views/form.vue.vm | 65 --- .../codegen/vue3_vben/views/data.ts.vm | 134 ------ .../codegen/vue3_vben/views/index.vue.vm | 90 ---- .../src/main/resources/file/erweima.jpg | Bin 18385 -> 0 bytes .../src/main/resources/mapper/null/.gitkeep | 0 .../service/DefaultDatabaseQueryTest.java | 37 -- .../service/config/ConfigServiceImplTest.java | 253 ---------- .../db/DatabaseTableServiceImplTest.java | 89 ---- .../file/FileConfigServiceImplTest.java | 280 ----------- .../service/file/FileServiceImplTest.java | 142 ------ .../service/job/JobLogServiceImplTest.java | 203 -------- .../logger/ApiAccessLogServiceImplTest.java | 133 ------ .../service/test/TestDemoServiceImplTest.java | 186 -------- .../test/resources/application-unit-test.yaml | 50 -- .../src/test/resources/logback.xml | 4 - .../src/test/resources/sql/clean.sql | 10 - .../src/test/resources/sql/create_tables.sql | 172 ------- .../storecart/AppStoreCartServiceImpl.java | 12 +- .../module/order/enums/OrderStatusEnum.java | 2 +- .../vo/StoreAfterSalesBaseVO.java | 2 + .../vo/StoreAfterSalesRespVO.java | 4 + .../AppOrderAfterSalesController.java | 4 +- .../vo/AppStoreOrderAfterSalesDetailVo.java | 3 + .../vo/AppStoreOrderCartInfoVo.java | 8 + .../app/order/vo/AppStoreOrderQueryVo.java | 5 + .../dataobject/storeorder/StoreOrderDO.java | 5 + .../StoreOrderCartInfoDO.java | 11 + .../order/dal/redis/RedisKeyConstants.java | 4 + .../dal/redis/order/AsyncOrderRedisDAO.java | 5 - .../module/order/handle/RedisDelayHandle.java | 33 +- .../AppStoreAfterSalesService.java | 3 +- .../AppStoreAfterSalesServiceImpl.java | 213 ++++----- .../StoreAfterSalesService.java | 1 + .../StoreAfterSalesServiceImpl.java | 30 +- .../StoreAfterSalesStatusServiceImpl.java | 7 +- .../storeorder/AppStoreOrderServiceImpl.java | 177 ++++--- .../storeorder/AsyncStoreOrderService.java | 4 - .../AsyncStoreOrderServiceImpl.java | 20 +- .../storeorder/StoreOrderServiceImpl.java | 17 +- .../StoreOrderCartInfoServiceImpl.java | 2 + .../admin/brand/ProductBrandController.java | 82 ---- .../admin/brand/vo/ProductBrandBaseVO.java | 34 -- .../brand/vo/ProductBrandCreateReqVO.java | 14 - .../admin/brand/vo/ProductBrandListReqVO.java | 13 - .../admin/brand/vo/ProductBrandPageReqVO.java | 30 -- .../admin/brand/vo/ProductBrandRespVO.java | 22 - .../brand/vo/ProductBrandUpdateReqVO.java | 20 - .../category/ProductCategoryController.java | 76 --- .../category/vo/ProductCategoryBaseVO.java | 38 -- .../vo/ProductCategoryCreateReqVO.java | 14 - .../category/vo/ProductCategoryListReqVO.java | 13 - .../category/vo/ProductCategoryRespVO.java | 22 - .../vo/ProductCategoryUpdateReqVO.java | 20 - .../productcoupon/vo/ProductCouponBaseVO.java | 68 --- .../vo/ProductCouponCreateReqVO.java | 73 --- .../vo/ProductCouponDetailRespVO.java | 18 - .../vo/ProductCouponUpdateReqVO.java | 69 --- .../vo/StoreProductCouponPageReqVO.java | 30 -- .../ShippingTemplatesController.java | 104 ---- .../vo/ShippingTemplatesBaseVO.java | 26 - .../vo/ShippingTemplatesCreateReqVO.java | 23 - .../vo/ShippingTemplatesExcelVO.java | 34 -- .../vo/ShippingTemplatesExportReqVO.java | 15 - .../vo/ShippingTemplatesPageReqVO.java | 17 - .../vo/ShippingTemplatesRespVO.java | 39 -- .../vo/ShippingTemplatesUpdateReqVO.java | 27 -- .../storeproduct/StoreProductController.java | 123 ----- .../storeproduct/vo/StoreProductBaseVO.java | 43 -- .../vo/StoreProductCreateReqVO.java | 108 ----- .../storeproduct/vo/StoreProductExcelVO.java | 44 -- .../vo/StoreProductExportReqVO.java | 16 - .../vo/StoreProductPageReqVO.java | 34 -- .../vo/StoreProductReplyQueryVo.java | 76 --- .../storeproduct/vo/StoreProductRespVO.java | 19 - .../vo/StoreProductUpdateReqVO.java | 113 ----- .../StoreProductRelationController.java | 49 -- .../vo/StoreProductRelationBaseVO.java | 31 -- .../vo/StoreProductRelationPageReqVO.java | 37 -- .../vo/StoreProductRelationRespVO.java | 30 -- .../StoreProductReplyController.java | 86 ---- .../vo/StoreProductMerchantReplyReqVO.java | 29 -- .../vo/StoreProductReplyBaseVO.java | 68 --- .../vo/StoreProductReplyPageReqVO.java | 62 --- .../vo/StoreProductReplyRespVO.java | 19 - .../vo/StoreProductReplyUpdateReqVO.java | 18 - .../StoreProductRuleController.java | 119 ----- .../vo/StoreProductRuleBaseVO.java | 29 -- .../vo/StoreProductRuleCreateReqVO.java | 12 - .../vo/StoreProductRuleExcelVO.java | 30 -- .../vo/StoreProductRuleExportReqVO.java | 13 - .../vo/StoreProductRulePageReqVO.java | 16 - .../vo/StoreProductRuleRespVO.java | 19 - .../vo/StoreProductRuleUpdateReqVO.java | 18 - .../app/cart/vo/AppStoreCartQueryVo.java | 72 --- .../app/category/AppCategoryController.java | 38 -- .../app/category/vo/AppCategoryRespVO.java | 28 -- .../app/coupon/AppCouponController.java | 35 -- .../app/coupon/vo/AppCouponBaseVO.java | 67 --- .../app/coupon/vo/AppCouponDetailRespVO.java | 15 - .../app/couponrelation/vo/CartCouponVO.java | 3 + .../product/AppStoreProductController.java | 176 ------- .../param/AppStoreProductQueryParam.java | 42 -- .../controller/app/product/vo/AppIndexVo.java | 30 -- .../app/product/vo/AppProductVo.java | 61 --- .../app/product/vo/AppReplyCountVo.java | 38 -- .../vo/AppStoreProductAttrQueryVo.java | 41 -- .../vo/AppStoreProductReplyQueryVo.java | 73 --- .../app/product/vo/AppStoreProductRespVo.java | 92 ---- .../AppStoreProductRelationController.java | 112 ----- .../AppStoreProductRelationQueryParam.java | 33 -- ...hDelAppStoreProductRelationQueryParam.java | 31 -- .../vo/AppStoreProductRelationQueryVo.java | 59 --- .../convert/brand/ProductBrandConvert.java | 33 -- .../category/ProductCategoryConvert.java | 32 -- .../ShippingTemplatesConvert.java | 34 -- .../ShippingTemplatesFreeConvert.java | 16 - .../ShippingTemplatesRegionConvert.java | 17 - .../storeproduct/StoreProductConvert.java | 38 -- .../StoreProductAttrConvert.java | 23 - .../StoreProductAttrResultConvert.java | 16 - .../StoreProductAttrValueConvert.java | 17 - .../StoreProductCouponConvert.java | 36 -- .../StoreProductCouponRelationConvert.java | 23 - .../StoreProductRelationConvert.java | 29 -- .../StoreProductReplyConvert.java | 32 -- .../StoreProductRuleConvert.java | 32 -- .../dal/dataobject/brand/ProductBrandDO.java | 53 --- .../category/ProductCategoryDO.java | 67 --- .../productcoupon/ProductCouponDO.java | 91 ---- .../ProductCouponRelationDO.java | 50 -- .../ShippingTemplatesDO.java | 55 --- .../ShippingTemplatesFreeDO.java | 58 --- .../ShippingTemplatesRegionDO.java | 68 --- .../storeproduct/StoreProductDO.java | 184 -------- .../storeproductattr/StoreProductAttrDO.java | 40 -- .../StoreProductAttrResultDO.java | 41 -- .../StoreProductAttrValueDO.java | 114 ----- .../StoreProductRelationDO.java | 47 -- .../StoreProductReplyDO.java | 81 ---- .../storeproductrule/StoreProductRuleDO.java | 39 -- .../productcoupon/ProductCouponMapper.java | 37 -- .../ProductCouponRelationMapper.java | 21 - .../ShippingTemplatesRegionMapper.java | 16 - .../StoreProductAttrMapper.java | 16 - .../StoreProductAttrResultMapper.java | 16 - .../StoreProductAttrValueMapper.java | 7 +- .../StoreProductRelationMapper.java | 65 --- .../product/dal/redis/RedisKeyConstants.java | 25 - .../web/config/ProductWebConfiguration.java | 24 - .../product/framework/web/package-info.java | 4 - .../productcoupon/AppCouponService.java | 34 -- .../productcoupon/AppCouponServiceImpl.java | 56 --- .../productcoupon/ProductCouponService.java | 60 --- .../ProductCouponServiceImpl.java | 95 ---- .../AppCouponRelationService.java | 61 --- .../AppCouponRelationServiceImpl.java | 180 ------- .../dto/CartCouponDto.java | 26 - .../AppStoreProductServiceImpl.java | 445 ------------------ .../storeproduct/StoreProductService.java | 8 + .../storeproduct/StoreProductServiceImpl.java | 23 +- .../AppStoreProductAttrServiceImpl.java | 5 +- .../StoreProductRuleService.java | 73 --- .../StoreProductRuleServiceImpl.java | 88 ---- .../ShippingTemplatesMapper.xml | 12 - .../ShippingTemplatesFreeMapper.xml | 12 - .../ShippingTemplatesRegionMapper.xml | 12 - .../storeproduct/StoreProductMapper.xml | 12 - .../StoreProductAttrMapper.xml | 12 - .../StoreProductAttrResultMapper.xml | 12 - .../StoreProductAttrValueMapper.xml | 12 - .../StoreProductRelationMapper.xml | 12 - .../StoreProductReplyMapper.xml | 12 - .../StoreProductRuleMapper.xml | 12 - .../brand/ProductBrandServiceImplTest.java | 133 ------ .../ProductCategoryServiceImplTest.java | 145 ------ .../test/resources/application-unit-test.yaml | 50 -- .../src/test/resources/logback.xml | 4 - .../src/test/resources/sql/clean.sql | 4 - .../src/test/resources/sql/create_tables.sql | 84 ---- .../service/auth/MemberAuthServiceImpl.java | 27 +- .../weixin/service/WxPayServiceUtils.java | 33 +- .../system/enums/ErrorCodeConstants.java | 2 + 351 files changed, 437 insertions(+), 17511 deletions(-) delete mode 100644 yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/file/FileApi.java delete mode 100644 yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/logger/ApiAccessLogApi.java delete mode 100644 yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/logger/ApiErrorLogApi.java delete mode 100644 yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/logger/dto/ApiAccessLogCreateReqDTO.java delete mode 100644 yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/logger/dto/ApiErrorLogCreateReqDTO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/api/file/FileApiImpl.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/api/logger/ApiAccessLogApiImpl.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/api/logger/ApiErrorLogApiImpl.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/api/package-info.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/CodegenCreateListReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/CodegenDetailRespVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/CodegenPreviewRespVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/CodegenUpdateReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/column/CodegenColumnBaseVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/table/CodegenTablePageReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/table/CodegenTableRespVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/table/DatabaseTableRespVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/ConfigController.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigBaseVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigExcelVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigExportReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigPageReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigRespVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/DataSourceConfigController.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/vo/DataSourceConfigBaseVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/vo/DataSourceConfigCreateReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/vo/DataSourceConfigRespVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/vo/DataSourceConfigUpdateReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/FileConfigController.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/config/FileConfigBaseVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/config/FileConfigCreateReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/config/FileConfigPageReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/file/FilePageReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/file/FileRespVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/file/FileUploadReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/JobController.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/JobLogController.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobBaseVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobCreateReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobExportReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobRespVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobUpdateReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogBaseVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogExcelVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogExportReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogPageReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogRespVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogBaseVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogExcelVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogRespVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExcelVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExportReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogPageReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogRespVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/redis/RedisController.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/redis/vo/RedisKeyDefineRespVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/redis/vo/RedisKeyValueRespVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/redis/vo/RedisMonitorRespVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/TestDemoController.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoBaseVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoExcelVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoExportReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoRespVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoUpdateReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/app/file/AppFileController.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/app/file/vo/file/FileUploadReqVO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/package-info.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/codegen/CodegenConvert.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/config/ConfigConvert.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/db/DataSourceConfigConvert.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/file/FileConfigConvert.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/file/FileConvert.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/job/JobConvert.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/job/JobLogConvert.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/logger/ApiAccessLogConvert.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/logger/ApiErrorLogConvert.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/package-info.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/redis/RedisConvert.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/test/TestDemoConvert.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/codegen/CodegenColumnDO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/codegen/CodegenTableDO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/config/ConfigDO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/db/DataSourceConfigDO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/file/FileConfigDO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/file/FileContentDO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/file/FileDO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/job/JobDO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/job/JobLogDO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/logger/ApiAccessLogDO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/logger/ApiErrorLogDO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/test/TestDemoDO.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/codegen/CodegenColumnMapper.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/codegen/CodegenTableMapper.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/config/ConfigMapper.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/db/DataSourceConfigMapper.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/file/FileConfigMapper.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/file/FileContentDAOImpl.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/file/FileContentMapper.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/file/FileMapper.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/job/JobLogMapper.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/job/JobMapper.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/logger/ApiAccessLogMapper.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/logger/ApiErrorLogMapper.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/test/TestDemoMapper.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/codegen/CodegenColumnListConditionEnum.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/codegen/CodegenFrontTypeEnum.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/codegen/CodegenSceneEnum.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/codegen/CodegenTemplateTypeEnum.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/config/ConfigTypeEnum.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/job/JobLogStatusEnum.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/job/JobStatusEnum.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/logger/ApiErrorLogProcessStatusEnum.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/package-info.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/framework/codegen/package-info.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/framework/package-info.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/framework/web/config/InfraWebConfiguration.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/framework/web/package-info.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/consumer/file/FileConfigRefreshConsumer.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/consumer/package-info.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/message/file/FileConfigRefreshMessage.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/message/package-info.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/producer/file/FileConfigProducer.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/producer/package-info.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/codegen/CodegenService.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/codegen/inner/CodegenEngine.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/config/ConfigService.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/config/ConfigServiceImpl.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/db/DataSourceConfigService.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/db/DataSourceConfigServiceImpl.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/db/DatabaseTableService.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/file/FileConfigService.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/file/FileConfigServiceImpl.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/file/FileService.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/file/FileServiceImpl.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/job/JobLogServiceImpl.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/job/JobService.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/job/JobServiceImpl.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/logger/ApiErrorLogService.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/logger/ApiErrorLogServiceImpl.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/test/TestDemoService.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/test/TestDemoServiceImpl.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/websocket/WebSocketConfig.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/websocket/WebSocketServer.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/websocket/WebSocketUsers.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/controller.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/_column.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/baseVO.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/createReqVO.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/excelVO.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/exportReqVO.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/pageReqVO.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/respVO.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/updateReqVO.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/convert/convert.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/dal/do.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/dal/mapper.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/dal/mapper.xml.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/enums/errorcode.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/test/serviceTest.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/sql/sql.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue/api/api.js.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue/views/index.vue.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3/views/form.vue.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3_schema/views/data.ts.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3_schema/views/form.vue.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3_vben/views/data.ts.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3_vben/views/index.vue.vm delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/file/erweima.jpg delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/main/resources/mapper/null/.gitkeep delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/DefaultDatabaseQueryTest.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/config/ConfigServiceImplTest.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/db/DatabaseTableServiceImplTest.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/file/FileConfigServiceImplTest.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/file/FileServiceImplTest.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/job/JobLogServiceImplTest.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/logger/ApiAccessLogServiceImplTest.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/test/TestDemoServiceImplTest.java delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/test/resources/application-unit-test.yaml delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/test/resources/logback.xml delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/test/resources/sql/clean.sql delete mode 100644 yshop-module-infra/yshop-module-infra-biz/src/test/resources/sql/create_tables.sql delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/ProductBrandController.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandBaseVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandCreateReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandListReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandPageReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandRespVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandUpdateReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/ProductCategoryController.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryBaseVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryCreateReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryListReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryRespVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryUpdateReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/ProductCouponBaseVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/ProductCouponCreateReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/ProductCouponDetailRespVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/ProductCouponUpdateReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/StoreProductCouponPageReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/ShippingTemplatesController.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesBaseVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesCreateReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesExcelVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesExportReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesPageReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesRespVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesUpdateReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/StoreProductController.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductBaseVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductCreateReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductExcelVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductExportReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductPageReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductReplyQueryVo.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductRespVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductUpdateReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrelation/StoreProductRelationController.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrelation/vo/StoreProductRelationBaseVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrelation/vo/StoreProductRelationPageReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrelation/vo/StoreProductRelationRespVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/StoreProductReplyController.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductMerchantReplyReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductReplyBaseVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductReplyPageReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductReplyRespVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductReplyUpdateReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/StoreProductRuleController.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleBaseVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleCreateReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleExcelVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleExportReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRulePageReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleRespVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleUpdateReqVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/cart/vo/AppStoreCartQueryVo.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/category/AppCategoryController.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/category/vo/AppCategoryRespVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/coupon/AppCouponController.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/coupon/vo/AppCouponBaseVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/coupon/vo/AppCouponDetailRespVO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/AppStoreProductController.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/param/AppStoreProductQueryParam.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppIndexVo.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppProductVo.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppReplyCountVo.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppStoreProductAttrQueryVo.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppStoreProductReplyQueryVo.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppStoreProductRespVo.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/relation/AppStoreProductRelationController.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/relation/param/AppStoreProductRelationQueryParam.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/relation/param/BatchDelAppStoreProductRelationQueryParam.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/relation/vo/AppStoreProductRelationQueryVo.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/brand/ProductBrandConvert.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/category/ProductCategoryConvert.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/shippingtemplates/ShippingTemplatesConvert.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/shippingtemplatesfree/ShippingTemplatesFreeConvert.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/shippingtemplatesregion/ShippingTemplatesRegionConvert.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproduct/StoreProductConvert.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattr/StoreProductAttrConvert.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattrresult/StoreProductAttrResultConvert.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattrvalue/StoreProductAttrValueConvert.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductcoupon/StoreProductCouponConvert.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductcouponrelation/StoreProductCouponRelationConvert.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductrelation/StoreProductRelationConvert.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductreply/StoreProductReplyConvert.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductrule/StoreProductRuleConvert.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/brand/ProductBrandDO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/category/ProductCategoryDO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/productcoupon/ProductCouponDO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/productcouponrelation/ProductCouponRelationDO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/shippingtemplates/ShippingTemplatesDO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/shippingtemplatesfree/ShippingTemplatesFreeDO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/shippingtemplatesregion/ShippingTemplatesRegionDO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproduct/StoreProductDO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductattr/StoreProductAttrDO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductattrresult/StoreProductAttrResultDO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductattrvalue/StoreProductAttrValueDO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductrelation/StoreProductRelationDO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductreply/StoreProductReplyDO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductrule/StoreProductRuleDO.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/productcoupon/ProductCouponMapper.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/productcouponrelation/ProductCouponRelationMapper.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/shippingtemplatesregion/ShippingTemplatesRegionMapper.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattr/StoreProductAttrMapper.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattrresult/StoreProductAttrResultMapper.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductrelation/StoreProductRelationMapper.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/redis/RedisKeyConstants.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/framework/web/config/ProductWebConfiguration.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/framework/web/package-info.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcoupon/AppCouponService.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcoupon/AppCouponServiceImpl.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcoupon/ProductCouponService.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcoupon/ProductCouponServiceImpl.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcouponrelation/AppCouponRelationService.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcouponrelation/AppCouponRelationServiceImpl.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcouponrelation/dto/CartCouponDto.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/AppStoreProductServiceImpl.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductrule/StoreProductRuleService.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductrule/StoreProductRuleServiceImpl.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/shippingtemplates/ShippingTemplatesMapper.xml delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/shippingtemplatesfree/ShippingTemplatesFreeMapper.xml delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/shippingtemplatesregion/ShippingTemplatesRegionMapper.xml delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproduct/StoreProductMapper.xml delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductattr/StoreProductAttrMapper.xml delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductattrresult/StoreProductAttrResultMapper.xml delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductattrvalue/StoreProductAttrValueMapper.xml delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductrelation/StoreProductRelationMapper.xml delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductreply/StoreProductReplyMapper.xml delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductrule/StoreProductRuleMapper.xml delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/test/java/co/yixiang/yshop/module/product/service/brand/ProductBrandServiceImplTest.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/test/java/co/yixiang/yshop/module/product/service/category/ProductCategoryServiceImplTest.java delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/test/resources/application-unit-test.yaml delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/test/resources/logback.xml delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/test/resources/sql/clean.sql delete mode 100644 yshop-module-mall/yshop-module-product-biz/src/test/resources/sql/create_tables.sql diff --git a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/constant/ShopConstants.java b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/constant/ShopConstants.java index c616e45..efe8c73 100644 --- a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/constant/ShopConstants.java +++ b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/constant/ShopConstants.java @@ -20,6 +20,11 @@ public interface ShopConstants { * 订单自动收货时间(天) */ long ORDER_OUTTIME_UNCONFIRM = 7; + + /** + * 订单自动收货时间(天) + */ + long AFTER_SALES_ORDER_OUTTIME_UNCONFIRM = 7; /** * redis订单未付款key */ @@ -29,6 +34,11 @@ public interface ShopConstants { */ String REDIS_ORDER_OUTTIME_UNCONFIRM = "order-unconfirm-queue"; + /** + * redis订单收货key + */ + String REDIS_AFTERSALESORDER_UNCONFIRM = "order-aftersalesorder-unconfirm-queue"; + /** * redis拼团key */ diff --git a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/OrderInfoEnum.java b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/OrderInfoEnum.java index d92f486..0185202 100644 --- a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/OrderInfoEnum.java +++ b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/OrderInfoEnum.java @@ -24,6 +24,7 @@ public enum OrderInfoEnum { STATUS_WAIT_RECEIVED(1,"待收货"), STATUS_RECEIVED(2,"已收货"), STATUS_FINISHED(3,"已完成"), + STATUS_CANCEL(4,"取消"), PAY_STATUS_UNPAID(0,"未支付"), PAY_STATUS_HAVE_PAID(1,"已支付"), @@ -57,7 +58,10 @@ public enum OrderInfoEnum { YES(1,"是"), SHIPPING_TYPE_DELIVERY(1,"快递"), - SHIPPING_TYPE_STORE_PICKUP(2,"门店自提"); + SHIPPING_TYPE_STORE_PICKUP(2,"门店自提"), + + UNABLE_AFTER_SALES(0,"不能售后"), + ABLE_AFTER_SALES(1,"能售后"); diff --git a/yshop-module-express/yshop-module-express-api/src/main/java/co/yixiang/yshop/module/express/kdniao/util/KdniaoUtil.java b/yshop-module-express/yshop-module-express-api/src/main/java/co/yixiang/yshop/module/express/kdniao/util/KdniaoUtil.java index fd89810..b59a90c 100644 --- a/yshop-module-express/yshop-module-express-api/src/main/java/co/yixiang/yshop/module/express/kdniao/util/KdniaoUtil.java +++ b/yshop-module-express/yshop-module-express-api/src/main/java/co/yixiang/yshop/module/express/kdniao/util/KdniaoUtil.java @@ -16,6 +16,7 @@ import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.util.*; @@ -51,15 +52,12 @@ public class KdniaoUtil { /** * 获取电子面单信息 - * @param queryDTO - * @param kdniaoElectronicsOrderGoodsDTOList - * @return */ public static KdniaoOrderVO getOrderInfo(KdniaoElectronicsOrderDTO queryDTO, List kdniaoElectronicsOrderGoodsDTOList) { KdniaoOrderVO kdniaoOrderVO = new KdniaoUtil().getEleCtBase(queryDTO,kdniaoElectronicsOrderGoodsDTOList); //todo 由于目前快递鸟订单打印需要申请当地营业网店账号 所有目前这个没法测试 如果有其他用户有可以测试反馈给我们官方 - if (kdniaoOrderVO.getSuccess() == "false"){ + if (Objects.equals(kdniaoOrderVO.getSuccess(), "false")){ log.error(kdniaoOrderVO.getReason()); throw ServiceExceptionUtil.exception(new ErrorCode(999999,kdniaoOrderVO.getReason())); } @@ -87,11 +85,11 @@ public class KdniaoUtil { String RequestData = JSON.toJSONString(requestParamMap); // 组装系统级参数 Map params = new HashMap<>(); - params.put("RequestData", this.urlEncoder(RequestData, "UTF-8")); + params.put("RequestData", this.urlEncoder(RequestData)); params.put("EBusinessID", EBusinessID); - params.put("RequestType", "8001");//免费1002 收费8001 - String dataSign = this.encrypt(RequestData, ApiKey, "UTF-8"); - params.put("DataSign", this.urlEncoder(dataSign, "UTF-8")); + params.put("RequestType", "1002");//免费1002 收费8001 + String dataSign = this.encrypt(RequestData, ApiKey); + params.put("DataSign", this.urlEncoder(dataSign)); params.put("DataType", "2"); // 以form表单形式提交post请求,post请求体中包含了应用级参数和系统级参数 String resultJson = this.sendPost(KDNIAO_LOGISTIC_QUERY, params); @@ -116,11 +114,11 @@ public class KdniaoUtil { String RequestData = JSON.toJSONString(requestParamMap); // 组装系统级参数 Map params = new HashMap<>(); - params.put("RequestData", this.urlEncoder(RequestData, "UTF-8")); + params.put("RequestData", this.urlEncoder(RequestData)); params.put("EBusinessID", EBusinessID); params.put("RequestType", "1007"); - String dataSign = this.encrypt(RequestData, ApiKey, "UTF-8"); - params.put("DataSign", this.urlEncoder(dataSign, "UTF-8")); + String dataSign = this.encrypt(RequestData, ApiKey); + params.put("DataSign", this.urlEncoder(dataSign)); params.put("DataType", "2"); String resultJson = this.sendPost(KDNIAO_ELECT_QUERY, params); @@ -208,17 +206,15 @@ public class KdniaoUtil { * MD5加密 * str 内容 * charset 编码方式 - * - * @throws Exception */ @SuppressWarnings("unused") - private String MD5(String str, String charset) throws Exception { + private String MD5(String str) throws Exception { MessageDigest md = MessageDigest.getInstance("MD5"); - md.update(str.getBytes(charset)); + md.update(str.getBytes(StandardCharsets.UTF_8)); byte[] result = md.digest(); - StringBuffer sb = new StringBuffer(32); - for (int i = 0; i < result.length; i++) { - int val = result[i] & 0xff; + StringBuilder sb = new StringBuilder(32); + for (byte b : result) { + int val = b & 0xff; if (val <= 0xf) { sb.append("0"); } @@ -231,18 +227,14 @@ public class KdniaoUtil { * base64编码 * str 内容 * charset 编码方式 - * - * @throws UnsupportedEncodingException */ - private String base64(String str, String charset) throws UnsupportedEncodingException { - String encoded = Base64.encode(str.getBytes(charset)); - return encoded; + private String base64(String str) throws UnsupportedEncodingException { + return Base64.encode(str.getBytes(StandardCharsets.UTF_8)); } @SuppressWarnings("unused") - private String urlEncoder(String str, String charset) throws UnsupportedEncodingException { - String result = URLEncoder.encode(str, charset); - return result; + private String urlEncoder(String str) throws UnsupportedEncodingException { + return URLEncoder.encode(str, "UTF-8"); } /** @@ -255,11 +247,11 @@ public class KdniaoUtil { * @throws UnsupportedEncodingException ,Exception */ @SuppressWarnings("unused") - private String encrypt(String content, String keyValue, String charset) throws UnsupportedEncodingException, Exception { + private String encrypt(String content, String keyValue) throws UnsupportedEncodingException, Exception { if (keyValue != null) { - return base64(MD5(content + keyValue, charset), charset); + return base64(MD5(content + keyValue)); } - return base64(MD5(content, charset), charset); + return base64(MD5(content)); } /** @@ -290,7 +282,7 @@ public class KdniaoUtil { conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.connect(); // 获取URLConnection对象对应的输出流 - out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8"); + out = new OutputStreamWriter(conn.getOutputStream(), StandardCharsets.UTF_8); // 发送请求参数 if (params != null) { StringBuilder param = new StringBuilder(); @@ -309,13 +301,13 @@ public class KdniaoUtil { out.flush(); // 定义BufferedReader输入流来读取URL的响应 in = new BufferedReader( - new InputStreamReader(conn.getInputStream(), "UTF-8")); + new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8)); String line; while ((line = in.readLine()) != null) { result.append(line); } } catch (Exception e) { - e.printStackTrace(); + log.info(e.getMessage()); } //使用finally块来关闭输出流、输入流 finally { @@ -327,7 +319,7 @@ public class KdniaoUtil { in.close(); } } catch (IOException ex) { - ex.printStackTrace(); + log.info(ex.getMessage()); } } return result.toString(); diff --git a/yshop-module-express/yshop-module-express-biz/src/main/java/co/yixiang/yshop/module/express/controller/admin/express/ExpressController.java b/yshop-module-express/yshop-module-express-biz/src/main/java/co/yixiang/yshop/module/express/controller/admin/express/ExpressController.java index 598de44..ee6f579 100644 --- a/yshop-module-express/yshop-module-express-biz/src/main/java/co/yixiang/yshop/module/express/controller/admin/express/ExpressController.java +++ b/yshop-module-express/yshop-module-express-biz/src/main/java/co/yixiang/yshop/module/express/controller/admin/express/ExpressController.java @@ -1,5 +1,6 @@ package co.yixiang.yshop.module.express.controller.admin.express; +import cn.hutool.crypto.digest.BCrypt; import co.yixiang.yshop.framework.common.pojo.CommonResult; import co.yixiang.yshop.framework.common.pojo.PageResult; import co.yixiang.yshop.framework.excel.core.util.ExcelUtils; @@ -105,7 +106,12 @@ public class ExpressController { @GetMapping("/set") @Operation(summary = "获得快递鸟配置") public CommonResult getExpressSet() { - return success(expressRedisDAO.get()); + KdniaoApiBaseDTO kdniaoApiBaseDTO = expressRedisDAO.get(); + //返回数据加密一下 + String genSalt = BCrypt.gensalt(); + //这个是盐 29个字符,随机生成 System.out.println(gensalt); + kdniaoApiBaseDTO.setApiKey(BCrypt.hashpw(kdniaoApiBaseDTO.getApiKey(), genSalt)); + return success(kdniaoApiBaseDTO); } @PostMapping("/set") @@ -133,6 +139,4 @@ public class ExpressController { return success(KdniaoUtil.getLogisticInfo(params)); } - - } diff --git a/yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/file/FileApi.java b/yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/file/FileApi.java deleted file mode 100644 index d98679b..0000000 --- a/yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/file/FileApi.java +++ /dev/null @@ -1,41 +0,0 @@ -package co.yixiang.yshop.module.infra.api.file; - -/** - * 文件 API 接口 - * - * @author yshop - */ -public interface FileApi { - - /** - * 保存文件,并返回文件的访问路径 - * - * @param content 文件内容 - * @return 文件路径 - */ - default String createFile(byte[] content) { - return createFile(null, null, content); - } - - /** - * 保存文件,并返回文件的访问路径 - * - * @param path 文件路径 - * @param content 文件内容 - * @return 文件路径 - */ - default String createFile(String path, byte[] content) { - return createFile(null, path, content); - } - - /** - * 保存文件,并返回文件的访问路径 - * - * @param name 文件名称 - * @param path 文件路径 - * @param content 文件内容 - * @return 文件路径 - */ - String createFile(String name, String path, byte[] content); - -} diff --git a/yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/logger/ApiAccessLogApi.java b/yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/logger/ApiAccessLogApi.java deleted file mode 100644 index d08f32b..0000000 --- a/yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/logger/ApiAccessLogApi.java +++ /dev/null @@ -1,21 +0,0 @@ -package co.yixiang.yshop.module.infra.api.logger; - -import co.yixiang.yshop.module.infra.api.logger.dto.ApiAccessLogCreateReqDTO; - -import javax.validation.Valid; - -/** - * API 访问日志的 API 接口 - * - * @author yshop - */ -public interface ApiAccessLogApi { - - /** - * 创建 API 访问日志 - * - * @param createDTO 创建信息 - */ - void createApiAccessLog(@Valid ApiAccessLogCreateReqDTO createDTO); - -} diff --git a/yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/logger/ApiErrorLogApi.java b/yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/logger/ApiErrorLogApi.java deleted file mode 100644 index 30a8080..0000000 --- a/yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/logger/ApiErrorLogApi.java +++ /dev/null @@ -1,21 +0,0 @@ -package co.yixiang.yshop.module.infra.api.logger; - -import co.yixiang.yshop.module.infra.api.logger.dto.ApiErrorLogCreateReqDTO; - -import javax.validation.Valid; - -/** - * API 错误日志的 API 接口 - * - * @author yshop - */ -public interface ApiErrorLogApi { - - /** - * 创建 API 错误日志 - * - * @param createDTO 创建信息 - */ - void createApiErrorLog(@Valid ApiErrorLogCreateReqDTO createDTO); - -} diff --git a/yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/logger/dto/ApiAccessLogCreateReqDTO.java b/yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/logger/dto/ApiAccessLogCreateReqDTO.java deleted file mode 100644 index 2423192..0000000 --- a/yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/logger/dto/ApiAccessLogCreateReqDTO.java +++ /dev/null @@ -1,85 +0,0 @@ -package co.yixiang.yshop.module.infra.api.logger.dto; - -import lombok.Data; - -import javax.validation.constraints.NotNull; -import java.time.LocalDateTime; - -/** - * API 访问日志 - * - * @author yshop - */ -@Data -public class ApiAccessLogCreateReqDTO { - - /** - * 链路追踪编号 - */ - private String traceId; - /** - * 用户编号 - */ - private Long userId; - /** - * 用户类型 - */ - private Integer userType; - /** - * 应用名 - */ - @NotNull(message = "应用名不能为空") - private String applicationName; - - /** - * 请求方法名 - */ - @NotNull(message = "http 请求方法不能为空") - private String requestMethod; - /** - * 访问地址 - */ - @NotNull(message = "访问地址不能为空") - private String requestUrl; - /** - * 请求参数 - */ - @NotNull(message = "请求参数不能为空") - private String requestParams; - /** - * 用户 IP - */ - @NotNull(message = "ip 不能为空") - private String userIp; - /** - * 浏览器 UA - */ - @NotNull(message = "User-Agent 不能为空") - private String userAgent; - - /** - * 开始请求时间 - */ - @NotNull(message = "开始请求时间不能为空") - private LocalDateTime beginTime; - /** - * 结束请求时间 - */ - @NotNull(message = "结束请求时间不能为空") - private LocalDateTime endTime; - /** - * 执行时长,单位:毫秒 - */ - @NotNull(message = "执行时长不能为空") - private Integer duration; - /** - * 结果码 - */ - @NotNull(message = "错误码不能为空") - private Integer resultCode; - /** - * 结果提示 - */ - private String resultMsg; - -} diff --git a/yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/logger/dto/ApiErrorLogCreateReqDTO.java b/yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/logger/dto/ApiErrorLogCreateReqDTO.java deleted file mode 100644 index 47d3334..0000000 --- a/yshop-module-infra/yshop-module-infra-api/src/main/java/co/yixiang/yshop/module/infra/api/logger/dto/ApiErrorLogCreateReqDTO.java +++ /dev/null @@ -1,107 +0,0 @@ -package co.yixiang.yshop.module.infra.api.logger.dto; - -import lombok.Data; - -import javax.validation.constraints.NotNull; -import java.time.LocalDateTime; - -/** - * API 错误日志 - * - * @author yshop - */ -@Data -public class ApiErrorLogCreateReqDTO { - - /** - * 链路编号 - */ - private String traceId; - /** - * 账号编号 - */ - private Long userId; - /** - * 用户类型 - */ - private Integer userType; - /** - * 应用名 - */ - @NotNull(message = "应用名不能为空") - private String applicationName; - - /** - * 请求方法名 - */ - @NotNull(message = "http 请求方法不能为空") - private String requestMethod; - /** - * 访问地址 - */ - @NotNull(message = "访问地址不能为空") - private String requestUrl; - /** - * 请求参数 - */ - @NotNull(message = "请求参数不能为空") - private String requestParams; - /** - * 用户 IP - */ - @NotNull(message = "ip 不能为空") - private String userIp; - /** - * 浏览器 UA - */ - @NotNull(message = "User-Agent 不能为空") - private String userAgent; - - /** - * 异常时间 - */ - @NotNull(message = "异常时间不能为空") - private LocalDateTime exceptionTime; - /** - * 异常名 - */ - @NotNull(message = "异常名不能为空") - private String exceptionName; - /** - * 异常发生的类全名 - */ - @NotNull(message = "异常发生的类全名不能为空") - private String exceptionClassName; - /** - * 异常发生的类文件 - */ - @NotNull(message = "异常发生的类文件不能为空") - private String exceptionFileName; - /** - * 异常发生的方法名 - */ - @NotNull(message = "异常发生的方法名不能为空") - private String exceptionMethodName; - /** - * 异常发生的方法所在行 - */ - @NotNull(message = "异常发生的方法所在行不能为空") - private Integer exceptionLineNumber; - /** - * 异常的栈轨迹异常的栈轨迹 - */ - @NotNull(message = "异常的栈轨迹不能为空") - private String exceptionStackTrace; - /** - * 异常导致的根消息 - */ - @NotNull(message = "异常导致的根消息不能为空") - private String exceptionRootCauseMessage; - /** - * 异常导致的消息 - */ - @NotNull(message = "异常导致的消息不能为空") - private String exceptionMessage; - - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/api/file/FileApiImpl.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/api/file/FileApiImpl.java deleted file mode 100644 index 9f3112f..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/api/file/FileApiImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -package co.yixiang.yshop.module.infra.api.file; - -import co.yixiang.yshop.module.infra.service.file.FileService; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import javax.annotation.Resource; - -/** - * 文件 API 实现类 - * - * @author yshop - */ -@Service -@Validated -public class FileApiImpl implements FileApi { - - @Resource - private FileService fileService; - - @Override - public String createFile(String name, String path, byte[] content) { - return fileService.createFile(name, path, content); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/api/logger/ApiAccessLogApiImpl.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/api/logger/ApiAccessLogApiImpl.java deleted file mode 100644 index ff01cf1..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/api/logger/ApiAccessLogApiImpl.java +++ /dev/null @@ -1,27 +0,0 @@ -package co.yixiang.yshop.module.infra.api.logger; - -import co.yixiang.yshop.module.infra.api.logger.dto.ApiAccessLogCreateReqDTO; -import co.yixiang.yshop.module.infra.service.logger.ApiAccessLogService; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import javax.annotation.Resource; - -/** - * API 访问日志的 API 实现类 - * - * @author yshop - */ -@Service -@Validated -public class ApiAccessLogApiImpl implements ApiAccessLogApi { - - @Resource - private ApiAccessLogService apiAccessLogService; - - @Override - public void createApiAccessLog(ApiAccessLogCreateReqDTO createDTO) { - apiAccessLogService.createApiAccessLog(createDTO); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/api/logger/ApiErrorLogApiImpl.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/api/logger/ApiErrorLogApiImpl.java deleted file mode 100644 index 094152d..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/api/logger/ApiErrorLogApiImpl.java +++ /dev/null @@ -1,27 +0,0 @@ -package co.yixiang.yshop.module.infra.api.logger; - -import co.yixiang.yshop.module.infra.api.logger.dto.ApiErrorLogCreateReqDTO; -import co.yixiang.yshop.module.infra.service.logger.ApiErrorLogService; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import javax.annotation.Resource; - -/** - * API 访问日志的 API 接口 - * - * @author yshop - */ -@Service -@Validated -public class ApiErrorLogApiImpl implements ApiErrorLogApi { - - @Resource - private ApiErrorLogService apiErrorLogService; - - @Override - public void createApiErrorLog(ApiErrorLogCreateReqDTO createDTO) { - apiErrorLogService.createApiErrorLog(createDTO); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/api/package-info.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/api/package-info.java deleted file mode 100644 index c9bcf71..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/api/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package co.yixiang.yshop.module.infra.api; diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/CodegenCreateListReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/CodegenCreateListReqVO.java deleted file mode 100644 index 50bc91a..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/CodegenCreateListReqVO.java +++ /dev/null @@ -1,21 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.codegen.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import javax.validation.constraints.NotNull; -import java.util.List; - -@Schema(description = "管理后台 - 基于数据库的表结构,创建代码生成器的表和字段定义 Request VO") -@Data -public class CodegenCreateListReqVO { - - @Schema(description = "数据源配置的编号", required = true, example = "1") - @NotNull(message = "数据源配置的编号不能为空") - private Long dataSourceConfigId; - - @Schema(description = "表名数组", required = true, example = "[1, 2, 3]") - @NotNull(message = "表名数组不能为空") - private List tableNames; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/CodegenDetailRespVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/CodegenDetailRespVO.java deleted file mode 100644 index e73b49a..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/CodegenDetailRespVO.java +++ /dev/null @@ -1,20 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.codegen.vo; - -import co.yixiang.yshop.module.infra.controller.admin.codegen.vo.column.CodegenColumnRespVO; -import co.yixiang.yshop.module.infra.controller.admin.codegen.vo.table.CodegenTableRespVO; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.List; - -@Schema(description = "管理后台 - 代码生成表和字段的明细 Response VO") -@Data -public class CodegenDetailRespVO { - - @Schema(description = "表定义") - private CodegenTableRespVO table; - - @Schema(description = "字段定义") - private List columns; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/CodegenPreviewRespVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/CodegenPreviewRespVO.java deleted file mode 100644 index fd992e5..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/CodegenPreviewRespVO.java +++ /dev/null @@ -1,16 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.codegen.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "管理后台 - 代码生成预览 Response VO,注意,每个文件都是一个该对象") -@Data -public class CodegenPreviewRespVO { - - @Schema(description = "文件路径", required = true, example = "java/co.yixiang.yshop/adminserver/modules/system/controller/test/SysTestDemoController.java") - private String filePath; - - @Schema(description = "代码", required = true, example = "Hello World") - private String code; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/CodegenUpdateReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/CodegenUpdateReqVO.java deleted file mode 100644 index 49edb9c..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/CodegenUpdateReqVO.java +++ /dev/null @@ -1,59 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.codegen.vo; - -import cn.hutool.core.util.ObjectUtil; -import co.yixiang.yshop.module.infra.controller.admin.codegen.vo.column.CodegenColumnBaseVO; -import co.yixiang.yshop.module.infra.controller.admin.codegen.vo.table.CodegenTableBaseVO; -import co.yixiang.yshop.module.infra.enums.codegen.CodegenSceneEnum; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import javax.validation.Valid; -import javax.validation.constraints.AssertTrue; -import javax.validation.constraints.NotNull; -import java.util.List; - -@Schema(description = "管理后台 - 代码生成表和字段的修改 Request VO") -@Data -public class CodegenUpdateReqVO { - - @Valid // 校验内嵌的字段 - @NotNull(message = "表定义不能为空") - private Table table; - - @Valid // 校验内嵌的字段 - @NotNull(message = "字段定义不能为空") - private List columns; - - @Schema(description = "更新表定义") - @Data - @EqualsAndHashCode(callSuper = true) - @ToString(callSuper = true) - @Valid - public static class Table extends CodegenTableBaseVO { - - @Schema(description = "编号", required = true, example = "1") - private Long id; - - @AssertTrue(message = "上级菜单不能为空,请前往 [修改生成配置 -> 生成信息] 界面,设置“上级菜单”字段") - public boolean isParentMenuIdValid() { - // 生成场景为管理后台时,必须设置上级菜单,不然生成的菜单 SQL 是无父级菜单的 - return ObjectUtil.notEqual(getScene(), CodegenSceneEnum.ADMIN.getScene()) - || getParentMenuId() != null; - } - - } - - @Schema(description = "更新表定义") - @Data - @EqualsAndHashCode(callSuper = true) - @ToString(callSuper = true) - public static class Column extends CodegenColumnBaseVO { - - @Schema(description = "编号", required = true, example = "1") - private Long id; - - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/column/CodegenColumnBaseVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/column/CodegenColumnBaseVO.java deleted file mode 100644 index 422781d..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/column/CodegenColumnBaseVO.java +++ /dev/null @@ -1,84 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.codegen.vo.column; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** -* 代码生成字段定义 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class CodegenColumnBaseVO { - - @Schema(description = "表编号", required = true, example = "1") - @NotNull(message = "表编号不能为空") - private Long tableId; - - @Schema(description = "字段名", required = true, example = "user_age") - @NotNull(message = "字段名不能为空") - private String columnName; - - @Schema(description = "字段类型", required = true, example = "int(11)") - @NotNull(message = "字段类型不能为空") - private String dataType; - - @Schema(description = "字段描述", required = true, example = "年龄") - @NotNull(message = "字段描述不能为空") - private String columnComment; - - @Schema(description = "是否允许为空", required = true, example = "true") - @NotNull(message = "是否允许为空不能为空") - private Boolean nullable; - - @Schema(description = "是否主键", required = true, example = "false") - @NotNull(message = "是否主键不能为空") - private Boolean primaryKey; - - @Schema(description = "是否自增", required = true, example = "true") - @NotNull(message = "是否自增不能为空") - private String autoIncrement; - - @Schema(description = "排序", required = true, example = "10") - @NotNull(message = "排序不能为空") - private Integer ordinalPosition; - - @Schema(description = "Java 属性类型", required = true, example = "userAge") - @NotNull(message = "Java 属性类型不能为空") - private String javaType; - - @Schema(description = "Java 属性名", required = true, example = "Integer") - @NotNull(message = "Java 属性名不能为空") - private String javaField; - - @Schema(description = "字典类型", example = "sys_gender") - private String dictType; - - @Schema(description = "数据示例", example = "1024") - private String example; - - @Schema(description = "是否为 Create 创建操作的字段", required = true, example = "true") - @NotNull(message = "是否为 Create 创建操作的字段不能为空") - private Boolean createOperation; - - @Schema(description = "是否为 Update 更新操作的字段", required = true, example = "false") - @NotNull(message = "是否为 Update 更新操作的字段不能为空") - private Boolean updateOperation; - - @Schema(description = "是否为 List 查询操作的字段", required = true, example = "true") - @NotNull(message = "是否为 List 查询操作的字段不能为空") - private Boolean listOperation; - - @Schema(description = "List 查询操作的条件类型,参见 CodegenColumnListConditionEnum 枚举", required = true, example = "LIKE") - @NotNull(message = "List 查询操作的条件类型不能为空") - private String listOperationCondition; - - @Schema(description = "是否为 List 查询操作的返回字段", required = true, example = "true") - @NotNull(message = "是否为 List 查询操作的返回字段不能为空") - private Boolean listOperationResult; - - @Schema(description = "显示类型", required = true, example = "input") - @NotNull(message = "显示类型不能为空") - private String htmlType; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/table/CodegenTablePageReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/table/CodegenTablePageReqVO.java deleted file mode 100644 index c35026e..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/table/CodegenTablePageReqVO.java +++ /dev/null @@ -1,33 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.codegen.vo.table; - -import co.yixiang.yshop.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 表定义分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class CodegenTablePageReqVO extends PageParam { - - @Schema(description = "表名称,模糊匹配", example = "yshop") - private String tableName; - - @Schema(description = "表描述,模糊匹配", example = "yshop") - private String tableComment; - - @Schema(description = "实体,模糊匹配", example = "Yshop") - private String className; - - @Schema(description = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/table/CodegenTableRespVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/table/CodegenTableRespVO.java deleted file mode 100644 index 8cd4b3e..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/table/CodegenTableRespVO.java +++ /dev/null @@ -1,28 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.codegen.vo.table; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - 代码生成表定义 Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class CodegenTableRespVO extends CodegenTableBaseVO { - - @Schema(description = "编号", required = true, example = "1") - private Long id; - - @Schema(description = "主键编号", required = true, example = "1024") - private Integer dataSourceConfigId; - - @Schema(description = "创建时间", required = true) - private LocalDateTime createTime; - - @Schema(description = "更新时间", required = true) - private LocalDateTime updateTime; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/table/DatabaseTableRespVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/table/DatabaseTableRespVO.java deleted file mode 100644 index 46b5906..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/codegen/vo/table/DatabaseTableRespVO.java +++ /dev/null @@ -1,16 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.codegen.vo.table; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "管理后台 - 数据库的表定义 Response VO") -@Data -public class DatabaseTableRespVO { - - @Schema(description = "表名称", required = true, example = "yuanma") - private String name; - - @Schema(description = "表描述", required = true, example = "yshop") - private String comment; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/ConfigController.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/ConfigController.java deleted file mode 100644 index 20cc2ee..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/ConfigController.java +++ /dev/null @@ -1,105 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.config; - -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.excel.core.util.ExcelUtils; -import co.yixiang.yshop.framework.operatelog.core.annotations.OperateLog; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.*; -import co.yixiang.yshop.module.infra.convert.config.ConfigConvert; -import co.yixiang.yshop.module.infra.dal.dataobject.config.ConfigDO; -import co.yixiang.yshop.module.infra.enums.ErrorCodeConstants; -import co.yixiang.yshop.module.infra.service.config.ConfigService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; -import javax.validation.Valid; -import java.io.IOException; -import java.util.List; - -import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; -import static co.yixiang.yshop.framework.common.pojo.CommonResult.success; -import static co.yixiang.yshop.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - 参数配置") -@RestController -@RequestMapping("/infra/config") -@Validated -public class ConfigController { - - @Resource - private ConfigService configService; - - @PostMapping("/create") - @Operation(summary = "创建参数配置") - @PreAuthorize("@ss.hasPermission('infra:config:create')") - public CommonResult createConfig(@Valid @RequestBody ConfigCreateReqVO reqVO) { - return success(configService.createConfig(reqVO)); - } - - @PutMapping("/update") - @Operation(summary = "修改参数配置") - @PreAuthorize("@ss.hasPermission('infra:config:update')") - public CommonResult updateConfig(@Valid @RequestBody ConfigUpdateReqVO reqVO) { - configService.updateConfig(reqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除参数配置") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:config:delete')") - public CommonResult deleteConfig(@RequestParam("id") Long id) { - configService.deleteConfig(id); - return success(true); - } - - @GetMapping(value = "/get") - @Operation(summary = "获得参数配置") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:config:query')") - public CommonResult getConfig(@RequestParam("id") Long id) { - return success(ConfigConvert.INSTANCE.convert(configService.getConfig(id))); - } - - @GetMapping(value = "/get-value-by-key") - @Operation(summary = "根据参数键名查询参数值", description = "不可见的配置,不允许返回给前端") - @Parameter(name = "key", description = "参数键", required = true, example = "yshop.biz.username") - public CommonResult getConfigKey(@RequestParam("key") String key) { - ConfigDO config = configService.getConfigByKey(key); - if (config == null) { - return success(null); - } - if (!config.getVisible()) { - throw exception(ErrorCodeConstants.CONFIG_GET_VALUE_ERROR_IF_VISIBLE); - } - return success(config.getValue()); - } - - @GetMapping("/page") - @Operation(summary = "获取参数配置分页") - @PreAuthorize("@ss.hasPermission('infra:config:query')") - public CommonResult> getConfigPage(@Valid ConfigPageReqVO reqVO) { - PageResult page = configService.getConfigPage(reqVO); - return success(ConfigConvert.INSTANCE.convertPage(page)); - } - - @GetMapping("/export") - @Operation(summary = "导出参数配置") - @PreAuthorize("@ss.hasPermission('infra:config:export')") - @OperateLog(type = EXPORT) - public void exportConfig(@Valid ConfigExportReqVO reqVO, - HttpServletResponse response) throws IOException { - List list = configService.getConfigList(reqVO); - // 拼接数据 - List datas = ConfigConvert.INSTANCE.convertList(list); - // 输出 - ExcelUtils.write(response, "参数配置.xls", "数据", ConfigExcelVO.class, datas); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigBaseVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigBaseVO.java deleted file mode 100644 index 194ded8..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigBaseVO.java +++ /dev/null @@ -1,39 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.config.vo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; - -/** - * 参数配置 Base VO,提供给添加、修改、详细的子 VO 使用 - * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 - */ -@Data -public class ConfigBaseVO { - - @Schema(description = "参数分组", required = true, example = "biz") - @NotEmpty(message = "参数分组不能为空") - @Size(max = 50, message = "参数名称不能超过50个字符") - private String category; - - @Schema(description = "参数名称", required = true, example = "数据库名") - @NotBlank(message = "参数名称不能为空") - @Size(max = 100, message = "参数名称不能超过100个字符") - private String name; - - @Schema(description = "参数键值", required = true, example = "1024") - @NotBlank(message = "参数键值不能为空") - @Size(max = 500, message = "参数键值长度不能超过500个字符") - private String value; - - @Schema(description = "是否可见", required = true, example = "true") - @NotNull(message = "是否可见不能为空") - private Boolean visible; - - @Schema(description = "备注", example = "备注一下很帅气!") - private String remark; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigExcelVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigExcelVO.java deleted file mode 100644 index 84f5a73..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigExcelVO.java +++ /dev/null @@ -1,46 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.config.vo; - -import co.yixiang.yshop.framework.excel.core.annotations.DictFormat; -import co.yixiang.yshop.framework.excel.core.convert.DictConvert; -import co.yixiang.yshop.module.infra.enums.DictTypeConstants; -import com.alibaba.excel.annotation.ExcelProperty; -import lombok.Data; - -import java.time.LocalDateTime; - -/** - * 参数配置 Excel 导出响应 VO - */ -@Data -public class ConfigExcelVO { - - @ExcelProperty("参数配置序号") - private Long id; - - @ExcelProperty("参数键名") - private String configKey; - - @ExcelProperty("参数分类") - private String category; - - @ExcelProperty("参数名称") - private String name; - - @ExcelProperty("参数键值") - private String value; - - @ExcelProperty(value = "参数类型", converter = DictConvert.class) - @DictFormat(DictTypeConstants.CONFIG_TYPE) - private Integer type; - - @ExcelProperty(value = "是否可见", converter = DictConvert.class) - @DictFormat(DictTypeConstants.BOOLEAN_STRING) - private Boolean visible; - - @ExcelProperty("备注") - private String remark; - - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigExportReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigExportReqVO.java deleted file mode 100644 index 416a034..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigExportReqVO.java +++ /dev/null @@ -1,28 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.config.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 参数配置导出 Request VO") -@Data -public class ConfigExportReqVO { - - @Schema(description = "参数名称", example = "模糊匹配") - private String name; - - @Schema(description = "参数键名,模糊匹配", example = "yshop.db.username") - private String key; - - @Schema(description = "参数类型,参见 SysConfigTypeEnum 枚举", example = "1") - private Integer type; - - @Schema(description = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigPageReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigPageReqVO.java deleted file mode 100644 index eb1ffd9..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigPageReqVO.java +++ /dev/null @@ -1,33 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.config.vo; - -import co.yixiang.yshop.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 参数配置分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ConfigPageReqVO extends PageParam { - - @Schema(description = "数据源名称,模糊匹配", example = "名称") - private String name; - - @Schema(description = "参数键名,模糊匹配", example = "yshop.db.username") - private String key; - - @Schema(description = "参数类型,参见 SysConfigTypeEnum 枚举", example = "1") - private Integer type; - - @Schema(description = "创建时间", example = "[2022-07-01 00:00:00,2022-07-01 23:59:59]") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigRespVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigRespVO.java deleted file mode 100644 index 259eac9..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/config/vo/ConfigRespVO.java +++ /dev/null @@ -1,30 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.config.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Size; -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - 参数配置信息 Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -public class ConfigRespVO extends ConfigBaseVO { - - @Schema(description = "参数配置序号", required = true, example = "1024") - private Long id; - - @Schema(description = "参数键名", required = true, example = "yshop.db.username") - @NotBlank(message = "参数键名长度不能为空") - @Size(max = 100, message = "参数键名长度不能超过100个字符") - private String key; - - @Schema(description = "参数类型,参见 SysConfigTypeEnum 枚举", required = true, example = "1") - private Integer type; - - @Schema(description = "创建时间", required = true, example = "时间戳格式") - private LocalDateTime createTime; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/DataSourceConfigController.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/DataSourceConfigController.java deleted file mode 100644 index 8baf9bd..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/DataSourceConfigController.java +++ /dev/null @@ -1,73 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.db; - -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import co.yixiang.yshop.module.infra.controller.admin.db.vo.DataSourceConfigCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.db.vo.DataSourceConfigRespVO; -import co.yixiang.yshop.module.infra.controller.admin.db.vo.DataSourceConfigUpdateReqVO; -import co.yixiang.yshop.module.infra.convert.db.DataSourceConfigConvert; -import co.yixiang.yshop.module.infra.dal.dataobject.db.DataSourceConfigDO; -import co.yixiang.yshop.module.infra.service.db.DataSourceConfigService; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import javax.validation.Valid; -import java.util.List; - -import static co.yixiang.yshop.framework.common.pojo.CommonResult.success; - -@Tag(name = "管理后台 - 数据源配置") -@RestController -@RequestMapping("/infra/data-source-config") -@Validated -public class DataSourceConfigController { - - @Resource - private DataSourceConfigService dataSourceConfigService; - - @PostMapping("/create") - @Operation(summary = "创建数据源配置") - @PreAuthorize("@ss.hasPermission('infra:data-source-config:create')") - public CommonResult createDataSourceConfig(@Valid @RequestBody DataSourceConfigCreateReqVO createReqVO) { - return success(dataSourceConfigService.createDataSourceConfig(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新数据源配置") - @PreAuthorize("@ss.hasPermission('infra:data-source-config:update')") - public CommonResult updateDataSourceConfig(@Valid @RequestBody DataSourceConfigUpdateReqVO updateReqVO) { - dataSourceConfigService.updateDataSourceConfig(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除数据源配置") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('infra:data-source-config:delete')") - public CommonResult deleteDataSourceConfig(@RequestParam("id") Long id) { - dataSourceConfigService.deleteDataSourceConfig(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得数据源配置") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:data-source-config:query')") - public CommonResult getDataSourceConfig(@RequestParam("id") Long id) { - DataSourceConfigDO dataSourceConfig = dataSourceConfigService.getDataSourceConfig(id); - return success(DataSourceConfigConvert.INSTANCE.convert(dataSourceConfig)); - } - - @GetMapping("/list") - @Operation(summary = "获得数据源配置列表") - @PreAuthorize("@ss.hasPermission('infra:data-source-config:query')") - public CommonResult> getDataSourceConfigList() { - List list = dataSourceConfigService.getDataSourceConfigList(); - return success(DataSourceConfigConvert.INSTANCE.convertList(list)); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/vo/DataSourceConfigBaseVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/vo/DataSourceConfigBaseVO.java deleted file mode 100644 index a0596ef..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/vo/DataSourceConfigBaseVO.java +++ /dev/null @@ -1,25 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.db.vo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import javax.validation.constraints.*; - -/** -* 数据源配置 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class DataSourceConfigBaseVO { - - @Schema(description = "数据源名称", required = true, example = "test") - @NotNull(message = "数据源名称不能为空") - private String name; - - @Schema(description = "数据源连接", required = true, example = "jdbc:mysql://127.0.0.1:3306/yshop-pro") - @NotNull(message = "数据源连接不能为空") - private String url; - - @Schema(description = "用户名", required = true, example = "root") - @NotNull(message = "用户名不能为空") - private String username; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/vo/DataSourceConfigCreateReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/vo/DataSourceConfigCreateReqVO.java deleted file mode 100644 index f409dc6..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/vo/DataSourceConfigCreateReqVO.java +++ /dev/null @@ -1,16 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.db.vo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import javax.validation.constraints.*; - -@Schema(description = "管理后台 - 数据源配置创建 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class DataSourceConfigCreateReqVO extends DataSourceConfigBaseVO { - - @Schema(description = "密码", required = true, example = "123456") - @NotNull(message = "密码不能为空") - private String password; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/vo/DataSourceConfigRespVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/vo/DataSourceConfigRespVO.java deleted file mode 100644 index b3ecf4a..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/vo/DataSourceConfigRespVO.java +++ /dev/null @@ -1,19 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.db.vo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - 数据源配置 Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class DataSourceConfigRespVO extends DataSourceConfigBaseVO { - - @Schema(description = "主键编号", required = true, example = "1024") - private Integer id; - - @Schema(description = "创建时间", required = true) - private LocalDateTime createTime; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/vo/DataSourceConfigUpdateReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/vo/DataSourceConfigUpdateReqVO.java deleted file mode 100644 index 81b36e4..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/db/vo/DataSourceConfigUpdateReqVO.java +++ /dev/null @@ -1,20 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.db.vo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import javax.validation.constraints.*; - -@Schema(description = "管理后台 - 数据源配置更新 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class DataSourceConfigUpdateReqVO extends DataSourceConfigBaseVO { - - @Schema(description = "主键编号", required = true, example = "1024") - @NotNull(message = "主键编号不能为空") - private Long id; - - @Schema(description = "密码", required = true, example = "123456") - @NotNull(message = "密码不能为空") - private String password; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/FileConfigController.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/FileConfigController.java deleted file mode 100644 index bfb8469..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/FileConfigController.java +++ /dev/null @@ -1,89 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.file; - -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.config.FileConfigCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.config.FileConfigPageReqVO; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.config.FileConfigRespVO; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.config.FileConfigUpdateReqVO; -import co.yixiang.yshop.module.infra.convert.file.FileConfigConvert; -import co.yixiang.yshop.module.infra.dal.dataobject.file.FileConfigDO; -import co.yixiang.yshop.module.infra.service.file.FileConfigService; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import javax.validation.Valid; - -import static co.yixiang.yshop.framework.common.pojo.CommonResult.success; - -@Tag(name = "管理后台 - 文件配置") -@RestController -@RequestMapping("/infra/file-config") -@Validated -public class FileConfigController { - - @Resource - private FileConfigService fileConfigService; - - @PostMapping("/create") - @Operation(summary = "创建文件配置") - @PreAuthorize("@ss.hasPermission('infra:file-config:create')") - public CommonResult createFileConfig(@Valid @RequestBody FileConfigCreateReqVO createReqVO) { - return success(fileConfigService.createFileConfig(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新文件配置") - @PreAuthorize("@ss.hasPermission('infra:file-config:update')") - public CommonResult updateFileConfig(@Valid @RequestBody FileConfigUpdateReqVO updateReqVO) { - fileConfigService.updateFileConfig(updateReqVO); - return success(true); - } - - @PutMapping("/update-master") - @Operation(summary = "更新文件配置为 Master") - @PreAuthorize("@ss.hasPermission('infra:file-config:update')") - public CommonResult updateFileConfigMaster(@RequestParam("id") Long id) { - fileConfigService.updateFileConfigMaster(id); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除文件配置") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('infra:file-config:delete')") - public CommonResult deleteFileConfig(@RequestParam("id") Long id) { - fileConfigService.deleteFileConfig(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得文件配置") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:file-config:query')") - public CommonResult getFileConfig(@RequestParam("id") Long id) { - FileConfigDO fileConfig = fileConfigService.getFileConfig(id); - return success(FileConfigConvert.INSTANCE.convert(fileConfig)); - } - - @GetMapping("/page") - @Operation(summary = "获得文件配置分页") - @PreAuthorize("@ss.hasPermission('infra:file-config:query')") - public CommonResult> getFileConfigPage(@Valid FileConfigPageReqVO pageVO) { - PageResult pageResult = fileConfigService.getFileConfigPage(pageVO); - return success(FileConfigConvert.INSTANCE.convertPage(pageResult)); - } - - @GetMapping("/test") - @Operation(summary = "测试文件配置是否正确") - @PreAuthorize("@ss.hasPermission('infra:file-config:query')") - public CommonResult testFileConfig(@RequestParam("id") Long id) throws Exception { - String url = fileConfigService.testFileConfig(id); - return success(url); - } -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/config/FileConfigBaseVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/config/FileConfigBaseVO.java deleted file mode 100644 index f2e2b1f..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/config/FileConfigBaseVO.java +++ /dev/null @@ -1,21 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.file.vo.config; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** -* 文件配置 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class FileConfigBaseVO { - - @Schema(description = "配置名", required = true, example = "S3 - 阿里云") - @NotNull(message = "配置名不能为空") - private String name; - - @Schema(description = "备注", example = "我是备注") - private String remark; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/config/FileConfigCreateReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/config/FileConfigCreateReqVO.java deleted file mode 100644 index a0d5752..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/config/FileConfigCreateReqVO.java +++ /dev/null @@ -1,25 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.file.vo.config; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import javax.validation.constraints.NotNull; -import java.util.Map; - -@Schema(description = "管理后台 - 文件配置创建 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class FileConfigCreateReqVO extends FileConfigBaseVO { - - @Schema(description = "存储器,参见 FileStorageEnum 枚举类参见 FileStorageEnum 枚举类", required = true, example = "1") - @NotNull(message = "存储器不能为空") - private Integer storage; - - @Schema(description = "存储配置,配置是动态参数,所以使用 Map 接收", required = true) - @NotNull(message = "存储配置不能为空") - private Map config; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/config/FileConfigPageReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/config/FileConfigPageReqVO.java deleted file mode 100644 index 26a3692..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/config/FileConfigPageReqVO.java +++ /dev/null @@ -1,30 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.file.vo.config; - -import co.yixiang.yshop.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 文件配置分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class FileConfigPageReqVO extends PageParam { - - @Schema(description = "配置名", example = "S3 - 阿里云") - private String name; - - @Schema(description = "存储器", example = "1") - private Integer storage; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @Schema(description = "创建时间") - private LocalDateTime[] createTime; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/file/FilePageReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/file/FilePageReqVO.java deleted file mode 100644 index dbd24ba..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/file/FilePageReqVO.java +++ /dev/null @@ -1,30 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.file.vo.file; - -import co.yixiang.yshop.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 文件分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class FilePageReqVO extends PageParam { - - @Schema(description = "文件路径,模糊匹配", example = "yshop") - private String path; - - @Schema(description = "文件类型,模糊匹配", example = "application/octet-stream") - private String type; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @Schema(description = "创建时间") - private LocalDateTime[] createTime; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/file/FileRespVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/file/FileRespVO.java deleted file mode 100644 index e0707c7..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/file/FileRespVO.java +++ /dev/null @@ -1,36 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.file.vo.file; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - 文件 Response VO,不返回 content 字段,太大") -@Data -public class FileRespVO { - - @Schema(description = "文件编号", required = true, example = "1024") - private Long id; - - @Schema(description = "配置编号", required = true, example = "11") - private Long configId; - - @Schema(description = "文件路径", required = true, example = "yshop.jpg") - private String path; - - @Schema(description = "原文件名", required = true, example = "yshop.jpg") - private String name; - - @Schema(description = "文件 URL", required = true, example = "yshop.jpg") - private String url; - - @Schema(description = "文件MIME类型", example = "application/octet-stream") - private String type; - - @Schema(description = "文件大小", example = "2048", required = true) - private Integer size; - - @Schema(description = "创建时间", required = true) - private LocalDateTime createTime; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/file/FileUploadReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/file/FileUploadReqVO.java deleted file mode 100644 index dba45ef..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/file/vo/file/FileUploadReqVO.java +++ /dev/null @@ -1,20 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.file.vo.file; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import org.springframework.web.multipart.MultipartFile; - -import javax.validation.constraints.NotNull; - -@Schema(description = "管理后台 - 上传文件 Request VO") -@Data -public class FileUploadReqVO { - - @Schema(description = "文件附件", required = true) - @NotNull(message = "文件附件不能为空") - private MultipartFile file; - - @Schema(description = "文件附件", example = "yshopyuanma.png") - private String path; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/JobController.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/JobController.java deleted file mode 100644 index 307d618..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/JobController.java +++ /dev/null @@ -1,145 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.job; - -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.excel.core.util.ExcelUtils; -import co.yixiang.yshop.framework.operatelog.core.annotations.OperateLog; -import co.yixiang.yshop.framework.quartz.core.util.CronUtils; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.job.*; -import co.yixiang.yshop.module.infra.convert.job.JobConvert; -import co.yixiang.yshop.module.infra.dal.dataobject.job.JobDO; -import co.yixiang.yshop.module.infra.service.job.JobService; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Parameters; -import io.swagger.v3.oas.annotations.Operation; -import org.quartz.SchedulerException; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; -import javax.validation.Valid; -import java.io.IOException; -import java.time.LocalDateTime; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -import static co.yixiang.yshop.framework.common.pojo.CommonResult.success; -import static co.yixiang.yshop.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - 定时任务") -@RestController -@RequestMapping("/infra/job") -@Validated -public class JobController { - - @Resource - private JobService jobService; - - @PostMapping("/create") - @Operation(summary = "创建定时任务") - @PreAuthorize("@ss.hasPermission('infra:job:create')") - public CommonResult createJob(@Valid @RequestBody JobCreateReqVO createReqVO) - throws SchedulerException { - return success(jobService.createJob(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新定时任务") - @PreAuthorize("@ss.hasPermission('infra:job:update')") - public CommonResult updateJob(@Valid @RequestBody JobUpdateReqVO updateReqVO) - throws SchedulerException { - jobService.updateJob(updateReqVO); - return success(true); - } - - @PutMapping("/update-status") - @Operation(summary = "更新定时任务的状态") - @Parameters({ - @Parameter(name = "id", description = "编号", required = true, example = "1024"), - @Parameter(name = "status", description = "状态", required = true, example = "1"), - }) - @PreAuthorize("@ss.hasPermission('infra:job:update')") - public CommonResult updateJobStatus(@RequestParam(value = "id") Long id, @RequestParam("status") Integer status) - throws SchedulerException { - jobService.updateJobStatus(id, status); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除定时任务") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:job:delete')") - public CommonResult deleteJob(@RequestParam("id") Long id) - throws SchedulerException { - jobService.deleteJob(id); - return success(true); - } - - @PutMapping("/trigger") - @Operation(summary = "触发定时任务") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:job:trigger')") - public CommonResult triggerJob(@RequestParam("id") Long id) throws SchedulerException { - jobService.triggerJob(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得定时任务") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:job:query')") - public CommonResult getJob(@RequestParam("id") Long id) { - JobDO job = jobService.getJob(id); - return success(JobConvert.INSTANCE.convert(job)); - } - - @GetMapping("/list") - @Operation(summary = "获得定时任务列表") - @Parameter(name = "ids", description = "编号列表", required = true) - @PreAuthorize("@ss.hasPermission('infra:job:query')") - public CommonResult> getJobList(@RequestParam("ids") Collection ids) { - List list = jobService.getJobList(ids); - return success(JobConvert.INSTANCE.convertList(list)); - } - - @GetMapping("/page") - @Operation(summary = "获得定时任务分页") - @PreAuthorize("@ss.hasPermission('infra:job:query')") - public CommonResult> getJobPage(@Valid JobPageReqVO pageVO) { - PageResult pageResult = jobService.getJobPage(pageVO); - return success(JobConvert.INSTANCE.convertPage(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出定时任务 Excel") - @PreAuthorize("@ss.hasPermission('infra:job:export')") - @OperateLog(type = EXPORT) - public void exportJobExcel(@Valid JobExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { - List list = jobService.getJobList(exportReqVO); - // 导出 Excel - List datas = JobConvert.INSTANCE.convertList02(list); - ExcelUtils.write(response, "定时任务.xls", "数据", JobExcelVO.class, datas); - } - - @GetMapping("/get_next_times") - @Operation(summary = "获得定时任务的下 n 次执行时间") - @Parameters({ - @Parameter(name = "id", description = "编号", required = true, example = "1024"), - @Parameter(name = "count", description = "数量", example = "5") - }) - @PreAuthorize("@ss.hasPermission('infra:job:query')") - public CommonResult> getJobNextTimes(@RequestParam("id") Long id, - @RequestParam(value = "count", required = false, defaultValue = "5") Integer count) { - JobDO job = jobService.getJob(id); - if (job == null) { - return success(Collections.emptyList()); - } - return success(CronUtils.getNextTimes(job.getCronExpression(), count)); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/JobLogController.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/JobLogController.java deleted file mode 100644 index d471813..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/JobLogController.java +++ /dev/null @@ -1,81 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.job; - -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.excel.core.util.ExcelUtils; -import co.yixiang.yshop.framework.operatelog.core.annotations.OperateLog; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.log.JobLogExcelVO; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.log.JobLogExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.log.JobLogPageReqVO; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.log.JobLogRespVO; -import co.yixiang.yshop.module.infra.convert.job.JobLogConvert; -import co.yixiang.yshop.module.infra.dal.dataobject.job.JobLogDO; -import co.yixiang.yshop.module.infra.service.job.JobLogService; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; -import javax.validation.Valid; -import java.io.IOException; -import java.util.Collection; -import java.util.List; - -import static co.yixiang.yshop.framework.common.pojo.CommonResult.success; -import static co.yixiang.yshop.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - 定时任务日志") -@RestController -@RequestMapping("/infra/job-log") -@Validated -public class JobLogController { - - @Resource - private JobLogService jobLogService; - - @GetMapping("/get") - @Operation(summary = "获得定时任务日志") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:job:query')") - public CommonResult getJobLog(@RequestParam("id") Long id) { - JobLogDO jobLog = jobLogService.getJobLog(id); - return success(JobLogConvert.INSTANCE.convert(jobLog)); - } - - @GetMapping("/list") - @Operation(summary = "获得定时任务日志列表") - @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") - @PreAuthorize("@ss.hasPermission('infra:job:query')") - public CommonResult> getJobLogList(@RequestParam("ids") Collection ids) { - List list = jobLogService.getJobLogList(ids); - return success(JobLogConvert.INSTANCE.convertList(list)); - } - - @GetMapping("/page") - @Operation(summary = "获得定时任务日志分页") - @PreAuthorize("@ss.hasPermission('infra:job:query')") - public CommonResult> getJobLogPage(@Valid JobLogPageReqVO pageVO) { - PageResult pageResult = jobLogService.getJobLogPage(pageVO); - return success(JobLogConvert.INSTANCE.convertPage(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出定时任务日志 Excel") - @PreAuthorize("@ss.hasPermission('infra:job:export')") - @OperateLog(type = EXPORT) - public void exportJobLogExcel(@Valid JobLogExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { - List list = jobLogService.getJobLogList(exportReqVO); - // 导出 Excel - List datas = JobLogConvert.INSTANCE.convertList02(list); - ExcelUtils.write(response, "任务日志.xls", "数据", JobLogExcelVO.class, datas); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobBaseVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobBaseVO.java deleted file mode 100644 index a44cebf..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobBaseVO.java +++ /dev/null @@ -1,36 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.job.vo.job; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** -* 定时任务 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class JobBaseVO { - - @Schema(description = "任务名称", required = true, example = "测试任务") - @NotNull(message = "任务名称不能为空") - private String name; - - @Schema(description = "处理器的参数", example = "yshop") - private String handlerParam; - - @Schema(description = "CRON 表达式", required = true, example = "0/10 * * * * ? *") - @NotNull(message = "CRON 表达式不能为空") - private String cronExpression; - - @Schema(description = "重试次数", required = true, example = "3") - @NotNull(message = "重试次数不能为空") - private Integer retryCount; - - @Schema(description = "重试间隔", required = true, example = "1000") - @NotNull(message = "重试间隔不能为空") - private Integer retryInterval; - - @Schema(description = "监控超时时间", example = "1000") - private Integer monitorTimeout; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobCreateReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobCreateReqVO.java deleted file mode 100644 index c5cbbf3..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobCreateReqVO.java +++ /dev/null @@ -1,20 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.job.vo.job; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import javax.validation.constraints.NotNull; - -@Schema(description = "管理后台 - 定时任务创建 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class JobCreateReqVO extends JobBaseVO { - - @Schema(description = "处理器的名字", required = true, example = "sysUserSessionTimeoutJob") - @NotNull(message = "处理器的名字不能为空") - private String handlerName; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobExportReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobExportReqVO.java deleted file mode 100644 index 1dac8b9..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobExportReqVO.java +++ /dev/null @@ -1,19 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.job.vo.job; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "管理后台 - 定时任务 Excel 导出 Request VO-参数和 JobPageReqVO 是一致的") -@Data -public class JobExportReqVO { - - @Schema(description = "任务名称-模糊匹配", example = "测试任务") - private String name; - - @Schema(description = "任务状态-参见 JobStatusEnum 枚举", example = "1") - private Integer status; - - @Schema(description = "处理器的名字-模糊匹配", example = "UserSessionTimeoutJob") - private String handlerName; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobRespVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobRespVO.java deleted file mode 100644 index 7cc4845..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobRespVO.java +++ /dev/null @@ -1,30 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.job.vo.job; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import javax.validation.constraints.NotNull; -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - 定时任务 Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class JobRespVO extends JobBaseVO { - - @Schema(description = "任务编号", required = true, example = "1024") - private Long id; - - @Schema(description = "任务状态", required = true, example = "1") - private Integer status; - - @Schema(description = "处理器的名字", required = true, example = "sysUserSessionTimeoutJob") - @NotNull(message = "处理器的名字不能为空") - private String handlerName; - - @Schema(description = "创建时间", required = true) - private LocalDateTime createTime; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobUpdateReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobUpdateReqVO.java deleted file mode 100644 index 34c6fb9..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/job/JobUpdateReqVO.java +++ /dev/null @@ -1,20 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.job.vo.job; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import javax.validation.constraints.NotNull; - -@Schema(description = "管理后台 - 定时任务更新 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class JobUpdateReqVO extends JobBaseVO { - - @Schema(description = "任务编号", required = true, example = "1024") - @NotNull(message = "任务编号不能为空") - private Long id; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogBaseVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogBaseVO.java deleted file mode 100644 index 0888749..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogBaseVO.java +++ /dev/null @@ -1,52 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.job.vo.log; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import javax.validation.constraints.NotNull; -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -/** -* 定时任务日志 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class JobLogBaseVO { - - @Schema(description = "任务编号", required = true, example = "1024") - @NotNull(message = "任务编号不能为空") - private Long jobId; - - @Schema(description = "处理器的名字", required = true, example = "sysUserSessionTimeoutJob") - @NotNull(message = "处理器的名字不能为空") - private String handlerName; - - @Schema(description = "处理器的参数", example = "yshop") - private String handlerParam; - - @Schema(description = "第几次执行", required = true, example = "1") - @NotNull(message = "第几次执行不能为空") - private Integer executeIndex; - - @Schema(description = "开始执行时间", required = true) - @NotNull(message = "开始执行时间不能为空") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime beginTime; - - @Schema(description = "结束执行时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime endTime; - - @Schema(description = "执行时长", example = "123") - private Integer duration; - - @Schema(description = "任务状态,参见 JobLogStatusEnum 枚举", required = true, example = "1") - @NotNull(message = "任务状态不能为空") - private Integer status; - - @Schema(description = "结果数据", example = "执行成功") - private String result; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogExcelVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogExcelVO.java deleted file mode 100644 index 7dae48d..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogExcelVO.java +++ /dev/null @@ -1,53 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.job.vo.log; - -import co.yixiang.yshop.framework.excel.core.annotations.DictFormat; -import co.yixiang.yshop.framework.excel.core.convert.DictConvert; -import co.yixiang.yshop.module.infra.enums.DictTypeConstants; -import com.alibaba.excel.annotation.ExcelProperty; -import lombok.Data; - -import java.time.LocalDateTime; - -/** - * 定时任务 Excel VO - * - * @author yshop - */ -@Data -public class JobLogExcelVO { - - @ExcelProperty("日志编号") - private Long id; - - @ExcelProperty("任务编号") - private Long jobId; - - @ExcelProperty("处理器的名字") - private String handlerName; - - @ExcelProperty("处理器的参数") - private String handlerParam; - - @ExcelProperty("第几次执行") - private Integer executeIndex; - - @ExcelProperty("开始执行时间") - private LocalDateTime beginTime; - - @ExcelProperty("结束执行时间") - private LocalDateTime endTime; - - @ExcelProperty("执行时长") - private Integer duration; - - @ExcelProperty(value = "任务状态", converter = DictConvert.class) - @DictFormat(DictTypeConstants.JOB_STATUS) - private Integer status; - - @ExcelProperty("结果数据") - private String result; - - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogExportReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogExportReqVO.java deleted file mode 100644 index 0672c3b..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogExportReqVO.java +++ /dev/null @@ -1,32 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.job.vo.log; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 定时任务 Excel 导出 Request VO,参数和 JobLogPageReqVO 是一致的") -@Data -public class JobLogExportReqVO { - - @Schema(description = "任务编号", example = "10") - private Long jobId; - - @Schema(description = "处理器的名字,模糊匹配") - private String handlerName; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @Schema(description = "开始执行时间") - private LocalDateTime beginTime; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @Schema(description = "结束执行时间") - private LocalDateTime endTime; - - @Schema(description = "任务状态,参见 JobLogStatusEnum 枚举") - private Integer status; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogPageReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogPageReqVO.java deleted file mode 100644 index 1fb5d41..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogPageReqVO.java +++ /dev/null @@ -1,37 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.job.vo.log; - -import co.yixiang.yshop.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 定时任务日志分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class JobLogPageReqVO extends PageParam { - - @Schema(description = "任务编号", example = "10") - private Long jobId; - - @Schema(description = "处理器的名字,模糊匹配") - private String handlerName; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @Schema(description = "开始执行时间") - private LocalDateTime beginTime; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @Schema(description = "结束执行时间") - private LocalDateTime endTime; - - @Schema(description = "任务状态,参见 JobLogStatusEnum 枚举") - private Integer status; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogRespVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogRespVO.java deleted file mode 100644 index 15fe700..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/job/vo/log/JobLogRespVO.java +++ /dev/null @@ -1,22 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.job.vo.log; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - 定时任务日志 Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class JobLogRespVO extends JobLogBaseVO { - - @Schema(description = "日志编号", required = true, example = "1024") - private Long id; - - @Schema(description = "创建时间", required = true) - private LocalDateTime createTime; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogBaseVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogBaseVO.java deleted file mode 100644 index 9be63dd..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogBaseVO.java +++ /dev/null @@ -1,74 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.logger.vo.apiaccesslog; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import javax.validation.constraints.NotNull; -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -/** -* API 访问日志 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class ApiAccessLogBaseVO { - - @Schema(description = "链路追踪编号", required = true, example = "66600cb6-7852-11eb-9439-0242ac130002") - @NotNull(message = "链路追踪编号不能为空") - private String traceId; - - @Schema(description = "用户编号", required = true, example = "666") - @NotNull(message = "用户编号不能为空") - private Long userId; - - @Schema(description = "用户类型,参见 UserTypeEnum 枚举", required = true, example = "2") - @NotNull(message = "用户类型不能为空") - private Integer userType; - - @Schema(description = "应用名", required = true, example = "dashboard") - @NotNull(message = "应用名不能为空") - private String applicationName; - - @Schema(description = "请求方法名", required = true, example = "GET") - @NotNull(message = "请求方法名不能为空") - private String requestMethod; - - @Schema(description = "请求地址", required = true, example = "/xxx/yyy") - @NotNull(message = "请求地址不能为空") - private String requestUrl; - - @Schema(description = "请求参数") - private String requestParams; - - @Schema(description = "用户 IP", required = true, example = "127.0.0.1") - @NotNull(message = "用户 IP不能为空") - private String userIp; - - @Schema(description = "浏览器 UA", required = true, example = "Mozilla/5.0") - @NotNull(message = "浏览器 UA不能为空") - private String userAgent; - - @Schema(description = "开始请求时间", required = true) - @NotNull(message = "开始请求时间不能为空") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime beginTime; - - @Schema(description = "结束请求时间", required = true) - @NotNull(message = "结束请求时间不能为空") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime endTime; - - @Schema(description = "执行时长", required = true, example = "100") - @NotNull(message = "执行时长不能为空") - private Integer duration; - - @Schema(description = "结果码", required = true, example = "0") - @NotNull(message = "结果码不能为空") - private Integer resultCode; - - @Schema(description = "结果提示", example = "yshop,牛逼!") - private String resultMsg; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogExcelVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogExcelVO.java deleted file mode 100644 index 77909d8..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogExcelVO.java +++ /dev/null @@ -1,65 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.logger.vo.apiaccesslog; - -import co.yixiang.yshop.framework.excel.core.annotations.DictFormat; -import co.yixiang.yshop.framework.excel.core.convert.DictConvert; -import co.yixiang.yshop.module.system.enums.DictTypeConstants; -import com.alibaba.excel.annotation.ExcelProperty; -import lombok.Data; - -import java.time.LocalDateTime; - -/** - * API 访问日志 Excel VO - * - * @author yshop - */ -@Data -public class ApiAccessLogExcelVO { - - @ExcelProperty("日志主键") - private Long id; - - @ExcelProperty("链路追踪编号") - private String traceId; - - @ExcelProperty("用户编号") - private Long userId; - - @ExcelProperty(value = "用户类型", converter = DictConvert.class) - @DictFormat(DictTypeConstants.USER_TYPE) - private Integer userType; - - @ExcelProperty("应用名") - private String applicationName; - - @ExcelProperty("请求方法名") - private String requestMethod; - - @ExcelProperty("请求地址") - private String requestUrl; - - @ExcelProperty("请求参数") - private String requestParams; - - @ExcelProperty("用户 IP") - private String userIp; - - @ExcelProperty("浏览器 UA") - private String userAgent; - - @ExcelProperty("开始请求时间") - private LocalDateTime beginTime; - - @ExcelProperty("结束请求时间") - private LocalDateTime endTime; - - @ExcelProperty("执行时长") - private Integer duration; - - @ExcelProperty("结果码") - private Integer resultCode; - - @ExcelProperty("结果提示") - private String resultMsg; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogRespVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogRespVO.java deleted file mode 100644 index 3d2111b..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apiaccesslog/ApiAccessLogRespVO.java +++ /dev/null @@ -1,22 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.logger.vo.apiaccesslog; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - API 访问日志 Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ApiAccessLogRespVO extends ApiAccessLogBaseVO { - - @Schema(description = "日志主键", required = true, example = "1024") - private Long id; - - @Schema(description = "创建时间", required = true) - private LocalDateTime createTime; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExcelVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExcelVO.java deleted file mode 100644 index fc920ca..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExcelVO.java +++ /dev/null @@ -1,90 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.logger.vo.apierrorlog; - -import co.yixiang.yshop.framework.excel.core.annotations.DictFormat; -import co.yixiang.yshop.framework.excel.core.convert.DictConvert; -import co.yixiang.yshop.module.infra.enums.DictTypeConstants; -import com.alibaba.excel.annotation.ExcelProperty; -import lombok.Data; - -import java.time.LocalDateTime; - -/** - * API 错误日志 Excel VO - * - * @author yshop - */ -@Data -public class ApiErrorLogExcelVO { - - @ExcelProperty("编号") - private Integer id; - - @ExcelProperty("链路追踪编号") - private String traceId; - - @ExcelProperty("用户编号") - private Integer userId; - - @ExcelProperty(value = "用户类型", converter = DictConvert.class) - @DictFormat(co.yixiang.yshop.module.system.enums.DictTypeConstants.USER_TYPE) - private Integer userType; - - @ExcelProperty("应用名") - private String applicationName; - - @ExcelProperty("请求方法名") - private String requestMethod; - - @ExcelProperty("请求地址") - private String requestUrl; - - @ExcelProperty("请求参数") - private String requestParams; - - @ExcelProperty("用户 IP") - private String userIp; - - @ExcelProperty("浏览器 UA") - private String userAgent; - - @ExcelProperty("异常发生时间") - private LocalDateTime exceptionTime; - - @ExcelProperty("异常名") - private String exceptionName; - - @ExcelProperty("异常导致的消息") - private String exceptionMessage; - - @ExcelProperty("异常导致的根消息") - private String exceptionRootCauseMessage; - - @ExcelProperty("异常的栈轨迹") - private String exceptionStackTrace; - - @ExcelProperty("异常发生的类全名") - private String exceptionClassName; - - @ExcelProperty("异常发生的类文件") - private String exceptionFileName; - - @ExcelProperty("异常发生的方法名") - private String exceptionMethodName; - - @ExcelProperty("异常发生的方法所在行") - private Integer exceptionLineNumber; - - @ExcelProperty("创建时间") - private LocalDateTime createTime; - - @ExcelProperty(value = "处理状态", converter = DictConvert.class) - @DictFormat(DictTypeConstants.API_ERROR_LOG_PROCESS_STATUS) - private Integer processStatus; - - @ExcelProperty("处理时间") - private LocalDateTime processTime; - - @ExcelProperty("处理用户编号") - private Integer processUserId; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExportReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExportReqVO.java deleted file mode 100644 index f44f0d4..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogExportReqVO.java +++ /dev/null @@ -1,34 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.logger.vo.apierrorlog; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - API 错误日志 Excel 导出 Request VO,参数和 ApiErrorLogPageReqVO 是一致的") -@Data -public class ApiErrorLogExportReqVO { - - @Schema(description = "用户编号", example = "666") - private Long userId; - - @Schema(description = "用户类型", example = "1") - private Integer userType; - - @Schema(description = "应用名", example = "dashboard") - private String applicationName; - - @Schema(description = "请求地址", example = "/xx/yy") - private String requestUrl; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @Schema(description = "异常发生时间") - private LocalDateTime[] exceptionTime; - - @Schema(description = "处理状态", example = "0") - private Integer processStatus; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogPageReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogPageReqVO.java deleted file mode 100644 index 75c4e4a..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogPageReqVO.java +++ /dev/null @@ -1,39 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.logger.vo.apierrorlog; - -import co.yixiang.yshop.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - API 错误日志分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ApiErrorLogPageReqVO extends PageParam { - - @Schema(description = "用户编号", example = "666") - private Long userId; - - @Schema(description = "用户类型", example = "1") - private Integer userType; - - @Schema(description = "应用名", example = "dashboard") - private String applicationName; - - @Schema(description = "请求地址", example = "/xx/yy") - private String requestUrl; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @Schema(description = "异常发生时间") - private LocalDateTime[] exceptionTime; - - @Schema(description = "处理状态", example = "0") - private Integer processStatus; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogRespVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogRespVO.java deleted file mode 100644 index 330c261..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/logger/vo/apierrorlog/ApiErrorLogRespVO.java +++ /dev/null @@ -1,28 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.logger.vo.apierrorlog; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - API 错误日志 Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ApiErrorLogRespVO extends ApiErrorLogBaseVO { - - @Schema(description = "编号", required = true, example = "1024") - private Integer id; - - @Schema(description = "创建时间", required = true) - private LocalDateTime createTime; - - @Schema(description = "处理时间", required = true) - private LocalDateTime processTime; - - @Schema(description = "处理用户编号", example = "233") - private Integer processUserId; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/redis/RedisController.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/redis/RedisController.java deleted file mode 100644 index 8aa94bd..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/redis/RedisController.java +++ /dev/null @@ -1,112 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.redis; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import co.yixiang.yshop.framework.redis.core.RedisKeyDefine; -import co.yixiang.yshop.framework.redis.core.RedisKeyRegistry; -import co.yixiang.yshop.module.infra.controller.admin.redis.vo.RedisKeyDefineRespVO; -import co.yixiang.yshop.module.infra.controller.admin.redis.vo.RedisKeyValueRespVO; -import co.yixiang.yshop.module.infra.controller.admin.redis.vo.RedisMonitorRespVO; -import co.yixiang.yshop.module.infra.convert.redis.RedisConvert; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; -import org.springframework.data.redis.connection.RedisServerCommands; -import org.springframework.data.redis.core.Cursor; -import org.springframework.data.redis.core.RedisCallback; -import org.springframework.data.redis.core.ScanOptions; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import java.util.*; - -import static co.yixiang.yshop.framework.common.pojo.CommonResult.success; - -@Tag(name = "管理后台 - Redis 监控") -@RestController -@RequestMapping("/infra/redis") -public class RedisController { - - @Resource - private StringRedisTemplate stringRedisTemplate; - - @GetMapping("/get-monitor-info") - @Operation(summary = "获得 Redis 监控信息") - @PreAuthorize("@ss.hasPermission('infra:redis:get-monitor-info')") - public CommonResult getRedisMonitorInfo() { - // 获得 Redis 统计信息 - Properties info = stringRedisTemplate.execute((RedisCallback) RedisServerCommands::info); - Long dbSize = stringRedisTemplate.execute(RedisServerCommands::dbSize); - Properties commandStats = stringRedisTemplate.execute(( - RedisCallback) connection -> connection.info("commandstats")); - assert commandStats != null; // 断言,避免警告 - // 拼接结果返回 - return success(RedisConvert.INSTANCE.build(info, dbSize, commandStats)); - } - - @GetMapping("/get-key-define-list") - @Operation(summary = "获得 Redis Key 模板列表") - @PreAuthorize("@ss.hasPermission('infra:redis:get-key-list')") - public CommonResult> getKeyDefineList() { - List keyDefines = RedisKeyRegistry.list(); - return success(RedisConvert.INSTANCE.convertList(keyDefines)); - } - - @GetMapping("/get-key-list") - @Operation(summary = "获得 Redis keys 键名列表") - @Parameter(name = "keyTemplate", description = "Redis Key 定义", example = "true") - @PreAuthorize("@ss.hasPermission('infra:redis:get-key-list')") - public CommonResult> getKeyDefineList(@RequestParam("keyTemplate") String keyTemplate) { - return success(getKeyDefineList0(keyTemplate)); - } - - private Set getKeyDefineList0(String keyTemplate) { - // key 格式化 - String key = StrUtil.replace(keyTemplate, "%[s|c|b|d|x|o|f|a|e|g]", parameter -> "*"); - // scan 扫描 key - Set keys = new LinkedHashSet<>(); - stringRedisTemplate.execute((RedisCallback>) connection -> { - try (Cursor cursor = connection.scan(ScanOptions.scanOptions().match(key).count(100).build())) { - cursor.forEachRemaining(value -> keys.add(StrUtil.utf8Str(value))); - } catch (Exception e) { - throw new RuntimeException(e); - } - return keys; - }); - return keys; - } - - @GetMapping("/get-key-value") - @Operation(summary = "获得 Redis key 内容") - @Parameter(name = "key", description = "Redis Key", example = "oauth2_access_token:233") - @PreAuthorize("@ss.hasPermission('infra:redis:get-key-list')") - public CommonResult getKeyValue(@RequestParam("key") String key) { - String value = stringRedisTemplate.opsForValue().get(key); - return success(new RedisKeyValueRespVO(key, value)); - } - - @DeleteMapping("/delete-key") - @Operation(summary = "删除 Redis Key") - @Parameter(name = "key", description = "Redis Key", example = "oauth2_access_token:233") - @PreAuthorize("@ss.hasPermission('infra:redis:get-key-list')") - public CommonResult deleteKey(@RequestParam("key") String key) { - stringRedisTemplate.delete(key); - return success(Boolean.TRUE); - } - - @DeleteMapping("/delete-keys") - @Operation(summary = "删除 Redis Key 根据模板") - @Parameter(name = "keyTemplate", description = "Redis Key 定义", example = "true") - @PreAuthorize("@ss.hasPermission('infra:redis:get-key-list')") - public CommonResult deleteKeys(@RequestParam("keyTemplate") String keyTemplate) { - Set keys = getKeyDefineList0(keyTemplate); - if (CollUtil.isNotEmpty(keys)) { - stringRedisTemplate.delete(keys); - } - return success(Boolean.TRUE); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/redis/vo/RedisKeyDefineRespVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/redis/vo/RedisKeyDefineRespVO.java deleted file mode 100644 index 16b05ee..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/redis/vo/RedisKeyDefineRespVO.java +++ /dev/null @@ -1,35 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.redis.vo; - -import co.yixiang.yshop.framework.redis.core.RedisKeyDefine; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; - -import java.time.Duration; - -@Schema(description = "管理后台 - Redis Key 信息 Response VO") -@Data -@Builder -@AllArgsConstructor -public class RedisKeyDefineRespVO { - - @Schema(description = "Key 模板", required = true, example = "login_user:%s") - private String keyTemplate; - - @Schema(description = "Key 类型的枚举", required = true, example = "String") - private RedisKeyDefine.KeyTypeEnum keyType; - - @Schema(description = "Value 类型", required = true, example = "java.lang.String") - private Class valueType; - - @Schema(description = "超时类型", required = true, example = "1") - private RedisKeyDefine.TimeoutTypeEnum timeoutType; - - @Schema(description = "过期时间,单位:毫秒", required = true, example = "1024") - private Duration timeout; - - @Schema(description = "备注", required = true, example = "啦啦啦啦~") - private String memo; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/redis/vo/RedisKeyValueRespVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/redis/vo/RedisKeyValueRespVO.java deleted file mode 100644 index 897ab03..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/redis/vo/RedisKeyValueRespVO.java +++ /dev/null @@ -1,18 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.redis.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Data; - -@Schema(description = "管理后台 - 单个 Redis Key Value Response VO") -@Data -@AllArgsConstructor -public class RedisKeyValueRespVO { - - @Schema(description = "c5f6990767804a928f4bb96ca249febf", required = true, example = "String") - private String key; - - @Schema(required = true, example = "String") - private String value; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/redis/vo/RedisMonitorRespVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/redis/vo/RedisMonitorRespVO.java deleted file mode 100644 index 2ea6a3c..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/redis/vo/RedisMonitorRespVO.java +++ /dev/null @@ -1,43 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.redis.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; - -import java.util.List; -import java.util.Properties; - -@Schema(description = "管理后台 - Redis 监控信息 Response VO") -@Data -@Builder -@AllArgsConstructor -public class RedisMonitorRespVO { - - @Schema(description = "Redis info 指令结果,具体字段,查看 Redis 文档", required = true) - private Properties info; - - @Schema(description = "Redis key 数量", required = true, example = "1024") - private Long dbSize; - - @Schema(description = "CommandStat 数组", required = true) - private List commandStats; - - @Schema(description = "Redis 命令统计结果") - @Data - @Builder - @AllArgsConstructor - public static class CommandStat { - - @Schema(description = "Redis 命令", required = true, example = "get") - private String command; - - @Schema(description = "调用次数", required = true, example = "1024") - private Long calls; - - @Schema(description = "消耗 CPU 秒数", required = true, example = "666") - private Long usec; - - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/TestDemoController.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/TestDemoController.java deleted file mode 100644 index e78df32..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/TestDemoController.java +++ /dev/null @@ -1,97 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.test; - -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.excel.core.util.ExcelUtils; -import co.yixiang.yshop.framework.operatelog.core.annotations.OperateLog; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.*; -import co.yixiang.yshop.module.infra.convert.test.TestDemoConvert; -import co.yixiang.yshop.module.infra.dal.dataobject.test.TestDemoDO; -import co.yixiang.yshop.module.infra.service.test.TestDemoService; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; -import javax.validation.Valid; -import java.io.IOException; -import java.util.Collection; -import java.util.List; - -import static co.yixiang.yshop.framework.common.pojo.CommonResult.success; -import static co.yixiang.yshop.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - 字典类型") -@RestController -@RequestMapping("/infra/test-demo") -@Validated -public class TestDemoController { - - @Resource - private TestDemoService testDemoService; - - @PostMapping("/create") - @Operation(summary = "创建字典类型") - @PreAuthorize("@ss.hasPermission('infra:test-demo:create')") - public CommonResult createTestDemo(@Valid @RequestBody TestDemoCreateReqVO createReqVO) { - return success(testDemoService.createTestDemo(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新字典类型") - @PreAuthorize("@ss.hasPermission('infra:test-demo:update')") - public CommonResult updateTestDemo(@Valid @RequestBody TestDemoUpdateReqVO updateReqVO) { - testDemoService.updateTestDemo(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除字典类型") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('infra:test-demo:delete')") - public CommonResult deleteTestDemo(@RequestParam("id") Long id) { - testDemoService.deleteTestDemo(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得字典类型") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('infra:test-demo:query')") - public CommonResult getTestDemo(@RequestParam("id") Long id) { - TestDemoDO testDemo = testDemoService.getTestDemo(id); - return success(TestDemoConvert.INSTANCE.convert(testDemo)); - } - - @GetMapping("/list") - @Operation(summary = "获得字典类型列表") - @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") - @PreAuthorize("@ss.hasPermission('infra:test-demo:query')") - public CommonResult> getTestDemoList(@RequestParam("ids") Collection ids) { - List list = testDemoService.getTestDemoList(ids); - return success(TestDemoConvert.INSTANCE.convertList(list)); - } - - @GetMapping("/page") - @Operation(summary = "获得字典类型分页") - @PreAuthorize("@ss.hasPermission('infra:test-demo:query')") public CommonResult> getTestDemoPage(@Valid TestDemoPageReqVO pageVO) { - PageResult pageResult = testDemoService.getTestDemoPage(pageVO); - return success(TestDemoConvert.INSTANCE.convertPage(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出字典类型 Excel") - @PreAuthorize("@ss.hasPermission('infra:test-demo:export')") @OperateLog(type = EXPORT) - public void exportTestDemoExcel(@Valid TestDemoExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { - List list = testDemoService.getTestDemoList(exportReqVO); - // 导出 Excel - List datas = TestDemoConvert.INSTANCE.convertList02(list); - ExcelUtils.write(response, "字典类型.xls", "数据", TestDemoExcelVO.class, datas); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoBaseVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoBaseVO.java deleted file mode 100644 index 5229cb7..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoBaseVO.java +++ /dev/null @@ -1,32 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.test.vo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import javax.validation.constraints.*; - -/** -* 字典类型 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class TestDemoBaseVO { - - @Schema(description = "名字", required = true) - @NotNull(message = "名字不能为空") - private String name; - - @Schema(description = "状态", required = true) - @NotNull(message = "状态不能为空") - private Integer status; - - @Schema(description = "类型", required = true) - @NotNull(message = "类型不能为空") - private Integer type; - - @Schema(description = "分类", required = true) - @NotNull(message = "分类不能为空") - private Integer category; - - @Schema(description = "备注") - private String remark; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoExcelVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoExcelVO.java deleted file mode 100644 index 8930a2c..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoExcelVO.java +++ /dev/null @@ -1,38 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.test.vo; - -import lombok.*; - -import java.time.LocalDateTime; - -import com.alibaba.excel.annotation.ExcelProperty; - -/** - * 字典类型 Excel VO - * - * @author yshop - */ -@Data -public class TestDemoExcelVO { - - @ExcelProperty("编号") - private Long id; - - @ExcelProperty("名字") - private String name; - - @ExcelProperty("状态") - private Integer status; - - @ExcelProperty("类型") - private Integer type; - - @ExcelProperty("分类") - private Integer category; - - @ExcelProperty("备注") - private String remark; - - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoExportReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoExportReqVO.java deleted file mode 100644 index 071b064..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoExportReqVO.java +++ /dev/null @@ -1,33 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.test.vo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - -import java.time.LocalDateTime; -import org.springframework.format.annotation.DateTimeFormat; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 字典类型 Excel 导出 Request VO,参数和 TestDemoPageReqVO 是一致的") -@Data -public class TestDemoExportReqVO { - - @Schema(description = "名字") - private String name; - - @Schema(description = "状态") - private Integer status; - - @Schema(description = "类型") - private Integer type; - - @Schema(description = "分类") - private Integer category; - - @Schema(description = "备注") - private String remark; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @Schema(description = "创建时间") - private LocalDateTime[] createTime; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoRespVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoRespVO.java deleted file mode 100644 index c9830c8..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoRespVO.java +++ /dev/null @@ -1,19 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.test.vo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - 字典类型 Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class TestDemoRespVO extends TestDemoBaseVO { - - @Schema(description = "编号", required = true) - private Long id; - - @Schema(description = "创建时间", required = true) - private LocalDateTime createTime; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoUpdateReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoUpdateReqVO.java deleted file mode 100644 index ad27854..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/admin/test/vo/TestDemoUpdateReqVO.java +++ /dev/null @@ -1,16 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.admin.test.vo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import javax.validation.constraints.*; - -@Schema(description = "管理后台 - 字典类型更新 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class TestDemoUpdateReqVO extends TestDemoBaseVO { - - @Schema(description = "编号", required = true) - @NotNull(message = "编号不能为空") - private Long id; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/app/file/AppFileController.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/app/file/AppFileController.java deleted file mode 100644 index 10256f5..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/app/file/AppFileController.java +++ /dev/null @@ -1,44 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.app.file; - -import cn.hutool.core.io.IoUtil; -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import co.yixiang.yshop.framework.operatelog.core.annotations.OperateLog; -import co.yixiang.yshop.module.infra.controller.app.file.vo.file.FileUploadReqVO; -import co.yixiang.yshop.module.infra.service.file.FileService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.extern.slf4j.Slf4j; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; - -import javax.annotation.Resource; - -import static co.yixiang.yshop.framework.common.pojo.CommonResult.success; - -@Tag(name = "用户 APP - 文件存储") -@RestController -@RequestMapping("/infra/file") -@Validated -@Slf4j -public class AppFileController { - - @Resource - private FileService fileService; - - @PostMapping("/upload") - @Operation(summary = "上传文件") - @OperateLog(logArgs = false) // 上传文件,没有记录操作日志的必要 - public CommonResult uploadFile(FileUploadReqVO uploadReqVO) throws Exception { - MultipartFile file = uploadReqVO.getFile(); - String path = uploadReqVO.getPath(); - return success(fileService.createFile(file.getOriginalFilename(), path, IoUtil.readBytes(file.getInputStream()))); - } - - - - - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/app/file/vo/file/FileUploadReqVO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/app/file/vo/file/FileUploadReqVO.java deleted file mode 100644 index 1121462..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/app/file/vo/file/FileUploadReqVO.java +++ /dev/null @@ -1,20 +0,0 @@ -package co.yixiang.yshop.module.infra.controller.app.file.vo.file; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import org.springframework.web.multipart.MultipartFile; - -import javax.validation.constraints.NotNull; - -@Schema(description = "app - 上传文件 Request VO") -@Data -public class FileUploadReqVO { - - @Schema(description = "文件附件", required = true) - @NotNull(message = "文件附件不能为空") - private MultipartFile file; - - @Schema(description = "文件附件", example = "yshopyuanma.png") - private String path; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/package-info.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/package-info.java deleted file mode 100644 index 46489e3..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/controller/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * 提供 RESTful API 给前端: - * 1. admin 包:提供给管理后台 yshop-ui-admin 前端项目 - * 2. app 包:提供给用户 APP yshop-ui-app 前端项目,它的 Controller 和 VO 都要添加 App 前缀,用于和管理后台进行区分 - */ -package co.yixiang.yshop.module.infra.controller; diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/codegen/CodegenConvert.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/codegen/CodegenConvert.java deleted file mode 100644 index 61e80bd..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/codegen/CodegenConvert.java +++ /dev/null @@ -1,93 +0,0 @@ -package co.yixiang.yshop.module.infra.convert.codegen; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.controller.admin.codegen.vo.CodegenDetailRespVO; -import co.yixiang.yshop.module.infra.controller.admin.codegen.vo.CodegenPreviewRespVO; -import co.yixiang.yshop.module.infra.controller.admin.codegen.vo.CodegenUpdateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.codegen.vo.column.CodegenColumnRespVO; -import co.yixiang.yshop.module.infra.controller.admin.codegen.vo.table.CodegenTableRespVO; -import co.yixiang.yshop.module.infra.controller.admin.codegen.vo.table.DatabaseTableRespVO; -import co.yixiang.yshop.module.infra.dal.dataobject.codegen.CodegenColumnDO; -import co.yixiang.yshop.module.infra.dal.dataobject.codegen.CodegenTableDO; -import com.baomidou.mybatisplus.generator.config.po.TableField; -import com.baomidou.mybatisplus.generator.config.po.TableInfo; -import org.apache.ibatis.type.JdbcType; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.Mappings; -import org.mapstruct.Named; -import org.mapstruct.factory.Mappers; - -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -@Mapper -public interface CodegenConvert { - - CodegenConvert INSTANCE = Mappers.getMapper(CodegenConvert.class); - - // ========== TableInfo 相关 ========== - - @Mappings({ - @Mapping(source = "name", target = "tableName"), - @Mapping(source = "comment", target = "tableComment"), - }) - CodegenTableDO convert(TableInfo bean); - - List convertList(List list); - - @Mappings({ - @Mapping(source = "name", target = "columnName"), - @Mapping(source = "metaInfo.jdbcType", target = "dataType", qualifiedByName = "getDataType"), - @Mapping(source = "comment", target = "columnComment"), - @Mapping(source = "metaInfo.nullable", target = "nullable"), - @Mapping(source = "keyFlag", target = "primaryKey"), - @Mapping(source = "keyIdentityFlag", target = "autoIncrement"), - @Mapping(source = "columnType.type", target = "javaType"), - @Mapping(source = "propertyName", target = "javaField"), - }) - CodegenColumnDO convert(TableField bean); - - @Named("getDataType") - default String getDataType(JdbcType jdbcType) { - return jdbcType.name(); - } - - // ========== CodegenTableDO 相关 ========== - -// List convertList02(List list); - - CodegenTableRespVO convert(CodegenTableDO bean); - - PageResult convertPage(PageResult page); - - // ========== CodegenTableDO 相关 ========== - - List convertList02(List list); - - CodegenTableDO convert(CodegenUpdateReqVO.Table bean); - - List convertList03(List columns); - - List convertList04(List list); - - // ========== 其它 ========== - - default CodegenDetailRespVO convert(CodegenTableDO table, List columns) { - CodegenDetailRespVO respVO = new CodegenDetailRespVO(); - respVO.setTable(convert(table)); - respVO.setColumns(convertList02(columns)); - return respVO; - } - - default List convert(Map codes) { - return codes.entrySet().stream().map(entry -> { - CodegenPreviewRespVO respVO = new CodegenPreviewRespVO(); - respVO.setFilePath(entry.getKey()); - respVO.setCode(entry.getValue()); - return respVO; - }).collect(Collectors.toList()); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/config/ConfigConvert.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/config/ConfigConvert.java deleted file mode 100644 index 2622ee7..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/config/ConfigConvert.java +++ /dev/null @@ -1,33 +0,0 @@ -package co.yixiang.yshop.module.infra.convert.config; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigExcelVO; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigRespVO; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigUpdateReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.config.ConfigDO; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -@Mapper -public interface ConfigConvert { - - ConfigConvert INSTANCE = Mappers.getMapper(ConfigConvert.class); - - PageResult convertPage(PageResult page); - - @Mapping(source = "configKey", target = "key") - ConfigRespVO convert(ConfigDO bean); - - @Mapping(source = "key", target = "configKey") - ConfigDO convert(ConfigCreateReqVO bean); - - ConfigDO convert(ConfigUpdateReqVO bean); - - @Mapping(source = "configKey", target = "key") - List convertList(List list); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/db/DataSourceConfigConvert.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/db/DataSourceConfigConvert.java deleted file mode 100644 index c06f343..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/db/DataSourceConfigConvert.java +++ /dev/null @@ -1,30 +0,0 @@ -package co.yixiang.yshop.module.infra.convert.db; - -import java.util.*; - -import co.yixiang.yshop.framework.common.pojo.PageResult; - -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; -import co.yixiang.yshop.module.infra.controller.admin.db.vo.*; -import co.yixiang.yshop.module.infra.dal.dataobject.db.DataSourceConfigDO; - -/** - * 数据源配置 Convert - * - * @author yshop - */ -@Mapper -public interface DataSourceConfigConvert { - - DataSourceConfigConvert INSTANCE = Mappers.getMapper(DataSourceConfigConvert.class); - - DataSourceConfigDO convert(DataSourceConfigCreateReqVO bean); - - DataSourceConfigDO convert(DataSourceConfigUpdateReqVO bean); - - DataSourceConfigRespVO convert(DataSourceConfigDO bean); - - List convertList(List list); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/file/FileConfigConvert.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/file/FileConfigConvert.java deleted file mode 100644 index b55fdc2..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/file/FileConfigConvert.java +++ /dev/null @@ -1,36 +0,0 @@ -package co.yixiang.yshop.module.infra.convert.file; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.config.FileConfigCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.config.FileConfigRespVO; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.config.FileConfigUpdateReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.file.FileConfigDO; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -/** - * 文件配置 Convert - * - * @author yshop - */ -@Mapper -public interface FileConfigConvert { - - FileConfigConvert INSTANCE = Mappers.getMapper(FileConfigConvert.class); - - @Mapping(target = "config", ignore = true) - FileConfigDO convert(FileConfigCreateReqVO bean); - - @Mapping(target = "config", ignore = true) - FileConfigDO convert(FileConfigUpdateReqVO bean); - - FileConfigRespVO convert(FileConfigDO bean); - - List convertList(List list); - - PageResult convertPage(PageResult page); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/file/FileConvert.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/file/FileConvert.java deleted file mode 100644 index b955690..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/file/FileConvert.java +++ /dev/null @@ -1,18 +0,0 @@ -package co.yixiang.yshop.module.infra.convert.file; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.file.FileRespVO; -import co.yixiang.yshop.module.infra.dal.dataobject.file.FileDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -@Mapper -public interface FileConvert { - - FileConvert INSTANCE = Mappers.getMapper(FileConvert.class); - - FileRespVO convert(FileDO bean); - - PageResult convertPage(PageResult page); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/job/JobConvert.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/job/JobConvert.java deleted file mode 100644 index f81f532..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/job/JobConvert.java +++ /dev/null @@ -1,36 +0,0 @@ -package co.yixiang.yshop.module.infra.convert.job; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.job.JobCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.job.JobExcelVO; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.job.JobRespVO; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.job.JobUpdateReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.job.JobDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -/** - * 定时任务 Convert - * - * @author yshop - */ -@Mapper -public interface JobConvert { - - JobConvert INSTANCE = Mappers.getMapper(JobConvert.class); - - JobDO convert(JobCreateReqVO bean); - - JobDO convert(JobUpdateReqVO bean); - - JobRespVO convert(JobDO bean); - - List convertList(List list); - - PageResult convertPage(PageResult page); - - List convertList02(List list); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/job/JobLogConvert.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/job/JobLogConvert.java deleted file mode 100644 index 400c30c..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/job/JobLogConvert.java +++ /dev/null @@ -1,30 +0,0 @@ -package co.yixiang.yshop.module.infra.convert.job; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.log.JobLogExcelVO; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.log.JobLogRespVO; -import co.yixiang.yshop.module.infra.dal.dataobject.job.JobLogDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -/** - * 定时任务日志 Convert - * - * @author yshop - */ -@Mapper -public interface JobLogConvert { - - JobLogConvert INSTANCE = Mappers.getMapper(JobLogConvert.class); - - JobLogRespVO convert(JobLogDO bean); - - List convertList(List list); - - PageResult convertPage(PageResult page); - - List convertList02(List list); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/logger/ApiAccessLogConvert.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/logger/ApiAccessLogConvert.java deleted file mode 100644 index c004f63..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/logger/ApiAccessLogConvert.java +++ /dev/null @@ -1,33 +0,0 @@ -package co.yixiang.yshop.module.infra.convert.logger; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.api.logger.dto.ApiAccessLogCreateReqDTO; -import co.yixiang.yshop.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogExcelVO; -import co.yixiang.yshop.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogRespVO; -import co.yixiang.yshop.module.infra.dal.dataobject.logger.ApiAccessLogDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -/** - * API 访问日志 Convert - * - * @author yshop - */ -@Mapper -public interface ApiAccessLogConvert { - - ApiAccessLogConvert INSTANCE = Mappers.getMapper(ApiAccessLogConvert.class); - - ApiAccessLogRespVO convert(ApiAccessLogDO bean); - - List convertList(List list); - - PageResult convertPage(PageResult page); - - List convertList02(List list); - - ApiAccessLogDO convert(ApiAccessLogCreateReqDTO bean); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/logger/ApiErrorLogConvert.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/logger/ApiErrorLogConvert.java deleted file mode 100644 index 76ffb24..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/logger/ApiErrorLogConvert.java +++ /dev/null @@ -1,31 +0,0 @@ -package co.yixiang.yshop.module.infra.convert.logger; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.api.logger.dto.ApiErrorLogCreateReqDTO; -import co.yixiang.yshop.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogExcelVO; -import co.yixiang.yshop.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogRespVO; -import co.yixiang.yshop.module.infra.dal.dataobject.logger.ApiErrorLogDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -/** - * API 错误日志 Convert - * - * @author yshop - */ -@Mapper -public interface ApiErrorLogConvert { - - ApiErrorLogConvert INSTANCE = Mappers.getMapper(ApiErrorLogConvert.class); - - ApiErrorLogRespVO convert(ApiErrorLogDO bean); - - PageResult convertPage(PageResult page); - - List convertList02(List list); - - ApiErrorLogDO convert(ApiErrorLogCreateReqDTO bean); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/package-info.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/package-info.java deleted file mode 100644 index 57b4aa8..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * 提供 POJO 类的实体转换 - * - * 目前使用 MapStruct 框架 - */ -package co.yixiang.yshop.module.infra.convert; diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/redis/RedisConvert.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/redis/RedisConvert.java deleted file mode 100644 index 5292ae8..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/redis/RedisConvert.java +++ /dev/null @@ -1,34 +0,0 @@ -package co.yixiang.yshop.module.infra.convert.redis; - -import cn.hutool.core.util.StrUtil; -import co.yixiang.yshop.framework.redis.core.RedisKeyDefine; -import co.yixiang.yshop.module.infra.controller.admin.redis.vo.RedisKeyDefineRespVO; -import co.yixiang.yshop.module.infra.controller.admin.redis.vo.RedisMonitorRespVO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.ArrayList; -import java.util.List; -import java.util.Properties; - -@Mapper -public interface RedisConvert { - - RedisConvert INSTANCE = Mappers.getMapper(RedisConvert.class); - - default RedisMonitorRespVO build(Properties info, Long dbSize, Properties commandStats) { - RedisMonitorRespVO respVO = RedisMonitorRespVO.builder().info(info).dbSize(dbSize) - .commandStats(new ArrayList<>(commandStats.size())).build(); - commandStats.forEach((key, value) -> { - respVO.getCommandStats().add(RedisMonitorRespVO.CommandStat.builder() - .command(StrUtil.subAfter((String) key, "cmdstat_", false)) - .calls(Long.valueOf(StrUtil.subBetween((String) value, "calls=", ","))) - .usec(Long.valueOf(StrUtil.subBetween((String) value, "usec=", ","))) - .build()); - }); - return respVO; - } - - List convertList(List list); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/test/TestDemoConvert.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/test/TestDemoConvert.java deleted file mode 100644 index 1531d0a..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/convert/test/TestDemoConvert.java +++ /dev/null @@ -1,36 +0,0 @@ -package co.yixiang.yshop.module.infra.convert.test; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.TestDemoCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.TestDemoExcelVO; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.TestDemoRespVO; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.TestDemoUpdateReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.test.TestDemoDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -/** - * 字典类型 Convert - * - * @author yshop - */ -@Mapper -public interface TestDemoConvert { - - TestDemoConvert INSTANCE = Mappers.getMapper(TestDemoConvert.class); - - TestDemoDO convert(TestDemoCreateReqVO bean); - - TestDemoDO convert(TestDemoUpdateReqVO bean); - - TestDemoRespVO convert(TestDemoDO bean); - - List convertList(List list); - - PageResult convertPage(PageResult page); - - List convertList02(List list); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/codegen/CodegenColumnDO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/codegen/CodegenColumnDO.java deleted file mode 100644 index fb66d05..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/codegen/CodegenColumnDO.java +++ /dev/null @@ -1,142 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.dataobject.codegen; - -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; -import co.yixiang.yshop.module.infra.enums.codegen.CodegenColumnHtmlTypeEnum; -import co.yixiang.yshop.module.infra.enums.codegen.CodegenColumnListConditionEnum; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.generator.config.po.TableField; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -/** - * 代码生成 column 字段定义 - * - * @author yshop - */ -@TableName(value = "infra_codegen_column", autoResultMap = true) -@KeySequence("infra_codegen_column_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@Accessors(chain = true) -@EqualsAndHashCode(callSuper = true) -public class CodegenColumnDO extends BaseDO { - - /** - * ID 编号 - */ - @TableId - private Long id; - /** - * 表编号 - *

- * 关联 {@link CodegenTableDO#getId()} - */ - private Long tableId; - - // ========== 表相关字段 ========== - - /** - * 字段名 - * - * 关联 {@link TableField#getName()} - */ - private String columnName; - /** - * 数据库字段类型 - * - * 关联 {@link TableField.MetaInfo#getJdbcType()} - */ - private String dataType; - /** - * 字段描述 - * - * 关联 {@link TableField#getComment()} - */ - private String columnComment; - /** - * 是否允许为空 - * - * 关联 {@link TableField.MetaInfo#isNullable()} - */ - private Boolean nullable; - /** - * 是否主键 - * - * 关联 {@link TableField#isKeyFlag()} - */ - private Boolean primaryKey; - /** - * 是否自增 - * - * 关联 {@link TableField#isKeyIdentityFlag()} - */ - private Boolean autoIncrement; - /** - * 排序 - */ - private Integer ordinalPosition; - - // ========== Java 相关字段 ========== - - /** - * Java 属性类型 - * - * 例如说 String、Boolean 等等 - * - * 关联 {@link TableField#getColumnType()} - */ - private String javaType; - /** - * Java 属性名 - * - * 关联 {@link TableField#getPropertyName()} - */ - private String javaField; - /** - * 字典类型 - *

- * 关联 DictTypeDO 的 type 属性 - */ - private String dictType; - /** - * 数据示例,主要用于生成 Swagger 注解的 example 字段 - */ - private String example; - - // ========== CRUD 相关字段 ========== - - /** - * 是否为 Create 创建操作的字段 - */ - private Boolean createOperation; - /** - * 是否为 Update 更新操作的字段 - */ - private Boolean updateOperation; - /** - * 是否为 List 查询操作的字段 - */ - private Boolean listOperation; - /** - * List 查询操作的条件类型 - *

- * 枚举 {@link CodegenColumnListConditionEnum} - */ - private String listOperationCondition; - /** - * 是否为 List 查询操作的返回字段 - */ - private Boolean listOperationResult; - - // ========== UI 相关字段 ========== - - /** - * 显示类型 - *

- * 枚举 {@link CodegenColumnHtmlTypeEnum} - */ - private String htmlType; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/codegen/CodegenTableDO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/codegen/CodegenTableDO.java deleted file mode 100644 index 03b38b7..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/codegen/CodegenTableDO.java +++ /dev/null @@ -1,119 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.dataobject.codegen; - -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; -import co.yixiang.yshop.module.infra.dal.dataobject.db.DataSourceConfigDO; -import co.yixiang.yshop.module.infra.enums.codegen.CodegenFrontTypeEnum; -import co.yixiang.yshop.module.infra.enums.codegen.CodegenSceneEnum; -import co.yixiang.yshop.module.infra.enums.codegen.CodegenTemplateTypeEnum; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.generator.config.po.TableInfo; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -/** - * 代码生成 table 表定义 - * - * @author yshop - */ -@TableName(value = "infra_codegen_table", autoResultMap = true) -@KeySequence("infra_codegen_table_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@Accessors(chain = true) -@EqualsAndHashCode(callSuper = true) -public class CodegenTableDO extends BaseDO { - - /** - * ID 编号 - */ - @TableId - private Long id; - - /** - * 数据源编号 - * - * 关联 {@link DataSourceConfigDO#getId()} - */ - private Long dataSourceConfigId; - /** - * 生成场景 - * - * 枚举 {@link CodegenSceneEnum} - */ - private Integer scene; - - // ========== 表相关字段 ========== - - /** - * 表名称 - * - * 关联 {@link TableInfo#getName()} - */ - private String tableName; - /** - * 表描述 - * - * 关联 {@link TableInfo#getComment()} - */ - private String tableComment; - /** - * 备注 - */ - private String remark; - - // ========== 类相关字段 ========== - - /** - * 模块名,即一级目录 - * - * 例如说,system、infra、tool 等等 - */ - private String moduleName; - /** - * 业务名,即二级目录 - * - * 例如说,user、permission、dict 等等 - */ - private String businessName; - /** - * 类名称(首字母大写) - * - * 例如说,SysUser、SysMenu、SysDictData 等等 - */ - private String className; - /** - * 类描述 - */ - private String classComment; - /** - * 作者 - */ - private String author; - - // ========== 生成相关字段 ========== - - /** - * 模板类型 - * - * 枚举 {@link CodegenTemplateTypeEnum} - */ - private Integer templateType; - /** - * 代码生成的前端类型 - * - * 枚举 {@link CodegenFrontTypeEnum} - */ - private Integer frontType; - - // ========== 菜单相关字段 ========== - - /** - * 父菜单编号 - * - * 关联 MenuDO 的 id 属性 - */ - private Long parentMenuId; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/config/ConfigDO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/config/ConfigDO.java deleted file mode 100644 index b3e19fa..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/config/ConfigDO.java +++ /dev/null @@ -1,64 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.dataobject.config; - -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; -import co.yixiang.yshop.module.infra.enums.config.ConfigTypeEnum; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -/** - * 参数配置表 - * - * @author yshop - */ -@TableName("infra_config") -@KeySequence("infra_config_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ConfigDO extends BaseDO { - - /** - * 参数主键 - */ - @TableId - private Long id; - /** - * 参数分类 - */ - private String category; - /** - * 参数名称 - */ - private String name; - /** - * 参数键名 - * - * 支持多 DB 类型时,无法直接使用 key + @TableField("config_key") 来实现转换,原因是 "config_key" AS key 而存在报错 - */ - private String configKey; - /** - * 参数键值 - */ - private String value; - /** - * 参数类型 - * - * 枚举 {@link ConfigTypeEnum} - */ - private Integer type; - /** - * 是否可见 - * - * 不可见的参数,一般是敏感参数,前端不可获取 - */ - private Boolean visible; - /** - * 备注 - */ - private String remark; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/db/DataSourceConfigDO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/db/DataSourceConfigDO.java deleted file mode 100644 index b60af42..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/db/DataSourceConfigDO.java +++ /dev/null @@ -1,48 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.dataobject.db; - -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; -import co.yixiang.yshop.framework.mybatis.core.type.EncryptTypeHandler; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -/** - * 数据源配置 - * - * @author yshop - */ -@TableName(value = "infra_data_source_config", autoResultMap = true) -@KeySequence("infra_data_source_config_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -public class DataSourceConfigDO extends BaseDO { - - /** - * 主键编号 - Master 数据源 - */ - public static final Long ID_MASTER = 0L; - - /** - * 主键编号 - */ - private Long id; - /** - * 连接名 - */ - private String name; - - /** - * 数据源连接 - */ - private String url; - /** - * 用户名 - */ - private String username; - /** - * 密码 - */ - @TableField(typeHandler = EncryptTypeHandler.class) - private String password; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/file/FileConfigDO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/file/FileConfigDO.java deleted file mode 100644 index d94074e..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/file/FileConfigDO.java +++ /dev/null @@ -1,58 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.dataobject.file; - -import co.yixiang.yshop.framework.file.core.client.FileClientConfig; -import co.yixiang.yshop.framework.file.core.enums.FileStorageEnum; -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; -import lombok.*; - -/** - * 文件配置表 - * - * @author yshop - */ -@TableName(value = "infra_file_config", autoResultMap = true) -@KeySequence("infra_file_config_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class FileConfigDO extends BaseDO { - - /** - * 配置编号,数据库自增 - */ - private Long id; - /** - * 配置名 - */ - private String name; - /** - * 存储器 - * - * 枚举 {@link FileStorageEnum} - */ - private Integer storage; - /** - * 备注 - */ - private String remark; - /** - * 是否为主配置 - * - * 由于我们可以配置多个文件配置,默认情况下,使用主配置进行文件的上传 - */ - private Boolean master; - - /** - * 支付渠道配置 - */ - @TableField(typeHandler = JacksonTypeHandler.class) - private FileClientConfig config; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/file/FileContentDO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/file/FileContentDO.java deleted file mode 100644 index 8660cc6..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/file/FileContentDO.java +++ /dev/null @@ -1,47 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.dataobject.file; - -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -/** - * 文件内容表 - * - * 专门用于存储 {@link co.yixiang.yshop.framework.file.core.client.db.DBFileClient} 的文件内容 - * - * @author yshop - */ -@TableName("infra_file_content") -@KeySequence("infra_file_content_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class FileContentDO extends BaseDO { - - /** - * 编号,数据库自增 - */ - @TableId(type = IdType.INPUT) - private String id; - /** - * 配置编号 - * - * 关联 {@link FileConfigDO#getId()} - */ - private Long configId; - /** - * 路径,即文件名 - */ - private String path; - /** - * 文件内容 - */ - private byte[] content; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/file/FileDO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/file/FileDO.java deleted file mode 100644 index eaee4e5..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/file/FileDO.java +++ /dev/null @@ -1,55 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.dataobject.file; - -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -/** - * 文件表 - * 每次文件上传,都会记录一条记录到该表中 - * - * @author yshop - */ -@TableName("infra_file") -@KeySequence("infra_file_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class FileDO extends BaseDO { - - /** - * 编号,数据库自增 - */ - private Long id; - /** - * 配置编号 - * - * 关联 {@link FileConfigDO#getId()} - */ - private Long configId; - /** - * 原文件名 - */ - private String name; - /** - * 路径,即文件名 - */ - private String path; - /** - * 访问地址 - */ - private String url; - /** - * 文件的 MIME 类型,例如 "application/octet-stream" - */ - private String type; - /** - * 文件大小 - */ - private Integer size; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/job/JobDO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/job/JobDO.java deleted file mode 100644 index 9e543e7..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/job/JobDO.java +++ /dev/null @@ -1,74 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.dataobject.job; - -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; -import co.yixiang.yshop.module.infra.enums.job.JobStatusEnum; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -/** - * 定时任务 DO - * - * @author yshop - */ -@TableName("infra_job") -@KeySequence("infra_job_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class JobDO extends BaseDO { - - /** - * 任务编号 - */ - @TableId - private Long id; - /** - * 任务名称 - */ - private String name; - /** - * 任务状态 - * - * 枚举 {@link JobStatusEnum} - */ - private Integer status; - /** - * 处理器的名字 - */ - private String handlerName; - /** - * 处理器的参数 - */ - private String handlerParam; - /** - * CRON 表达式 - */ - private String cronExpression; - - // ========== 重试相关字段 ========== - /** - * 重试次数 - * 如果不重试,则设置为 0 - */ - private Integer retryCount; - /** - * 重试间隔,单位:毫秒 - * 如果没有间隔,则设置为 0 - */ - private Integer retryInterval; - - // ========== 监控相关字段 ========== - /** - * 监控超时时间,单位:毫秒 - * 为空时,表示不监控 - * - * 注意,这里的超时的目的,不是进行任务的取消,而是告警任务的执行时间过长 - */ - private Integer monitorTimeout; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/job/JobLogDO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/job/JobLogDO.java deleted file mode 100644 index f93d332..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/job/JobLogDO.java +++ /dev/null @@ -1,82 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.dataobject.job; - -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; -import co.yixiang.yshop.framework.quartz.core.handler.JobHandler; -import co.yixiang.yshop.module.infra.enums.job.JobLogStatusEnum; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.time.LocalDateTime; - -/** - * 定时任务的执行日志 - * - * @author yshop - */ -@TableName("infra_job_log") -@KeySequence("infra_job_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class JobLogDO extends BaseDO { - - /** - * 日志编号 - */ - private Long id; - /** - * 任务编号 - * - * 关联 {@link JobDO#getId()} - */ - private Long jobId; - /** - * 处理器的名字 - * - * 冗余字段 {@link JobDO#getHandlerName()} - */ - private String handlerName; - /** - * 处理器的参数 - * - * 冗余字段 {@link JobDO#getHandlerParam()} - */ - private String handlerParam; - /** - * 第几次执行 - * - * 用于区分是不是重试执行。如果是重试执行,则 index 大于 1 - */ - private Integer executeIndex; - - /** - * 开始执行时间 - */ - private LocalDateTime beginTime; - /** - * 结束执行时间 - */ - private LocalDateTime endTime; - /** - * 执行时长,单位:毫秒 - */ - private Integer duration; - /** - * 状态 - * - * 枚举 {@link JobLogStatusEnum} - */ - private Integer status; - /** - * 结果数据 - * - * 成功时,使用 {@link JobHandler#execute(String)} 的结果 - * 失败时,使用 {@link JobHandler#execute(String)} 的异常堆栈 - */ - private String result; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/logger/ApiAccessLogDO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/logger/ApiAccessLogDO.java deleted file mode 100644 index 5185acb..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/logger/ApiAccessLogDO.java +++ /dev/null @@ -1,109 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.dataobject.logger; - -import co.yixiang.yshop.framework.common.enums.UserTypeEnum; -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.time.LocalDateTime; - -/** - * API 访问日志 - * - * @author yshop - */ -@TableName("infra_api_access_log") -@KeySequence(value = "infra_api_access_log_seq") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ApiAccessLogDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 链路追踪编号 - * - * 一般来说,通过链路追踪编号,可以将访问日志,错误日志,链路追踪日志,logger 打印日志等,结合在一起,从而进行排错。 - */ - private String traceId; - /** - * 用户编号 - */ - private Long userId; - /** - * 用户类型 - * - * 枚举 {@link UserTypeEnum} - */ - private Integer userType; - /** - * 应用名 - * - * 目前读取 `spring.application.name` 配置项 - */ - private String applicationName; - - // ========== 请求相关字段 ========== - - /** - * 请求方法名 - */ - private String requestMethod; - /** - * 访问地址 - */ - private String requestUrl; - /** - * 请求参数 - * - * query: Query String - * body: Quest Body - */ - private String requestParams; - /** - * 用户 IP - */ - private String userIp; - /** - * 浏览器 UA - */ - private String userAgent; - - // ========== 执行相关字段 ========== - - /** - * 开始请求时间 - */ - private LocalDateTime beginTime; - /** - * 结束请求时间 - */ - private LocalDateTime endTime; - /** - * 执行时长,单位:毫秒 - */ - private Integer duration; - /** - * 结果码 - * - * 目前使用的 {@link CommonResult#getCode()} 属性 - */ - private Integer resultCode; - /** - * 结果提示 - * - * 目前使用的 {@link CommonResult#getMsg()} 属性 - */ - private String resultMsg; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/logger/ApiErrorLogDO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/logger/ApiErrorLogDO.java deleted file mode 100644 index cbf36fa..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/logger/ApiErrorLogDO.java +++ /dev/null @@ -1,156 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.dataobject.logger; - -import co.yixiang.yshop.framework.common.enums.UserTypeEnum; -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; -import co.yixiang.yshop.module.infra.enums.logger.ApiErrorLogProcessStatusEnum; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.time.LocalDateTime; - -/** - * API 异常数据 - * - * @author yshop - */ -@TableName("infra_api_error_log") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -@KeySequence(value = "infra_api_error_log_seq") -public class ApiErrorLogDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 用户编号 - */ - private Long userId; - /** - * 链路追踪编号 - * - * 一般来说,通过链路追踪编号,可以将访问日志,错误日志,链路追踪日志,logger 打印日志等,结合在一起,从而进行排错。 - */ - private String traceId; - /** - * 用户类型 - * - * 枚举 {@link UserTypeEnum} - */ - private Integer userType; - /** - * 应用名 - * - * 目前读取 spring.application.name - */ - private String applicationName; - - // ========== 请求相关字段 ========== - - /** - * 请求方法名 - */ - private String requestMethod; - /** - * 访问地址 - */ - private String requestUrl; - /** - * 请求参数 - * - * query: Query String - * body: Quest Body - */ - private String requestParams; - /** - * 用户 IP - */ - private String userIp; - /** - * 浏览器 UA - */ - private String userAgent; - - // ========== 异常相关字段 ========== - - /** - * 异常发生时间 - */ - private LocalDateTime exceptionTime; - /** - * 异常名 - * - * {@link Throwable#getClass()} 的类全名 - */ - private String exceptionName; - /** - * 异常导致的消息 - * - * {@link cn.hutool.core.exceptions.ExceptionUtil#getMessage(Throwable)} - */ - private String exceptionMessage; - /** - * 异常导致的根消息 - * - * {@link cn.hutool.core.exceptions.ExceptionUtil#getRootCauseMessage(Throwable)} - */ - private String exceptionRootCauseMessage; - /** - * 异常的栈轨迹 - * - * {@link org.apache.commons.lang3.exception.ExceptionUtils#getStackTrace(Throwable)} - */ - private String exceptionStackTrace; - /** - * 异常发生的类全名 - * - * {@link StackTraceElement#getClassName()} - */ - private String exceptionClassName; - /** - * 异常发生的类文件 - * - * {@link StackTraceElement#getFileName()} - */ - private String exceptionFileName; - /** - * 异常发生的方法名 - * - * {@link StackTraceElement#getMethodName()} - */ - private String exceptionMethodName; - /** - * 异常发生的方法所在行 - * - * {@link StackTraceElement#getLineNumber()} - */ - private Integer exceptionLineNumber; - - // ========== 处理相关字段 ========== - - /** - * 处理状态 - * - * 枚举 {@link ApiErrorLogProcessStatusEnum} - */ - private Integer processStatus; - /** - * 处理时间 - */ - private LocalDateTime processTime; - /** - * 处理用户编号 - * - * 关联 co.yixiang.yshop.adminserver.modules.system.dal.dataobject.user.SysUserDO.SysUserDO#getId() - */ - private Long processUserId; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/test/TestDemoDO.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/test/TestDemoDO.java deleted file mode 100644 index 2851655..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/dataobject/test/TestDemoDO.java +++ /dev/null @@ -1,50 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.dataobject.test; - -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -/** - * 字典类型 DO - * - * @author yshop - */ -@TableName("infra_test_demo") -@KeySequence("infra_test_demo_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class TestDemoDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 名字 - */ - private String name; - /** - * 状态 - */ - private Integer status; - /** - * 类型 - */ - private Integer type; - /** - * 分类 - */ - private Integer category; - /** - * 备注 - */ - private String remark; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/codegen/CodegenColumnMapper.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/codegen/CodegenColumnMapper.java deleted file mode 100644 index 961790a..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/codegen/CodegenColumnMapper.java +++ /dev/null @@ -1,24 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.mysql.codegen; - -import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.framework.mybatis.core.query.LambdaQueryWrapperX; -import co.yixiang.yshop.module.infra.dal.dataobject.codegen.CodegenColumnDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -@Mapper -public interface CodegenColumnMapper extends BaseMapperX { - - default List selectListByTableId(Long tableId) { - return selectList(new LambdaQueryWrapperX() - .eq(CodegenColumnDO::getTableId, tableId) - .orderByAsc(CodegenColumnDO::getId)); - } - - default void deleteListByTableId(Long tableId) { - delete(new LambdaQueryWrapperX() - .eq(CodegenColumnDO::getTableId, tableId)); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/codegen/CodegenTableMapper.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/codegen/CodegenTableMapper.java deleted file mode 100644 index 38a019e..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/codegen/CodegenTableMapper.java +++ /dev/null @@ -1,32 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.mysql.codegen; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.framework.mybatis.core.query.LambdaQueryWrapperX; -import co.yixiang.yshop.module.infra.controller.admin.codegen.vo.table.CodegenTablePageReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.codegen.CodegenTableDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -@Mapper -public interface CodegenTableMapper extends BaseMapperX { - - default CodegenTableDO selectByTableNameAndDataSourceConfigId(String tableName, Long dataSourceConfigId) { - return selectOne(CodegenTableDO::getTableName, tableName, - CodegenTableDO::getDataSourceConfigId, dataSourceConfigId); - } - - default PageResult selectPage(CodegenTablePageReqVO pageReqVO) { - return selectPage(pageReqVO, new LambdaQueryWrapperX() - .likeIfPresent(CodegenTableDO::getTableName, pageReqVO.getTableName()) - .likeIfPresent(CodegenTableDO::getTableComment, pageReqVO.getTableComment()) - .likeIfPresent(CodegenTableDO::getClassName, pageReqVO.getClassName()) - .betweenIfPresent(CodegenTableDO::getCreateTime, pageReqVO.getCreateTime())); - } - - default List selectListByDataSourceConfigId(Long dataSourceConfigId) { - return selectList(CodegenTableDO::getDataSourceConfigId, dataSourceConfigId); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/config/ConfigMapper.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/config/ConfigMapper.java deleted file mode 100644 index 5b6e1d5..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/config/ConfigMapper.java +++ /dev/null @@ -1,36 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.mysql.config; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.framework.mybatis.core.query.LambdaQueryWrapperX; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigPageReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.config.ConfigDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -@Mapper -public interface ConfigMapper extends BaseMapperX { - - default ConfigDO selectByKey(String key) { - return selectOne(ConfigDO::getConfigKey, key); - } - - default PageResult selectPage(ConfigPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(ConfigDO::getName, reqVO.getName()) - .likeIfPresent(ConfigDO::getConfigKey, reqVO.getKey()) - .eqIfPresent(ConfigDO::getType, reqVO.getType()) - .betweenIfPresent(ConfigDO::getCreateTime, reqVO.getCreateTime())); - } - - default List selectList(ConfigExportReqVO reqVO) { - return selectList(new LambdaQueryWrapperX() - .likeIfPresent(ConfigDO::getName, reqVO.getName()) - .likeIfPresent(ConfigDO::getConfigKey, reqVO.getKey()) - .eqIfPresent(ConfigDO::getType, reqVO.getType()) - .betweenIfPresent(ConfigDO::getCreateTime, reqVO.getCreateTime())); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/db/DataSourceConfigMapper.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/db/DataSourceConfigMapper.java deleted file mode 100644 index 8eef75b..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/db/DataSourceConfigMapper.java +++ /dev/null @@ -1,14 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.mysql.db; - -import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.module.infra.dal.dataobject.db.DataSourceConfigDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * 数据源配置 Mapper - * - * @author yshop - */ -@Mapper -public interface DataSourceConfigMapper extends BaseMapperX { -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/file/FileConfigMapper.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/file/FileConfigMapper.java deleted file mode 100644 index 8d41a10..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/file/FileConfigMapper.java +++ /dev/null @@ -1,21 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.mysql.file; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.framework.mybatis.core.query.LambdaQueryWrapperX; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.config.FileConfigPageReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.file.FileConfigDO; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface FileConfigMapper extends BaseMapperX { - - default PageResult selectPage(FileConfigPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(FileConfigDO::getName, reqVO.getName()) - .eqIfPresent(FileConfigDO::getStorage, reqVO.getStorage()) - .betweenIfPresent(FileConfigDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(FileConfigDO::getId)); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/file/FileContentDAOImpl.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/file/FileContentDAOImpl.java deleted file mode 100644 index 3411c36..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/file/FileContentDAOImpl.java +++ /dev/null @@ -1,46 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.mysql.file; - -import cn.hutool.core.collection.CollUtil; -import co.yixiang.yshop.framework.file.core.client.db.DBFileContentFrameworkDAO; -import co.yixiang.yshop.module.infra.dal.dataobject.file.FileContentDO; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import org.springframework.stereotype.Repository; - -import javax.annotation.Resource; -import java.util.List; -import java.util.Optional; - -@Repository -public class FileContentDAOImpl implements DBFileContentFrameworkDAO { - - @Resource - private FileContentMapper fileContentMapper; - - @Override - public void insert(Long configId, String path, byte[] content) { - FileContentDO entity = new FileContentDO().setConfigId(configId) - .setPath(path).setContent(content); - fileContentMapper.insert(entity); - } - - @Override - public void delete(Long configId, String path) { - fileContentMapper.delete(buildQuery(configId, path)); - } - - @Override - public byte[] selectContent(Long configId, String path) { - List list = fileContentMapper.selectList( - buildQuery(configId, path).select(FileContentDO::getContent).orderByDesc(FileContentDO::getId)); - return Optional.ofNullable(CollUtil.getFirst(list)) - .map(FileContentDO::getContent) - .orElse(null); - } - - private LambdaQueryWrapper buildQuery(Long configId, String path) { - return new LambdaQueryWrapper() - .eq(FileContentDO::getConfigId, configId) - .eq(FileContentDO::getPath, path); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/file/FileContentMapper.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/file/FileContentMapper.java deleted file mode 100644 index 8cb0012..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/file/FileContentMapper.java +++ /dev/null @@ -1,9 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.mysql.file; - -import co.yixiang.yshop.module.infra.dal.dataobject.file.FileContentDO; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; - -@Mapper -public interface FileContentMapper extends BaseMapper { -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/file/FileMapper.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/file/FileMapper.java deleted file mode 100644 index 1c101ba..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/file/FileMapper.java +++ /dev/null @@ -1,26 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.mysql.file; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.framework.mybatis.core.query.LambdaQueryWrapperX; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.file.FilePageReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.file.FileDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * 文件操作 Mapper - * - * @author yshop - */ -@Mapper -public interface FileMapper extends BaseMapperX { - - default PageResult selectPage(FilePageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(FileDO::getPath, reqVO.getPath()) - .likeIfPresent(FileDO::getType, reqVO.getType()) - .betweenIfPresent(FileDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(FileDO::getId)); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/job/JobLogMapper.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/job/JobLogMapper.java deleted file mode 100644 index e31ac23..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/job/JobLogMapper.java +++ /dev/null @@ -1,43 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.mysql.job; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.framework.mybatis.core.query.LambdaQueryWrapperX; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.log.JobLogExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.log.JobLogPageReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.job.JobLogDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * 任务日志 Mapper - * - * @author yshop - */ -@Mapper -public interface JobLogMapper extends BaseMapperX { - - default PageResult selectPage(JobLogPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(JobLogDO::getJobId, reqVO.getJobId()) - .likeIfPresent(JobLogDO::getHandlerName, reqVO.getHandlerName()) - .geIfPresent(JobLogDO::getBeginTime, reqVO.getBeginTime()) - .leIfPresent(JobLogDO::getEndTime, reqVO.getEndTime()) - .eqIfPresent(JobLogDO::getStatus, reqVO.getStatus()) - .orderByDesc(JobLogDO::getId) // ID 倒序 - ); - } - - default List selectList(JobLogExportReqVO reqVO) { - return selectList(new LambdaQueryWrapperX() - .eqIfPresent(JobLogDO::getJobId, reqVO.getJobId()) - .likeIfPresent(JobLogDO::getHandlerName, reqVO.getHandlerName()) - .geIfPresent(JobLogDO::getBeginTime, reqVO.getBeginTime()) - .leIfPresent(JobLogDO::getEndTime, reqVO.getEndTime()) - .eqIfPresent(JobLogDO::getStatus, reqVO.getStatus()) - .orderByDesc(JobLogDO::getId) // ID 倒序 - ); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/job/JobMapper.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/job/JobMapper.java deleted file mode 100644 index 01653bd..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/job/JobMapper.java +++ /dev/null @@ -1,41 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.mysql.job; - -import co.yixiang.yshop.module.infra.controller.admin.job.vo.job.JobExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.job.JobPageReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.job.JobDO; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.framework.mybatis.core.query.LambdaQueryWrapperX; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * 定时任务 Mapper - * - * @author yshop - */ -@Mapper -public interface JobMapper extends BaseMapperX { - - default JobDO selectByHandlerName(String handlerName) { - return selectOne(JobDO::getHandlerName, handlerName); - } - - default PageResult selectPage(JobPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(JobDO::getName, reqVO.getName()) - .eqIfPresent(JobDO::getStatus, reqVO.getStatus()) - .likeIfPresent(JobDO::getHandlerName, reqVO.getHandlerName()) - ); - } - - default List selectList(JobExportReqVO reqVO) { - return selectList(new LambdaQueryWrapperX() - .likeIfPresent(JobDO::getName, reqVO.getName()) - .eqIfPresent(JobDO::getStatus, reqVO.getStatus()) - .likeIfPresent(JobDO::getHandlerName, reqVO.getHandlerName()) - ); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/logger/ApiAccessLogMapper.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/logger/ApiAccessLogMapper.java deleted file mode 100644 index 1c5f9f1..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/logger/ApiAccessLogMapper.java +++ /dev/null @@ -1,47 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.mysql.logger; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.framework.mybatis.core.query.LambdaQueryWrapperX; -import co.yixiang.yshop.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogPageReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.logger.ApiAccessLogDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * API 访问日志 Mapper - * - * @author yshop - */ -@Mapper -public interface ApiAccessLogMapper extends BaseMapperX { - - default PageResult selectPage(ApiAccessLogPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(ApiAccessLogDO::getUserId, reqVO.getUserId()) - .eqIfPresent(ApiAccessLogDO::getUserType, reqVO.getUserType()) - .eqIfPresent(ApiAccessLogDO::getApplicationName, reqVO.getApplicationName()) - .likeIfPresent(ApiAccessLogDO::getRequestUrl, reqVO.getRequestUrl()) - .betweenIfPresent(ApiAccessLogDO::getBeginTime, reqVO.getBeginTime()) - .geIfPresent(ApiAccessLogDO::getDuration, reqVO.getDuration()) - .eqIfPresent(ApiAccessLogDO::getResultCode, reqVO.getResultCode()) - .orderByDesc(ApiAccessLogDO::getId) - ); - } - - default List selectList(ApiAccessLogExportReqVO reqVO) { - return selectList(new LambdaQueryWrapperX() - .eqIfPresent(ApiAccessLogDO::getUserId, reqVO.getUserId()) - .eqIfPresent(ApiAccessLogDO::getUserType, reqVO.getUserType()) - .eqIfPresent(ApiAccessLogDO::getApplicationName, reqVO.getApplicationName()) - .likeIfPresent(ApiAccessLogDO::getRequestUrl, reqVO.getRequestUrl()) - .betweenIfPresent(ApiAccessLogDO::getBeginTime, reqVO.getBeginTime()) - .geIfPresent(ApiAccessLogDO::getDuration, reqVO.getDuration()) - .eqIfPresent(ApiAccessLogDO::getResultCode, reqVO.getResultCode()) - .orderByDesc(ApiAccessLogDO::getId) - ); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/logger/ApiErrorLogMapper.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/logger/ApiErrorLogMapper.java deleted file mode 100644 index 80824d5..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/logger/ApiErrorLogMapper.java +++ /dev/null @@ -1,45 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.mysql.logger; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.framework.mybatis.core.query.LambdaQueryWrapperX; -import co.yixiang.yshop.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogPageReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.logger.ApiErrorLogDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * API 错误日志 Mapper - * - * @author yshop - */ -@Mapper -public interface ApiErrorLogMapper extends BaseMapperX { - - default PageResult selectPage(ApiErrorLogPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(ApiErrorLogDO::getUserId, reqVO.getUserId()) - .eqIfPresent(ApiErrorLogDO::getUserType, reqVO.getUserType()) - .eqIfPresent(ApiErrorLogDO::getApplicationName, reqVO.getApplicationName()) - .likeIfPresent(ApiErrorLogDO::getRequestUrl, reqVO.getRequestUrl()) - .betweenIfPresent(ApiErrorLogDO::getExceptionTime, reqVO.getExceptionTime()) - .eqIfPresent(ApiErrorLogDO::getProcessStatus, reqVO.getProcessStatus()) - .orderByDesc(ApiErrorLogDO::getId) - ); - } - - default List selectList(ApiErrorLogExportReqVO reqVO) { - return selectList(new LambdaQueryWrapperX() - .eqIfPresent(ApiErrorLogDO::getUserId, reqVO.getUserId()) - .eqIfPresent(ApiErrorLogDO::getUserType, reqVO.getUserType()) - .eqIfPresent(ApiErrorLogDO::getApplicationName, reqVO.getApplicationName()) - .likeIfPresent(ApiErrorLogDO::getRequestUrl, reqVO.getRequestUrl()) - .betweenIfPresent(ApiErrorLogDO::getExceptionTime, reqVO.getExceptionTime()) - .eqIfPresent(ApiErrorLogDO::getProcessStatus, reqVO.getProcessStatus()) - .orderByDesc(ApiErrorLogDO::getId) - ); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/test/TestDemoMapper.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/test/TestDemoMapper.java deleted file mode 100644 index 07de567..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/dal/mysql/test/TestDemoMapper.java +++ /dev/null @@ -1,45 +0,0 @@ -package co.yixiang.yshop.module.infra.dal.mysql.test; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.framework.mybatis.core.query.LambdaQueryWrapperX; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.TestDemoExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.TestDemoPageReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.test.TestDemoDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * 字典类型 Mapper - * - * @author yshop - */ -@Mapper -public interface TestDemoMapper extends BaseMapperX { - - default PageResult selectPage(TestDemoPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(TestDemoDO::getName, reqVO.getName()) - .eqIfPresent(TestDemoDO::getStatus, reqVO.getStatus()) - .eqIfPresent(TestDemoDO::getType, reqVO.getType()) - .eqIfPresent(TestDemoDO::getCategory, reqVO.getCategory()) - .eqIfPresent(TestDemoDO::getRemark, reqVO.getRemark()) - .betweenIfPresent(TestDemoDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(TestDemoDO::getId)); - } - - default List selectList(TestDemoExportReqVO reqVO) { - return selectList(new LambdaQueryWrapperX() - .likeIfPresent(TestDemoDO::getName, reqVO.getName()) - .eqIfPresent(TestDemoDO::getStatus, reqVO.getStatus()) - .eqIfPresent(TestDemoDO::getType, reqVO.getType()) - .eqIfPresent(TestDemoDO::getCategory, reqVO.getCategory()) - .eqIfPresent(TestDemoDO::getRemark, reqVO.getRemark()) - .betweenIfPresent(TestDemoDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(TestDemoDO::getId)); - } - - List selectList2(); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/codegen/CodegenColumnListConditionEnum.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/codegen/CodegenColumnListConditionEnum.java deleted file mode 100644 index b07f601..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/codegen/CodegenColumnListConditionEnum.java +++ /dev/null @@ -1,27 +0,0 @@ -package co.yixiang.yshop.module.infra.enums.codegen; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 代码生成器的字段过滤条件枚举 - */ -@AllArgsConstructor -@Getter -public enum CodegenColumnListConditionEnum { - - EQ("="), - NE("!="), - GT(">"), - GTE(">="), - LT("<"), - LTE("<="), - LIKE("LIKE"), - BETWEEN("BETWEEN"); - - /** - * 条件 - */ - private final String condition; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/codegen/CodegenFrontTypeEnum.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/codegen/CodegenFrontTypeEnum.java deleted file mode 100644 index 7c7329a..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/codegen/CodegenFrontTypeEnum.java +++ /dev/null @@ -1,26 +0,0 @@ -package co.yixiang.yshop.module.infra.enums.codegen; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 代码生成的前端类型枚举 - * - * @author yshop - */ -@AllArgsConstructor -@Getter -public enum CodegenFrontTypeEnum { - - VUE2(10), // Vue2 Element UI 标准模版 - VUE3(20), // Vue3 Element Plus 标准模版 - VUE3_SCHEMA(21), // Vue3 Element Plus Schema 模版 - VUE3_VBEN(30), // Vue3 VBEN 模版 - ; - - /** - * 类型 - */ - private final Integer type; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/codegen/CodegenSceneEnum.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/codegen/CodegenSceneEnum.java deleted file mode 100644 index a833c61..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/codegen/CodegenSceneEnum.java +++ /dev/null @@ -1,41 +0,0 @@ -package co.yixiang.yshop.module.infra.enums.codegen; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -import static cn.hutool.core.util.ArrayUtil.*; - -/** - * 代码生成的场景枚举 - * - * @author yshop - */ -@AllArgsConstructor -@Getter -public enum CodegenSceneEnum { - - ADMIN(1, "管理后台", "admin", ""), - APP(2, "用户 APP", "app", "App"); - - /** - * 场景 - */ - private final Integer scene; - /** - * 场景名 - */ - private final String name; - /** - * 基础包名 - */ - private final String basePackage; - /** - * Controller 和 VO 类的前缀 - */ - private final String prefixClass; - - public static CodegenSceneEnum valueOf(Integer scene) { - return firstMatch(sceneEnum -> sceneEnum.getScene().equals(scene), values()); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/codegen/CodegenTemplateTypeEnum.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/codegen/CodegenTemplateTypeEnum.java deleted file mode 100644 index b89a307..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/codegen/CodegenTemplateTypeEnum.java +++ /dev/null @@ -1,24 +0,0 @@ -package co.yixiang.yshop.module.infra.enums.codegen; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 代码生成模板类型 - * - * @author yshop - */ -@AllArgsConstructor -@Getter -public enum CodegenTemplateTypeEnum { - - CRUD(1), // 单表(增删改查) - TREE(2), // 树表(增删改查) - ; - - /** - * 类型 - */ - private final Integer type; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/config/ConfigTypeEnum.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/config/ConfigTypeEnum.java deleted file mode 100644 index 713f63d..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/config/ConfigTypeEnum.java +++ /dev/null @@ -1,21 +0,0 @@ -package co.yixiang.yshop.module.infra.enums.config; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -@Getter -@AllArgsConstructor -public enum ConfigTypeEnum { - - /** - * 系统配置 - */ - SYSTEM(1), - /** - * 自定义配置 - */ - CUSTOM(2); - - private final Integer type; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/job/JobLogStatusEnum.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/job/JobLogStatusEnum.java deleted file mode 100644 index f22c20f..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/job/JobLogStatusEnum.java +++ /dev/null @@ -1,24 +0,0 @@ -package co.yixiang.yshop.module.infra.enums.job; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 任务日志的状态枚举 - * - * @author yshop - */ -@Getter -@AllArgsConstructor -public enum JobLogStatusEnum { - - RUNNING(0), // 运行中 - SUCCESS(1), // 成功 - FAILURE(2); // 失败 - - /** - * 状态 - */ - private final Integer status; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/job/JobStatusEnum.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/job/JobStatusEnum.java deleted file mode 100644 index 980fadf..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/job/JobStatusEnum.java +++ /dev/null @@ -1,42 +0,0 @@ -package co.yixiang.yshop.module.infra.enums.job; - -import com.google.common.collect.Sets; -import lombok.AllArgsConstructor; -import lombok.Getter; -import org.quartz.impl.jdbcjobstore.Constants; - -import java.util.Collections; -import java.util.Set; - -/** - * 任务状态的枚举 - * - * @author yshop - */ -@Getter -@AllArgsConstructor -public enum JobStatusEnum { - - /** - * 初始化中 - */ - INIT(0, Collections.emptySet()), - /** - * 开启 - */ - NORMAL(1, Sets.newHashSet(Constants.STATE_WAITING, Constants.STATE_ACQUIRED, Constants.STATE_BLOCKED)), - /** - * 暂停 - */ - STOP(2, Sets.newHashSet(Constants.STATE_PAUSED, Constants.STATE_PAUSED_BLOCKED)); - - /** - * 状态 - */ - private final Integer status; - /** - * 对应的 Quartz 触发器的状态集合 - */ - private final Set quartzStates; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/logger/ApiErrorLogProcessStatusEnum.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/logger/ApiErrorLogProcessStatusEnum.java deleted file mode 100644 index ee36965..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/logger/ApiErrorLogProcessStatusEnum.java +++ /dev/null @@ -1,28 +0,0 @@ -package co.yixiang.yshop.module.infra.enums.logger; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * API 异常数据的处理状态 - * - * @author yshop - */ -@AllArgsConstructor -@Getter -public enum ApiErrorLogProcessStatusEnum { - - INIT(0, "未处理"), - DONE(1, "已处理"), - IGNORE(2, "已忽略"); - - /** - * 状态 - */ - private final Integer status; - /** - * 资源类型名 - */ - private final String name; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/package-info.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/package-info.java deleted file mode 100644 index cf40048..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/enums/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * 占位 - */ -package co.yixiang.yshop.module.infra.enums; diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/framework/codegen/package-info.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/framework/codegen/package-info.java deleted file mode 100644 index d2be343..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/framework/codegen/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * 代码生成器 - */ -package co.yixiang.yshop.module.infra.framework.codegen; diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/framework/package-info.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/framework/package-info.java deleted file mode 100644 index 9cb3eda..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/framework/package-info.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * 属于 infra 模块的 framework 封装 - * - * @author yshop - */ -package co.yixiang.yshop.module.infra.framework; diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/framework/web/config/InfraWebConfiguration.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/framework/web/config/InfraWebConfiguration.java deleted file mode 100644 index dac875f..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/framework/web/config/InfraWebConfiguration.java +++ /dev/null @@ -1,24 +0,0 @@ -package co.yixiang.yshop.module.infra.framework.web.config; - -import co.yixiang.yshop.framework.swagger.config.YshopSwaggerAutoConfiguration; -import org.springdoc.core.GroupedOpenApi; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * infra 模块的 web 组件的 Configuration - * - * @author yshop - */ -@Configuration(proxyBeanMethods = false) -public class InfraWebConfiguration { - - /** - * infra 模块的 API 分组 - */ - @Bean - public GroupedOpenApi infraGroupedOpenApi() { - return YshopSwaggerAutoConfiguration.buildGroupedOpenApi("infra"); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/framework/web/package-info.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/framework/web/package-info.java deleted file mode 100644 index 9495e6b..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/framework/web/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * infra 模块的 web 配置 - */ -package co.yixiang.yshop.module.infra.framework.web; diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/consumer/file/FileConfigRefreshConsumer.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/consumer/file/FileConfigRefreshConsumer.java deleted file mode 100644 index 8b28eb8..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/consumer/file/FileConfigRefreshConsumer.java +++ /dev/null @@ -1,29 +0,0 @@ -package co.yixiang.yshop.module.infra.mq.consumer.file; - -import co.yixiang.yshop.framework.mq.core.pubsub.AbstractChannelMessageListener; -import co.yixiang.yshop.module.infra.mq.message.file.FileConfigRefreshMessage; -import co.yixiang.yshop.module.infra.service.file.FileConfigService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * 针对 {@link FileConfigRefreshMessage} 的消费者 - * - * @author yshop - */ -@Component -@Slf4j -public class FileConfigRefreshConsumer extends AbstractChannelMessageListener { - - @Resource - private FileConfigService fileConfigService; - - @Override - public void onMessage(FileConfigRefreshMessage message) { - log.info("[onMessage][收到 FileConfig 刷新消息]"); - fileConfigService.initLocalCache(); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/consumer/package-info.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/consumer/package-info.java deleted file mode 100644 index 81d642c..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/consumer/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * 占位符,避免缩进 - */ -package co.yixiang.yshop.module.infra.mq.consumer; diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/message/file/FileConfigRefreshMessage.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/message/file/FileConfigRefreshMessage.java deleted file mode 100644 index 6a1a0ae..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/message/file/FileConfigRefreshMessage.java +++ /dev/null @@ -1,17 +0,0 @@ -package co.yixiang.yshop.module.infra.mq.message.file; - -import co.yixiang.yshop.framework.mq.core.pubsub.AbstractChannelMessage; -import lombok.Data; - -/** - * 文件配置数据刷新 Message - */ -@Data -public class FileConfigRefreshMessage extends AbstractChannelMessage { - - @Override - public String getChannel() { - return "infra.file-config.refresh"; - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/message/package-info.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/message/package-info.java deleted file mode 100644 index 474d152..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/message/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * 占位符,避免缩进 - */ -package co.yixiang.yshop.module.infra.mq.message; diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/producer/file/FileConfigProducer.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/producer/file/FileConfigProducer.java deleted file mode 100644 index ab83d18..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/producer/file/FileConfigProducer.java +++ /dev/null @@ -1,26 +0,0 @@ -package co.yixiang.yshop.module.infra.mq.producer.file; - -import co.yixiang.yshop.framework.mq.core.RedisMQTemplate; -import co.yixiang.yshop.module.infra.mq.message.file.FileConfigRefreshMessage; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; - -/** - * 文件配置相关消息的 Producer - */ -@Component -public class FileConfigProducer { - - @Resource - private RedisMQTemplate redisMQTemplate; - - /** - * 发送 {@link FileConfigRefreshMessage} 消息 - */ - public void sendFileConfigRefreshMessage() { - FileConfigRefreshMessage message = new FileConfigRefreshMessage(); - redisMQTemplate.send(message); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/producer/package-info.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/producer/package-info.java deleted file mode 100644 index 9c45b96..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/mq/producer/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * 占位符,避免缩进 - */ -package co.yixiang.yshop.module.infra.mq.producer; diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/codegen/CodegenService.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/codegen/CodegenService.java deleted file mode 100644 index 8baf536..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/codegen/CodegenService.java +++ /dev/null @@ -1,94 +0,0 @@ -package co.yixiang.yshop.module.infra.service.codegen; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.controller.admin.codegen.vo.CodegenCreateListReqVO; -import co.yixiang.yshop.module.infra.controller.admin.codegen.vo.CodegenUpdateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.codegen.vo.table.CodegenTablePageReqVO; -import co.yixiang.yshop.module.infra.controller.admin.codegen.vo.table.DatabaseTableRespVO; -import co.yixiang.yshop.module.infra.dal.dataobject.codegen.CodegenColumnDO; -import co.yixiang.yshop.module.infra.dal.dataobject.codegen.CodegenTableDO; - -import java.util.List; -import java.util.Map; - -/** - * 代码生成 Service 接口 - * - * @author yshop - */ -public interface CodegenService { - - /** - * 基于数据库的表结构,创建代码生成器的表定义 - * - * @param userId 用户编号 - * @param reqVO 表信息 - * @return 创建的表定义的编号数组 - */ - List createCodegenList(Long userId, CodegenCreateListReqVO reqVO); - - /** - * 更新数据库的表和字段定义 - * - * @param updateReqVO 更新信息 - */ - void updateCodegen(CodegenUpdateReqVO updateReqVO); - - /** - * 基于数据库的表结构,同步数据库的表和字段定义 - * - * @param tableId 表编号 - */ - void syncCodegenFromDB(Long tableId); - - /** - * 删除数据库的表和字段定义 - * - * @param tableId 数据编号 - */ - void deleteCodegen(Long tableId); - - /** - * 获得表定义分页 - * - * @param pageReqVO 分页条件 - * @return 表定义分页 - */ - PageResult getCodegenTablePage(CodegenTablePageReqVO pageReqVO); - - /** - * 获得表定义 - * - * @param id 表编号 - * @return 表定义 - */ - CodegenTableDO getCodegenTablePage(Long id); - - /** - * 获得指定表的字段定义数组 - * - * @param tableId 表编号 - * @return 字段定义数组 - */ - List getCodegenColumnListByTableId(Long tableId); - - /** - * 执行指定表的代码生成 - * - * @param tableId 表编号 - * @return 生成结果。key 为文件路径,value 为对应的代码内容 - */ - Map generationCodes(Long tableId); - - /** - * 获得数据库自带的表定义列表 - * - * - * @param dataSourceConfigId 数据源的配置编号 - * @param name 表名称 - * @param comment 表描述 - * @return 表定义列表 - */ - List getDatabaseTableList(Long dataSourceConfigId, String name, String comment); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/codegen/inner/CodegenEngine.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/codegen/inner/CodegenEngine.java deleted file mode 100644 index e416434..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/codegen/inner/CodegenEngine.java +++ /dev/null @@ -1,301 +0,0 @@ -package co.yixiang.yshop.module.infra.service.codegen.inner; - -import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.extra.template.TemplateConfig; -import cn.hutool.extra.template.TemplateEngine; -import cn.hutool.extra.template.engine.velocity.VelocityEngine; -import co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil; -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import co.yixiang.yshop.framework.common.pojo.PageParam; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.common.util.collection.CollectionUtils; -import co.yixiang.yshop.framework.common.util.date.DateUtils; -import co.yixiang.yshop.framework.common.util.date.LocalDateTimeUtils; -import co.yixiang.yshop.framework.common.util.object.ObjectUtils; -import co.yixiang.yshop.framework.excel.core.annotations.DictFormat; -import co.yixiang.yshop.framework.excel.core.convert.DictConvert; -import co.yixiang.yshop.framework.excel.core.util.ExcelUtils; -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; -import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.framework.mybatis.core.query.LambdaQueryWrapperX; -import co.yixiang.yshop.framework.operatelog.core.annotations.OperateLog; -import co.yixiang.yshop.framework.operatelog.core.enums.OperateTypeEnum; -import co.yixiang.yshop.module.infra.dal.dataobject.codegen.CodegenColumnDO; -import co.yixiang.yshop.module.infra.dal.dataobject.codegen.CodegenTableDO; -import co.yixiang.yshop.module.infra.enums.codegen.CodegenFrontTypeEnum; -import co.yixiang.yshop.module.infra.enums.codegen.CodegenSceneEnum; -import co.yixiang.yshop.module.infra.framework.codegen.config.CodegenProperties; -import com.google.common.collect.ImmutableTable; -import com.google.common.collect.Maps; -import com.google.common.collect.Table; -import org.springframework.stereotype.Component; - -import javax.annotation.PostConstruct; -import javax.annotation.Resource; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -import static cn.hutool.core.map.MapUtil.getStr; -import static cn.hutool.core.text.CharSequenceUtil.*; - -/** - * 代码生成的引擎,用于具体生成代码 - * 目前基于 {@link org.apache.velocity.app.Velocity} 模板引擎实现 - * - * 考虑到 Java 模板引擎的框架非常多,Freemarker、Velocity、Thymeleaf 等等,所以我们采用 hutool 封装的 {@link cn.hutool.extra.template.Template} 抽象 - * - * @author yshop - */ -@Component -public class CodegenEngine { - - /** - * 后端的模板配置 - * - * key:模板在 resources 的地址 - * value:生成的路径 - */ - private static final Map SERVER_TEMPLATES = MapUtil.builder(new LinkedHashMap<>()) // 有序 - // Java module-biz Main - .put(javaTemplatePath("controller/vo/baseVO"), javaModuleImplVOFilePath("BaseVO")) - .put(javaTemplatePath("controller/vo/createReqVO"), javaModuleImplVOFilePath("CreateReqVO")) - .put(javaTemplatePath("controller/vo/pageReqVO"), javaModuleImplVOFilePath("PageReqVO")) - .put(javaTemplatePath("controller/vo/respVO"), javaModuleImplVOFilePath("RespVO")) - .put(javaTemplatePath("controller/vo/updateReqVO"), javaModuleImplVOFilePath("UpdateReqVO")) - .put(javaTemplatePath("controller/vo/exportReqVO"), javaModuleImplVOFilePath("ExportReqVO")) - .put(javaTemplatePath("controller/vo/excelVO"), javaModuleImplVOFilePath("ExcelVO")) - .put(javaTemplatePath("controller/controller"), javaModuleImplControllerFilePath()) - .put(javaTemplatePath("convert/convert"), - javaModuleImplMainFilePath("convert/${table.businessName}/${table.className}Convert")) - .put(javaTemplatePath("dal/do"), - javaModuleImplMainFilePath("dal/dataobject/${table.businessName}/${table.className}DO")) - .put(javaTemplatePath("dal/mapper"), - javaModuleImplMainFilePath("dal/mysql/${table.businessName}/${table.className}Mapper")) - .put(javaTemplatePath("dal/mapper.xml"), mapperXmlFilePath()) - .put(javaTemplatePath("service/serviceImpl"), - javaModuleImplMainFilePath("service/${table.businessName}/${table.className}ServiceImpl")) - .put(javaTemplatePath("service/service"), - javaModuleImplMainFilePath("service/${table.businessName}/${table.className}Service")) - // Java module-biz Test - .put(javaTemplatePath("test/serviceTest"), - javaModuleImplTestFilePath("service/${table.businessName}/${table.className}ServiceImplTest")) - // Java module-api Main - .put(javaTemplatePath("enums/errorcode"), javaModuleApiMainFilePath("enums/ErrorCodeConstants_手动操作")) - // SQL - .put("codegen/sql/sql.vm", "sql/sql.sql") - .put("codegen/sql/h2.vm", "sql/h2.sql") - .build(); - - /** - * 后端的配置模版 - * - * key1:UI 模版的类型 {@link CodegenFrontTypeEnum#getType()} - * key2:模板在 resources 的地址 - * value:生成的路径 - */ - private static final Table FRONT_TEMPLATES = ImmutableTable.builder() - // Vue2 标准模版 - .put(CodegenFrontTypeEnum.VUE2.getType(), vueTemplatePath("views/index.vue"), - vueFilePath("views/${table.moduleName}/${classNameVar}/index.vue")) - .put(CodegenFrontTypeEnum.VUE2.getType(), vueTemplatePath("api/api.js"), - vueFilePath("api/${table.moduleName}/${classNameVar}.js")) - // Vue3 标准模版 - .put(CodegenFrontTypeEnum.VUE3.getType(), vue3TemplatePath("views/index.vue"), - vue3FilePath("views/${table.moduleName}/${classNameVar}/index.vue")) - .put(CodegenFrontTypeEnum.VUE3.getType(), vue3TemplatePath("views/form.vue"), - vue3FilePath("views/${table.moduleName}/${classNameVar}/${simpleClassName}Form.vue")) - .put(CodegenFrontTypeEnum.VUE3.getType(), vue3TemplatePath("api/api.ts"), - vue3FilePath("api/${table.moduleName}/${classNameVar}/index.ts")) - // Vue3 Schema 模版 - .put(CodegenFrontTypeEnum.VUE3_SCHEMA.getType(), vue3SchemaTemplatePath("views/data.ts"), - vue3FilePath("views/${table.moduleName}/${classNameVar}/${classNameVar}.data.ts")) - .put(CodegenFrontTypeEnum.VUE3_SCHEMA.getType(), vue3SchemaTemplatePath("views/index.vue"), - vue3FilePath("views/${table.moduleName}/${classNameVar}/index.vue")) - .put(CodegenFrontTypeEnum.VUE3_SCHEMA.getType(), vue3SchemaTemplatePath("views/form.vue"), - vue3FilePath("views/${table.moduleName}/${classNameVar}/${simpleClassName}Form.vue")) - .put(CodegenFrontTypeEnum.VUE3_SCHEMA.getType(), vue3SchemaTemplatePath("api/api.ts"), - vue3FilePath("api/${table.moduleName}/${classNameVar}/index.ts")) - // Vue3 vben 模版 - .put(CodegenFrontTypeEnum.VUE3_VBEN.getType(), vue3VbenTemplatePath("views/data.ts"), - vue3FilePath("views/${table.moduleName}/${classNameVar}/${classNameVar}.data.ts")) - .put(CodegenFrontTypeEnum.VUE3_VBEN.getType(), vue3VbenTemplatePath("views/index.vue"), - vue3FilePath("views/${table.moduleName}/${classNameVar}/index.vue")) - .put(CodegenFrontTypeEnum.VUE3_VBEN.getType(), vue3VbenTemplatePath("views/form.vue"), - vue3FilePath("views/${table.moduleName}/${classNameVar}/${simpleClassName}Modal.vue")) - .put(CodegenFrontTypeEnum.VUE3_VBEN.getType(), vue3VbenTemplatePath("api/api.ts"), - vue3FilePath("api/${table.moduleName}/${classNameVar}/index.ts")) - .build(); - - @Resource - private CodegenProperties codegenProperties; - - /** - * 模板引擎,由 hutool 实现 - */ - private final TemplateEngine templateEngine; - /** - * 全局通用变量映射 - */ - private final Map globalBindingMap = new HashMap<>(); - - public CodegenEngine() { - // 初始化 TemplateEngine 属性 - TemplateConfig config = new TemplateConfig(); - config.setResourceMode(TemplateConfig.ResourceMode.CLASSPATH); - this.templateEngine = new VelocityEngine(config); - } - - @PostConstruct - private void initGlobalBindingMap() { - // 全局配置 - globalBindingMap.put("basePackage", codegenProperties.getBasePackage()); - globalBindingMap.put("baseFrameworkPackage", codegenProperties.getBasePackage() - + '.' + "framework"); // 用于后续获取测试类的 package 地址 - // 全局 Java Bean - globalBindingMap.put("CommonResultClassName", CommonResult.class.getName()); - globalBindingMap.put("PageResultClassName", PageResult.class.getName()); - // VO 类,独有字段 - globalBindingMap.put("PageParamClassName", PageParam.class.getName()); - globalBindingMap.put("DictFormatClassName", DictFormat.class.getName()); - // DO 类,独有字段 - globalBindingMap.put("BaseDOClassName", BaseDO.class.getName()); - globalBindingMap.put("baseDOFields", CodegenBuilder.BASE_DO_FIELDS); - globalBindingMap.put("QueryWrapperClassName", LambdaQueryWrapperX.class.getName()); - globalBindingMap.put("BaseMapperClassName", BaseMapperX.class.getName()); - // Util 工具类 - globalBindingMap.put("ServiceExceptionUtilClassName", ServiceExceptionUtil.class.getName()); - globalBindingMap.put("DateUtilsClassName", DateUtils.class.getName()); - globalBindingMap.put("ExcelUtilsClassName", ExcelUtils.class.getName()); - globalBindingMap.put("LocalDateTimeUtilsClassName", LocalDateTimeUtils.class.getName()); - globalBindingMap.put("ObjectUtilsClassName", ObjectUtils.class.getName()); - globalBindingMap.put("DictConvertClassName", DictConvert.class.getName()); - globalBindingMap.put("OperateLogClassName", OperateLog.class.getName()); - globalBindingMap.put("OperateTypeEnumClassName", OperateTypeEnum.class.getName()); - } - - public Map execute(CodegenTableDO table, List columns) { - // 创建 bindingMap - Map bindingMap = new HashMap<>(globalBindingMap); - bindingMap.put("table", table); - bindingMap.put("columns", columns); - bindingMap.put("primaryColumn", CollectionUtils.findFirst(columns, CodegenColumnDO::getPrimaryKey)); // 主键字段 - bindingMap.put("sceneEnum", CodegenSceneEnum.valueOf(table.getScene())); - - // className 相关 - // 去掉指定前缀,将 TestDictType 转换成 DictType. 因为在 create 等方法后,不需要带上 Test 前缀 - String simpleClassName = removePrefix(table.getClassName(), upperFirst(table.getModuleName())); - bindingMap.put("simpleClassName", simpleClassName); - bindingMap.put("simpleClassName_underlineCase", toUnderlineCase(simpleClassName)); // 将 DictType 转换成 dict_type - bindingMap.put("classNameVar", lowerFirst(simpleClassName)); // 将 DictType 转换成 dictType,用于变量 - // 将 DictType 转换成 dict-type - String simpleClassNameStrikeCase = toSymbolCase(simpleClassName, '-'); - bindingMap.put("simpleClassName_strikeCase", simpleClassNameStrikeCase); - // permission 前缀 - bindingMap.put("permissionPrefix", table.getModuleName() + ":" + simpleClassNameStrikeCase); - - // 执行生成 - Map templates = getTemplates(table.getFrontType()); - Map result = Maps.newLinkedHashMapWithExpectedSize(templates.size()); // 有序 - templates.forEach((vmPath, filePath) -> { - filePath = formatFilePath(filePath, bindingMap); - String content = templateEngine.getTemplate(vmPath).render(bindingMap); - // 去除字段后面多余的 , 逗号 - content = content.replaceAll(",\n}", "\n}").replaceAll(",\n }", "\n }"); - result.put(filePath, content); - }); - return result; - } - - private Map getTemplates(Integer frontType) { - Map templates = new LinkedHashMap<>(); - templates.putAll(SERVER_TEMPLATES); - templates.putAll(FRONT_TEMPLATES.row(frontType)); - return templates; - } - - private String formatFilePath(String filePath, Map bindingMap) { - filePath = StrUtil.replace(filePath, "${basePackage}", - getStr(bindingMap, "basePackage").replaceAll("\\.", "/")); - filePath = StrUtil.replace(filePath, "${classNameVar}", - getStr(bindingMap, "classNameVar")); - filePath = StrUtil.replace(filePath, "${simpleClassName}", - getStr(bindingMap, "simpleClassName")); - // sceneEnum 包含的字段 - CodegenSceneEnum sceneEnum = (CodegenSceneEnum) bindingMap.get("sceneEnum"); - filePath = StrUtil.replace(filePath, "${sceneEnum.prefixClass}", sceneEnum.getPrefixClass()); - filePath = StrUtil.replace(filePath, "${sceneEnum.basePackage}", sceneEnum.getBasePackage()); - // table 包含的字段 - CodegenTableDO table = (CodegenTableDO) bindingMap.get("table"); - filePath = StrUtil.replace(filePath, "${table.moduleName}", table.getModuleName()); - filePath = StrUtil.replace(filePath, "${table.businessName}", table.getBusinessName()); - filePath = StrUtil.replace(filePath, "${table.className}", table.getClassName()); - return filePath; - } - - private static String javaTemplatePath(String path) { - return "codegen/java/" + path + ".vm"; - } - - private static String javaModuleImplVOFilePath(String path) { - return javaModuleFilePath("controller/${sceneEnum.basePackage}/${table.businessName}/" + - "vo/${sceneEnum.prefixClass}${table.className}" + path, "biz", "main"); - } - - private static String javaModuleImplControllerFilePath() { - return javaModuleFilePath("controller/${sceneEnum.basePackage}/${table.businessName}/" + - "${sceneEnum.prefixClass}${table.className}Controller", "biz", "main"); - } - - private static String javaModuleImplMainFilePath(String path) { - return javaModuleFilePath(path, "biz", "main"); - } - - private static String javaModuleApiMainFilePath(String path) { - return javaModuleFilePath(path, "api", "main"); - } - - private static String javaModuleImplTestFilePath(String path) { - return javaModuleFilePath(path, "biz", "test"); - } - - private static String javaModuleFilePath(String path, String module, String src) { - return "yshop-module-${table.moduleName}/" + // 顶级模块 - "yshop-module-${table.moduleName}-" + module + "/" + // 子模块 - "src/" + src + "/java/${basePackage}/module/${table.moduleName}/" + path + ".java"; - } - - private static String mapperXmlFilePath() { - return "yshop-module-${table.moduleName}/" + // 顶级模块 - "yshop-module-${table.moduleName}-biz/" + // 子模块 - "src/main/resources/mapper/${table.businessName}/${table.className}Mapper.xml"; - } - - private static String vueTemplatePath(String path) { - return "codegen/vue/" + path + ".vm"; - } - - private static String vueFilePath(String path) { - return "yshop-ui-${sceneEnum.basePackage}/" + // 顶级目录 - "src/" + path; - } - - private static String vue3TemplatePath(String path) { - return "codegen/vue3/" + path + ".vm"; - } - - private static String vue3FilePath(String path) { - return "yshop-ui-${sceneEnum.basePackage}-vue3/" + // 顶级目录 - "src/" + path; - } - - private static String vue3SchemaTemplatePath(String path) { - return "codegen/vue3_schema/" + path + ".vm"; - } - - private static String vue3VbenTemplatePath(String path) { - return "codegen/vue3_vben/" + path + ".vm"; - } -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/config/ConfigService.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/config/ConfigService.java deleted file mode 100644 index b1f3f1d..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/config/ConfigService.java +++ /dev/null @@ -1,75 +0,0 @@ -package co.yixiang.yshop.module.infra.service.config; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigPageReqVO; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigUpdateReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.config.ConfigDO; - -import javax.validation.Valid; -import java.util.List; - -/** - * 参数配置 Service 接口 - * - * @author yshop - */ -public interface ConfigService { - - /** - * 创建参数配置 - * - * @param reqVO 创建信息 - * @return 配置编号 - */ - Long createConfig(@Valid ConfigCreateReqVO reqVO); - - /** - * 更新参数配置 - * - * @param reqVO 更新信息 - */ - void updateConfig(@Valid ConfigUpdateReqVO reqVO); - - /** - * 删除参数配置 - * - * @param id 配置编号 - */ - void deleteConfig(Long id); - - /** - * 获得参数配置 - * - * @param id 配置编号 - * @return 参数配置 - */ - ConfigDO getConfig(Long id); - - /** - * 根据参数键,获得参数配置 - * - * @param key 配置键 - * @return 参数配置 - */ - ConfigDO getConfigByKey(String key); - - /** - * 获得参数配置分页列表 - * - * @param reqVO 分页条件 - * @return 分页列表 - */ - PageResult getConfigPage(@Valid ConfigPageReqVO reqVO); - - /** - * 获得参数配置列表 - * - * @param reqVO 列表 - * @return 列表 - */ - List getConfigList(@Valid ConfigExportReqVO reqVO); - - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/config/ConfigServiceImpl.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/config/ConfigServiceImpl.java deleted file mode 100644 index 5c6bb80..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/config/ConfigServiceImpl.java +++ /dev/null @@ -1,123 +0,0 @@ -package co.yixiang.yshop.module.infra.service.config; - -import cn.hutool.core.util.StrUtil; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigPageReqVO; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigUpdateReqVO; -import co.yixiang.yshop.module.infra.convert.config.ConfigConvert; -import co.yixiang.yshop.module.infra.dal.dataobject.config.ConfigDO; -import co.yixiang.yshop.module.infra.dal.mysql.config.ConfigMapper; -import co.yixiang.yshop.module.infra.enums.config.ConfigTypeEnum; -import com.google.common.annotations.VisibleForTesting; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import javax.annotation.Resource; -import java.util.List; - -import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; -import static co.yixiang.yshop.module.infra.enums.ErrorCodeConstants.*; - -/** - * 参数配置 Service 实现类 - */ -@Service -@Slf4j -@Validated -public class ConfigServiceImpl implements ConfigService { - - @Resource - private ConfigMapper configMapper; - - @Override - public Long createConfig(ConfigCreateReqVO reqVO) { - // 校验正确性 - validateConfigForCreateOrUpdate(null, reqVO.getKey()); - // 插入参数配置 - ConfigDO config = ConfigConvert.INSTANCE.convert(reqVO); - config.setType(ConfigTypeEnum.CUSTOM.getType()); - configMapper.insert(config); - return config.getId(); - } - - @Override - public void updateConfig(ConfigUpdateReqVO reqVO) { - // 校验正确性 - validateConfigForCreateOrUpdate(reqVO.getId(), null); // 不允许更新 key - // 更新参数配置 - ConfigDO updateObj = ConfigConvert.INSTANCE.convert(reqVO); - configMapper.updateById(updateObj); - } - - @Override - public void deleteConfig(Long id) { - // 校验配置存在 - ConfigDO config = validateConfigExists(id); - // 内置配置,不允许删除 - if (ConfigTypeEnum.SYSTEM.getType().equals(config.getType())) { - throw exception(CONFIG_CAN_NOT_DELETE_SYSTEM_TYPE); - } - // 删除 - configMapper.deleteById(id); - } - - @Override - public ConfigDO getConfig(Long id) { - return configMapper.selectById(id); - } - - @Override - public ConfigDO getConfigByKey(String key) { - return configMapper.selectByKey(key); - } - - @Override - public PageResult getConfigPage(ConfigPageReqVO reqVO) { - return configMapper.selectPage(reqVO); - } - - @Override - public List getConfigList(ConfigExportReqVO reqVO) { - return configMapper.selectList(reqVO); - } - - private void validateConfigForCreateOrUpdate(Long id, String key) { - // 校验自己存在 - validateConfigExists(id); - // 校验参数配置 key 的唯一性 - if (StrUtil.isNotEmpty(key)) { - validateConfigKeyUnique(id, key); - } - } - - @VisibleForTesting - public ConfigDO validateConfigExists(Long id) { - if (id == null) { - return null; - } - ConfigDO config = configMapper.selectById(id); - if (config == null) { - throw exception(CONFIG_NOT_EXISTS); - } - return config; - } - - @VisibleForTesting - public void validateConfigKeyUnique(Long id, String key) { - ConfigDO config = configMapper.selectByKey(key); - if (config == null) { - return; - } - // 如果 id 为空,说明不用比较是否为相同 id 的参数配置 - if (id == null) { - throw exception(CONFIG_KEY_DUPLICATE); - } - if (!config.getId().equals(id)) { - throw exception(CONFIG_KEY_DUPLICATE); - } - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/db/DataSourceConfigService.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/db/DataSourceConfigService.java deleted file mode 100644 index f330380..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/db/DataSourceConfigService.java +++ /dev/null @@ -1,54 +0,0 @@ -package co.yixiang.yshop.module.infra.service.db; - -import co.yixiang.yshop.module.infra.controller.admin.db.vo.DataSourceConfigCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.db.vo.DataSourceConfigUpdateReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.db.DataSourceConfigDO; - -import javax.validation.Valid; -import java.util.List; - -/** - * 数据源配置 Service 接口 - * - * @author yshop - */ -public interface DataSourceConfigService { - - /** - * 创建数据源配置 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createDataSourceConfig(@Valid DataSourceConfigCreateReqVO createReqVO); - - /** - * 更新数据源配置 - * - * @param updateReqVO 更新信息 - */ - void updateDataSourceConfig(@Valid DataSourceConfigUpdateReqVO updateReqVO); - - /** - * 删除数据源配置 - * - * @param id 编号 - */ - void deleteDataSourceConfig(Long id); - - /** - * 获得数据源配置 - * - * @param id 编号 - * @return 数据源配置 - */ - DataSourceConfigDO getDataSourceConfig(Long id); - - /** - * 获得数据源配置列表 - * - * @return 数据源配置列表 - */ - List getDataSourceConfigList(); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/db/DataSourceConfigServiceImpl.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/db/DataSourceConfigServiceImpl.java deleted file mode 100644 index 69f9a15..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/db/DataSourceConfigServiceImpl.java +++ /dev/null @@ -1,107 +0,0 @@ -package co.yixiang.yshop.module.infra.service.db; - -import co.yixiang.yshop.framework.mybatis.core.util.JdbcUtils; -import co.yixiang.yshop.module.infra.controller.admin.db.vo.DataSourceConfigCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.db.vo.DataSourceConfigUpdateReqVO; -import co.yixiang.yshop.module.infra.convert.db.DataSourceConfigConvert; -import co.yixiang.yshop.module.infra.dal.dataobject.db.DataSourceConfigDO; -import co.yixiang.yshop.module.infra.dal.mysql.db.DataSourceConfigMapper; -import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty; -import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import javax.annotation.Resource; -import java.util.List; -import java.util.Objects; - -import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; -import static co.yixiang.yshop.module.infra.enums.ErrorCodeConstants.DATA_SOURCE_CONFIG_NOT_EXISTS; -import static co.yixiang.yshop.module.infra.enums.ErrorCodeConstants.DATA_SOURCE_CONFIG_NOT_OK; - -/** - * 数据源配置 Service 实现类 - * - * @author yshop - */ -@Service -@Validated -public class DataSourceConfigServiceImpl implements DataSourceConfigService { - - @Resource - private DataSourceConfigMapper dataSourceConfigMapper; - - @Resource - private DynamicDataSourceProperties dynamicDataSourceProperties; - - @Override - public Long createDataSourceConfig(DataSourceConfigCreateReqVO createReqVO) { - DataSourceConfigDO dataSourceConfig = DataSourceConfigConvert.INSTANCE.convert(createReqVO); - validateConnectionOK(dataSourceConfig); - - // 插入 - dataSourceConfigMapper.insert(dataSourceConfig); - // 返回 - return dataSourceConfig.getId(); - } - - @Override - public void updateDataSourceConfig(DataSourceConfigUpdateReqVO updateReqVO) { - // 校验存在 - validateDataSourceConfigExists(updateReqVO.getId()); - DataSourceConfigDO updateObj = DataSourceConfigConvert.INSTANCE.convert(updateReqVO); - validateConnectionOK(updateObj); - - // 更新 - dataSourceConfigMapper.updateById(updateObj); - } - - @Override - public void deleteDataSourceConfig(Long id) { - // 校验存在 - validateDataSourceConfigExists(id); - // 删除 - dataSourceConfigMapper.deleteById(id); - } - - private void validateDataSourceConfigExists(Long id) { - if (dataSourceConfigMapper.selectById(id) == null) { - throw exception(DATA_SOURCE_CONFIG_NOT_EXISTS); - } - } - - @Override - public DataSourceConfigDO getDataSourceConfig(Long id) { - // 如果 id 为 0,默认为 master 的数据源 - if (Objects.equals(id, DataSourceConfigDO.ID_MASTER)) { - return buildMasterDataSourceConfig(); - } - // 从 DB 中读取 - return dataSourceConfigMapper.selectById(id); - } - - @Override - public List getDataSourceConfigList() { - List result = dataSourceConfigMapper.selectList(); - // 补充 master 数据源 - result.add(0, buildMasterDataSourceConfig()); - return result; - } - - private void validateConnectionOK(DataSourceConfigDO config) { - boolean success = JdbcUtils.isConnectionOK(config.getUrl(), config.getUsername(), config.getPassword()); - if (!success) { - throw exception(DATA_SOURCE_CONFIG_NOT_OK); - } - } - - private DataSourceConfigDO buildMasterDataSourceConfig() { - String primary = dynamicDataSourceProperties.getPrimary(); - DataSourceProperty dataSourceProperty = dynamicDataSourceProperties.getDatasource().get(primary); - return new DataSourceConfigDO().setId(DataSourceConfigDO.ID_MASTER).setName(primary) - .setUrl(dataSourceProperty.getUrl()) - .setUsername(dataSourceProperty.getUsername()) - .setPassword(dataSourceProperty.getPassword()); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/db/DatabaseTableService.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/db/DatabaseTableService.java deleted file mode 100644 index 7d66a7b..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/db/DatabaseTableService.java +++ /dev/null @@ -1,33 +0,0 @@ -package co.yixiang.yshop.module.infra.service.db; - -import com.baomidou.mybatisplus.generator.config.po.TableInfo; - -import java.util.List; - -/** - * 数据库表 Service - * - * @author yshop - */ -public interface DatabaseTableService { - - /** - * 获得表列表,基于表名称 + 表描述进行模糊匹配 - * - * @param dataSourceConfigId 数据源配置的编号 - * @param nameLike 表名称,模糊匹配 - * @param commentLike 表描述,模糊匹配 - * @return 表列表 - */ - List getTableList(Long dataSourceConfigId, String nameLike, String commentLike); - - /** - * 获得指定表名 - * - * @param dataSourceConfigId 数据源配置的编号 - * @param tableName 表名称 - * @return 表 - */ - TableInfo getTable(Long dataSourceConfigId, String tableName); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/file/FileConfigService.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/file/FileConfigService.java deleted file mode 100644 index ca911ec..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/file/FileConfigService.java +++ /dev/null @@ -1,92 +0,0 @@ -package co.yixiang.yshop.module.infra.service.file; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.file.core.client.FileClient; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.config.FileConfigCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.config.FileConfigPageReqVO; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.config.FileConfigUpdateReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.file.FileConfigDO; - -import javax.validation.Valid; - -/** - * 文件配置 Service 接口 - * - * @author yshop - */ -public interface FileConfigService { - - /** - * 初始化文件客户端 - */ - void initLocalCache(); - - /** - * 创建文件配置 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createFileConfig(@Valid FileConfigCreateReqVO createReqVO); - - /** - * 更新文件配置 - * - * @param updateReqVO 更新信息 - */ - void updateFileConfig(@Valid FileConfigUpdateReqVO updateReqVO); - - /** - * 更新文件配置为 Master - * - * @param id 编号 - */ - void updateFileConfigMaster(Long id); - - /** - * 删除文件配置 - * - * @param id 编号 - */ - void deleteFileConfig(Long id); - - /** - * 获得文件配置 - * - * @param id 编号 - * @return 文件配置 - */ - FileConfigDO getFileConfig(Long id); - - /** - * 获得文件配置分页 - * - * @param pageReqVO 分页查询 - * @return 文件配置分页 - */ - PageResult getFileConfigPage(FileConfigPageReqVO pageReqVO); - - /** - * 测试文件配置是否正确,通过上传文件 - * - * @param id 编号 - * @return 文件 URL - */ - String testFileConfig(Long id) throws Exception; - - /** - * 获得指定编号的文件客户端 - * - * @param id 配置编号 - * @return 文件客户端 - */ - FileClient getFileClient(Long id); - - /** - * 获得 Master 文件客户端 - * - * @return 文件客户端 - */ - FileClient getMasterFileClient(); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/file/FileConfigServiceImpl.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/file/FileConfigServiceImpl.java deleted file mode 100644 index b479ffd..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/file/FileConfigServiceImpl.java +++ /dev/null @@ -1,182 +0,0 @@ -package co.yixiang.yshop.module.infra.service.file; - -import cn.hutool.core.io.resource.ResourceUtil; -import cn.hutool.core.util.IdUtil; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.common.util.json.JsonUtils; -import co.yixiang.yshop.framework.common.util.validation.ValidationUtils; -import co.yixiang.yshop.framework.file.core.client.FileClient; -import co.yixiang.yshop.framework.file.core.client.FileClientConfig; -import co.yixiang.yshop.framework.file.core.client.FileClientFactory; -import co.yixiang.yshop.framework.file.core.enums.FileStorageEnum; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.config.FileConfigCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.config.FileConfigPageReqVO; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.config.FileConfigUpdateReqVO; -import co.yixiang.yshop.module.infra.convert.file.FileConfigConvert; -import co.yixiang.yshop.module.infra.dal.dataobject.file.FileConfigDO; -import co.yixiang.yshop.module.infra.dal.mysql.file.FileConfigMapper; -import co.yixiang.yshop.module.infra.mq.producer.file.FileConfigProducer; -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.transaction.support.TransactionSynchronization; -import org.springframework.transaction.support.TransactionSynchronizationManager; -import org.springframework.validation.annotation.Validated; - -import javax.annotation.PostConstruct; -import javax.annotation.Resource; -import javax.validation.Validator; -import java.util.List; -import java.util.Map; - -import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; -import static co.yixiang.yshop.module.infra.enums.ErrorCodeConstants.FILE_CONFIG_DELETE_FAIL_MASTER; -import static co.yixiang.yshop.module.infra.enums.ErrorCodeConstants.FILE_CONFIG_NOT_EXISTS; - -/** - * 文件配置 Service 实现类 - * - * @author yshop - */ -@Service -@Validated -@Slf4j -public class FileConfigServiceImpl implements FileConfigService { - - @Resource - private FileClientFactory fileClientFactory; - /** - * Master FileClient 对象,有且仅有一个,即 {@link FileConfigDO#getMaster()} 对应的 - */ - @Getter - private FileClient masterFileClient; - - @Resource - private FileConfigMapper fileConfigMapper; - - @Resource - private FileConfigProducer fileConfigProducer; - - @Resource - private Validator validator; - - @Override - @PostConstruct - public void initLocalCache() { - // 第一步:查询数据 - List configs = fileConfigMapper.selectList(); - log.info("[initLocalCache][缓存文件配置,数量为:{}]", configs.size()); - - // 第二步:构建缓存:创建或更新文件 Client - configs.forEach(config -> { - fileClientFactory.createOrUpdateFileClient(config.getId(), config.getStorage(), config.getConfig()); - // 如果是 master,进行设置 - if (Boolean.TRUE.equals(config.getMaster())) { - masterFileClient = fileClientFactory.getFileClient(config.getId()); - } - }); - } - - @Override - public Long createFileConfig(FileConfigCreateReqVO createReqVO) { - // 插入 - FileConfigDO fileConfig = FileConfigConvert.INSTANCE.convert(createReqVO) - .setConfig(parseClientConfig(createReqVO.getStorage(), createReqVO.getConfig())) - .setMaster(false); // 默认非 master - fileConfigMapper.insert(fileConfig); - // 发送刷新配置的消息 - fileConfigProducer.sendFileConfigRefreshMessage(); - // 返回 - return fileConfig.getId(); - } - - @Override - public void updateFileConfig(FileConfigUpdateReqVO updateReqVO) { - // 校验存在 - FileConfigDO config = validateFileConfigExists(updateReqVO.getId()); - // 更新 - FileConfigDO updateObj = FileConfigConvert.INSTANCE.convert(updateReqVO) - .setConfig(parseClientConfig(config.getStorage(), updateReqVO.getConfig())); - fileConfigMapper.updateById(updateObj); - // 发送刷新配置的消息 - fileConfigProducer.sendFileConfigRefreshMessage(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateFileConfigMaster(Long id) { - // 校验存在 - validateFileConfigExists(id); - // 更新其它为非 master - fileConfigMapper.updateBatch(new FileConfigDO().setMaster(false)); - // 更新 - fileConfigMapper.updateById(new FileConfigDO().setId(id).setMaster(true)); - // 发送刷新配置的消息 - TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { - - @Override - public void afterCommit() { - fileConfigProducer.sendFileConfigRefreshMessage(); - } - - }); - } - - private FileClientConfig parseClientConfig(Integer storage, Map config) { - // 获取配置类 - Class configClass = FileStorageEnum.getByStorage(storage) - .getConfigClass(); - FileClientConfig clientConfig = JsonUtils.parseObject2(JsonUtils.toJsonString(config), configClass); - // 参数校验 - ValidationUtils.validate(validator, clientConfig); - // 设置参数 - return clientConfig; - } - - @Override - public void deleteFileConfig(Long id) { - // 校验存在 - FileConfigDO config = validateFileConfigExists(id); - if (Boolean.TRUE.equals(config.getMaster())) { - throw exception(FILE_CONFIG_DELETE_FAIL_MASTER); - } - // 删除 - fileConfigMapper.deleteById(id); - // 发送刷新配置的消息 - fileConfigProducer.sendFileConfigRefreshMessage(); - } - - private FileConfigDO validateFileConfigExists(Long id) { - FileConfigDO config = fileConfigMapper.selectById(id); - if (config == null) { - throw exception(FILE_CONFIG_NOT_EXISTS); - } - return config; - } - - @Override - public FileConfigDO getFileConfig(Long id) { - return fileConfigMapper.selectById(id); - } - - @Override - public PageResult getFileConfigPage(FileConfigPageReqVO pageReqVO) { - return fileConfigMapper.selectPage(pageReqVO); - } - - @Override - public String testFileConfig(Long id) throws Exception { - // 校验存在 - validateFileConfigExists(id); - // 上传文件 - byte[] content = ResourceUtil.readBytes("file/erweima.jpg"); - return fileClientFactory.getFileClient(id).upload(content, IdUtil.fastSimpleUUID() + ".jpg", "image/jpeg"); - } - - @Override - public FileClient getFileClient(Long id) { - return fileClientFactory.getFileClient(id); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/file/FileService.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/file/FileService.java deleted file mode 100644 index 8055b86..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/file/FileService.java +++ /dev/null @@ -1,48 +0,0 @@ -package co.yixiang.yshop.module.infra.service.file; - -import co.yixiang.yshop.module.infra.controller.admin.file.vo.file.FilePageReqVO; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.dal.dataobject.file.FileDO; - -/** - * 文件 Service 接口 - * - * @author yshop - */ -public interface FileService { - - /** - * 获得文件分页 - * - * @param pageReqVO 分页查询 - * @return 文件分页 - */ - PageResult getFilePage(FilePageReqVO pageReqVO); - - /** - * 保存文件,并返回文件的访问路径 - * - * @param name 文件名称 - * @param path 文件路径 - * @param content 文件内容 - * @return 文件路径 - */ - String createFile(String name, String path, byte[] content); - - /** - * 删除文件 - * - * @param id 编号 - */ - void deleteFile(Long id) throws Exception; - - /** - * 获得文件内容 - * - * @param configId 配置编号 - * @param path 文件路径 - * @return 文件内容 - */ - byte[] getFileContent(Long configId, String path) throws Exception; - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/file/FileServiceImpl.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/file/FileServiceImpl.java deleted file mode 100644 index 84c2a2b..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/file/FileServiceImpl.java +++ /dev/null @@ -1,98 +0,0 @@ -package co.yixiang.yshop.module.infra.service.file; - -import cn.hutool.core.lang.Assert; -import cn.hutool.core.util.StrUtil; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.common.util.io.FileUtils; -import co.yixiang.yshop.framework.file.core.client.FileClient; -import co.yixiang.yshop.framework.file.core.utils.FileTypeUtils; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.file.FilePageReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.file.FileDO; -import co.yixiang.yshop.module.infra.dal.mysql.file.FileMapper; -import lombok.SneakyThrows; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; - -import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; -import static co.yixiang.yshop.module.infra.enums.ErrorCodeConstants.FILE_NOT_EXISTS; - -/** - * 文件 Service 实现类 - * - * @author yshop - */ -@Service -public class FileServiceImpl implements FileService { - - @Resource - private FileConfigService fileConfigService; - - @Resource - private FileMapper fileMapper; - - @Override - public PageResult getFilePage(FilePageReqVO pageReqVO) { - return fileMapper.selectPage(pageReqVO); - } - - @Override - @SneakyThrows - public String createFile(String name, String path, byte[] content) { - // 计算默认的 path 名 - String type = FileTypeUtils.getMineType(content, name); - if (StrUtil.isEmpty(path)) { - path = FileUtils.generatePath(content, name); - } - // 如果 name 为空,则使用 path 填充 - if (StrUtil.isEmpty(name)) { - name = path; - } - - // 上传到文件存储器 - FileClient client = fileConfigService.getMasterFileClient(); - Assert.notNull(client, "客户端(master) 不能为空"); - String url = client.upload(content, path, type); - - // 保存到数据库 - FileDO file = new FileDO(); - file.setConfigId(client.getId()); - file.setName(name); - file.setPath(path); - file.setUrl(url); - file.setType(type); - file.setSize(content.length); - fileMapper.insert(file); - return url; - } - - @Override - public void deleteFile(Long id) throws Exception { - // 校验存在 - FileDO file = validateFileExists(id); - - // 从文件存储器中删除 - FileClient client = fileConfigService.getFileClient(file.getConfigId()); - Assert.notNull(client, "客户端({}) 不能为空", file.getConfigId()); - client.delete(file.getPath()); - - // 删除记录 - fileMapper.deleteById(id); - } - - private FileDO validateFileExists(Long id) { - FileDO fileDO = fileMapper.selectById(id); - if (fileDO == null) { - throw exception(FILE_NOT_EXISTS); - } - return fileDO; - } - - @Override - public byte[] getFileContent(Long configId, String path) throws Exception { - FileClient client = fileConfigService.getFileClient(configId); - Assert.notNull(client, "客户端({}) 不能为空", configId); - return client.getContent(path); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/job/JobLogServiceImpl.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/job/JobLogServiceImpl.java deleted file mode 100644 index d623520..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/job/JobLogServiceImpl.java +++ /dev/null @@ -1,73 +0,0 @@ -package co.yixiang.yshop.module.infra.service.job; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.log.JobLogExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.log.JobLogPageReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.job.JobLogDO; -import co.yixiang.yshop.module.infra.dal.mysql.job.JobLogMapper; -import co.yixiang.yshop.module.infra.enums.job.JobLogStatusEnum; -import lombok.extern.slf4j.Slf4j; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import javax.annotation.Resource; -import java.time.LocalDateTime; -import java.util.Collection; -import java.util.List; - -/** - * Job 日志 Service 实现类 - * - * @author yshop - */ -@Service -@Validated -@Slf4j -public class JobLogServiceImpl implements JobLogService { - - @Resource - private JobLogMapper jobLogMapper; - - @Override - public Long createJobLog(Long jobId, LocalDateTime beginTime, String jobHandlerName, String jobHandlerParam, Integer executeIndex) { - JobLogDO log = JobLogDO.builder().jobId(jobId).handlerName(jobHandlerName).handlerParam(jobHandlerParam).executeIndex(executeIndex) - .beginTime(beginTime).status(JobLogStatusEnum.RUNNING.getStatus()).build(); - jobLogMapper.insert(log); - return log.getId(); - } - - @Override - @Async - public void updateJobLogResultAsync(Long logId, LocalDateTime endTime, Integer duration, boolean success, String result) { - try { - JobLogDO updateObj = JobLogDO.builder().id(logId).endTime(endTime).duration(duration) - .status(success ? JobLogStatusEnum.SUCCESS.getStatus() : JobLogStatusEnum.FAILURE.getStatus()).result(result).build(); - jobLogMapper.updateById(updateObj); - } catch (Exception ex) { - log.error("[updateJobLogResultAsync][logId({}) endTime({}) duration({}) success({}) result({})]", - logId, endTime, duration, success, result); - } - } - - @Override - public JobLogDO getJobLog(Long id) { - return jobLogMapper.selectById(id); - } - - @Override - public List getJobLogList(Collection ids) { - return jobLogMapper.selectBatchIds(ids); - } - - @Override - public PageResult getJobLogPage(JobLogPageReqVO pageReqVO) { - return jobLogMapper.selectPage(pageReqVO); - } - - @Override - public List getJobLogList(JobLogExportReqVO exportReqVO) { - return jobLogMapper.selectList(exportReqVO); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/job/JobService.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/job/JobService.java deleted file mode 100644 index 46a76d9..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/job/JobService.java +++ /dev/null @@ -1,91 +0,0 @@ -package co.yixiang.yshop.module.infra.service.job; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.job.JobCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.job.JobExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.job.JobPageReqVO; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.job.JobUpdateReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.job.JobDO; -import org.quartz.SchedulerException; - -import javax.validation.Valid; -import java.util.Collection; -import java.util.List; - -/** - * 定时任务 Service 接口 - * - * @author yshop - */ -public interface JobService { - - /** - * 创建定时任务 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createJob(@Valid JobCreateReqVO createReqVO) throws SchedulerException; - - /** - * 更新定时任务 - * - * @param updateReqVO 更新信息 - */ - void updateJob(@Valid JobUpdateReqVO updateReqVO) throws SchedulerException; - - /** - * 更新定时任务的状态 - * - * @param id 任务编号 - * @param status 状态 - */ - void updateJobStatus(Long id, Integer status) throws SchedulerException; - - /** - * 触发定时任务 - * - * @param id 任务编号 - */ - void triggerJob(Long id) throws SchedulerException; - - /** - * 删除定时任务 - * - * @param id 编号 - */ - void deleteJob(Long id) throws SchedulerException; - - /** - * 获得定时任务 - * - * @param id 编号 - * @return 定时任务 - */ - JobDO getJob(Long id); - - /** - * 获得定时任务列表 - * - * @param ids 编号 - * @return 定时任务列表 - */ - List getJobList(Collection ids); - - /** - * 获得定时任务分页 - * - * @param pageReqVO 分页查询 - * @return 定时任务分页 - */ - PageResult getJobPage(JobPageReqVO pageReqVO); - - /** - * 获得定时任务列表, 用于 Excel 导出 - * - * @param exportReqVO 查询条件 - * @return 定时任务分页 - */ - List getJobList(JobExportReqVO exportReqVO); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/job/JobServiceImpl.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/job/JobServiceImpl.java deleted file mode 100644 index 3c8313b..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/job/JobServiceImpl.java +++ /dev/null @@ -1,173 +0,0 @@ -package co.yixiang.yshop.module.infra.service.job; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.quartz.core.scheduler.SchedulerManager; -import co.yixiang.yshop.framework.quartz.core.util.CronUtils; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.job.JobCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.job.JobExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.job.JobPageReqVO; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.job.JobUpdateReqVO; -import co.yixiang.yshop.module.infra.convert.job.JobConvert; -import co.yixiang.yshop.module.infra.dal.dataobject.job.JobDO; -import co.yixiang.yshop.module.infra.dal.mysql.job.JobMapper; -import co.yixiang.yshop.module.infra.enums.job.JobStatusEnum; -import org.quartz.SchedulerException; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import javax.annotation.Resource; -import java.util.Collection; -import java.util.List; - -import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; -import static co.yixiang.yshop.module.infra.enums.ErrorCodeConstants.*; -import static co.yixiang.yshop.framework.common.util.collection.CollectionUtils.containsAny; - -/** - * 定时任务 Service 实现类 - * - * @author yshop - */ -@Service -@Validated -public class JobServiceImpl implements JobService { - - @Resource - private JobMapper jobMapper; - - @Resource - private SchedulerManager schedulerManager; - - @Override - @Transactional(rollbackFor = Exception.class) - public Long createJob(JobCreateReqVO createReqVO) throws SchedulerException { - validateCronExpression(createReqVO.getCronExpression()); - // 校验唯一性 - if (jobMapper.selectByHandlerName(createReqVO.getHandlerName()) != null) { - throw exception(JOB_HANDLER_EXISTS); - } - // 插入 - JobDO job = JobConvert.INSTANCE.convert(createReqVO); - job.setStatus(JobStatusEnum.INIT.getStatus()); - fillJobMonitorTimeoutEmpty(job); - jobMapper.insert(job); - - // 添加 Job 到 Quartz 中 - schedulerManager.addJob(job.getId(), job.getHandlerName(), job.getHandlerParam(), job.getCronExpression(), - createReqVO.getRetryCount(), createReqVO.getRetryInterval()); - // 更新 - JobDO updateObj = JobDO.builder().id(job.getId()).status(JobStatusEnum.NORMAL.getStatus()).build(); - jobMapper.updateById(updateObj); - - // 返回 - return job.getId(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateJob(JobUpdateReqVO updateReqVO) throws SchedulerException { - validateCronExpression(updateReqVO.getCronExpression()); - // 校验存在 - JobDO job = validateJobExists(updateReqVO.getId()); - // 只有开启状态,才可以修改.原因是,如果出暂停状态,修改 Quartz Job 时,会导致任务又开始执行 - if (!job.getStatus().equals(JobStatusEnum.NORMAL.getStatus())) { - throw exception(JOB_UPDATE_ONLY_NORMAL_STATUS); - } - // 更新 - JobDO updateObj = JobConvert.INSTANCE.convert(updateReqVO); - fillJobMonitorTimeoutEmpty(updateObj); - jobMapper.updateById(updateObj); - - // 更新 Job 到 Quartz 中 - schedulerManager.updateJob(job.getHandlerName(), updateReqVO.getHandlerParam(), updateReqVO.getCronExpression(), - updateReqVO.getRetryCount(), updateReqVO.getRetryInterval()); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void updateJobStatus(Long id, Integer status) throws SchedulerException { - // 校验 status - if (!containsAny(status, JobStatusEnum.NORMAL.getStatus(), JobStatusEnum.STOP.getStatus())) { - throw exception(JOB_CHANGE_STATUS_INVALID); - } - // 校验存在 - JobDO job = validateJobExists(id); - // 校验是否已经为当前状态 - if (job.getStatus().equals(status)) { - throw exception(JOB_CHANGE_STATUS_EQUALS); - } - // 更新 Job 状态 - JobDO updateObj = JobDO.builder().id(id).status(status).build(); - jobMapper.updateById(updateObj); - - // 更新状态 Job 到 Quartz 中 - if (JobStatusEnum.NORMAL.getStatus().equals(status)) { // 开启 - schedulerManager.resumeJob(job.getHandlerName()); - } else { // 暂停 - schedulerManager.pauseJob(job.getHandlerName()); - } - } - - @Override - public void triggerJob(Long id) throws SchedulerException { - // 校验存在 - JobDO job = validateJobExists(id); - - // 触发 Quartz 中的 Job - schedulerManager.triggerJob(job.getId(), job.getHandlerName(), job.getHandlerParam()); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteJob(Long id) throws SchedulerException { - // 校验存在 - JobDO job = validateJobExists(id); - // 更新 - jobMapper.deleteById(id); - - // 删除 Job 到 Quartz 中 - schedulerManager.deleteJob(job.getHandlerName()); - } - - private JobDO validateJobExists(Long id) { - JobDO job = jobMapper.selectById(id); - if (job == null) { - throw exception(JOB_NOT_EXISTS); - } - return job; - } - - private void validateCronExpression(String cronExpression) { - if (!CronUtils.isValid(cronExpression)) { - throw exception(JOB_CRON_EXPRESSION_VALID); - } - } - - @Override - public JobDO getJob(Long id) { - return jobMapper.selectById(id); - } - - @Override - public List getJobList(Collection ids) { - return jobMapper.selectBatchIds(ids); - } - - @Override - public PageResult getJobPage(JobPageReqVO pageReqVO) { - return jobMapper.selectPage(pageReqVO); - } - - @Override - public List getJobList(JobExportReqVO exportReqVO) { - return jobMapper.selectList(exportReqVO); - } - - private static void fillJobMonitorTimeoutEmpty(JobDO job) { - if (job.getMonitorTimeout() == null) { - job.setMonitorTimeout(0); - } - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/logger/ApiErrorLogService.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/logger/ApiErrorLogService.java deleted file mode 100644 index 6324cd7..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/logger/ApiErrorLogService.java +++ /dev/null @@ -1,50 +0,0 @@ -package co.yixiang.yshop.module.infra.service.logger; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.api.logger.dto.ApiErrorLogCreateReqDTO; -import co.yixiang.yshop.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogPageReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.logger.ApiErrorLogDO; - -import java.util.List; - -/** - * API 错误日志 Service 接口 - * - * @author yshop - */ -public interface ApiErrorLogService { - - /** - * 创建 API 错误日志 - * - * @param createReqDTO API 错误日志 - */ - void createApiErrorLog(ApiErrorLogCreateReqDTO createReqDTO); - - /** - * 获得 API 错误日志分页 - * - * @param pageReqVO 分页查询 - * @return API 错误日志分页 - */ - PageResult getApiErrorLogPage(ApiErrorLogPageReqVO pageReqVO); - - /** - * 获得 API 错误日志列表, 用于 Excel 导出 - * - * @param exportReqVO 查询条件 - * @return API 错误日志分页 - */ - List getApiErrorLogList(ApiErrorLogExportReqVO exportReqVO); - - /** - * 更新 API 错误日志已处理 - * - * @param id API 日志编号 - * @param processStatus 处理结果 - * @param processUserId 处理人 - */ - void updateApiErrorLogProcess(Long id, Integer processStatus, Long processUserId); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/logger/ApiErrorLogServiceImpl.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/logger/ApiErrorLogServiceImpl.java deleted file mode 100644 index 1685b48..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/logger/ApiErrorLogServiceImpl.java +++ /dev/null @@ -1,65 +0,0 @@ -package co.yixiang.yshop.module.infra.service.logger; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.api.logger.dto.ApiErrorLogCreateReqDTO; -import co.yixiang.yshop.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.logger.vo.apierrorlog.ApiErrorLogPageReqVO; -import co.yixiang.yshop.module.infra.convert.logger.ApiErrorLogConvert; -import co.yixiang.yshop.module.infra.dal.dataobject.logger.ApiErrorLogDO; -import co.yixiang.yshop.module.infra.dal.mysql.logger.ApiErrorLogMapper; -import co.yixiang.yshop.module.infra.enums.logger.ApiErrorLogProcessStatusEnum; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import javax.annotation.Resource; -import java.time.LocalDateTime; -import java.util.List; - -import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; -import static co.yixiang.yshop.module.infra.enums.ErrorCodeConstants.API_ERROR_LOG_NOT_FOUND; -import static co.yixiang.yshop.module.infra.enums.ErrorCodeConstants.API_ERROR_LOG_PROCESSED; - -/** - * API 错误日志 Service 实现类 - * - * @author yshop - */ -@Service -@Validated -public class ApiErrorLogServiceImpl implements ApiErrorLogService { - - @Resource - private ApiErrorLogMapper apiErrorLogMapper; - - @Override - public void createApiErrorLog(ApiErrorLogCreateReqDTO createDTO) { - ApiErrorLogDO apiErrorLog = ApiErrorLogConvert.INSTANCE.convert(createDTO) - .setProcessStatus(ApiErrorLogProcessStatusEnum.INIT.getStatus()); - apiErrorLogMapper.insert(apiErrorLog); - } - - @Override - public PageResult getApiErrorLogPage(ApiErrorLogPageReqVO pageReqVO) { - return apiErrorLogMapper.selectPage(pageReqVO); - } - - @Override - public List getApiErrorLogList(ApiErrorLogExportReqVO exportReqVO) { - return apiErrorLogMapper.selectList(exportReqVO); - } - - @Override - public void updateApiErrorLogProcess(Long id, Integer processStatus, Long processUserId) { - ApiErrorLogDO errorLog = apiErrorLogMapper.selectById(id); - if (errorLog == null) { - throw exception(API_ERROR_LOG_NOT_FOUND); - } - if (!ApiErrorLogProcessStatusEnum.INIT.getStatus().equals(errorLog.getProcessStatus())) { - throw exception(API_ERROR_LOG_PROCESSED); - } - // 标记处理 - apiErrorLogMapper.updateById(ApiErrorLogDO.builder().id(id).processStatus(processStatus) - .processUserId(processUserId).processTime(LocalDateTime.now()).build()); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/test/TestDemoService.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/test/TestDemoService.java deleted file mode 100644 index c3da204..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/test/TestDemoService.java +++ /dev/null @@ -1,75 +0,0 @@ -package co.yixiang.yshop.module.infra.service.test; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.TestDemoCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.TestDemoExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.TestDemoPageReqVO; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.TestDemoUpdateReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.test.TestDemoDO; - -import javax.validation.Valid; -import java.util.Collection; -import java.util.List; - -/** - * 字典类型 Service 接口 - * - * @author yshop - */ -public interface TestDemoService { - - /** - * 创建字典类型 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createTestDemo(@Valid TestDemoCreateReqVO createReqVO); - - /** - * 更新字典类型 - * - * @param updateReqVO 更新信息 - */ - void updateTestDemo(@Valid TestDemoUpdateReqVO updateReqVO); - - /** - * 删除字典类型 - * - * @param id 编号 - */ - void deleteTestDemo(Long id); - - /** - * 获得字典类型 - * - * @param id 编号 - * @return 字典类型 - */ - TestDemoDO getTestDemo(Long id); - - /** - * 获得字典类型列表 - * - * @param ids 编号 - * @return 字典类型列表 - */ - List getTestDemoList(Collection ids); - - /** - * 获得字典类型分页 - * - * @param pageReqVO 分页查询 - * @return 字典类型分页 - */ - PageResult getTestDemoPage(TestDemoPageReqVO pageReqVO); - - /** - * 获得字典类型列表, 用于 Excel 导出 - * - * @param exportReqVO 查询条件 - * @return 字典类型列表 - */ - List getTestDemoList(TestDemoExportReqVO exportReqVO); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/test/TestDemoServiceImpl.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/test/TestDemoServiceImpl.java deleted file mode 100644 index 901b0b9..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/service/test/TestDemoServiceImpl.java +++ /dev/null @@ -1,91 +0,0 @@ -package co.yixiang.yshop.module.infra.service.test; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.TestDemoCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.TestDemoExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.TestDemoPageReqVO; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.TestDemoUpdateReqVO; -import co.yixiang.yshop.module.infra.convert.test.TestDemoConvert; -import co.yixiang.yshop.module.infra.dal.dataobject.test.TestDemoDO; -import co.yixiang.yshop.module.infra.dal.mysql.test.TestDemoMapper; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import javax.annotation.Resource; -import java.util.Collection; -import java.util.List; - -import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; -import static co.yixiang.yshop.module.infra.enums.ErrorCodeConstants.TEST_DEMO_NOT_EXISTS; - -/** - * 字典类型 Service 实现类 - * - * @author yshop - */ -@Service -@Validated -public class TestDemoServiceImpl implements TestDemoService { - - @Resource - private TestDemoMapper testDemoMapper; - - @Override - public Long createTestDemo(TestDemoCreateReqVO createReqVO) { - // 插入 - TestDemoDO testDemo = TestDemoConvert.INSTANCE.convert(createReqVO); - testDemoMapper.insert(testDemo); - // 返回 - return testDemo.getId(); - } - - @Override - @CacheEvict(value = "test", key = "#updateReqVO.id") - public void updateTestDemo(TestDemoUpdateReqVO updateReqVO) { - // 校验存在 - validateTestDemoExists(updateReqVO.getId()); - // 更新 - TestDemoDO updateObj = TestDemoConvert.INSTANCE.convert(updateReqVO); - testDemoMapper.updateById(updateObj); - } - - @Override - @CacheEvict(value = "test", key = "#id") - public void deleteTestDemo(Long id) { - // 校验存在 - validateTestDemoExists(id); - // 删除 - testDemoMapper.deleteById(id); - } - - private void validateTestDemoExists(Long id) { - if (testDemoMapper.selectById(id) == null) { - throw exception(TEST_DEMO_NOT_EXISTS); - } - } - - @Override - @Cacheable(cacheNames = "test", key = "#id") - public TestDemoDO getTestDemo(Long id) { - return testDemoMapper.selectById(id); - } - - @Override - public List getTestDemoList(Collection ids) { - return testDemoMapper.selectBatchIds(ids); - } - - @Override - public PageResult getTestDemoPage(TestDemoPageReqVO pageReqVO) { - testDemoMapper.selectList2(); - return testDemoMapper.selectPage(pageReqVO); - } - - @Override - public List getTestDemoList(TestDemoExportReqVO exportReqVO) { - return testDemoMapper.selectList(exportReqVO); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/websocket/WebSocketConfig.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/websocket/WebSocketConfig.java deleted file mode 100644 index 11b3b34..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/websocket/WebSocketConfig.java +++ /dev/null @@ -1,16 +0,0 @@ -package co.yixiang.yshop.module.infra.websocket; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.socket.server.standard.ServerEndpointExporter; - -/** - * websocket 配置 - */ -@Configuration -public class WebSocketConfig { - @Bean - public ServerEndpointExporter serverEndpointExporter() { - return new ServerEndpointExporter(); - } -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/websocket/WebSocketServer.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/websocket/WebSocketServer.java deleted file mode 100644 index 7918337..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/websocket/WebSocketServer.java +++ /dev/null @@ -1,86 +0,0 @@ -package co.yixiang.yshop.module.infra.websocket; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import javax.websocket.*; -import javax.websocket.server.ServerEndpoint; -import java.util.concurrent.Semaphore; - -/** - * websocket 消息处理 - */ -@Component -@ServerEndpoint("/websocket/message") -@Slf4j -public class WebSocketServer { - - /** - * 默认最多允许同时在线用户数100 - */ - public static int socketMaxOnlineCount = 100; - - private static final Semaphore SOCKET_SEMAPHORE = new Semaphore(socketMaxOnlineCount); - - /** - * 连接建立成功调用的方法 - */ - @OnOpen - public void onOpen(Session session) throws Exception { - // 尝试获取信号量 - boolean semaphoreFlag = SemaphoreUtils.tryAcquire(SOCKET_SEMAPHORE); - if (!semaphoreFlag) { - // 未获取到信号量 - log.error("当前在线人数超过限制数:{}", socketMaxOnlineCount); - WebSocketUsers.sendMessage(session, "当前在线人数超过限制数:" + socketMaxOnlineCount); - session.close(); - } else { - String userId = WebSocketUsers.getParam("userId", session); - if (userId != null) { - // 添加用户 - WebSocketUsers.addSession(userId, session); - log.info("用户【userId={}】建立连接,当前连接用户总数:{}", userId, WebSocketUsers.getUsers().size()); - WebSocketUsers.sendMessage(session, "接收内容:连接成功"); - } else { - WebSocketUsers.sendMessage(session, "接收内容:连接失败"); - } - } - } - - /** - * 连接关闭时处理 - */ - @OnClose - public void onClose(Session session) { - log.info("用户【sessionId={}】关闭连接!", session.getId()); - // 移除用户 - WebSocketUsers.removeSession(session); - // 获取到信号量则需释放 - SemaphoreUtils.release(SOCKET_SEMAPHORE); - } - - /** - * 抛出异常时处理 - */ - @OnError - public void onError(Session session, Throwable exception) throws Exception { - if (session.isOpen()) { - // 关闭连接 - session.close(); - } - String sessionId = session.getId(); - log.info("用户【sessionId={}】连接异常!异常信息:{}", sessionId, exception); - // 移出用户 - WebSocketUsers.removeSession(session); - // 获取到信号量则需释放 - SemaphoreUtils.release(SOCKET_SEMAPHORE); - } - - /** - * 收到客户端消息时调用的方法 - */ - @OnMessage - public void onMessage(Session session, String message) { - WebSocketUsers.sendMessage(session, "接收内容:" + message); - } -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/websocket/WebSocketUsers.java b/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/websocket/WebSocketUsers.java deleted file mode 100644 index e7dcd52..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/java/co/yixiang/yshop/module/infra/websocket/WebSocketUsers.java +++ /dev/null @@ -1,178 +0,0 @@ -package co.yixiang.yshop.module.infra.websocket; - -import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.StrUtil; -import lombok.extern.slf4j.Slf4j; -import org.bouncycastle.util.Strings; - -import javax.validation.constraints.NotNull; -import javax.websocket.Session; -import java.io.IOException; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -/** - * websocket 客户端用户 - */ -@Slf4j -public class WebSocketUsers { - - /** - * 用户集 - * TODO 需要登录用户的session? - */ - private static final Map SESSION_MAP = new ConcurrentHashMap<>(); - - /** - * 存储用户 - * - * @param userId 唯一键 - * @param session 用户信息 - */ - public static void addSession(String userId, Session session) { - SESSION_MAP.put(userId, session); - } - - /** - * 移除用户 - * - * @param session 用户信息 - * @return 移除结果 - */ - public static boolean removeSession(Session session) { - String key = null; - boolean flag = SESSION_MAP.containsValue(session); - if (flag) { - Set> entries = SESSION_MAP.entrySet(); - for (Map.Entry entry : entries) { - Session value = entry.getValue(); - if (value.equals(session)) { - key = entry.getKey(); - break; - } - } - } else { - return true; - } - return removeSession(key); - } - - /** - * 移出用户 - * - * @param userId 用户id - */ - public static boolean removeSession(String userId) { - log.info("用户【userId={}】退出", userId); - Session remove = SESSION_MAP.remove(userId); - if (remove != null) { - boolean containsValue = SESSION_MAP.containsValue(remove); - log.info("用户【userId={}】退出{},当前连接用户总数:{}", userId, containsValue ? "失败" : "成功", SESSION_MAP.size()); - return containsValue; - } else { - return true; - } - } - - /** - * 获取在线用户列表 - * - * @return 返回用户集合 - */ - public static Map getUsers() { - return SESSION_MAP; - } - - /** - * 向所有在线人发送消息 - * - * @param message 消息内容 - */ - public static void sendMessageToAll(String message) { - SESSION_MAP.forEach((userId, session) -> { - if (session.isOpen()) { - sendMessage(session, message); - } - }); - } - - /** - * 异步发送文本消息 - * - * @param session 用户session - * @param message 消息内容 - */ - public static void sendMessageAsync(Session session, String message) { - if (session.isOpen()) { - // TODO 需要加synchronized锁(synchronized(session))?单个session创建线程? - session.getAsyncRemote().sendText(message); - } else { - log.warn("用户【session={}】不在线", session.getId()); - } - } - - /** - * 同步发送文本消息 - * - * @param session 用户session - * @param message 消息内容 - */ - public static void sendMessage(Session session, String message) { - try { - if (session.isOpen()) { - // TODO 需要加synchronized锁(synchronized(session))?单个session创建线程? - session.getBasicRemote().sendText(message); - } else { - log.warn("用户【session={}】不在线", session.getId()); - } - } catch (IOException e) { - log.error("发送消息异常", e); - } - - } - - /** - * 根据用户id发送消息 - * - * @param userId 用户id - * @param message 消息内容 - */ - public static void sendMessage(String userId, String message) { - Session session = SESSION_MAP.get(userId); - //判断是否存在该用户的session,并且是否在线 - if (session == null || !session.isOpen()) { - return; - } - sendMessage(session, message); - } - - - /** - * 获取session中的指定参数值 - * - * @param key 参数key - * @param session 用户session - */ - public static String getParam(@NotNull String key, Session session) { - //TODO 目前只针对获取一个key的值,后期根据情况拓展多个 或者直接在onClose onOpen上获取参数? - String value = null; - Map> parameters = session.getRequestParameterMap(); - if (MapUtil.isNotEmpty(parameters)) { - value = parameters.get(key).get(0); - } else { - String queryString = session.getQueryString(); - if (!StrUtil.isEmpty(queryString)) { - String[] params = Strings.split(queryString, '&'); - for (String paramPair : params) { - String[] nameValues = Strings.split(paramPair, '='); - if (key.equals(nameValues[0])) { - value = nameValues[1]; - } - } - } - } - return value; - } -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/controller.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/controller.vm deleted file mode 100644 index a8c1f62..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/controller.vm +++ /dev/null @@ -1,111 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}; - -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -#if ($sceneEnum.scene == 1)import org.springframework.security.access.prepost.PreAuthorize;#end - -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import ${PageResultClassName}; -import ${CommonResultClassName}; -import static ${CommonResultClassName}.success; - -import ${ExcelUtilsClassName}; - -import ${OperateLogClassName}; -import static ${OperateTypeEnumClassName}.*; - -import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; -import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; -import ${basePackage}.module.${table.moduleName}.convert.${table.businessName}.${table.className}Convert; -import ${basePackage}.module.${table.moduleName}.service.${table.businessName}.${table.className}Service; - -@Tag(name = "${sceneEnum.name} - ${table.classComment}") -@RestController -##二级的 businessName 暂时不算在 HTTP 路径上,可以根据需要写 -@RequestMapping("/${table.moduleName}/${simpleClassName_strikeCase}") -@Validated -public class ${sceneEnum.prefixClass}${table.className}Controller { - - @Resource - private ${table.className}Service ${classNameVar}Service; - - @PostMapping("/create") - @Operation(summary = "创建${table.classComment}") -#if ($sceneEnum.scene == 1) @PreAuthorize("@ss.hasPermission('${permissionPrefix}:create')")#end - - public CommonResult<${primaryColumn.javaType}> create${simpleClassName}(@Valid @RequestBody ${sceneEnum.prefixClass}${table.className}CreateReqVO createReqVO) { - return success(${classNameVar}Service.create${simpleClassName}(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新${table.classComment}") -#if ($sceneEnum.scene == 1) @PreAuthorize("@ss.hasPermission('${permissionPrefix}:update')")#end - - public CommonResult update${simpleClassName}(@Valid @RequestBody ${sceneEnum.prefixClass}${table.className}UpdateReqVO updateReqVO) { - ${classNameVar}Service.update${simpleClassName}(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除${table.classComment}") - @Parameter(name = "id", description = "编号", required = true) -#if ($sceneEnum.scene == 1) @PreAuthorize("@ss.hasPermission('${permissionPrefix}:delete')")#end - - public CommonResult delete${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) { - ${classNameVar}Service.delete${simpleClassName}(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得${table.classComment}") - @Parameter(name = "id", description = "编号", required = true, example = "1024") -#if ($sceneEnum.scene == 1) @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")#end - - public CommonResult<${sceneEnum.prefixClass}${table.className}RespVO> get${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) { - ${table.className}DO ${classNameVar} = ${classNameVar}Service.get${simpleClassName}(id); - return success(${table.className}Convert.INSTANCE.convert(${classNameVar})); - } - - @GetMapping("/list") - @Operation(summary = "获得${table.classComment}列表") - @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") -#if ($sceneEnum.scene == 1) @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")#end - - public CommonResult> get${simpleClassName}List(@RequestParam("ids") Collection<${primaryColumn.javaType}> ids) { - List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(ids); - return success(${table.className}Convert.INSTANCE.convertList(list)); - } - - @GetMapping("/page") - @Operation(summary = "获得${table.classComment}分页") -#if ($sceneEnum.scene == 1) @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")#end - - public CommonResult> get${simpleClassName}Page(@Valid ${sceneEnum.prefixClass}${table.className}PageReqVO pageVO) { - PageResult<${table.className}DO> pageResult = ${classNameVar}Service.get${simpleClassName}Page(pageVO); - return success(${table.className}Convert.INSTANCE.convertPage(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出${table.classComment} Excel") -#if ($sceneEnum.scene == 1) @PreAuthorize("@ss.hasPermission('${permissionPrefix}:export')")#end - - @OperateLog(type = EXPORT) - public void export${simpleClassName}Excel(@Valid ${sceneEnum.prefixClass}${table.className}ExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { - List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(exportReqVO); - // 导出 Excel - List<${sceneEnum.prefixClass}${table.className}ExcelVO> datas = ${table.className}Convert.INSTANCE.convertList02(list); - ExcelUtils.write(response, "${table.classComment}.xls", "数据", ${sceneEnum.prefixClass}${table.className}ExcelVO.class, datas); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/_column.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/_column.vm deleted file mode 100644 index 89a8e34..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/_column.vm +++ /dev/null @@ -1,13 +0,0 @@ -## 提供给 baseVO、createVO、updateVO 生成字段 - @Schema(description = "${column.columnComment}"#if (!${column.nullable}), required = true#end#if ("$!column.example" != ""), example = "${column.example}"#end) -#if (!${column.nullable})## 判断 @NotEmpty 和 @NotNull 注解 -#if (${field.fieldType} == 'String') - @NotEmpty(message = "${column.columnComment}不能为空") -#else - @NotNull(message = "${column.columnComment}不能为空") -#end -#end -#if (${column.javaType} == "LocalDateTime")## 时间类型 - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) -#end - private ${column.javaType} ${column.javaField}; diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/baseVO.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/baseVO.vm deleted file mode 100644 index e2c1f0b..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/baseVO.vm +++ /dev/null @@ -1,39 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -#foreach ($column in $columns) -#if (${column.javaType} == "BigDecimal") -import java.math.BigDecimal; -#end -#if (${column.javaType} == "LocalDateTime") -import java.time.LocalDateTime; -#end -#end -import javax.validation.constraints.*; -## 处理 Date 字段的引入 -#foreach ($column in $columns) -#if (${column.createOperation} && ${column.updateOperation} && ${column.listOperationResult} - && ${column.javaType} == "LocalDateTime")## 时间类型 -import org.springframework.format.annotation.DateTimeFormat; - -import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; -#break -#end -#end - -/** -* ${table.classComment} Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class ${sceneEnum.prefixClass}${table.className}BaseVO { - -#foreach ($column in $columns) -#if (${column.createOperation} && ${column.updateOperation} && ${column.listOperationResult})##通用操作 - #parse("codegen/java/controller/vo/_column.vm") - -#end -#end -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/createReqVO.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/createReqVO.vm deleted file mode 100644 index d4f6f8e..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/createReqVO.vm +++ /dev/null @@ -1,30 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import javax.validation.constraints.*; -## 处理 Date 字段的引入 -#foreach ($column in $columns) -#if (${column.createOperation} && (!${column.updateOperation} || !${column.listOperationResult}) - && ${column.javaType} == "LocalDateTime")## 时间类型 -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; -#break -#end -#end - -@Schema(description = "${sceneEnum.name} - ${table.classComment}创建 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ${sceneEnum.prefixClass}${table.className}CreateReqVO extends ${sceneEnum.prefixClass}${table.className}BaseVO { - -#foreach ($column in $columns) -#if (${column.createOperation} && (!${column.updateOperation} || !${column.listOperationResult}))##不是通用字段 - #parse("codegen/java/controller/vo/_column.vm") - -#end -#end -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/excelVO.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/excelVO.vm deleted file mode 100644 index 15c6660..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/excelVO.vm +++ /dev/null @@ -1,45 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -#foreach ($column in $columns) -#if (${column.javaType} == "BigDecimal") -import java.math.BigDecimal; -#end -#if (${column.javaType} == "LocalDateTime") -import java.time.LocalDateTime; -#end -#end - -import com.alibaba.excel.annotation.ExcelProperty; -#foreach ($column in $columns) -#if ("$!column.dictType" != "")## 有设置数据字典 -import ${DictFormatClassName}; -import ${DictConvertClassName}; - -#break -#end -#end - -/** - * ${table.classComment} Excel VO - * - * @author ${table.author} - */ -@Data -public class ${sceneEnum.prefixClass}${table.className}ExcelVO { - -#foreach ($column in $columns) - #if (${column.listOperationResult})##返回字段 - #if ("$!column.dictType" != "")##处理枚举值 - @ExcelProperty(value = "${column.columnComment}", converter = DictConvert.class) - @DictFormat("${column.dictType}") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 - #else - @ExcelProperty("${column.columnComment}") - #end - private ${column.javaType} ${column.javaField}; - - #end -#end -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/exportReqVO.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/exportReqVO.vm deleted file mode 100644 index d3ef4aa..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/exportReqVO.vm +++ /dev/null @@ -1,39 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import ${PageParamClassName}; -## 处理 Date 字段的引入 -#foreach ($column in $columns) -#if (${column.listOperation} && ${column.javaType} == "LocalDateTime")## 时间类型 -import java.time.LocalDateTime; -import org.springframework.format.annotation.DateTimeFormat; - -import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; -#break -#end -#end -## 字段模板 -#macro(columnTpl $prefix $prefixStr) - @Schema(description = "${prefixStr}${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) - private ${column.javaType}#if ("$!prefix" != "") ${prefix}${JavaField}#else ${column.javaField}#end; -#end - -@Schema(description = "${sceneEnum.name} - ${table.classComment} Excel 导出 Request VO,参数和 ${table.className}PageReqVO 是一致的") -@Data -public class ${sceneEnum.prefixClass}${table.className}ExportReqVO { - -#foreach ($column in $columns) -#if (${column.listOperation})##查询操作 -#if (${column.listOperationCondition} == "BETWEEN")## 情况一,Between 的时候 - @Schema(description = "${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private ${column.javaType}[] ${column.javaField}; -#else##情况二,非 Between 的时间 - #columnTpl('', '') -#end - -#end -#end -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/pageReqVO.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/pageReqVO.vm deleted file mode 100644 index 6f9868d..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/pageReqVO.vm +++ /dev/null @@ -1,41 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import ${PageParamClassName}; -## 处理 Date 字段的引入 -#foreach ($column in $columns) -#if (${column.listOperation} && ${column.javaType} == "LocalDateTime")## 时间类型 -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; -#break -#end -#end -## 字段模板 -#macro(columnTpl $prefix $prefixStr) - @Schema(description = "${prefixStr}${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) - private ${column.javaType}#if ("$!prefix" != "") ${prefix}${JavaField}#else ${column.javaField}#end; -#end - -@Schema(description = "${sceneEnum.name} - ${table.classComment}分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ${sceneEnum.prefixClass}${table.className}PageReqVO extends PageParam { - -#foreach ($column in $columns) -#if (${column.listOperation})##查询操作 -#if (${column.listOperationCondition} == "BETWEEN")## 情况一,Between 的时候 - @Schema(description = "${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private ${column.javaType}[] ${column.javaField}; -#else##情况二,非 Between 的时间 - #columnTpl('', '') -#end - -#end -#end -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/respVO.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/respVO.vm deleted file mode 100644 index 2288cee..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/respVO.vm +++ /dev/null @@ -1,25 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -#foreach ($column in $columns) -#if (${column.javaType} == "LocalDateTime") -import java.time.LocalDateTime; -#break -#end -#end - -@Schema(description = "${sceneEnum.name} - ${table.classComment} Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ${sceneEnum.prefixClass}${table.className}RespVO extends ${sceneEnum.prefixClass}${table.className}BaseVO { - -#foreach ($column in $columns) -#if (${column.listOperationResult} && (!${column.createOperation} || !${column.updateOperation}))##不是通用字段 - @Schema(description = "${column.columnComment}"#if (!${column.nullable}), required = true#end#if ("$!column.example" != ""), example = "${column.example}"#end) - private ${column.javaType} ${column.javaField}; - -#end -#end -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/updateReqVO.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/updateReqVO.vm deleted file mode 100644 index 48d7432..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/controller/vo/updateReqVO.vm +++ /dev/null @@ -1,30 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; -## 处理 Date 字段的引入 -#foreach ($column in $columns) -#if (${column.updateOperation} && (!${column.createOperation} || !${column.listOperationResult}) - && ${column.javaType} == "LocalDateTime")## 时间类型 -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; -#break -#end -#end - -@Schema(description = "${sceneEnum.name} - ${table.classComment}更新 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ${sceneEnum.prefixClass}${table.className}UpdateReqVO extends ${sceneEnum.prefixClass}${table.className}BaseVO { - -#foreach ($column in $columns) -#if (${column.updateOperation} && (!${column.createOperation} || !${column.listOperationResult}))##不是通用字段 - #parse("codegen/java/controller/vo/_column.vm") - -#end -#end -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/convert/convert.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/convert/convert.vm deleted file mode 100644 index 6176e0f..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/convert/convert.vm +++ /dev/null @@ -1,34 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.convert.${table.businessName}; - -import java.util.*; - -import ${PageResultClassName}; - -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; -import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; -import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; - -/** - * ${table.classComment} Convert - * - * @author ${table.author} - */ -@Mapper -public interface ${table.className}Convert { - - ${table.className}Convert INSTANCE = Mappers.getMapper(${table.className}Convert.class); - - ${table.className}DO convert(${sceneEnum.prefixClass}${table.className}CreateReqVO bean); - - ${table.className}DO convert(${sceneEnum.prefixClass}${table.className}UpdateReqVO bean); - - ${sceneEnum.prefixClass}${table.className}RespVO convert(${table.className}DO bean); - - List<${sceneEnum.prefixClass}${table.className}RespVO> convertList(List<${table.className}DO> list); - - PageResult<${sceneEnum.prefixClass}${table.className}RespVO> convertPage(PageResult<${table.className}DO> page); - - List<${sceneEnum.prefixClass}${table.className}ExcelVO> convertList02(List<${table.className}DO> list); - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/dal/do.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/dal/do.vm deleted file mode 100644 index d551d4b..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/dal/do.vm +++ /dev/null @@ -1,47 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}; - -import lombok.*; -import java.util.*; -#foreach ($column in $columns) -#if (${column.javaType} == "BigDecimal") -import java.math.BigDecimal; -#end -#if (${column.javaType} == "LocalDateTime") -import java.time.LocalDateTime; -#end -#end -import com.baomidou.mybatisplus.annotation.*; -import ${BaseDOClassName}; - -/** - * ${table.classComment} DO - * - * @author ${table.author} - */ -@TableName("${table.tableName.toLowerCase()}") -@KeySequence("${table.tableName.toLowerCase()}_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ${table.className}DO extends BaseDO { - -#foreach ($column in $columns) -#if (!${baseDOFields.contains(${column.javaField})})##排除 BaseDO 的字段 - /** - * ${column.columnComment} - #if ("$!column.dictType" != "")##处理枚举值 - * - * 枚举 {@link TODO ${column.dictType} 对应的类} - #end - */ - #if (${column.primaryKey})##处理主键 - @TableId#if (${column.javaType} == 'String')(type = IdType.INPUT)#end - #end - private ${column.javaType} ${column.javaField}; -#end -#end - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/dal/mapper.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/dal/mapper.vm deleted file mode 100644 index 615ae33..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/dal/mapper.vm +++ /dev/null @@ -1,66 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.dal.mysql.${table.businessName}; - -import java.util.*; - -import ${PageResultClassName}; -import ${QueryWrapperClassName}; -import ${BaseMapperClassName}; -import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; -import org.apache.ibatis.annotations.Mapper; -import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; - -## 字段模板 -#macro(listCondition) -#foreach ($column in $columns) -#if (${column.listOperation}) -#set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 -#if (${column.listOperationCondition} == "=")##情况一,= 的时候 - .eqIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "!=")##情况二,!= 的时候 - .neIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == ">")##情况三,> 的时候 - .gtIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == ">=")##情况四,>= 的时候 - .geIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "<")##情况五,< 的时候 - .ltIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "<=")##情况五,<= 的时候 - .leIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "LIKE")##情况七,Like 的时候 - .likeIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "BETWEEN")##情况八,Between 的时候 - .betweenIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#end -#end -#end -/** - * ${table.classComment} Mapper - * - * @author ${table.author} - */ -@Mapper -public interface ${table.className}Mapper extends BaseMapperX<${table.className}DO> { - - default PageResult<${table.className}DO> selectPage(${sceneEnum.prefixClass}${table.className}PageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX<${table.className}DO>() - #listCondition() - .orderByDesc(${table.className}DO::getId));## 大多数情况下,id 倒序 - - } - - default List<${table.className}DO> selectList(${sceneEnum.prefixClass}${table.className}ExportReqVO reqVO) { - return selectList(new LambdaQueryWrapperX<${table.className}DO>() - #listCondition() - .orderByDesc(${table.className}DO::getId));## 大多数情况下,id 倒序 - - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/dal/mapper.xml.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/dal/mapper.xml.vm deleted file mode 100644 index c1544ad..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/dal/mapper.xml.vm +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/enums/errorcode.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/enums/errorcode.vm deleted file mode 100644 index 3ee011a..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/enums/errorcode.vm +++ /dev/null @@ -1,3 +0,0 @@ -// TODO 待办:请将下面的错误码复制到 yshop-module-${table.moduleName}-api 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!! -// ========== ${table.classComment} TODO 补充编号 ========== -ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS = new ErrorCode(TODO 补充编号, "${table.classComment}不存在"); diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/test/serviceTest.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/test/serviceTest.vm deleted file mode 100644 index 4d9a5e5..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/java/test/serviceTest.vm +++ /dev/null @@ -1,165 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.service.${table.businessName}; - -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; - -import javax.annotation.Resource; - -import ${baseFrameworkPackage}.test.core.ut.BaseDbUnitTest; - -import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; -import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; -import ${basePackage}.module.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper; -import ${PageResultClassName}; - -import javax.annotation.Resource; -import org.springframework.context.annotation.Import; -import java.util.*; -import java.time.LocalDateTime; - -import static cn.hutool.core.util.RandomUtil.*; -import static ${basePackage}.module.${table.moduleName}.enums.ErrorCodeConstants.*; -import static ${baseFrameworkPackage}.test.core.util.AssertUtils.*; -import static ${baseFrameworkPackage}.test.core.util.RandomUtils.*; -import static ${LocalDateTimeUtilsClassName}.*; -import static ${ObjectUtilsClassName}.*; -import static ${DateUtilsClassName}.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -## 字段模板 -#macro(getPageCondition $VO) - // mock 数据 - ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class, o -> { // 等会查询到 - #foreach ($column in $columns) - #if (${column.listOperation}) - #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 - o.set$JavaField(null); - #end - #end - }); - ${classNameVar}Mapper.insert(db${simpleClassName}); - #foreach ($column in $columns) - #if (${column.listOperation}) - #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 - // 测试 ${column.javaField} 不匹配 - ${classNameVar}Mapper.insert(cloneIgnoreId(db${simpleClassName}, o -> o.set$JavaField(null))); - #end - #end - // 准备参数 - ${sceneEnum.prefixClass}${table.className}${VO} reqVO = new ${sceneEnum.prefixClass}${table.className}${VO}(); - #foreach ($column in $columns) - #if (${column.listOperation}) - #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 - #if (${column.listOperationCondition} == "BETWEEN")## BETWEEN 的情况 - reqVO.set${JavaField}(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); - #else - reqVO.set$JavaField(null); - #end - #end - #end -#end -/** -* {@link ${table.className}ServiceImpl} 的单元测试类 -* -* @author ${table.author} -*/ -@Import(${table.className}ServiceImpl.class) -public class ${table.className}ServiceImplTest extends BaseDbUnitTest { - - @Resource - private ${table.className}ServiceImpl ${classNameVar}Service; - - @Resource - private ${table.className}Mapper ${classNameVar}Mapper; - - @Test - public void testCreate${simpleClassName}_success() { - // 准备参数 - ${sceneEnum.prefixClass}${table.className}CreateReqVO reqVO = randomPojo(${sceneEnum.prefixClass}${table.className}CreateReqVO.class); - - // 调用 - ${primaryColumn.javaType} ${classNameVar}Id = ${classNameVar}Service.create${simpleClassName}(reqVO); - // 断言 - assertNotNull(${classNameVar}Id); - // 校验记录的属性是否正确 - ${table.className}DO ${classNameVar} = ${classNameVar}Mapper.selectById(${classNameVar}Id); - assertPojoEquals(reqVO, ${classNameVar}); - } - - @Test - public void testUpdate${simpleClassName}_success() { - // mock 数据 - ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class); - ${classNameVar}Mapper.insert(db${simpleClassName});// @Sql: 先插入出一条存在的数据 - // 准备参数 - ${sceneEnum.prefixClass}${table.className}UpdateReqVO reqVO = randomPojo(${sceneEnum.prefixClass}${table.className}UpdateReqVO.class, o -> { - o.setId(db${simpleClassName}.getId()); // 设置更新的 ID - }); - - // 调用 - ${classNameVar}Service.update${simpleClassName}(reqVO); - // 校验是否更新正确 - ${table.className}DO ${classNameVar} = ${classNameVar}Mapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, ${classNameVar}); - } - - @Test - public void testUpdate${simpleClassName}_notExists() { - // 准备参数 - ${sceneEnum.prefixClass}${table.className}UpdateReqVO reqVO = randomPojo(${sceneEnum.prefixClass}${table.className}UpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> ${classNameVar}Service.update${simpleClassName}(reqVO), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS); - } - - @Test - public void testDelete${simpleClassName}_success() { - // mock 数据 - ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class); - ${classNameVar}Mapper.insert(db${simpleClassName});// @Sql: 先插入出一条存在的数据 - // 准备参数 - ${primaryColumn.javaType} id = db${simpleClassName}.getId(); - - // 调用 - ${classNameVar}Service.delete${simpleClassName}(id); - // 校验数据不存在了 - assertNull(${classNameVar}Mapper.selectById(id)); - } - - @Test - public void testDelete${simpleClassName}_notExists() { - // 准备参数 - ${primaryColumn.javaType} id = random${primaryColumn.javaType}Id(); - - // 调用, 并断言异常 - assertServiceException(() -> ${classNameVar}Service.delete${simpleClassName}(id), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS); - } - - @Test - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 - public void testGet${simpleClassName}Page() { - #getPageCondition("PageReqVO") - - // 调用 - PageResult<${table.className}DO> pageResult = ${classNameVar}Service.get${simpleClassName}Page(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(db${simpleClassName}, pageResult.getList().get(0)); - } - - @Test - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 - public void testGet${simpleClassName}List() { - #getPageCondition("ExportReqVO") - - // 调用 - List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(db${simpleClassName}, list.get(0)); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/sql/sql.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/sql/sql.vm deleted file mode 100644 index 902ca74..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/sql/sql.vm +++ /dev/null @@ -1,28 +0,0 @@ --- 菜单 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status, component_name -) -VALUES ( - '${table.classComment}管理', '', 2, 0, ${table.parentMenuId}, - '${simpleClassName_strikeCase}', '', '${table.moduleName}/${classNameVar}/index', 0, '${table.className}' -); - --- 按钮父菜单ID --- 暂时只支持 MySQL。如果你是 Oracle、PostgreSQL、SQLServer 的话,需要手动修改 @parentId 的部分的代码 -SELECT @parentId := LAST_INSERT_ID(); - --- 按钮 SQL -#set ($functionNames = ['查询', '创建', '更新', '删除', '导出']) -#set ($functionOps = ['query', 'create', 'update', 'delete', 'export']) -#foreach ($functionName in $functionNames) -#set ($index = $foreach.count - 1) -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '${table.classComment}${functionName}', '${permissionPrefix}:${functionOps.get($index)}', 3, $foreach.count, @parentId, - '', '', '', 0 -); -#end diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue/api/api.js.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue/api/api.js.vm deleted file mode 100644 index 5e9da32..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue/api/api.js.vm +++ /dev/null @@ -1,55 +0,0 @@ -import request from '@/utils/request' -#set ($baseURL = "/${table.moduleName}/${simpleClassName_strikeCase}") - -// 创建${table.classComment} -export function create${simpleClassName}(data) { - return request({ - url: '${baseURL}/create', - method: 'post', - data: data - }) -} - -// 更新${table.classComment} -export function update${simpleClassName}(data) { - return request({ - url: '${baseURL}/update', - method: 'put', - data: data - }) -} - -// 删除${table.classComment} -export function delete${simpleClassName}(id) { - return request({ - url: '${baseURL}/delete?id=' + id, - method: 'delete' - }) -} - -// 获得${table.classComment} -export function get${simpleClassName}(id) { - return request({ - url: '${baseURL}/get?id=' + id, - method: 'get' - }) -} - -// 获得${table.classComment}分页 -export function get${simpleClassName}Page(query) { - return request({ - url: '${baseURL}/page', - method: 'get', - params: query - }) -} - -// 导出${table.classComment} Excel -export function export${simpleClassName}Excel(query) { - return request({ - url: '${baseURL}/export-excel', - method: 'get', - params: query, - responseType: 'blob' - }) -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue/views/index.vue.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue/views/index.vue.vm deleted file mode 100644 index 7a6add6..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue/views/index.vue.vm +++ /dev/null @@ -1,369 +0,0 @@ - - - diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3/views/form.vue.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3/views/form.vue.vm deleted file mode 100644 index 6604263..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3/views/form.vue.vm +++ /dev/null @@ -1,234 +0,0 @@ - - diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm deleted file mode 100644 index 58bc69b..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm +++ /dev/null @@ -1,285 +0,0 @@ - - - diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3_schema/views/data.ts.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3_schema/views/data.ts.vm deleted file mode 100644 index 94966ab..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3_schema/views/data.ts.vm +++ /dev/null @@ -1,129 +0,0 @@ -import type { CrudSchema } from '@/hooks/web/useCrudSchemas' -#foreach ($column in $columns) - #if ($column.listOperationResult && $column.htmlType == "datetime") -import { dateFormatter } from '@/utils/formatTime' - #break - #end -#end - -// 表单校验 -export const rules = reactive({ -#foreach ($column in $columns) -#if (($column.createOperation || $column.updateOperation) && !$column.nullable && !${column.primaryKey})## 创建或者更新操作 && 要求非空 && 非主键 -#set($comment=$column.columnComment) - $column.javaField: [required], -#end -#end -}) - -// CrudSchema https://www.yixiang.co/ -const crudSchemas = reactive([ -#foreach($column in $columns) -#if ($column.listOperation || $column.listOperationResult || $column.createOperation || $column.updateOperation) -#set ($dictType = $column.dictType) -#set ($javaField = $column.javaField) -#set ($javaType = $column.javaType) - { - label: '${column.columnComment}', - field: '${column.javaField}', -## ========= 字典部分 ========= - #if ("" != $dictType)## 有数据字典 - dictType: DICT_TYPE.$dictType.toUpperCase(), - #if ($javaType == "Integer" || $javaType == "Long" || $javaType == "Byte" || $javaType == "Short") - dictClass: 'number', - #elseif ($javaType == "String") - dictClass: 'string', - #elseif ($javaType == "Boolean") - dictClass: 'boolean', - #end - #end -## ========= Table 表格部分 ========= - #if (!$column.listOperationResult) - isTable: false, - #else - #if ($column.htmlType == "datetime") - formatter: dateFormatter, - #end - #end -## ========= Search 表格部分 ========= - #if ($column.listOperation) - isSearch: true, - #if ($column.htmlType == "datetime") - search: { - component: 'DatePicker', - componentProps: { - valueFormat: 'YYYY-MM-DD HH:mm:ss', - type: 'daterange', - defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] - } - }, - #end - #end -## ========= Form 表单部分 ========= - #if ((!$column.createOperation && !$column.updateOperation) || $column.primaryKey) - isForm: false, - #else - #if($column.htmlType == "imageUpload")## 图片上传 - form: { - component: 'UploadImg' - }, - #elseif($column.htmlType == "fileUpload")## 文件上传 - form: { - component: 'UploadFile' - }, - #elseif($column.htmlType == "editor")## 文本编辑器 - form: { - component: 'Editor', - componentProps: { - valueHtml: '', - height: 200 - } - }, - #elseif($column.htmlType == "select")## 下拉框 - form: { - component: 'SelectV2' - }, - #elseif($column.htmlType == "checkbox")## 多选框 - form: { - component: 'Checkbox' - }, - #elseif($column.htmlType == "radio")## 单选框 - form: { - component: 'Radio' - }, - #elseif($column.htmlType == "datetime")## 时间框 - form: { - component: 'DatePicker', - componentProps: { - type: 'datetime', - valueFormat: 'x' - } - }, - #elseif($column.htmlType == "textarea")## 文本框 - form: { - component: 'Input', - componentProps: { - type: 'textarea', - rows: 4 - }, - colProps: { - span: 24 - } - }, - #elseif(${javaType.toLowerCase()} == "long" || ${javaType.toLowerCase()} == "integer")## 文本框 - form: { - component: 'InputNumber', - value: 0 - }, - #end - #end - }, -#end -#end - { - label: '操作', - field: 'action', - isForm: false - } -]) -export const { allSchemas } = useCrudSchemas(crudSchemas) diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3_schema/views/form.vue.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3_schema/views/form.vue.vm deleted file mode 100644 index 45b8aa2..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3_schema/views/form.vue.vm +++ /dev/null @@ -1,65 +0,0 @@ - - diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3_vben/views/data.ts.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3_vben/views/data.ts.vm deleted file mode 100644 index cf13015..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3_vben/views/data.ts.vm +++ /dev/null @@ -1,134 +0,0 @@ -import { BasicColumn, FormSchema, useRender } from '@/components/Table' -import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' - -export const columns: BasicColumn[] = [ -#foreach($column in $columns) -#if ($column.listOperationResult) - #set ($dictType=$column.dictType) - #set ($javaField = $column.javaField) - #set ($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - #set ($comment=$column.columnComment) -#if ($column.javaType == "LocalDateTime")## 时间类型 - { - title: '${comment}', - dataIndex: '${javaField}', - width: 180, - customRender: ({ text }) => { - return useRender.renderDate(text) - } - }, -#elseif("" != $column.dictType)## 数据字典 - { - title: '${comment}', - dataIndex: '${javaField}', - width: 180, - customRender: ({ text }) => { - return useRender.renderDict(text, DICT_TYPE.$dictType.toUpperCase()) - } - }, -#else - { - title: '${comment}', - dataIndex: '${javaField}', - width: 160 - }, -#end -#end -#end -] - -export const searchFormSchema: FormSchema[] = [ -#foreach($column in $columns) -#if ($column.listOperation) - #set ($dictType=$column.dictType) - #set ($javaField = $column.javaField) - #set ($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - #set ($comment=$column.columnComment) - { - label: '${comment}', - field: '${javaField}', - #if ($column.htmlType == "input") - component: 'Input', - #elseif ($column.htmlType == "select" || $column.htmlType == "radio") - component: 'Select', - componentProps: { - #if ("" != $dictType)## 设置了 dictType 数据字典的情况 - options: getIntDictOptions(DICT_TYPE.$dictType.toUpperCase()) - #else## 未设置 dictType 数据字典的情况 - options: [] - #end - }, - #elseif($column.htmlType == "datetime") - component: 'RangePicker', - #end - colProps: { span: 8 } - }, -#end -#end -] - -export const formSchema: FormSchema[] = [ - { - label: '编号', - field: 'id', - show: false, - component: 'Input' - }, -#foreach($column in $columns) -#if ($column.createOperation || $column.updateOperation) - #set ($dictType = $column.dictType) - #set ($javaField = $column.javaField) - #set ($AttrName = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - #set ($comment = $column.columnComment) -#if (!$column.primaryKey)## 忽略主键,不用在表单里 - { - label: '${comment}', - field: '${javaField}', - #if (($column.createOperation || $column.updateOperation) && !$column.nullable && !${column.primaryKey})## 创建或者更新操作 && 要求非空 && 非主键 - required: true, - #end - #if ($column.htmlType == "input") - component: 'Input' - #elseif($column.htmlType == "imageUpload")## 图片上传 - component: 'Upload' - #elseif($column.htmlType == "fileUpload")## 文件上传 - component: 'Upload' - #elseif($column.htmlType == "editor")## 文本编辑器 - component: 'InputTextArea' - #elseif($column.htmlType == "select")## 下拉框 - component: 'Select', - componentProps: { - #if ("" != $dictType)## 有数据字典 - options: getIntDictOptions(DICT_TYPE.COMMON_STATUS) - #else##没数据字典 - options:[] - #end - } - #elseif($column.htmlType == "checkbox")## 多选框 - component: 'Checkbox', - componentProps: { - #if ("" != $dictType)## 有数据字典 - options: getIntDictOptions(DICT_TYPE.COMMON_STATUS) - #else##没数据字典 - options:[] - #end - } - #elseif($column.htmlType == "radio")## 单选框 - component: 'Radio', - componentProps: { - #if ("" != $dictType)## 有数据字典 - options: getIntDictOptions(DICT_TYPE.COMMON_STATUS) - #else##没数据字典 - options:[] - #end - } - #elseif($column.htmlType == "datetime")## 时间框 - component: 'DatePicker' - #elseif($column.htmlType == "textarea")## 文本域 - component: 'InputTextArea' - #end - }, -#end -#end -#end -] diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3_vben/views/index.vue.vm b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3_vben/views/index.vue.vm deleted file mode 100644 index 9130ec9..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/codegen/vue3_vben/views/index.vue.vm +++ /dev/null @@ -1,90 +0,0 @@ - - diff --git a/yshop-module-infra/yshop-module-infra-biz/src/main/resources/file/erweima.jpg b/yshop-module-infra/yshop-module-infra-biz/src/main/resources/file/erweima.jpg deleted file mode 100644 index 1447283cdf1b49b51c1204a160e01cb789e957a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18385 zcmb7s2Rzm9+yCL%A+xNq$sv0yBYV$7${yL72_=by>^(#Fv7$0Ev!kp?5wb^FWrg_P zpQHMH%lG#@|3|%E9nLwQao^YbdXMYm@crQ@7>SC4vH}bP0|vtYe_)5BFj*KJ6BGIi zzOcYwY&>jiEG%pSTwEMHLIOg<69gwt5D}A+5D}9SpEyBsiiDJ$f|8Pw@Z@Q#QxsHW z6qFRuK``LpJy_WI*x2|KL??(S{?A{B%`j3t3``76I0h*UlN19^igDNqI}3xsF@Ao* zj=u2laWQZRFtM=V;CVW5C*U2>{rvjEz{bSF!G+@;j=%`v;8_wl33v)+_Urjy|Kg$_ zEYOL&EWqgCnJzFG_?HFa?p@d+?8NuGcTew3GT`ns5n#fwFfbc17@A-w_F=eqSjKR; zC??8VnnQ-OJ&kBTmB9>~jf6qSOyt`gO6|87%2A|djZH9@yYjjWB&Ro!>ROqY1@<|Y zc|P4G(mthFSx+S#-!Mn8dyS3^ETUjdRAj&UIql~S&E5+R@66)&C29)F?Sy-m-fmrFjj`}75A z#U0`pyj^w}Jn#_4-||4(p0Hr(zTObg<@h{(A+|jGdrzzt^sksBg=A19CU2m;|q@V?(-Q-TUlUHCcE>k7!N!Q88=Kd@gvmHAV_*V?R zN)s3OQ!d<})?>Y&3!RfW5R+#OM#n&EN(jqjk3PEK0z7ZcUYu)B7S=2Vo-*QoNoCHn zw@GBdFntXheD%!tA`GJ$<5XH#(337KtVKju9-?hsD(4U;Fr8o=__^`&>jU+xHuPUx z)gHq2tu1#E?ICdG819;K7EXX(_bCpU`;0zj6^>9*kVL8@Z05s-n{0 z5%j%t)VuM_a-GwVRAceS^+OoF%pr_@=(cg-7kl#MVz(AuXj4h}TM+zD7v*5YWUw1@ zcugl%%y3{*?J(R2vfk|@2Y%eU_?uy-#btxv!)J9j8cAhuA=GGOPN}P*tT5q=3#n{* zS|l)0X{JLMwak(dp}5=#{o}@TlJ)l74~H__P1{z|61w{qU&{J% z?lfX7g*|Cfh8cW~y9<{3s{WQ)XGGX-5ek{~>uZz2sO?l>3nSq-^WKlL{%$~b=IpI+b3}vH?rA4U|84`l&A1d141Arr=m8v&nim7z^G_L#>Re*LqX;SlZY5E-z6<=Gjq!T(CYC3 z1z?bY*4?>XxivmIddt~qxxT9M5EgL=3knw(+^-$owB0!^5zRp&v3 zOMEV?+A*vsQ4cBh@!e8rzC_BHw%)w^RTLs^#lc*oKy8*iMJ$Z1y5Lz2j>(DE4c2(C z1sY;HZCRHO)CSxIDEFF@Axe##LN6W{_RQ@Y+*`khZ*3xu6YzjS>!Yv&@|8FBl$$ks zgo5-=I+Y?}bewNN$A);cz*AH4G+8(m0(6x}deZ z44=nrlCxEMavdMr+i2e>r%uztdFmgLCf*~yNE~k>P7S}infXyg0lA6GFx{7c{A3>0 zdQzUK#U?L9lTzVw-V(PZe#yx2S($hOV*!2F1vb%FO>aIK;j`Ll=Uys!$eJdPAJXii z?nRBMd`0gxL13K?+w1<CvsnKCQ)ZGB}`NLRl94D ztUvT$l%qFotTR|7%YHf-nc+8dHO2NjC|5E6a z6*#SyNur8-rPIKohUc4@C1U~YkOgYd9^N;PjBw^q<;BP$e2bi~jofm>l&1g)8U0|mE{Q4mqt~RertE&QOi!2o9(B~{F!a02`znU zM%Fhv-El$K6zpC`4-~CE;!Bdm``@Id1dtX&9(qL@UcYI$Ko-wcMMZ&+Z+3_5|!PQ8QI%Oh7#>n;oaizjrJ(G_ET9ua(s8Z2v-oc z{pewsq1IpP?n|vrTK9_7!eZ|E^>?|x>TX#LYFz2l4(+q)I~L(z)ZVOz`)7>z;=O;o zwUMIF+8E>oejL7iPS46{={XApISL{t%+GSzV#Zxh7) ztoBDKKfm5!gGKeZ2)Zf|%X(Fms&@90$8ub7l;#{++ zGl5-augrriUaXKX1!*5%H`?YDUuK;TX*mwwZq(HUb@*GVsNf0(7A@N}(bjj~Q8X#2 zmueeSKIAZ^q*g23Y+S}Vj{E^JZtAW}Rf&wLK@VSMSW1_Ylf$c%M6C(4@g~93TVUnuX#LAFYJR~59Ig~d7oXzcM6{x~h^X#KbW;?Gz#rnRFGqAO3g^ie6_UIzJ zDV!}p^*V9@RHO~eDK2@ z`>Qy08dCeZzgc<+?7tr)Y!nue<#`hpq&3WTx@z@m`)rK0%zZ_Eo6My4H?(fgITx!R z-=a8zMiqcYb4D_ApPJ>h@R}bMQr^b`~M6~TKSj}8@@ zs_BUqyR*rMJWMNv&YJI^KR$ui6+jSS)hojno+3PJfAuXA2eJPu+QMRu9sm&WfRh4^$3@mkm*J=oraIo z=Kt2&;nF39X`ht9ex4}CWisN(XYJ0<8;bAFUmu&lXnY-_j$&KNtk^Vs&>*vJ+?`Rq zFE~4}%(vD5!Z=Uz!#>`S+_k)saib8>eldNc%pb9f#dy(K@rJyUa}`^xde@xHa|)p; z=uRa75eZ>k=-NyEq7H_>+x%g4K}ua>pu25|HAVBfbh;W6%T?=Y$k}HL#NKe`mV3AC z5FmMsZ9ZE(DF~bS5dYnct;zwZy!Br&82TbhAoiNUY-h??36gyj;z{T3M$d3@k3(4Y zv5u;yko#6h>D|{EaFJf*Uu-FxEzE90_Zx>MgxMidzHPqXA*IWOG~iB45j>c_VViUE zvG9T=-o4}*tS{|Sovp2PXX6yuplTWD;KQ@~To(f|I zoR^kL>G8sbgR87N>P?$GO0&XPPde>Zr5eA^=yr2=0yk3)CI;$=1_yDq6T@MIcgZ_cvl=!*%6# z>7qWOEmQ7u4ZC3zRIgmZ=ae>xP74)zJ{MXtRil#PyQYd@?nXmU+i7I5EN=r8`oxCm zep@nEK_s_TB*2w?l>>i6QewHmoEmtqnDKS}JYP-E$N@C)pcfngkCJq@+wK$_UqKb+ zDTBA-vv~Q^h!{# zjb)X~Z@;tg`o(n?)%{R&HEX4%fQrh{;BA|BGD_iLQZwl89Z^lJD=`3av^M3bM=F@mdIJbt*}Jv?UJBIl_rUjQhAM22Gr zyKHppGf)baiCda)%1!EeFPY&J;ldRu%w|L$B4+Bs*2VZ^JD3@6Yk*5v>XMw)C?FjA zEp3T#d=*kZFh5eL)cC@ z`W$8Sps7z#mZgb|jgMOX++-)<$8CstucDcEhcv{aM+aF~P54pI1Z$6VNY0R%?3|zm zorS}NP9k-r*^}E`6h-^$AKqTa^1SaTJOVn2@g^bDw%qk8uE9E?w#X@Jj&|+$W;hhy zJ5EO z)FssO1~au>nB$aq0$!$@R?Mj=GCW*ta~Q2Pg7ac>mdMXw>!tiVz_dd!e;m z*mg7?5d3ZhjZs?C_~=W6@NSl_;IE)vky8y`^#Qse9dr=>8PGvKnASVfCftbGqS${$ zYMzbmAj5eGCXr+&E;XZfB};(z4`KZezMZnFVm4OxD;OQ+Ue#PLi}n0L<6&oc5r@=9 zbcv0R${(1hL;}0b<7hN$9JTM7?cG`0cvQwuD9}33uL%zeA{Fn9V81B5`)^QDn`KQA zi})`tkcG+sl25oeVT|!nGe8=2hO6erI6y*^7`k&f%V@cx_t%S^NJW6^pN-L&K`KS+`uiaTN|OhWd-%y!Gx_jp6_Jc(OG;( z`a#NfSp?~b?)SGujdK+xzWT3huf*F+NRFt39PGl&POFX4MH*lcnXh(73$@9A(yTlZ z=C6){VHmQfm7L)uuX?b8!eq)-n%r31;(eEbllGFjQ#Ex|ITNL3RJna#9HYL=9KHnK zBz`Qu%v20sV6k&#P@s64T|54EWAOuaAT7CGhqs^4U8!($(g*XW=kqNOXy)YQ9&tH6 z$`R0EpbKtvV)Sp$p{4hwl=f`8SjS_1^1XyZZTO_6Xq{*SQ3`P+?Q~Rl!h@t#!nn)l zu+}j>L+cwI>e|!hKUPYYZ{WQlw#Spz96Bd4p11t4Ygr~gYoO=>Gh|(9LzKE2D*s_h z!qI;9Nj~VAj=)i&du9L+79C`gJos@jJ_C~!R`l6itw5FH0~9z^Ip~4FLBY#x4mlki zCCLsXT#hyU9V8^SA;AoZ?emKn`m(Btu_q?B)TiBEi2yW6{X|19Xb((4N&jjOjj4v* zq;-|i=8xx|yJ}ynR|em`I_nREh-7{&Stf3o27^WpamZSZvicH{C3m;3HwBn1*)+QWUg;QnFR(^aWhTodzth2yBp6z6AGVw zwm}Xw6L`atAL5vkMdQa2Ik0Y#%HPN>E4*x9DB0%o?IJ!J6Li`E5GG=dB{lcOvjpN2 zfc66^!oUo*7Y{iISEe&tXSmbcld{}udQzmVYghYRTdj)9BDOurAD2C=DMGwC&FZ zJ!V2(O8pSFk8x6D3?p2zKZj%0ysV^hcyQ47L?~l66trQamw5|94wo_Y;$dicnvtY=Z7!!XT**3G)920ZUw%&)#9;0thF<^ z&SeLG$)mLF$Y$=OVB1>FW6Hg3IcIDpMmDJ~#%+92_)96sek011m%gzMzA)sPIw$Cw zW}e#ANv4jp1j-fi>eOo&kfc_r1vO!;RSrhpILA7HOpupZGV+saR5Lrs4cPN040yJg zD{9;ixz%3D?!thh0)k}^{&i8D>Bi=ex zjx0F|ufBNkVnpcKlKq#>8>tjhzBr~~KyyZ3GBogqG$(}!5zw3y*&D0JbA~eD{CmWM z0{mM-J0n0_bi06Lw1CzM^a!w4M@{mjSG0|a))}}=OK4vND>GuYCdzG{>6KL`4o;XN zg*KhAk6rg{+vy4I)M;uSi?Y|r3pCvPFFuy2`y2%`tY7p2v|8kQ42(Ps%XC!(ok5qe z1^W7VVVUl(SGr$REkav9yR}rc4S5Y!2j}!Bv{yAsU-lZ< z6)*2rr`qI7LESJZ4(f(aITs6WQQooYmF{x)0z--sur?Y3KB<909r#%6Gr`i|rEpo~=7ti-wA#DA9*+b1G@ ztutaR+qh35R30Wxra~41O|gyzI*V3eN?CmE8aR&M7=$=g!p|b2dUOPhpb*XELcp;A zOdZO!ggeD>Nx}ZX34<7X!2Vqn+^r*V1ridYuagcJNXQEQvc@7+hK*ASXO!iL1*q;h zU@C!7ZAxFO9kWfc1skK5{zZ2=-H^`7P?RxOtO>B^_WoB;nw3;hxTj~tuR2wZp4r{q zWE&)ueJ;4#x0-#+;&C2fPIvt732oLY@WP`wxp{iR&}L?o@`fBpamxT}*Mg@ijDecz zVG2;BZl|sz^k*5;7y2U}>>xMt0P!I80`Ehy4sE{R)|0>>RO@OM{T=PCP%H)Z=on@v zO##oP8U^w=O;G<4P#y>BALMc0MOOOrH8M7iVc?eqB5c_5()7=?g#?M31%IeE5F`|D zmuCA1V}PFfeySVjx#M2{eKG5_n6h<{QP6e7c^%(lVmtL8*=V~SBDlh^RVyit9c$P> ziX}c*Mr(L$q`oHXK)i0o_B=YTIGz>ecK>+g2=%#Wu9~H9G}talNoQI?8?>fUBm!-a z1}E4m2~)0}`CKlY82Eu?G%C1UN2ngV6UvxverC+p$Mf{uuC(RU<9?};5FPdl%t65x z%dePjJgI;WnD~d}r>TL7&-GO%;?_`I_4@#{Hq)59AAZ$^bY-c0PIm4x&9A0;gi=XQ zS%JSm$Iu0poAw58MXLIbTywh~mG0N~@*yDpt6r#RND4}1XWef2g#0Noeo5|}`ukGn z^D}J${30F-EGEtR#(r~5d{O|efe2772omb~KuX;S;<~x#&ftpBI>XrsN~vQUfx`jw zig+AOx_{((pKP|PntukkuUr6^ZxErmTxc;J;&NtRpm4g;dcS13QDOOfC{IJSNc-*X zmtKzoE6ULQ@7#4-X2eVY!P?8$MNOaj1Np%qp;x`eqBOCaVicrX)aZ0erc)GhZB$mk z@B-Jim_KwWQI*9)9zTNLMZhK*qwtEJ9g&~g)zPHhnXCK?_r|#2(mQ^@1vI{h{A6a^ z>UxE!H9s${+yG?cj$QlJwIn+`f*>JM~z1rnx$ zQ1_ZJFi)|18l2e=<|)o_24yf$LCX~jA?{Ngl~sutsh-c9GL8~%fyr#m#oYyqdhbVp zO=L90I1%Swb~>LzcB3aN!Qilr(d1WUGlxrEpiZX@G#YBxU;Nx3epo62T!^2M<`kD zIgQt~9m39xy9u%#6Az0X`4ZRO>*h|2315q_#BmxK;+8o+{_>`ra!+QDkjdP!wo)XI zj&ob|%$Kk|W;hi5AA=AlnlHGE0}63;HFNAAbLoXU%b@R>daI3g!Z3B3>R1{=dH>So zLarxhCxp`6-$9RM{+T<2P`!Y+;2$bg1U;v#0;*m_q@a74&#`g6w8k%RwA6W$P4&H= z+j}1zG(Ml2r2bqT^r*;}+KsW){Yy!UgXG8~t7?U>Bl1DO2DHhiY;xB$g14Ja3V%-B zQU14Rq2KDm)?lo~!`0%R^{_uu@|>WkVK$Mf)!)b+=PQ@nItM0VvbGLsd!t?>J(W4B zfHNn44wt}8A>>uuBWR}JVNS;nW(p{#G%$&Q>I@Vl7(5*fHYD+HXj2!7ZV<*kph{We zhJ-FRV$rKyy~Y&GMWEz;=l^$>Wc;7OE&4P^rgvbO-?Kk4+JuS?=`}-hG6)EE03VhY z1z|&JJ~+xPVd`F|p;D&^Q_T(i+q9!o`V#ci6%1C@+#{x-!D6O2O8P;~S{F|~aK$k7?tj~-yGhM`tvrA zMzH@F^@AY?n2a--O-4-tLUYMWL(c^z#RU&CN`pATljt1Bb_z@qK#mhSEe8_C$p8{Z zoujDQ=P^gm9RD#XCwPn}0fD4HI})>hPp4)SS)1EL^ub16e^*WZrS5bHa9Qhpf^?$5 zWmWK({*0i{a(Gne=oz&`Y43#q(5-pZQ0Q(Ark*kU5l1j3xN*sb<3j&ybC3+>cJd#y z-IPF1vf*m=2aBGBh8z`T)kP?BF=6XFM))ONLpr|bl{tj1_<;|QNRq%XFtIUk;J9!s z7#8%wK1?_{3 zxfJ;DNVH%I_Nbdbwr08>-cEA6f5i_$TUwsC3cnve5R=W1O z7DM4Tls`SWs5$GXTRm1}v^GO}Q;(4XFNdAst@Az2GPjE${;B;^FXF4{j|M6gaJAObxyr^<2Gs=yH#l0p;^=?mp zrjsUk)!;_|TwL__dXW~xv zQfpor6aOP2dsDV#LM<&*{1v@BLC}vDld}2AxYR>6eMVfj{V&TG^qsySH z4l_e)%}fum>Q%L)lvyryW)^-+bJ*hq=uT^u%_&;b2~!Hf{4>(o0;nNH1P~Q74%8B`iqt#nsee1vbuJB%;yb z_Oi`QpZv3i29ufA{BICSH{I@S+yCGTiR%_p<{6ndF;+5OFyP`^{(iS>bye!DjR6e~ zXRi+G!Oe5aHqLLS|I6zp(fctQ*Ff)g)>^YLW;z2ETUXNq z!Cf*dXBtlkGWi3h`PO$sVI@0 zwiEYXi$@)kSVa0oR!=_g{n6<*Lt3I6$L8dtydGOw7nChUq~OW5>t@gZ_GR+I<#=wsZEAq zM%hj5<7?I?iyIryitDC*H!p45X{5F+a*u`(Wc5UoXnZo4#FkKm)~-F;r1m-+!2@xn zqo1C&QzkF_eHImuae8IXk4i{lk6?6daEyR^=0%_$*_gE01T{+p}GF9B*-aFaMH1*HMv?N~1w6DXBPY;OD*5$De#H zo<*WY=GOB&N#DdT@BRG~r6Eu)UnTF=?)A2t939ey$Fu5%HO+x8*APpi0|k#~$q>CC z%|Flg$8$85#KMw_ebCvuyR1|6qE=S0SKe)_WxrmuT%DFa`q3=*%FwPQIY)whjOp`+ z)3y3basRmBpV!~`or(gWIC#RB`FXmiISbwOhAf5|B{^0zSRzIc8NgPb(sxQS0P5LR zOU#7$#EOq!SWef#eGZYrH-@5e~QBwe3XW z(&~Zj57y8Z1lw;A?q~0lG`y8xxYm@5@=l~(&GCGi|CW#?Abfa`g)Rgyuoy=6Ns@X~ zued&8-dwAG1kV?F)P8lC(_i=8RuK%vqI1%Mpsk_L3!wc!9p>o1hSB%cCv2J*&gPFx zn`sPM6ow=YslTe;H_`Cz0SUvm(4{)xQUZO199uS>1&`f@Hv@C+kJ|KQ9d%^{r)5Gn zw|q1v{>MtESH`6+lhK{m3uHBeXOID)Eo@B4+e~@$S7sgnT`PF z8Ggmz^JAtl1Q|&-SAV45xATCVmThEFea!`;W0?5#Opih52Q3%fUwzN(zMidpueWS- z>F=)j7xq9|{o4wCQP^9$ztaCV7H^Fks!}DZJyk*dC|Ro?snW~dx+tN!muS>`2vZfJ z_6E@eC^WoKMr!Grl)&ZfAtU zITGx2WNYJ2*BUH_)fqfOfwN4md>C6vZZAoXjq2!Eb-xh|p|?=)Cwhm!0w^Q*E@$0( ze!XDmiR=3NT>{YKY4i&pg#5sL-S9AVr_^)SX-|Re2)MT);DS~Fz=>`JU%O1{xzJ=o z1@)Z)NqITYcf?$&M}&^WyPr_{hcPpokf@my)&UN7b{R|P&jV|(NCi)vPg+Up4W4DlRAiIn@2 ztP%>b(x9DjgTlL;0Y6E^1{DgZP$VWO6u?D@UBHmt?oSF#ma+bRt7806$9sinpcbG5 z7LfML*+{YyveaHT$OPSyg}j=&JGdP!g=*1KNXTb{&WRW5^Oy8t_%8JHM}+&Ypm2vk z@gV5G$(C^l9(B{kpy%7}I#W?1-+!P~8Dd^9)IpNJ;LN%Gfby27f1K3Ek;^>;hcLLP zihtl@MEU_)dHTw}u44x|j$N!Q%CmkXoQ_!$uOK(Y{@kWYQO`8T75$XTdrGq$s{1|t z87cwJ7D6`hC&sb?r~#wp+DGpU79v8%C2qVb1B+Z}yRU zH=mgy4J@sYoO+S%xypJP3#HLt>Fk6SM8|vxz(V19VC>ileXgAKS%MhJgG#~oyr-}{ z;#t8y4H9{IrD746L2=p3+tKp&XKv@IveEh~#*IX$*85uXO2OzhlwQBemHWF^M|xI0 zdW0OmgoQ+P3p!pco{H-5f4NiE;b zZ$OJYS&5YcKVPCZY=zyf_x?O*m;QZrbBwq$u^#sW)^o+meIC4j4w6-*guf#?9p{GZvQ=yMF28O5M%(C z4IzGV=RdA{Y$?8szI<`S@8gTPo4bYu1JBhiXf8-v&lpX#xmOBLRMi&^XHMJQlj)3^ zB6|W;y$kB>?{e>0Nlps0y#4LXignrO^Xv*wNtiD&YJagofWTv*ihaFPw|;)NJFrCJ%UH$ZG6vQUaOJ5m*0cJ^0lEk7~JG5Th`P? zKY%no{qxD$#@Mf1VvV5>+_pZ3-8XP*QwP)%JnycR-wKhDX&yui6R*CXqMK-wt+{nw z;Sz8GdBAVTxz`lvPU%+F=NOcZhTH>E4~x8-O4DDKpma2j67m;7A_i6yLW=quphEzG z#X6ux|3!4$((1ld5HAoN$vaX+c{)@4XkB;&h)3pVKvd31#w=Gyq39M#(e$QUbVJy_jF32h^zgECx7T?77EvL$0 zOo6)CM}<|2P@T9Oed->>9UEINl$8RCQXn zLH8zK29N_{*F7mE4Eq3u0-XTr1?ehwxupdYRXFDcG!L*v|Dzt9EHZ;|KnW2Ir(R3z zLBO1e{F{9P3Cq9e0TNyo7Im9CMO#(9o;{-|SKtr?QDsL?qEI0=ATly~b7*4x&V`D^ zCaKUIf=A`_2LYild{P#>d|_oFtk#wU-EtN8xScMS>bqQevDA5SEy;ou_1iP}gt?5| z4)H7L7HXLSOk+w3BtGU&A6}oSqK;I<@*9IJhow_!MAgj5+yIoh2 zAhZu;B=XL?b0*7IQIgF<`#|r3Z#hN);`ktkhTOY43CX%2ks5CgW`_kD2i_>eqs*uL zWWMn*%^h&2*Id0b4jC;8dKu#%^V1`Z&7r3IvWR%vLl}PiIi>jnky%=Wm@FZkL)cX{ z92ye@sjlnAX%gBIzgHw()K@tAbj$X^a zv+0OwYooG?PF(IEj0!ou0n|?yI5`^^oe8=HqTr@m#5>O)d^z)0R(yXWsdh+oOZS`Q zPX#bO^tsRV*-J=H;$McbHd%HpO-q9CCG{qx?r@PmaaL4bfr!by`e_J(V)ro66KnpD zChfanA{Yw1x-OJB0NEq9&U5m~pDJ~z2rT#p)JYi@1b{*XoVz(dESCT{ml-qV{=N?q z1w_=VyaGcjGHzV*vO<)1nnG>Ync~Hcz{I1=ITF}ZO~CYjLF?;2 zAbkImzDfOU^dbdwA{*B_0ATcfYdq=^DTkJBOWOHlcR$KIW6L%FqB|!uK=*kczC8pe z^KTcnwzmWHLK7C?&^cT$M(KVu(AuIu-U^WJXGD9~zs`|JXxK+n>i=01W}iVG zr6@<>wy{meMso6qPWXalkxYfsBWxs)NIFQ>+x9sza$KPV8Dj1APcNz+*Q)f9@dLL; z{+F1cABq{a%GR=xL%i!!rQfesmDQWcjCv^S@GNyl4tqusw&{caR5|5LkTjh^z zX+R%Ht(Dm`;4>VSUznlvA{TsnEWHS4$EBxd{#?{px9@GucSuuBjIMY2M^rLXeQaKYy$kR|hq3IuZRO7x-jYE?3+5MwjMUAz| z+UsAFkxr-xha_((Mcfo3xUJ&3){Dxuo*Vmu0C~%hS5q#?26B(esp!l*V^B_iCCP$B ziHq5is0Zw4!LS+xuZ2vffCIpak${NF z2qZd@oJEmOA_a>c49K*9?gPDt5%jP5*6eMy*NR{7$Zu`)N3C4hTaN(I6BHf?gXk%) zIxO4t!<{^VMbJG!iVkE0=^r7t>>^0g7ZA6XqCmO?ZnW%6qwdL^+UqQc2jX%v68<2& zTBcem9SsFdCMvpT&YT-AA-8}iH1uxYTf|=J-x$A88pAhaTt$fm90iD>nvHNgL;C)c zK>q-ri_8VaOBgadP#1>k8OWiddS2ZZEa4I0*`-hRzP8Puwj2iq6+h+CAS&xf9(BA| zOdi^?6Z=3-=<87>ayd-xh^)S^d>Fl<0m&~2et>}fa)L%*(vF-UDZtyWoSEqJ^Xr8Q z@d4q#RU}Bd69kK)*A@fUND30my>SEOzy15K(E~b1-7(YYo0%RcLi<|Qd)*)frL!4A zLOpvEY}>wI3KrdU{~I7K!`h)zJeCdoF_!56L&;M+Q=JE)k8p!lp0#AlI2aLRd940xO8)2c;q%_wa_-fq4KiT0YSH z;4?Y@h~dHwAgk0kn+&Xy{$5Pwk7?zX9UYzMNy;Ch2pW+5E(Y|2Xb@+iprjwas~tlU zo8E85?$4g4)vQ`MrSLnT0;4d;UUd*IgE5xMK=zs)5*lN%(D|Q4fm}@QD9Sb?|D^q^ zT>1W1=HzAnOaumOPdjyCLE{kSDVwtf22gBWH=2GQ1Xbc?Cs98o2Qc8kx%|)b9Q#d> z2wwviTJy`-K-u)o-`Vu{3^3C~kisy)e}~7$!i4|)Pxa7mI>Evw#bG2P=abeZpBmvzi;Fz^^9|;={p08WvC3Y?8h*Mmb)Au)n#!f~?Z7 zm^h8Nwu#)$eeMx4t02Rv=Km$2x?*~9XIs%GUoWBOQuaOZk;mUfItJ>m6ii5*owGdg zUWZ1T9tJ1)p#K@!zXnertNBD2*YO}?A*|@jJy^$%qAs$3n53oR(HiID*A<@%g>Lsn zNQ<4-tFkqrW%lFY{3ux-7U-9&cH%OVl<_;4Q~5R<#EvS*7~D|DNuH%==|zgTdiZ2veKD@y07V|$L+%OoSyy2p^|K;kOJ?HXLNf&l|! zXF9be{VTevm)=RB+Fi#^MzooQH-G1%=X~%b(95*qLnG|Pov}k0SWs55pjgnKU+W2e z{|#7BQZONw<|kp2xl3`$9KDv{*U3o1_B`L^i{NL8Rj+(SNq;wC+0n6^h`M1pMLiUxm6zVxu^+(Dx0;X-q zTq>8_S*A7W8(3U)c~eXqzGG$a`R-OiC#P=WSEfxkG&=-_PhOeqmGvKK*CVHjxOBZ@ pEwzL`>i*8R__Kv1*C}gmHZq>QI%40h(qzO tableInfos = query.queryTables(); - for (TableInfo tableInfo : tableInfos) { - if (StrUtil.startWithAny(tableInfo.getName().toLowerCase(), "act_", "flw_", "qrtz_")) { - continue; - } - System.out.println(String.format("CREATE SEQUENCE %s_seq MINVALUE 1;", tableInfo.getName())); -// System.out.println(String.format("DELETE FROM %s WHERE deleted = '1';", tableInfo.getName())); - } - System.out.println(tableInfos.size()); - System.out.println(System.currentTimeMillis() - time); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/config/ConfigServiceImplTest.java b/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/config/ConfigServiceImplTest.java deleted file mode 100644 index ec1f48e..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/config/ConfigServiceImplTest.java +++ /dev/null @@ -1,253 +0,0 @@ -package co.yixiang.yshop.module.infra.service.config; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.common.util.collection.ArrayUtils; -import co.yixiang.yshop.framework.test.core.ut.BaseDbUnitTest; -import co.yixiang.yshop.framework.test.core.util.RandomUtils; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigPageReqVO; -import co.yixiang.yshop.module.infra.controller.admin.config.vo.ConfigUpdateReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.config.ConfigDO; -import co.yixiang.yshop.module.infra.dal.mysql.config.ConfigMapper; -import co.yixiang.yshop.module.infra.enums.config.ConfigTypeEnum; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; -import java.util.function.Consumer; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static co.yixiang.yshop.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static co.yixiang.yshop.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static co.yixiang.yshop.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static co.yixiang.yshop.framework.test.core.util.AssertUtils.assertPojoEquals; -import static co.yixiang.yshop.framework.test.core.util.AssertUtils.assertServiceException; -import static co.yixiang.yshop.framework.test.core.util.RandomUtils.*; -import static co.yixiang.yshop.module.infra.enums.ErrorCodeConstants.*; -import static org.junit.jupiter.api.Assertions.*; - -@Import(ConfigServiceImpl.class) -public class ConfigServiceImplTest extends BaseDbUnitTest { - - @Resource - private ConfigServiceImpl configService; - - @Resource - private ConfigMapper configMapper; - - @Test - public void testCreateConfig_success() { - // 准备参数 - ConfigCreateReqVO reqVO = randomPojo(ConfigCreateReqVO.class); - - // 调用 - Long configId = configService.createConfig(reqVO); - // 断言 - assertNotNull(configId); - // 校验记录的属性是否正确 - ConfigDO config = configMapper.selectById(configId); - assertPojoEquals(reqVO, config); - assertEquals(ConfigTypeEnum.CUSTOM.getType(), config.getType()); - } - - @Test - public void testUpdateConfig_success() { - // mock 数据 - ConfigDO dbConfig = randomConfigDO(); - configMapper.insert(dbConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - ConfigUpdateReqVO reqVO = randomPojo(ConfigUpdateReqVO.class, o -> { - o.setId(dbConfig.getId()); // 设置更新的 ID - }); - - // 调用 - configService.updateConfig(reqVO); - // 校验是否更新正确 - ConfigDO config = configMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, config); - } - - @Test - public void testDeleteConfig_success() { - // mock 数据 - ConfigDO dbConfig = randomConfigDO(o -> { - o.setType(ConfigTypeEnum.CUSTOM.getType()); // 只能删除 CUSTOM 类型 - }); - configMapper.insert(dbConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbConfig.getId(); - - // 调用 - configService.deleteConfig(id); - // 校验数据不存在了 - assertNull(configMapper.selectById(id)); - } - - @Test - public void testDeleteConfig_canNotDeleteSystemType() { - // mock 数据 - ConfigDO dbConfig = randomConfigDO(o -> { - o.setType(ConfigTypeEnum.SYSTEM.getType()); // SYSTEM 不允许删除 - }); - configMapper.insert(dbConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbConfig.getId(); - - // 调用, 并断言异常 - assertServiceException(() -> configService.deleteConfig(id), CONFIG_CAN_NOT_DELETE_SYSTEM_TYPE); - } - - @Test - public void testValidateConfigExists_success() { - // mock 数据 - ConfigDO dbConfigDO = randomConfigDO(); - configMapper.insert(dbConfigDO);// @Sql: 先插入出一条存在的数据 - - // 调用成功 - configService.validateConfigExists(dbConfigDO.getId()); - } - - @Test - public void testValidateConfigExist_notExists() { - assertServiceException(() -> configService.validateConfigExists(randomLongId()), CONFIG_NOT_EXISTS); - } - - @Test - public void testValidateConfigKeyUnique_success() { - // 调用,成功 - configService.validateConfigKeyUnique(randomLongId(), randomString()); - } - - @Test - public void testValidateConfigKeyUnique_keyDuplicateForCreate() { - // 准备参数 - String key = randomString(); - // mock 数据 - configMapper.insert(randomConfigDO(o -> o.setConfigKey(key))); - - // 调用,校验异常 - assertServiceException(() -> configService.validateConfigKeyUnique(null, key), - CONFIG_KEY_DUPLICATE); - } - - @Test - public void testValidateConfigKeyUnique_keyDuplicateForUpdate() { - // 准备参数 - Long id = randomLongId(); - String key = randomString(); - // mock 数据 - configMapper.insert(randomConfigDO(o -> o.setConfigKey(key))); - - // 调用,校验异常 - assertServiceException(() -> configService.validateConfigKeyUnique(id, key), - CONFIG_KEY_DUPLICATE); - } - - @Test - public void testGetConfigPage() { - // mock 数据 - ConfigDO dbConfig = randomConfigDO(o -> { // 等会查询到 - o.setName("yshop"); - o.setConfigKey("yshop"); - o.setType(ConfigTypeEnum.SYSTEM.getType()); - o.setCreateTime(buildTime(2021, 2, 1)); - }); - configMapper.insert(dbConfig); - // 测试 name 不匹配 - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setName("土豆"))); - // 测试 key 不匹配 - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setConfigKey("tudou"))); - // 测试 type 不匹配 - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setType(ConfigTypeEnum.CUSTOM.getType()))); - // 测试 createTime 不匹配 - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setCreateTime(buildTime(2021, 1, 1)))); - // 准备参数 - ConfigPageReqVO reqVO = new ConfigPageReqVO(); - reqVO.setName("艿"); - reqVO.setKey("nai"); - reqVO.setType(ConfigTypeEnum.SYSTEM.getType()); - reqVO.setCreateTime(buildBetweenTime(2021, 1, 15, 2021, 2, 15)); - - // 调用 - PageResult pageResult = configService.getConfigPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbConfig, pageResult.getList().get(0)); - } - - @Test - public void testGetConfigList() { - // mock 数据 - ConfigDO dbConfig = randomConfigDO(o -> { // 等会查询到 - o.setName("yshop"); - o.setConfigKey("yshop"); - o.setType(ConfigTypeEnum.SYSTEM.getType()); - o.setCreateTime(buildTime(2021, 2, 1)); - }); - configMapper.insert(dbConfig); - // 测试 name 不匹配 - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setName("土豆"))); - // 测试 key 不匹配 - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setConfigKey("tudou"))); - // 测试 type 不匹配 - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setType(ConfigTypeEnum.CUSTOM.getType()))); - // 测试 createTime 不匹配 - configMapper.insert(cloneIgnoreId(dbConfig, o -> o.setCreateTime(buildTime(2021, 1, 1)))); - // 准备参数 - ConfigExportReqVO reqVO = new ConfigExportReqVO(); - reqVO.setName("艿"); - reqVO.setKey("nai"); - reqVO.setType(ConfigTypeEnum.SYSTEM.getType()); - reqVO.setCreateTime(buildBetweenTime(2021, 1, 15, 2021, 2, 15)); - - // 调用 - List list = configService.getConfigList(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbConfig, list.get(0)); - } - - @Test - public void testGetConfig() { - // mock 数据 - ConfigDO dbConfig = randomConfigDO(); - configMapper.insert(dbConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbConfig.getId(); - - // 调用 - ConfigDO config = configService.getConfig(id); - // 断言 - assertNotNull(config); - assertPojoEquals(dbConfig, config); - } - - @Test - public void testGetConfigByKey() { - // mock 数据 - ConfigDO dbConfig = randomConfigDO(); - configMapper.insert(dbConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - String key = dbConfig.getConfigKey(); - - // 调用 - ConfigDO config = configService.getConfigByKey(key); - // 断言 - assertNotNull(config); - assertPojoEquals(dbConfig, config); - } - - // ========== 随机对象 ========== - - @SafeVarargs - private static ConfigDO randomConfigDO(Consumer... consumers) { - Consumer consumer = (o) -> { - o.setType(randomEle(ConfigTypeEnum.values()).getType()); // 保证 key 的范围 - }; - return RandomUtils.randomPojo(ConfigDO.class, ArrayUtils.append(consumer, consumers)); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/db/DatabaseTableServiceImplTest.java b/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/db/DatabaseTableServiceImplTest.java deleted file mode 100644 index 545c4fe..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/db/DatabaseTableServiceImplTest.java +++ /dev/null @@ -1,89 +0,0 @@ -package co.yixiang.yshop.module.infra.service.db; - -import co.yixiang.yshop.framework.test.core.ut.BaseDbUnitTest; -import co.yixiang.yshop.module.infra.dal.dataobject.db.DataSourceConfigDO; -import com.baomidou.mybatisplus.generator.config.po.TableField; -import com.baomidou.mybatisplus.generator.config.po.TableInfo; -import com.baomidou.mybatisplus.generator.config.rules.DbColumnType; -import org.apache.ibatis.type.JdbcType; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; - -import static co.yixiang.yshop.framework.test.core.util.RandomUtils.randomLongId; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.when; - -@Import(DatabaseTableServiceImpl.class) -public class DatabaseTableServiceImplTest extends BaseDbUnitTest { - - @Resource - private DatabaseTableServiceImpl databaseTableService; - - @MockBean - private DataSourceConfigService dataSourceConfigService; - - @Test - public void testGetTableList() { - // 准备参数 - Long dataSourceConfigId = randomLongId(); - // mock 方法 - DataSourceConfigDO dataSourceConfig = new DataSourceConfigDO().setUsername("sa").setPassword("") - .setUrl("jdbc:h2:mem:testdb"); - when(dataSourceConfigService.getDataSourceConfig(eq(dataSourceConfigId))) - .thenReturn(dataSourceConfig); - - // 调用 - List tables = databaseTableService.getTableList(dataSourceConfigId, - "config", "参数"); - // 断言 - assertEquals(1, tables.size()); - assertTableInfo(tables.get(0)); - } - - @Test - public void testGetTable() { - // 准备参数 - Long dataSourceConfigId = randomLongId(); - // mock 方法 - DataSourceConfigDO dataSourceConfig = new DataSourceConfigDO().setUsername("sa").setPassword("") - .setUrl("jdbc:h2:mem:testdb"); - when(dataSourceConfigService.getDataSourceConfig(eq(dataSourceConfigId))) - .thenReturn(dataSourceConfig); - - // 调用 - TableInfo tableInfo = databaseTableService.getTable(dataSourceConfigId, "infra_config"); - // 断言 - assertTableInfo(tableInfo); - } - - private void assertTableInfo(TableInfo tableInfo) { - assertEquals("infra_config", tableInfo.getName()); - assertEquals("参数配置表", tableInfo.getComment()); - assertEquals(13, tableInfo.getFields().size()); - // id 字段 - TableField idField = tableInfo.getFields().get(0); - assertEquals("id", idField.getName()); - assertEquals(JdbcType.BIGINT, idField.getMetaInfo().getJdbcType()); - assertEquals("编号", idField.getComment()); - assertFalse(idField.getMetaInfo().isNullable()); - assertTrue(idField.isKeyFlag()); - assertTrue(idField.isKeyIdentityFlag()); - assertEquals(DbColumnType.LONG, idField.getColumnType()); - assertEquals("id", idField.getPropertyName()); - // name 字段 - TableField nameField = tableInfo.getFields().get(3); - assertEquals("name", nameField.getName()); - assertEquals(JdbcType.VARCHAR, nameField.getMetaInfo().getJdbcType()); - assertEquals("名字", nameField.getComment()); - assertFalse(nameField.getMetaInfo().isNullable()); - assertFalse(nameField.isKeyFlag()); - assertFalse(nameField.isKeyIdentityFlag()); - assertEquals(DbColumnType.STRING, nameField.getColumnType()); - assertEquals("name", nameField.getPropertyName()); - } -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/file/FileConfigServiceImplTest.java b/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/file/FileConfigServiceImplTest.java deleted file mode 100644 index b38cc2c..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/file/FileConfigServiceImplTest.java +++ /dev/null @@ -1,280 +0,0 @@ -package co.yixiang.yshop.module.infra.service.file; - -import cn.hutool.core.date.DatePattern; -import cn.hutool.core.date.LocalDateTimeUtil; -import cn.hutool.core.map.MapUtil; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.file.core.client.FileClient; -import co.yixiang.yshop.framework.file.core.client.FileClientConfig; -import co.yixiang.yshop.framework.file.core.client.FileClientFactory; -import co.yixiang.yshop.framework.file.core.client.local.LocalFileClient; -import co.yixiang.yshop.framework.file.core.client.local.LocalFileClientConfig; -import co.yixiang.yshop.framework.file.core.enums.FileStorageEnum; -import co.yixiang.yshop.framework.test.core.ut.BaseDbUnitTest; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.config.FileConfigCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.config.FileConfigPageReqVO; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.config.FileConfigUpdateReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.file.FileConfigDO; -import co.yixiang.yshop.module.infra.dal.mysql.file.FileConfigMapper; -import co.yixiang.yshop.module.infra.mq.producer.file.FileConfigProducer; -import lombok.Data; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import javax.validation.Validator; -import java.io.Serializable; -import java.time.LocalDateTime; -import java.util.Map; - -import static cn.hutool.core.util.RandomUtil.randomEle; -import static co.yixiang.yshop.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static co.yixiang.yshop.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static co.yixiang.yshop.framework.test.core.util.AssertUtils.assertPojoEquals; -import static co.yixiang.yshop.framework.test.core.util.AssertUtils.assertServiceException; -import static co.yixiang.yshop.framework.test.core.util.RandomUtils.randomLongId; -import static co.yixiang.yshop.framework.test.core.util.RandomUtils.randomPojo; -import static co.yixiang.yshop.module.infra.enums.ErrorCodeConstants.FILE_CONFIG_DELETE_FAIL_MASTER; -import static co.yixiang.yshop.module.infra.enums.ErrorCodeConstants.FILE_CONFIG_NOT_EXISTS; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.*; - -/** -* {@link FileConfigServiceImpl} 的单元测试类 -* -* @author yshop -*/ -@Import(FileConfigServiceImpl.class) -public class FileConfigServiceImplTest extends BaseDbUnitTest { - - @Resource - private FileConfigServiceImpl fileConfigService; - - @Resource - private FileConfigMapper fileConfigMapper; - - @MockBean - private FileConfigProducer fileConfigProducer; - @MockBean - private Validator validator; - @MockBean - private FileClientFactory fileClientFactory; - - @Test - public void testInitLocalCache() { - // mock 数据 - FileConfigDO configDO1 = randomFileConfigDO().setId(1L).setMaster(true); - fileConfigMapper.insert(configDO1); - FileConfigDO configDO2 = randomFileConfigDO().setId(2L).setMaster(false); - fileConfigMapper.insert(configDO2); - // mock fileClientFactory 获得 master - FileClient masterFileClient = mock(FileClient.class); - when(fileClientFactory.getFileClient(eq(1L))).thenReturn(masterFileClient); - - // 调用 - fileConfigService.initLocalCache(); - // 断言 fileClientFactory 调用 - verify(fileClientFactory).createOrUpdateFileClient(eq(1L), - eq(configDO1.getStorage()), eq(configDO1.getConfig())); - verify(fileClientFactory).createOrUpdateFileClient(eq(2L), - eq(configDO2.getStorage()), eq(configDO2.getConfig())); - assertSame(masterFileClient, fileConfigService.getMasterFileClient()); - } - - @Test - public void testCreateFileConfig_success() { - // 准备参数 - Map config = MapUtil.builder().put("basePath", "/yshop") - .put("domain", "https://www.yixiang.co").build(); - FileConfigCreateReqVO reqVO = randomPojo(FileConfigCreateReqVO.class, - o -> o.setStorage(FileStorageEnum.LOCAL.getStorage()).setConfig(config)); - - // 调用 - Long fileConfigId = fileConfigService.createFileConfig(reqVO); - // 断言 - assertNotNull(fileConfigId); - // 校验记录的属性是否正确 - FileConfigDO fileConfig = fileConfigMapper.selectById(fileConfigId); - assertPojoEquals(reqVO, fileConfig, "config"); - assertFalse(fileConfig.getMaster()); - assertEquals("/yshop", ((LocalFileClientConfig) fileConfig.getConfig()).getBasePath()); - assertEquals("https://www.yixiang.co", ((LocalFileClientConfig) fileConfig.getConfig()).getDomain()); - // verify 调用 - verify(fileConfigProducer).sendFileConfigRefreshMessage(); - } - - @Test - public void testUpdateFileConfig_success() { - // mock 数据 - FileConfigDO dbFileConfig = randomPojo(FileConfigDO.class, o -> o.setStorage(FileStorageEnum.LOCAL.getStorage()) - .setConfig(new LocalFileClientConfig().setBasePath("/yshop").setDomain("https://www.yixiang.co"))); - fileConfigMapper.insert(dbFileConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - FileConfigUpdateReqVO reqVO = randomPojo(FileConfigUpdateReqVO.class, o -> { - o.setId(dbFileConfig.getId()); // 设置更新的 ID - Map config = MapUtil.builder().put("basePath", "/yshop") - .put("domain", "https://www.yixiang.co").build(); - o.setConfig(config); - }); - - // 调用 - fileConfigService.updateFileConfig(reqVO); - // 校验是否更新正确 - FileConfigDO fileConfig = fileConfigMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, fileConfig, "config"); - assertEquals("/yshop", ((LocalFileClientConfig) fileConfig.getConfig()).getBasePath()); - assertEquals("https://www.yixiang.co", ((LocalFileClientConfig) fileConfig.getConfig()).getDomain()); - // verify 调用 - verify(fileConfigProducer).sendFileConfigRefreshMessage(); - } - - @Test - public void testUpdateFileConfig_notExists() { - // 准备参数 - FileConfigUpdateReqVO reqVO = randomPojo(FileConfigUpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> fileConfigService.updateFileConfig(reqVO), FILE_CONFIG_NOT_EXISTS); - } - - @Test - public void testUpdateFileConfigMaster_success() { - // mock 数据 - FileConfigDO dbFileConfig = randomFileConfigDO().setMaster(false); - fileConfigMapper.insert(dbFileConfig);// @Sql: 先插入出一条存在的数据 - FileConfigDO masterFileConfig = randomFileConfigDO().setMaster(true); - fileConfigMapper.insert(masterFileConfig);// @Sql: 先插入出一条存在的数据 - - // 调用 - fileConfigService.updateFileConfigMaster(dbFileConfig.getId()); - // 断言数据 - assertTrue(fileConfigMapper.selectById(dbFileConfig.getId()).getMaster()); - assertFalse(fileConfigMapper.selectById(masterFileConfig.getId()).getMaster()); - // verify 调用 - verify(fileConfigProducer).sendFileConfigRefreshMessage(); - } - - @Test - public void testUpdateFileConfigMaster_notExists() { - // 调用, 并断言异常 - assertServiceException(() -> fileConfigService.updateFileConfigMaster(randomLongId()), FILE_CONFIG_NOT_EXISTS); - } - - @Test - public void testDeleteFileConfig_success() { - // mock 数据 - FileConfigDO dbFileConfig = randomFileConfigDO().setMaster(false); - fileConfigMapper.insert(dbFileConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbFileConfig.getId(); - - // 调用 - fileConfigService.deleteFileConfig(id); - // 校验数据不存在了 - assertNull(fileConfigMapper.selectById(id)); - // verify 调用 - verify(fileConfigProducer).sendFileConfigRefreshMessage(); - } - - @Test - public void testDeleteFileConfig_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> fileConfigService.deleteFileConfig(id), FILE_CONFIG_NOT_EXISTS); - } - - @Test - public void testDeleteFileConfig_master() { - // mock 数据 - FileConfigDO dbFileConfig = randomFileConfigDO().setMaster(true); - fileConfigMapper.insert(dbFileConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbFileConfig.getId(); - - // 调用, 并断言异常 - assertServiceException(() -> fileConfigService.deleteFileConfig(id), FILE_CONFIG_DELETE_FAIL_MASTER); - } - - @Test - public void testGetFileConfigPage() { - // mock 数据 - FileConfigDO dbFileConfig = randomFileConfigDO().setName("yshop") - .setStorage(FileStorageEnum.LOCAL.getStorage()); - dbFileConfig.setCreateTime(LocalDateTimeUtil.parse("2020-01-23", DatePattern.NORM_DATE_PATTERN));// 等会查询到 - fileConfigMapper.insert(dbFileConfig); - // 测试 name 不匹配 - fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setName("源码"))); - // 测试 storage 不匹配 - fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setStorage(FileStorageEnum.DB.getStorage()))); - // 测试 createTime 不匹配 - fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setCreateTime(LocalDateTimeUtil.parse("2020-11-23", DatePattern.NORM_DATE_PATTERN)))); - // 准备参数 - FileConfigPageReqVO reqVO = new FileConfigPageReqVO(); - reqVO.setName("yshop"); - reqVO.setStorage(FileStorageEnum.LOCAL.getStorage()); - reqVO.setCreateTime((new LocalDateTime[]{buildTime(2020, 1, 1), - buildTime(2020, 1, 24)})); - - // 调用 - PageResult pageResult = fileConfigService.getFileConfigPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbFileConfig, pageResult.getList().get(0)); - } - - @Test - public void testFileConfig() throws Exception { - // mock 数据 - FileConfigDO dbFileConfig = randomFileConfigDO().setMaster(false); - fileConfigMapper.insert(dbFileConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbFileConfig.getId(); - // mock 获得 Client - FileClient fileClient = mock(FileClient.class); - when(fileClientFactory.getFileClient(eq(id))).thenReturn(fileClient); - when(fileClient.upload(any(), any(), any())).thenReturn("https://www.yixiang.co"); - - // 调用,并断言 - assertEquals("https://www.yixiang.co", fileConfigService.testFileConfig(id)); - } - - @Test - public void testGetFileConfig() { - // mock 数据 - FileConfigDO dbFileConfig = randomFileConfigDO().setMaster(false); - fileConfigMapper.insert(dbFileConfig);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbFileConfig.getId(); - - // 调用,并断言 - assertPojoEquals(dbFileConfig, fileConfigService.getFileConfig(id)); - } - - @Test - public void testGetFileClient() { - // 准备参数 - Long id = randomLongId(); - // mock 获得 Client - FileClient fileClient = new LocalFileClient(id, new LocalFileClientConfig()); - when(fileClientFactory.getFileClient(eq(id))).thenReturn(fileClient); - - // 调用,并断言 - assertSame(fileClient, fileConfigService.getFileClient(id)); - } - - private FileConfigDO randomFileConfigDO() { - return randomPojo(FileConfigDO.class).setStorage(randomEle(FileStorageEnum.values()).getStorage()) - .setConfig(new EmptyFileClientConfig()); - } - - @Data - public static class EmptyFileClientConfig implements FileClientConfig, Serializable { - - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/file/FileServiceImplTest.java b/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/file/FileServiceImplTest.java deleted file mode 100644 index 27d7a5c..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/file/FileServiceImplTest.java +++ /dev/null @@ -1,142 +0,0 @@ -package co.yixiang.yshop.module.infra.service.file; - -import cn.hutool.core.io.resource.ResourceUtil; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.common.util.object.ObjectUtils; -import co.yixiang.yshop.framework.file.core.client.FileClient; -import co.yixiang.yshop.framework.test.core.ut.BaseDbUnitTest; -import co.yixiang.yshop.framework.test.core.util.AssertUtils; -import co.yixiang.yshop.module.infra.controller.admin.file.vo.file.FilePageReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.file.FileDO; -import co.yixiang.yshop.module.infra.dal.mysql.file.FileMapper; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; - -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static co.yixiang.yshop.framework.test.core.util.AssertUtils.assertServiceException; -import static co.yixiang.yshop.framework.test.core.util.RandomUtils.*; -import static co.yixiang.yshop.module.infra.enums.ErrorCodeConstants.FILE_NOT_EXISTS; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.same; -import static org.mockito.Mockito.*; - -@Import({FileServiceImpl.class}) -public class FileServiceImplTest extends BaseDbUnitTest { - - @Resource - private FileService fileService; - - @Resource - private FileMapper fileMapper; - - @MockBean - private FileConfigService fileConfigService; - - @Test - public void testGetFilePage() { - // mock 数据 - FileDO dbFile = randomPojo(FileDO.class, o -> { // 等会查询到 - o.setPath("yshop"); - o.setType("image/jpg"); - o.setCreateTime(buildTime(2021, 1, 15)); - }); - fileMapper.insert(dbFile); - // 测试 path 不匹配 - fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> o.setPath("tudou"))); - // 测试 type 不匹配 - fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> { - o.setType("image/png"); - })); - // 测试 createTime 不匹配 - fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> { - o.setCreateTime(buildTime(2020, 1, 15)); - })); - // 准备参数 - FilePageReqVO reqVO = new FilePageReqVO(); - reqVO.setPath("yshop"); - reqVO.setType("jp"); - reqVO.setCreateTime((new LocalDateTime[]{buildTime(2021, 1, 10), buildTime(2021, 1, 20)})); - - // 调用 - PageResult pageResult = fileService.getFilePage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - AssertUtils.assertPojoEquals(dbFile, pageResult.getList().get(0)); - } - - @Test - public void testCreateFile_success() throws Exception { - // 准备参数 - String path = randomString(); - byte[] content = ResourceUtil.readBytes("file/erweima.jpg"); - // mock Master 文件客户端 - FileClient client = mock(FileClient.class); - when(fileConfigService.getMasterFileClient()).thenReturn(client); - String url = randomString(); - when(client.upload(same(content), same(path), eq("image/jpeg"))).thenReturn(url); - when(client.getId()).thenReturn(10L); - String name = "单测文件名"; - // 调用 - String result = fileService.createFile(name, path, content); - // 断言 - assertEquals(result, url); - // 校验数据 - FileDO file = fileMapper.selectOne(FileDO::getPath, path); - assertEquals(10L, file.getConfigId()); - assertEquals(path, file.getPath()); - assertEquals(url, file.getUrl()); - assertEquals("image/jpeg", file.getType()); - assertEquals(content.length, file.getSize()); - } - - @Test - public void testDeleteFile_success() throws Exception { - // mock 数据 - FileDO dbFile = randomPojo(FileDO.class, o -> o.setConfigId(10L).setPath("tudou.jpg")); - fileMapper.insert(dbFile);// @Sql: 先插入出一条存在的数据 - // mock Master 文件客户端 - FileClient client = mock(FileClient.class); - when(fileConfigService.getFileClient(eq(10L))).thenReturn(client); - // 准备参数 - Long id = dbFile.getId(); - - // 调用 - fileService.deleteFile(id); - // 校验数据不存在了 - assertNull(fileMapper.selectById(id)); - // 校验调用 - verify(client).delete(eq("tudou.jpg")); - } - - @Test - public void testDeleteFile_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> fileService.deleteFile(id), FILE_NOT_EXISTS); - } - - @Test - public void testGetFileContent() throws Exception { - // 准备参数 - Long configId = 10L; - String path = "tudou.jpg"; - // mock 方法 - FileClient client = mock(FileClient.class); - when(fileConfigService.getFileClient(eq(10L))).thenReturn(client); - byte[] content = new byte[]{}; - when(client.getContent(eq("tudou.jpg"))).thenReturn(content); - - // 调用 - byte[] result = fileService.getFileContent(configId, path); - // 断言 - assertSame(result, content); - } -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/job/JobLogServiceImplTest.java b/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/job/JobLogServiceImplTest.java deleted file mode 100644 index b039bca..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/job/JobLogServiceImplTest.java +++ /dev/null @@ -1,203 +0,0 @@ -package co.yixiang.yshop.module.infra.service.job; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.test.core.ut.BaseDbUnitTest; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.log.JobLogExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.job.vo.log.JobLogPageReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.job.JobLogDO; -import co.yixiang.yshop.module.infra.dal.mysql.job.JobLogMapper; -import co.yixiang.yshop.module.infra.enums.job.JobLogStatusEnum; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.time.LocalDateTime; -import java.util.Collection; -import java.util.List; - -import static co.yixiang.yshop.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static co.yixiang.yshop.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static co.yixiang.yshop.framework.test.core.util.AssertUtils.assertPojoEquals; -import static co.yixiang.yshop.framework.test.core.util.RandomUtils.*; -import static java.util.Collections.singleton; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -@Import(JobLogServiceImpl.class) -public class JobLogServiceImplTest extends BaseDbUnitTest { - - @Resource - private JobLogServiceImpl jobLogService; - @Resource - private JobLogMapper jobLogMapper; - - @Test - public void testCreateJobLog() { - // 准备参数 - JobLogDO reqVO = randomPojo(JobLogDO.class, o -> o.setExecuteIndex(1)); - - // 调用 - Long id = jobLogService.createJobLog(reqVO.getJobId(), reqVO.getBeginTime(), - reqVO.getHandlerName(), reqVO.getHandlerParam(), reqVO.getExecuteIndex()); - // 断言 - assertNotNull(id); - // 校验记录的属性是否正确 - JobLogDO job = jobLogMapper.selectById(id); - assertEquals(JobLogStatusEnum.RUNNING.getStatus(), job.getStatus()); - } - - @Test - public void testUpdateJobLogResultAsync_success() { - // mock 数据 - JobLogDO log = randomPojo(JobLogDO.class, o -> { - o.setExecuteIndex(1); - o.setStatus(JobLogStatusEnum.RUNNING.getStatus()); - }); - jobLogMapper.insert(log); - // 准备参数 - Long logId = log.getId(); - LocalDateTime endTime = randomLocalDateTime(); - Integer duration = randomInteger(); - boolean success = true; - String result = randomString(); - - // 调用 - jobLogService.updateJobLogResultAsync(logId, endTime, duration, success, result); - // 校验记录的属性是否正确 - JobLogDO dbLog = jobLogMapper.selectById(log.getId()); - assertEquals(endTime, dbLog.getEndTime()); - assertEquals(duration, dbLog.getDuration()); - assertEquals(JobLogStatusEnum.SUCCESS.getStatus(), dbLog.getStatus()); - assertEquals(result, dbLog.getResult()); - } - - @Test - public void testUpdateJobLogResultAsync_failure() { - // mock 数据 - JobLogDO log = randomPojo(JobLogDO.class, o -> { - o.setExecuteIndex(1); - o.setStatus(JobLogStatusEnum.RUNNING.getStatus()); - }); - jobLogMapper.insert(log); - // 准备参数 - Long logId = log.getId(); - LocalDateTime endTime = randomLocalDateTime(); - Integer duration = randomInteger(); - boolean success = false; - String result = randomString(); - - // 调用 - jobLogService.updateJobLogResultAsync(logId, endTime, duration, success, result); - // 校验记录的属性是否正确 - JobLogDO dbLog = jobLogMapper.selectById(log.getId()); - assertEquals(endTime, dbLog.getEndTime()); - assertEquals(duration, dbLog.getDuration()); - assertEquals(JobLogStatusEnum.FAILURE.getStatus(), dbLog.getStatus()); - assertEquals(result, dbLog.getResult()); - } - - @Test - public void testGetJobLog() { - // mock 数据 - JobLogDO dbJobLog = randomPojo(JobLogDO.class, o -> o.setExecuteIndex(1)); - jobLogMapper.insert(dbJobLog); - // 准备参数 - Long id = dbJobLog.getId(); - - // 调用 - JobLogDO jobLog = jobLogService.getJobLog(id); - // 断言 - assertPojoEquals(dbJobLog, jobLog); - } - - @Test - public void testGetJobLogList() { - // mock 数据 - JobLogDO dbJobLog = randomPojo(JobLogDO.class, o -> o.setExecuteIndex(1)); - jobLogMapper.insert(dbJobLog); - // 测试 handlerName 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> {})); - // 准备参数 - Collection ids = singleton(dbJobLog.getId()); - - // 调用 - List list = jobLogService.getJobLogList(ids); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbJobLog, list.get(0)); - } - - @Test - public void testGetJobPage() { - // mock 数据 - JobLogDO dbJobLog = randomPojo(JobLogDO.class, o -> { - o.setExecuteIndex(1); - o.setHandlerName("handlerName 单元测试"); - o.setStatus(JobLogStatusEnum.SUCCESS.getStatus()); - o.setBeginTime(buildTime(2021, 1, 8)); - o.setEndTime(buildTime(2021, 1, 8)); - }); - jobLogMapper.insert(dbJobLog); - // 测试 jobId 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setJobId(randomLongId()))); - // 测试 handlerName 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setHandlerName(randomString()))); - // 测试 beginTime 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setBeginTime(buildTime(2021, 1, 7)))); - // 测试 endTime 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setEndTime(buildTime(2021, 1, 9)))); - // 测试 status 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setStatus(JobLogStatusEnum.FAILURE.getStatus()))); - // 准备参数 - JobLogPageReqVO reqVo = new JobLogPageReqVO(); - reqVo.setJobId(dbJobLog.getJobId()); - reqVo.setHandlerName("单元"); - reqVo.setBeginTime(dbJobLog.getBeginTime()); - reqVo.setEndTime(dbJobLog.getEndTime()); - reqVo.setStatus(JobLogStatusEnum.SUCCESS.getStatus()); - - // 调用 - PageResult pageResult = jobLogService.getJobLogPage(reqVo); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbJobLog, pageResult.getList().get(0)); - } - - @Test - public void testGetJobList_export() { - // mock 数据 - JobLogDO dbJobLog = randomPojo(JobLogDO.class, o -> { - o.setExecuteIndex(1); - o.setHandlerName("handlerName 单元测试"); - o.setStatus(JobLogStatusEnum.SUCCESS.getStatus()); - o.setBeginTime(buildTime(2021, 1, 8)); - o.setEndTime(buildTime(2021, 1, 8)); - }); - jobLogMapper.insert(dbJobLog); - // 测试 jobId 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setJobId(randomLongId()))); - // 测试 handlerName 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setHandlerName(randomString()))); - // 测试 beginTime 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setBeginTime(buildTime(2021, 1, 7)))); - // 测试 endTime 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setEndTime(buildTime(2021, 1, 9)))); - // 测试 status 不匹配 - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setStatus(JobLogStatusEnum.FAILURE.getStatus()))); - // 准备参数 - JobLogExportReqVO reqVo = new JobLogExportReqVO(); - reqVo.setJobId(dbJobLog.getJobId()); - reqVo.setHandlerName("单元"); - reqVo.setBeginTime(dbJobLog.getBeginTime()); - reqVo.setEndTime(dbJobLog.getEndTime()); - reqVo.setStatus(JobLogStatusEnum.SUCCESS.getStatus()); - - // 调用 - List list = jobLogService.getJobLogList(reqVo); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbJobLog, list.get(0)); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/logger/ApiAccessLogServiceImplTest.java b/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/logger/ApiAccessLogServiceImplTest.java deleted file mode 100644 index 9f906e2..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/logger/ApiAccessLogServiceImplTest.java +++ /dev/null @@ -1,133 +0,0 @@ -package co.yixiang.yshop.module.infra.service.logger; - -import co.yixiang.yshop.framework.common.enums.UserTypeEnum; -import co.yixiang.yshop.framework.common.exception.enums.GlobalErrorCodeConstants; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.test.core.ut.BaseDbUnitTest; -import co.yixiang.yshop.module.infra.api.logger.dto.ApiAccessLogCreateReqDTO; -import co.yixiang.yshop.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.logger.vo.apiaccesslog.ApiAccessLogPageReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.logger.ApiAccessLogDO; -import co.yixiang.yshop.module.infra.dal.mysql.logger.ApiAccessLogMapper; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; - -import static co.yixiang.yshop.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; -import static co.yixiang.yshop.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static co.yixiang.yshop.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static co.yixiang.yshop.framework.test.core.util.AssertUtils.assertPojoEquals; -import static co.yixiang.yshop.framework.test.core.util.RandomUtils.randomPojo; -import static org.junit.jupiter.api.Assertions.assertEquals; - -@Import(ApiAccessLogServiceImpl.class) -public class ApiAccessLogServiceImplTest extends BaseDbUnitTest { - - @Resource - private ApiAccessLogServiceImpl apiAccessLogService; - - @Resource - private ApiAccessLogMapper apiAccessLogMapper; - - @Test - public void testGetApiAccessLogPage() { - ApiAccessLogDO apiAccessLogDO = randomPojo(ApiAccessLogDO.class, o -> { - o.setUserId(2233L); - o.setUserType(UserTypeEnum.ADMIN.getValue()); - o.setApplicationName("yshop-test"); - o.setRequestUrl("foo"); - o.setBeginTime(buildTime(2021, 3, 13)); - o.setDuration(1000); - o.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode()); - }); - apiAccessLogMapper.insert(apiAccessLogDO); - // 测试 userId 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setUserId(3344L))); - // 测试 userType 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setUserType(UserTypeEnum.MEMBER.getValue()))); - // 测试 applicationName 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setApplicationName("test"))); - // 测试 requestUrl 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setRequestUrl("bar"))); - // 测试 beginTime 不匹配:构造一个早期时间 2021-02-06 00:00:00 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setBeginTime(buildTime(2021, 2, 6)))); - // 测试 duration 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setDuration(100))); - // 测试 resultCode 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setResultCode(2))); - // 准备参数 - ApiAccessLogPageReqVO reqVO = new ApiAccessLogPageReqVO(); - reqVO.setUserId(2233L); - reqVO.setUserType(UserTypeEnum.ADMIN.getValue()); - reqVO.setApplicationName("yshop-test"); - reqVO.setRequestUrl("foo"); - reqVO.setBeginTime(buildBetweenTime(2021, 3, 13, 2021, 3, 13)); - reqVO.setDuration(1000); - reqVO.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode()); - - // 调用 - PageResult pageResult = apiAccessLogService.getApiAccessLogPage(reqVO); - // 断言,只查到了一条符合条件的 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(apiAccessLogDO, pageResult.getList().get(0)); - } - - @Test - public void testGetApiAccessLogList() { - ApiAccessLogDO apiAccessLogDO = randomPojo(ApiAccessLogDO.class, o -> { - o.setUserId(2233L); - o.setUserType(UserTypeEnum.ADMIN.getValue()); - o.setApplicationName("yshop-test"); - o.setRequestUrl("foo"); - o.setBeginTime(buildTime(2021, 3, 13)); - o.setDuration(1000); - o.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode()); - }); - apiAccessLogMapper.insert(apiAccessLogDO); - // 测试 userId 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setUserId(3344L))); - // 测试 userType 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setUserType(UserTypeEnum.MEMBER.getValue()))); - // 测试 applicationName 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setApplicationName("test"))); - // 测试 requestUrl 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setRequestUrl("bar"))); - // 测试 beginTime 不匹配:构造一个早期时间 2021-02-06 00:00:00 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setBeginTime(buildTime(2021, 2, 6)))); - // 测试 duration 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setDuration(100))); - // 测试 resultCode 不匹配 - apiAccessLogMapper.insert(cloneIgnoreId(apiAccessLogDO, o -> o.setResultCode(2))); - // 准备参数 - ApiAccessLogExportReqVO reqVO = new ApiAccessLogExportReqVO(); - reqVO.setUserId(2233L); - reqVO.setUserType(UserTypeEnum.ADMIN.getValue()); - reqVO.setApplicationName("yshop-test"); - reqVO.setRequestUrl("foo"); - reqVO.setBeginTime(buildBetweenTime(2021, 3, 13, 2021, 3, 13)); - reqVO.setDuration(1000); - reqVO.setResultCode(GlobalErrorCodeConstants.SUCCESS.getCode()); - - // 调用 - List list = apiAccessLogService.getApiAccessLogList(reqVO); - // 断言,只查到了一条符合条件的 - assertEquals(1, list.size()); - assertPojoEquals(apiAccessLogDO, list.get(0)); - } - - @Test - public void testCreateApiAccessLog() { - // 准备参数 - ApiAccessLogCreateReqDTO createDTO = randomPojo(ApiAccessLogCreateReqDTO.class); - - // 调用 - apiAccessLogService.createApiAccessLog(createDTO); - // 断言 - ApiAccessLogDO apiAccessLogDO = apiAccessLogMapper.selectOne(null); - assertPojoEquals(createDTO, apiAccessLogDO); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/test/TestDemoServiceImplTest.java b/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/test/TestDemoServiceImplTest.java deleted file mode 100644 index 4229eff..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/test/java/co/yixiang/yshop/module/infra/service/test/TestDemoServiceImplTest.java +++ /dev/null @@ -1,186 +0,0 @@ -package co.yixiang.yshop.module.infra.service.test; - -import co.yixiang.yshop.framework.common.enums.CommonStatusEnum; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.test.core.ut.BaseDbUnitTest; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.TestDemoCreateReqVO; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.TestDemoExportReqVO; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.TestDemoPageReqVO; -import co.yixiang.yshop.module.infra.controller.admin.test.vo.TestDemoUpdateReqVO; -import co.yixiang.yshop.module.infra.dal.dataobject.test.TestDemoDO; -import co.yixiang.yshop.module.infra.dal.mysql.test.TestDemoMapper; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.time.LocalDateTime; -import java.util.List; - -import static co.yixiang.yshop.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static co.yixiang.yshop.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static co.yixiang.yshop.framework.test.core.util.AssertUtils.assertPojoEquals; -import static co.yixiang.yshop.framework.test.core.util.AssertUtils.assertServiceException; -import static co.yixiang.yshop.framework.test.core.util.RandomUtils.randomLongId; -import static co.yixiang.yshop.framework.test.core.util.RandomUtils.randomPojo; -import static co.yixiang.yshop.module.infra.enums.ErrorCodeConstants.TEST_DEMO_NOT_EXISTS; -import static org.junit.jupiter.api.Assertions.*; - -/** - * {@link TestDemoServiceImpl} 的单元测试类 - * - * @author yshop - */ -@Import(TestDemoServiceImpl.class) -public class TestDemoServiceImplTest extends BaseDbUnitTest { - - @Resource - private TestDemoServiceImpl testDemoService; - - @Resource - private TestDemoMapper testDemoMapper; - - @Test - public void testCreateTestDemo_success() { - // 准备参数 - TestDemoCreateReqVO reqVO = randomPojo(TestDemoCreateReqVO.class); - - // 调用 - Long testDemoId = testDemoService.createTestDemo(reqVO); - // 断言 - assertNotNull(testDemoId); - // 校验记录的属性是否正确 - TestDemoDO testDemo = testDemoMapper.selectById(testDemoId); - assertPojoEquals(reqVO, testDemo); - } - - @Test - public void testUpdateTestDemo_success() { - // mock 数据 - TestDemoDO dbTestDemo = randomPojo(TestDemoDO.class); - testDemoMapper.insert(dbTestDemo);// @Sql: 先插入出一条存在的数据 - // 准备参数 - TestDemoUpdateReqVO reqVO = randomPojo(TestDemoUpdateReqVO.class, o -> { - o.setId(dbTestDemo.getId()); // 设置更新的 ID - }); - - // 调用 - testDemoService.updateTestDemo(reqVO); - // 校验是否更新正确 - TestDemoDO testDemo = testDemoMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, testDemo); - } - - @Test - public void testUpdateTestDemo_notExists() { - // 准备参数 - TestDemoUpdateReqVO reqVO = randomPojo(TestDemoUpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> testDemoService.updateTestDemo(reqVO), TEST_DEMO_NOT_EXISTS); - } - - @Test - public void testDeleteTestDemo_success() { - // mock 数据 - TestDemoDO dbTestDemo = randomPojo(TestDemoDO.class); - testDemoMapper.insert(dbTestDemo);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbTestDemo.getId(); - - // 调用 - testDemoService.deleteTestDemo(id); - // 校验数据不存在了 - assertNull(testDemoMapper.selectById(id)); - } - - @Test - public void testDeleteTestDemo_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> testDemoService.deleteTestDemo(id), TEST_DEMO_NOT_EXISTS); - } - - @Test - public void testGetTestDemoPage() { - // mock 数据 - TestDemoDO dbTestDemo = randomPojo(TestDemoDO.class, o -> { // 等会查询到 - o.setName("yshop"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setType(1); - o.setCategory(2); - o.setRemark("哈哈哈"); - o.setCreateTime(buildTime(2021, 11, 11)); - }); - testDemoMapper.insert(dbTestDemo); - // 测试 name 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setName("不匹配"))); - // 测试 status 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 type 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setType(2))); - // 测试 category 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setCategory(1))); - // 测试 remark 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setRemark("呵呵呵"))); - // 测试 createTime 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setCreateTime(buildTime(2021, 12, 12)))); - // 准备参数 - TestDemoPageReqVO reqVO = new TestDemoPageReqVO(); - reqVO.setName("yshop"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setType(1); - reqVO.setCategory(2); - reqVO.setRemark("哈哈哈"); - reqVO.setCreateTime((new LocalDateTime[]{buildTime(2021, 11, 10),buildTime(2021, 11, 12)})); - - // 调用 - PageResult pageResult = testDemoService.getTestDemoPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbTestDemo, pageResult.getList().get(0)); - } - - @Test - public void testGetTestDemoList() { - // mock 数据 - TestDemoDO dbTestDemo = randomPojo(TestDemoDO.class, o -> { // 等会查询到 - o.setName("yshop"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setType(1); - o.setCategory(2); - o.setRemark("哈哈哈"); - o.setCreateTime(buildTime(2021, 11, 11)); - }); - testDemoMapper.insert(dbTestDemo); - // 测试 name 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setName("不匹配"))); - // 测试 status 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 type 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setType(2))); - // 测试 category 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setCategory(1))); - // 测试 remark 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setRemark("呵呵呵"))); - // 测试 createTime 不匹配 - testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setCreateTime(buildTime(2021, 12, 12)))); - // 准备参数 - TestDemoExportReqVO reqVO = new TestDemoExportReqVO(); - reqVO.setName("yshop"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setType(1); - reqVO.setCategory(2); - reqVO.setRemark("哈哈哈"); - reqVO.setCreateTime((new LocalDateTime[]{buildTime(2021, 11, 10),buildTime(2021, 11, 12)})); - - // 调用 - List list = testDemoService.getTestDemoList(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbTestDemo, list.get(0)); - } - -} diff --git a/yshop-module-infra/yshop-module-infra-biz/src/test/resources/application-unit-test.yaml b/yshop-module-infra/yshop-module-infra-biz/src/test/resources/application-unit-test.yaml deleted file mode 100644 index 6561858..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/test/resources/application-unit-test.yaml +++ /dev/null @@ -1,50 +0,0 @@ -spring: - main: - lazy-initialization: true # 开启懒加载,加快速度 - banner-mode: off # 单元测试,禁用 Banner - ---- #################### 数据库相关配置 #################### - -spring: - # 数据源配置项 - datasource: - name: yshop-pro - url: jdbc:h2:mem:testdb;MODE=MYSQL;DATABASE_TO_UPPER=false;NON_KEYWORDS=value; # MODE 使用 MySQL 模式;DATABASE_TO_UPPER 配置表和字段使用小写 - driver-class-name: org.h2.Driver - username: sa - password: - druid: - async-init: true # 单元测试,异步初始化 Druid 连接池,提升启动速度 - initial-size: 1 # 单元测试,配置为 1,提升启动速度 - sql: - init: - schema-locations: classpath:/sql/create_tables.sql - - # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 - redis: - host: 127.0.0.1 # 地址 - port: 16379 # 端口(单元测试,使用 16379 端口) - database: 0 # 数据库索引 - -mybatis-plus: - lazy-initialization: true # 单元测试,设置 MyBatis Mapper 延迟加载,加速每个单元测试 - type-aliases-package: ${yshop.info.base-package}.module.*.dal.dataobject - ---- #################### 定时任务相关配置 #################### - ---- #################### 配置中心相关配置 #################### - ---- #################### 服务保障相关配置 #################### - -# Lock4j 配置项(单元测试,禁用 Lock4j) - -# Resilience4j 配置项 - ---- #################### 监控相关配置 #################### - ---- #################### yshop相关配置 #################### - -# yshop配置项,设置当前项目所有自定义的配置 -yshop: - info: - base-package: co.yixiang.yshop diff --git a/yshop-module-infra/yshop-module-infra-biz/src/test/resources/logback.xml b/yshop-module-infra/yshop-module-infra-biz/src/test/resources/logback.xml deleted file mode 100644 index daf756b..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/test/resources/logback.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/yshop-module-infra/yshop-module-infra-biz/src/test/resources/sql/clean.sql b/yshop-module-infra/yshop-module-infra-biz/src/test/resources/sql/clean.sql deleted file mode 100644 index 3dc20f7..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/test/resources/sql/clean.sql +++ /dev/null @@ -1,10 +0,0 @@ -DELETE FROM "infra_config"; -DELETE FROM "infra_file_config"; -DELETE FROM "infra_file"; -DELETE FROM "infra_job"; -DELETE FROM "infra_job_log"; -DELETE FROM "infra_api_access_log"; -DELETE FROM "infra_api_error_log"; -DELETE FROM "infra_file_config"; -DELETE FROM "infra_test_demo"; -DELETE FROM "infra_data_source_config"; diff --git a/yshop-module-infra/yshop-module-infra-biz/src/test/resources/sql/create_tables.sql b/yshop-module-infra/yshop-module-infra-biz/src/test/resources/sql/create_tables.sql deleted file mode 100644 index e076ca8..0000000 --- a/yshop-module-infra/yshop-module-infra-biz/src/test/resources/sql/create_tables.sql +++ /dev/null @@ -1,172 +0,0 @@ - -CREATE TABLE IF NOT EXISTS "infra_config" ( - "id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '编号', - "category" varchar(50) NOT NULL, - "type" tinyint NOT NULL, - "name" varchar(100) NOT NULL DEFAULT '' COMMENT '名字', - "config_key" varchar(100) NOT NULL DEFAULT '', - "value" varchar(500) NOT NULL DEFAULT '', - "visible" bit NOT NULL, - "remark" varchar(500) DEFAULT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, - PRIMARY KEY ("id") -) COMMENT '参数配置表'; - -CREATE TABLE IF NOT EXISTS "infra_file_config" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar(63) NOT NULL, - "storage" tinyint NOT NULL, - "remark" varchar(255), - "master" bit(1) NOT NULL, - "config" varchar(4096) NOT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, - PRIMARY KEY ("id") -) COMMENT '文件配置表'; - -CREATE TABLE IF NOT EXISTS "infra_file" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "config_id" bigint NOT NULL, - "name" varchar(256), - "path" varchar(512), - "url" varchar(1024), - "type" varchar(63) DEFAULT NULL, - "size" bigint NOT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, - "tenant_id" bigint not null default '0', - PRIMARY KEY ("id") -) COMMENT '文件表'; - -CREATE TABLE IF NOT EXISTS "infra_job" ( - "id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '任务编号', - "name" varchar(32) NOT NULL COMMENT '任务名称', - "status" tinyint(4) NOT NULL COMMENT '任务状态', - "handler_name" varchar(64) NOT NULL COMMENT '处理器的名字', - "handler_param" varchar(255) DEFAULT NULL COMMENT '处理器的参数', - "cron_expression" varchar(32) NOT NULL COMMENT 'CRON 表达式', - "retry_count" int(11) NOT NULL DEFAULT '0' COMMENT '重试次数', - "retry_interval" int(11) NOT NULL DEFAULT '0' COMMENT '重试间隔', - "monitor_timeout" int(11) NOT NULL DEFAULT '0' COMMENT '监控超时时间', - "creator" varchar(64) DEFAULT '' COMMENT '创建者', - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - "updater" varchar(64) DEFAULT '' COMMENT '更新者', - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - "deleted" bit NOT NULL DEFAULT FALSE COMMENT '是否删除', - PRIMARY KEY ("id") -) COMMENT='定时任务表'; - -CREATE TABLE IF NOT EXISTS "infra_job_log" ( - "id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '日志编号', - "job_id" bigint(20) NOT NULL COMMENT '任务编号', - "handler_name" varchar(64) NOT NULL COMMENT '处理器的名字', - "handler_param" varchar(255) DEFAULT NULL COMMENT '处理器的参数', - "execute_index" tinyint(4) NOT NULL DEFAULT '1' COMMENT '第几次执行', - "begin_time" datetime NOT NULL COMMENT '开始执行时间', - "end_time" datetime DEFAULT NULL COMMENT '结束执行时间', - "duration" int(11) DEFAULT NULL COMMENT '执行时长', - "status" tinyint(4) NOT NULL COMMENT '任务状态', - "result" varchar(4000) DEFAULT '' COMMENT '结果数据', - "creator" varchar(64) DEFAULT '' COMMENT '创建者', - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - "updater" varchar(64) DEFAULT '' COMMENT '更新者', - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - "deleted" bit(1) NOT NULL DEFAULT FALSE COMMENT '是否删除', - PRIMARY KEY ("id") -)COMMENT='定时任务日志表'; - -CREATE TABLE IF NOT EXISTS "infra_api_access_log" ( - "id" bigint not null GENERATED BY DEFAULT AS IDENTITY, - "trace_id" varchar(64) not null default '', - "user_id" bigint not null default '0', - "user_type" tinyint not null default '0', - "application_name" varchar(50) not null, - "request_method" varchar(16) not null default '', - "request_url" varchar(255) not null default '', - "request_params" varchar(8000) not null default '', - "user_ip" varchar(50) not null, - "user_agent" varchar(512) not null, - "begin_time" timestamp not null, - "end_time" timestamp not null, - "duration" integer not null, - "result_code" integer not null default '0', - "result_msg" varchar(512) default '', - "creator" varchar(64) default '', - "create_time" timestamp not null default current_timestamp, - "updater" varchar(64) default '', - "update_time" timestamp not null default current_timestamp, - "deleted" bit not null default false, - "tenant_id" bigint not null default '0', - primary key ("id") - ) COMMENT 'API 访问日志表'; - -CREATE TABLE IF NOT EXISTS "infra_api_error_log" ( - "id" bigint not null GENERATED BY DEFAULT AS IDENTITY, - "trace_id" varchar(64) not null, - "user_id" bigint not null default '0', - "user_type" tinyint not null default '0', - "application_name" varchar(50) not null, - "request_method" varchar(16) not null, - "request_url" varchar(255) not null, - "request_params" varchar(8000) not null, - "user_ip" varchar(50) not null, - "user_agent" varchar(512) not null, - "exception_time" timestamp not null, - "exception_name" varchar(128) not null default '', - "exception_message" clob not null, - "exception_root_cause_message" clob not null, - "exception_stack_trace" clob not null, - "exception_class_name" varchar(512) not null, - "exception_file_name" varchar(512) not null, - "exception_method_name" varchar(512) not null, - "exception_line_number" integer not null, - "process_status" tinyint not null, - "process_time" timestamp default null, - "process_user_id" bigint default '0', - "creator" varchar(64) default '', - "create_time" timestamp not null default current_timestamp, - "updater" varchar(64) default '', - "update_time" timestamp not null default current_timestamp, - "deleted" bit not null default false, - "tenant_id" bigint not null default '0', - primary key ("id") -) COMMENT '系统异常日志'; - -CREATE TABLE IF NOT EXISTS "infra_test_demo" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar(100) NOT NULL, - "status" tinyint NOT NULL, - "type" tinyint NOT NULL, - "category" tinyint NOT NULL, - "remark" varchar(500), - "creator" varchar(64) DEFAULT '''', - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '''', - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, - PRIMARY KEY ("id") -) COMMENT '字典类型表'; - -CREATE TABLE IF NOT EXISTS "infra_data_source_config" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar(100) NOT NULL, - "url" varchar(1024) NOT NULL, - "username" varchar(255) NOT NULL, - "password" varchar(255) NOT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, - PRIMARY KEY ("id") -) COMMENT '数据源配置表'; diff --git a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/service/storecart/AppStoreCartServiceImpl.java b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/service/storecart/AppStoreCartServiceImpl.java index 8748e35..cbee8f0 100644 --- a/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/service/storecart/AppStoreCartServiceImpl.java +++ b/yshop-module-mall/yshop-module-cart-biz/src/main/java/co/yixiang/yshop/module/cart/service/storecart/AppStoreCartServiceImpl.java @@ -1,5 +1,6 @@ package co.yixiang.yshop.module.cart.service.storecart; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import co.yixiang.yshop.framework.common.constant.ShopConstants; @@ -316,15 +317,8 @@ public class AppStoreCartServiceImpl extends ServiceImpl cartGroup = getUserProductCartList(uid, cartIds, ShopConstants.YSHOP_ONE_NUM); List cartInfo = (List) cartGroup.get("valid"); List cartCouponDtoList = new ArrayList<>(); - Map> cartInfoMap = - cartInfo.stream().collect(Collectors.groupingBy(AppStoreCartQueryVo::getProductId)); - for (List queryVos : cartInfoMap.values()) { - BigDecimal amount = BigDecimal.ZERO; - for (AppStoreCartQueryVo appStoreCartQueryVo : queryVos){ - amount = amount.add(appStoreCartQueryVo.getTruePrice() - .multiply(BigDecimal.valueOf(appStoreCartQueryVo.getCartNum()))); - } - cartCouponDtoList.add(CartCouponDto.builder().productId(queryVos.get(0).getProductId()).price(amount).build()); + for (AppStoreCartQueryVo vo : cartInfo) { + cartCouponDtoList.add(new CartCouponDto(vo.getProductId(), vo.getProductAttrUnique(), NumberUtil.mul(vo.getTruePrice(), vo.getCartNum()))); } return couponRelationService.searchCartCoupon(cartCouponDtoList, null); } diff --git a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/OrderStatusEnum.java b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/OrderStatusEnum.java index a90f1d7..8ca8944 100644 --- a/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/OrderStatusEnum.java +++ b/yshop-module-mall/yshop-module-order-api/src/main/java/co/yixiang/yshop/module/order/enums/OrderStatusEnum.java @@ -20,7 +20,7 @@ public enum OrderStatusEnum { STATUS_ALL(-1,"全部订单"), STATUS_WAIT_PAY(0,"未支付"), - STATUS_WAIT_SEND(1,"待发货"), + STATUS_WAIT_SEND(1,"未发货"), STATUS_WAIT_RECEIVED(2,"待收货"), STATUS_WAIT_EVALUATE(3,"待评价"), STATUS_FINISH(4,"已完成"), diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/vo/StoreAfterSalesBaseVO.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/vo/StoreAfterSalesBaseVO.java index a5c4659..57c8275 100644 --- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/vo/StoreAfterSalesBaseVO.java +++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/vo/StoreAfterSalesBaseVO.java @@ -1,5 +1,6 @@ package co.yixiang.yshop.module.order.controller.admin.storeaftersales.vo; +import co.yixiang.yshop.framework.desensitize.core.slider.annotation.MobileDesensitize; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.math.BigDecimal; @@ -50,6 +51,7 @@ public class StoreAfterSalesBaseVO { @Schema(description = "商家收货人") private String consignee; + @MobileDesensitize @Schema(description = "商家手机号") private String phoneNumber; diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/vo/StoreAfterSalesRespVO.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/vo/StoreAfterSalesRespVO.java index abf9357..598ef44 100644 --- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/vo/StoreAfterSalesRespVO.java +++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/admin/storeaftersales/vo/StoreAfterSalesRespVO.java @@ -29,4 +29,8 @@ public class StoreAfterSalesRespVO extends StoreAfterSalesBaseVO { @Schema(description = "退货凭证", required = true) private String returnVoucher; + + @Schema(description = "退货说明", required = true, example = "0") + private String returnPolicy; + } diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/AppOrderAfterSalesController.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/AppOrderAfterSalesController.java index c04646a..5aa43cf 100644 --- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/AppOrderAfterSalesController.java +++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/AppOrderAfterSalesController.java @@ -47,8 +47,8 @@ public class AppOrderAfterSalesController { @GetMapping("/applyForAfterSales/{key}") @Operation(summary = "查询订单详情") @Parameter(name = "key", description = "唯一的uni值或者订单号", required = true, example = "10") - public CommonResult> checkOrderDetails(@PathVariable String key) { - return success(appStoreAfterSalesService.checkOrderDetails(key)); + public CommonResult> checkOrderDetails(@PathVariable String key, @RequestParam(value = "goods", defaultValue = "") String goods) { + return success(appStoreAfterSalesService.checkOrderDetails(key, goods)); } @PreAuthenticated diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreOrderAfterSalesDetailVo.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreOrderAfterSalesDetailVo.java index c614445..6a96a70 100644 --- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreOrderAfterSalesDetailVo.java +++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreOrderAfterSalesDetailVo.java @@ -100,4 +100,7 @@ public class AppStoreOrderAfterSalesDetailVo implements Serializable { @Schema(description = "收货状态:0、未收到,1、已收到", required = true, example = "0") private Integer receivingStatus; + /** 剩余自动确认时间 */ + private String remainTime; + } diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreOrderCartInfoVo.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreOrderCartInfoVo.java index c3d8950..9aea6ad 100644 --- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreOrderCartInfoVo.java +++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/afterorder/vo/AppStoreOrderCartInfoVo.java @@ -50,4 +50,12 @@ public class AppStoreOrderCartInfoVo { /** 售后状态-0正常1用户取消2商家拒绝 */ private Integer salesState; + /** 优惠金额 */ + private BigDecimal couponPrice; + + /** 邮费价格 */ + private BigDecimal postagePrice; + + /** 订单状态 */ + private Integer status; } diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/order/vo/AppStoreOrderQueryVo.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/order/vo/AppStoreOrderQueryVo.java index e4a01cc..354cd2d 100644 --- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/order/vo/AppStoreOrderQueryVo.java +++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/controller/app/order/vo/AppStoreOrderQueryVo.java @@ -174,6 +174,11 @@ public class AppStoreOrderQueryVo implements Serializable { @Schema(description = "发货时间" ) private LocalDateTime deliveryTime; + @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @Schema(description = "更新时间") + private LocalDateTime updateTime; + + /** * 支付信息 */ diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/dal/dataobject/storeorder/StoreOrderDO.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/dal/dataobject/storeorder/StoreOrderDO.java index 380efa4..7cfd60f 100644 --- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/dal/dataobject/storeorder/StoreOrderDO.java +++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/dal/dataobject/storeorder/StoreOrderDO.java @@ -238,4 +238,9 @@ public class StoreOrderDO extends BaseDO { */ private String payInfo; + /** + * 订单地址在城市id + */ + private Integer cityId; + } diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/dal/dataobject/storeordercartinfo/StoreOrderCartInfoDO.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/dal/dataobject/storeordercartinfo/StoreOrderCartInfoDO.java index a96f705..03b87d7 100644 --- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/dal/dataobject/storeordercartinfo/StoreOrderCartInfoDO.java +++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/dal/dataobject/storeordercartinfo/StoreOrderCartInfoDO.java @@ -1,6 +1,8 @@ package co.yixiang.yshop.module.order.dal.dataobject.storeordercartinfo; import lombok.*; + +import java.math.BigDecimal; import java.util.*; import com.baomidou.mybatisplus.annotation.*; import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; @@ -54,4 +56,13 @@ public class StoreOrderCartInfoDO { */ private Integer isAfterSales; + /** + * 优惠金额 + */ + private BigDecimal couponPrice; + + /** + * 邮费金额 + */ + private BigDecimal postagePrice; } diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/dal/redis/RedisKeyConstants.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/dal/redis/RedisKeyConstants.java index d60fd8e..c0f32fc 100644 --- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/dal/redis/RedisKeyConstants.java +++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/dal/redis/RedisKeyConstants.java @@ -29,5 +29,9 @@ public interface RedisKeyConstants { "yshop_admin_order_count_cache:", // 参数为访问uid STRING, CacheDto.class, RedisKeyDefine.TimeoutTypeEnum.FOREVER); + RedisKeyDefine YSHOP_ORDER_STATUS_KEY = new RedisKeyDefine("订单售后前装态", + "yshop_order_status:%s", // 参数为访问uid+key + STRING, Integer.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); + } diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/dal/redis/order/AsyncOrderRedisDAO.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/dal/redis/order/AsyncOrderRedisDAO.java index d740fe4..e035ac0 100644 --- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/dal/redis/order/AsyncOrderRedisDAO.java +++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/dal/redis/order/AsyncOrderRedisDAO.java @@ -1,17 +1,12 @@ package co.yixiang.yshop.module.order.dal.redis.order; -import cn.hutool.core.util.IdUtil; -import co.yixiang.yshop.framework.common.constant.ShopConstants; import co.yixiang.yshop.framework.common.util.json.JsonUtils; import co.yixiang.yshop.module.member.controller.app.user.vo.AppUserOrderCountVo; -import co.yixiang.yshop.module.order.service.storeorder.dto.CacheDto; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Repository; import javax.annotation.Resource; -import java.util.concurrent.TimeUnit; -import static co.yixiang.yshop.module.order.dal.redis.RedisKeyConstants.YSHOP_ORDER_CACHE_KEY; import static co.yixiang.yshop.module.order.dal.redis.RedisKeyConstants.YSHOP_ORDER_COUNT_CACHE_KEY; /** diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/handle/RedisDelayHandle.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/handle/RedisDelayHandle.java index 795c7ba..a5acefe 100644 --- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/handle/RedisDelayHandle.java +++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/handle/RedisDelayHandle.java @@ -4,6 +4,7 @@ import cn.hutool.core.thread.ExecutorBuilder; import cn.hutool.core.thread.ThreadFactoryBuilder; import cn.hutool.core.util.StrUtil; import co.yixiang.yshop.framework.common.constant.ShopConstants; +import co.yixiang.yshop.module.order.service.storeaftersales.StoreAfterSalesService; import co.yixiang.yshop.module.order.service.storeorder.AppStoreOrderService; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -30,13 +31,16 @@ public class RedisDelayHandle { @Resource private AppStoreOrderService appStoreOrderService; + @Resource + private StoreAfterSalesService storeAfterSalesService; + @PostConstruct public void startJobTimer() { ThreadFactory threadFactory = new ThreadFactoryBuilder().setNamePrefix("delay-job-service").build(); log.info("========延时队列开始========="); ExecutorService executorService = ExecutorBuilder.create() - .setCorePoolSize(2) + .setCorePoolSize(4) .setMaxPoolSize(10) .setKeepAliveTime(0) .setThreadFactory(threadFactory) @@ -44,6 +48,7 @@ public class RedisDelayHandle { executorService.execute(new ExecutorTaskUnPay()); executorService.execute(new ExecutorTaskUnConfirm()); + executorService.execute(new ExecutorTaskAfterSalesConfirm()); } class ExecutorTaskUnPay implements Runnable { @@ -63,7 +68,6 @@ public class RedisDelayHandle { } catch (Exception e) { log.error("延时取消订单消费失败,"+e.getMessage()); } - } } } @@ -80,13 +84,32 @@ public class RedisDelayHandle { try { unConfirmOrderId = blockingUnConfirmDeque.take(); log.info("获取到待确认收货订单id:{}", unConfirmOrderId); + if (StrUtil.isNotEmpty(unConfirmOrderId)) { + appStoreOrderService.takeOrder(unConfirmOrderId, null); + } } catch (Exception e) { log.error("延时确认收货失败,"+e.getMessage()); } - if (StrUtil.isNotEmpty(unConfirmOrderId)) { - appStoreOrderService.takeOrder(unConfirmOrderId, null); - } + } + } + } + class ExecutorTaskAfterSalesConfirm implements Runnable { + @SneakyThrows + @Override + public void run() { + RBlockingDeque blockingUnConfirmDeque = redissonClient + .getBlockingDeque(ShopConstants.REDIS_AFTERSALESORDER_UNCONFIRM); + while (true) { + log.info("======延时售后用户确认收货循环任务====="); + Long unConfirmOrderId; + try { + unConfirmOrderId = blockingUnConfirmDeque.take(); + log.info("获取到待确认售后用户收货订单id:{}", unConfirmOrderId); + storeAfterSalesService.taskAfterSalesConfirm(unConfirmOrderId); + } catch (Exception e) { + log.error("延时确认售后用户收货失败,"+e.getMessage()); + } } } } diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeaftersales/AppStoreAfterSalesService.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeaftersales/AppStoreAfterSalesService.java index 1ead30c..6b3d0ab 100644 --- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeaftersales/AppStoreAfterSalesService.java +++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeaftersales/AppStoreAfterSalesService.java @@ -29,9 +29,10 @@ public interface AppStoreAfterSalesService extends IService { /** * 查询订单详情 * @param key 订单号 + * @param goods 商品规格 * @return */ - List checkOrderDetails(String key); + List checkOrderDetails(String key, String goods); /** * 查询订单详情 diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeaftersales/AppStoreAfterSalesServiceImpl.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeaftersales/AppStoreAfterSalesServiceImpl.java index 28f87b1..7197825 100644 --- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeaftersales/AppStoreAfterSalesServiceImpl.java +++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeaftersales/AppStoreAfterSalesServiceImpl.java @@ -1,9 +1,9 @@ package co.yixiang.yshop.module.order.service.storeaftersales; -import cn.hutool.core.util.DesensitizedUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import co.yixiang.yshop.framework.common.constant.ShopConstants; import co.yixiang.yshop.framework.common.enums.OrderInfoEnum; import co.yixiang.yshop.framework.common.enums.ShopCommonEnum; import co.yixiang.yshop.module.order.controller.app.afterorder.param.AppProsuctParam; @@ -26,20 +26,25 @@ import co.yixiang.yshop.module.order.dal.mysql.storeorder.StoreOrderMapper; import co.yixiang.yshop.module.order.dal.mysql.storeordercartinfo.StoreOrderCartInfoMapper; import co.yixiang.yshop.module.order.dal.mysql.storeorderstatus.StoreOrderStatusMapper; import co.yixiang.yshop.module.order.dal.redis.ofterorder.AfterOrderRedisDAO; -import co.yixiang.yshop.module.order.enums.AfterChangeTypeEnum; -import co.yixiang.yshop.module.order.enums.AfterSalesStatusEnum; -import co.yixiang.yshop.module.order.enums.AfterStatusEnum; -import co.yixiang.yshop.module.order.enums.OrderLogEnum; +import co.yixiang.yshop.module.order.enums.*; import co.yixiang.yshop.module.order.service.storeaftersalesstatus.StoreAfterSalesStatusService; +import co.yixiang.yshop.module.order.service.storeorder.AppStoreOrderServiceImpl; +import co.yixiang.yshop.module.order.service.storeorderstatus.StoreOrderStatusService; import co.yixiang.yshop.module.product.controller.app.cart.vo.AppStoreCartQueryVo; +import co.yixiang.yshop.module.product.service.productcouponrelation.AppCouponRelationService; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.redisson.api.RBlockingDeque; +import org.redisson.api.RDelayedQueue; +import org.redisson.api.RedissonClient; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -48,9 +53,15 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.*; +import java.time.ZoneOffset; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; +import static co.yixiang.yshop.framework.common.enums.OrderInfoEnum.STATUS_DEFAULT; +import static co.yixiang.yshop.framework.common.enums.OrderInfoEnum.UNABLE_AFTER_SALES; import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; import static co.yixiang.yshop.module.order.enums.AfterSalesStatusEnum.USER_CANCELLED; import static co.yixiang.yshop.module.order.enums.ErrorCodeConstants.*; @@ -62,6 +73,7 @@ import static co.yixiang.yshop.module.order.enums.OrderLogEnum.APPLY_AFTER_SALES * @author yshop */ @Service +@Slf4j @Validated public class AppStoreAfterSalesServiceImpl extends ServiceImpl implements AppStoreAfterSalesService { @Resource @@ -78,6 +90,11 @@ public class AppStoreAfterSalesServiceImpl extends ServiceImpl yxStoreOrderCartInfos = storeOrderCartInfoMapper.selectList(Wrappers.lambdaQuery().eq(StoreOrderCartInfoDO::getOid, yxStoreOrder.getId())); List insertAfterSalesItems = new ArrayList<>(); - // 所有商品规格合集 - Set allProductAttrUniqueSet = new HashSet<>(); + // 发货标识 + boolean sendFlag = STATUS_DEFAULT.getValue().equals(yxStoreOrder.getStatus()); for (StoreOrderCartInfoDO yxStoreOrderCartInfo : yxStoreOrderCartInfos) { AppStoreCartQueryVo cartInfo = JSONObject.parseObject(yxStoreOrderCartInfo.getCartInfo(), AppStoreCartQueryVo.class); - allProductAttrUniqueSet.add(cartInfo.getProductAttrUnique()); // 过滤出对应规格的商品 AppProsuctParam productParam = storeAfterSalesParam.getProductParamList().stream() .filter(item -> cartInfo.getProductAttrUnique().equals(item.getProductAttrUnique())) .findFirst().orElse(new AppProsuctParam()); if (productParam.getProductId() != null) { - //商品优惠前总金额 + // 商品优惠前总金额 BigDecimal totalAmountOfGoods = NumberUtil.mul(cartInfo.getTruePrice(), cartInfo.getCartNum()); - - //该项商品优惠金额 - BigDecimal commodityDiscountAmount = null; - if (yxStoreOrder.getTotalPrice().compareTo(yxStoreOrder.getPayPostage()) == 0) { - commodityDiscountAmount = totalAmountOfGoods; - } else { - commodityDiscountAmount = NumberUtil.mul(NumberUtil.div(totalAmountOfGoods, NumberUtil - .sub(yxStoreOrder.getTotalPrice().add(yxStoreOrder.getCouponPrice()), - yxStoreOrder.getPayPostage())), yxStoreOrder.getCouponPrice()); + refundAmount = refundAmount.add(totalAmountOfGoods).subtract(yxStoreOrderCartInfo.getCouponPrice()); + // 未发货退运费 + if (sendFlag) { + refundAmount = refundAmount.add(yxStoreOrderCartInfo.getPostagePrice()); } - - //商品优惠后总金额 - totalPrice = NumberUtil.add(totalPrice, NumberUtil.sub(totalAmountOfGoods, commodityDiscountAmount)); - yxStoreOrderCartInfo.setIsAfterSales(0); + yxStoreOrderCartInfo.setIsAfterSales(UNABLE_AFTER_SALES.getValue()); storeOrderCartInfoMapper.updateById(yxStoreOrderCartInfo); - // 售后明细 StoreAfterSalesItemDO storeAfterSalesItem = new StoreAfterSalesItemDO(); storeAfterSalesItem.setProductId(yxStoreOrderCartInfo.getProductId()); storeAfterSalesItem.setCartInfo(yxStoreOrderCartInfo.getCartInfo()); insertAfterSalesItems.add(storeAfterSalesItem); - } } - // 退货商品规格合集 - Set returnProductAttrUniqueSet = - storeAfterSalesParam.getProductParamList().stream() - .map(AppProsuctParam::getProductAttrUnique).collect(Collectors.toSet()); - - // 全部退货且未发货退运费 - if (allProductAttrUniqueSet.equals(returnProductAttrUniqueSet) && - OrderInfoEnum.STATUS_DEFAULT.getValue().equals(yxStoreOrder.getStatus())) { - totalPrice = NumberUtil.add(totalPrice, yxStoreOrder.getPayPostage()); - } - //更新订单状态 yxStoreOrder.setStatus(OrderInfoEnum.STATUS_APPLY_REFUND.getValue()); yxStoreOrder.setRefundStatus(OrderInfoEnum.REFUND_STATUS_BEING_REFUNDED.getValue()); @@ -155,42 +150,33 @@ public class AppStoreAfterSalesServiceImpl extends ServiceImpl { - res.setStoreAfterSalesId(storeAfterSales.getId()); - }); + insertAfterSalesItems.forEach(res -> res.setStoreAfterSalesId(storeAfterSales.getId())); // 售后明细批量保存 storeAfterSalesItemMapper.insertBatch(insertAfterSalesItems); - /*for (AppProsuctParam productParam : storeAfterSalesParam.getProductParamList()) { - StoreOrderCartInfoDO yxStoreOrderCartInfo = - yxStoreOrderCartInfos.stream().filter(item -> productParam.getProductId().equals(item.getProductId())) - .findFirst().orElse(new StoreOrderCartInfoDO()); - StoreAfterSalesItemDO storeAfterSalesItem = new StoreAfterSalesItemDO(); - storeAfterSalesItem.setStoreAfterSalesId(storeAfterSales.getId()); - storeAfterSalesItem.setProductId(yxStoreOrderCartInfo.getProductId()); - storeAfterSalesItem.setCartInfo(yxStoreOrderCartInfo.getCartInfo()); - storeAfterSalesItemMapper.insert(storeAfterSalesItem); - }*/ - StoreOrderStatusDO orderStatusDO = StoreOrderStatusDO.builder() - .oid(yxStoreOrder.getId()).changeType(APPLY_AFTER_SALES.getValue()) - .changeMessage(APPLY_AFTER_SALES.getDesc()).changeTime(LocalDateTime.now()).build(); // 记录订单操作 - - storeOrderStatusMapper.insert(orderStatusDO); - //操作记录 + storeOrderStatusService.create(yxStoreOrder.getUid(), yxStoreOrder.getId(), + APPLY_AFTER_SALES.getValue(), APPLY_AFTER_SALES.getDesc()); + // 售后操作记录 storeAfterSalesStatusService.create(storeAfterSales.getUserId(), storeAfterSales.getId(), AfterChangeTypeEnum.CREATE_AFTER_SALES.getValue(), AfterChangeTypeEnum.CREATE_AFTER_SALES.getDesc()); + + //加入自动收货延迟队列 + RBlockingDeque blockingDeque = redissonClient.getBlockingDeque(ShopConstants.REDIS_AFTERSALESORDER_UNCONFIRM); + RDelayedQueue delayedQueue = redissonClient.getDelayedQueue(blockingDeque); + delayedQueue.offer(storeAfterSales.getId(), ShopConstants.AFTER_SALES_ORDER_OUTTIME_UNCONFIRM, TimeUnit.DAYS); + String s = ShopConstants.AFTER_SALES_ORDER_OUTTIME_UNCONFIRM + "天"; + log.info("添加延时队列成功 ,延迟时间:" + s); return storeAfterSales.getId(); } @@ -227,34 +213,38 @@ public class AppStoreAfterSalesServiceImpl extends ServiceImpl() .eq(StoreOrderStatusDO::getOid, storeOrderDO.getId()) .eq(StoreOrderStatusDO::getChangeType, OrderLogEnum.DELIVERY_GOODS.getValue())); - + //计算创建售后到自动确认时间 + int offset = Integer.parseInt(String.valueOf(ShopConstants.ORDER_OUTTIME_UNCONFIRM)); + log.info("time" + afterSales.getCreateTime()); + LocalDateTime time = afterSales.getCreateTime().plusDays(offset); + long remainTime = afterSales.getState().equals(AfterStatusEnum.STATE_0.getValue()) ? + time.toEpochSecond(ZoneOffset.ofHours(8)) * 1000 - System.currentTimeMillis() : 0; // 数据整合 - AppStoreOrderAfterSalesDetailVo result = - AppStoreOrderAfterSalesDetailVo.builder() - // 售后信息 - .id(afterSales.getId()) - .refundAmount(afterSales.getRefundAmount()).reasons(afterSales.getReasons()) - .explains(afterSales.getExplains()).explainImg(afterSales.getExplainImg()) - .state(afterSales.getState()).salesState(afterSales.getSalesState()) - .realName(afterSales.getConsignee()) - .userPhone(afterSales.getPhoneNumber()) - .userAddress(afterSales.getAddress()) - .receivingStatus(afterSales.getReceivingStatus()) - .serviceType(afterSales.getServiceType()) - // 订单信息 - .orderId(storeOrderDO.getOrderId()).uid(storeOrderDO.getUid()) - .createTime(storeOrderDO.getCreateTime()) - .payPrice(storeOrderDO.getPayPrice()).totalPrice(totalPrice) - .totalPostage(storeOrderDO.getTotalPostage()).deductionPrice(storeOrderDO.getDeductionPrice()) - .deliveryTime(orderStatusDO == null ? null : orderStatusDO.getChangeTime()) - .payTime(storeOrderDO.getPayTime()) - .couponPrice(storeOrderDO.getCouponPrice()) - // 商品数据 - .cartInfo(cartInfo) - // 物流数据 - .deliverySn(afterSales.getDeliverySn()).deliveryName(afterSales.getDeliveryName()) - .build(); - return result; + return AppStoreOrderAfterSalesDetailVo.builder() + // 售后信息 + .id(afterSales.getId()) + .refundAmount(afterSales.getRefundAmount()).reasons(afterSales.getReasons()) + .explains(afterSales.getExplains()).explainImg(afterSales.getExplainImg()) + .state(afterSales.getState()).salesState(afterSales.getSalesState()) + .realName(afterSales.getConsignee()) + .userPhone(afterSales.getPhoneNumber()) + .userAddress(afterSales.getAddress()) + .receivingStatus(afterSales.getReceivingStatus()) + .serviceType(afterSales.getServiceType()) + // 订单信息 + .orderId(storeOrderDO.getOrderId()).uid(storeOrderDO.getUid()) + .createTime(storeOrderDO.getCreateTime()) + .payPrice(storeOrderDO.getPayPrice()).totalPrice(totalPrice) + .totalPostage(storeOrderDO.getTotalPostage()).deductionPrice(storeOrderDO.getDeductionPrice()) + .deliveryTime(orderStatusDO == null ? null : orderStatusDO.getChangeTime()) + .payTime(storeOrderDO.getPayTime()) + .couponPrice(storeOrderDO.getCouponPrice()) + // 商品数据 + .cartInfo(cartInfo) + // 物流数据 + .deliverySn(afterSales.getDeliverySn()).deliveryName(afterSales.getDeliveryName()) + .remainTime(String.valueOf(remainTime)) + .build(); } /** @@ -264,7 +254,7 @@ public class AppStoreAfterSalesServiceImpl extends ServiceImpl checkOrderDetails(String key) { + public List checkOrderDetails(String key, String goods) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.and(i -> i.eq(StoreOrderCartInfoDO::getOrderId, key) .or().eq(StoreOrderCartInfoDO::getUnique, key).or() @@ -273,41 +263,40 @@ public class AppStoreAfterSalesServiceImpl extends ServiceImpllambdaQuery().eq(StoreOrderDO::getOrderId, yxStoreOrderCartInfos.get(0).getOrderId())); - //查询 售后信息 -// StoreAfterSalesDO storeAfterSales = this.baseMapper.selectOne(Wrappers.lambdaQuery() -// .eq(StoreAfterSalesDO::getOrderCode, yxStoreOrder.getOrderId())); List yxStoreOrderCartInfoVos = new ArrayList<>(); + List productAttrUniques = null; + if (StringUtils.isNotBlank(goods)) { + productAttrUniques = Arrays.asList(goods.split(",")); + } for (StoreOrderCartInfoDO yxStoreOrderCartInfo : yxStoreOrderCartInfos) { + AppStoreCartQueryVo cartInfo = JSONObject.parseObject(yxStoreOrderCartInfo.getCartInfo(), AppStoreCartQueryVo.class); + if (CollectionUtils.isNotEmpty(productAttrUniques) && !productAttrUniques.contains(cartInfo.getProductAttrUnique())) { + continue; + } AppStoreOrderCartInfoVo yxStoreOrderCartInfoVo = new AppStoreOrderCartInfoVo(); yxStoreOrderCartInfoVo.setId(yxStoreOrderCartInfo.getId()); yxStoreOrderCartInfoVo.setOid(yxStoreOrderCartInfo.getOid()); yxStoreOrderCartInfoVo.setOrderId(yxStoreOrderCartInfo.getOrderId()); yxStoreOrderCartInfoVo.setCartId(yxStoreOrderCartInfo.getCartId()); yxStoreOrderCartInfoVo.setProductId(yxStoreOrderCartInfo.getProductId()); - AppStoreCartQueryVo cartInfo = JSONObject.parseObject(yxStoreOrderCartInfo.getCartInfo(), AppStoreCartQueryVo.class); + yxStoreOrderCartInfoVo.setCouponPrice(yxStoreOrderCartInfo.getCouponPrice()); + yxStoreOrderCartInfoVo.setPostagePrice(yxStoreOrderCartInfo.getPostagePrice()); yxStoreOrderCartInfoVo.setCartInfo(cartInfo); yxStoreOrderCartInfoVo.setUnique(yxStoreOrderCartInfo.getUnique()); yxStoreOrderCartInfoVo.setIsAfterSales(yxStoreOrderCartInfo.getIsAfterSales() == null ? 0 : yxStoreOrderCartInfo.getIsAfterSales()); - - //商品优惠前总金额 + // 商品优惠前总金额 BigDecimal totalAmountOfGoods = NumberUtil.mul(cartInfo.getTruePrice(), cartInfo.getCartNum()); - //商品优惠总金额 - // BigDecimal commodityDiscountAmount = BigDecimal.ZERO; - // if() - BigDecimal commodityDiscountAmount = null; - // 运费金额等于商品总价 - if (yxStoreOrder.getTotalPrice().compareTo(yxStoreOrder.getPayPostage()) == 0) { - commodityDiscountAmount = totalAmountOfGoods; - } else { - commodityDiscountAmount = NumberUtil.mul(NumberUtil.div(totalAmountOfGoods, NumberUtil - .sub(yxStoreOrder.getTotalPrice().add(yxStoreOrder.getCouponPrice()), - yxStoreOrder.getPayPostage())), yxStoreOrder.getCouponPrice()); + // 优惠后金额 + BigDecimal couponAfterAmount = NumberUtil.sub(totalAmountOfGoods, yxStoreOrderCartInfo.getCouponPrice()); + BigDecimal postagePrice = BigDecimal.ZERO; + // 未发货退运费 + if (STATUS_DEFAULT.getValue().equals(yxStoreOrder.getStatus())) { + postagePrice = yxStoreOrderCartInfo.getPostagePrice(); } - - yxStoreOrderCartInfoVo.setRefundablePrice(NumberUtil.sub(totalAmountOfGoods, commodityDiscountAmount)); - - //yxStoreOrderCartInfoVo.setReasons(storeAfterSales.getReasons()); + yxStoreOrderCartInfoVo.setStatus(yxStoreOrder.getStatus()); + yxStoreOrderCartInfoVo.setRefundablePrice(NumberUtil.add(couponAfterAmount, postagePrice)); yxStoreOrderCartInfoVos.add(yxStoreOrderCartInfoVo); } @@ -320,7 +309,7 @@ public class AppStoreAfterSalesServiceImpl extends ServiceImpllambdaQuery().eq(StoreOrderDO::getOrderId, key)); String o = afterOrderRedisDAO.get(key, uid); yxStoreOrder.setStatus(o == null ? 0 : Integer.parseInt(o)); - yxStoreOrder.setRefundStatus(OrderInfoEnum.STATUS_DEFAULT.getValue()); + yxStoreOrder.setRefundStatus(STATUS_DEFAULT.getValue()); storeOrderMapper.updateById(yxStoreOrder); List yxStoreOrderCartInfos = storeOrderCartInfoMapper.selectList(Wrappers.lambdaQuery() @@ -461,7 +450,7 @@ public class AppStoreAfterSalesServiceImpl extends ServiceImpllambdaQuery().eq(StoreOrderDO::getOrderId, storeAfterSales.getOrderCode())); - String o = afterOrderRedisDAO.get(storeAfterSales.getOrderCode(),storeAfterSales.getUserId()); + String o = afterOrderRedisDAO.get(yxStoreOrder.getOrderId(), yxStoreOrder.getUid()); yxStoreOrder.setStatus(o == null ? 0 : Integer.parseInt(o)); - yxStoreOrder.setRefundStatus(OrderInfoEnum.STATUS_DEFAULT.getValue()); + // 退款状态重置 + yxStoreOrder.setRefundStatus(OrderInfoEnum.REFUND_STATUS_NORMAL.getValue()); storeOrderMapper.updateById(yxStoreOrder); - afterOrderRedisDAO.delete(storeAfterSales.getOrderCode(),storeAfterSales.getUserId()); + // 订单详情重置是否售后字段 + List yxStoreOrderCartInfos = storeOrderCartInfoMapper.selectList(Wrappers.lambdaQuery() + .eq(StoreOrderCartInfoDO::getOid, yxStoreOrder.getId())); + for (StoreOrderCartInfoDO yxStoreOrderCartInfo : yxStoreOrderCartInfos) { + yxStoreOrderCartInfo.setIsAfterSales(ShopCommonEnum.YES.getValue()); + storeOrderCartInfoMapper.updateById(yxStoreOrderCartInfo); + } } storeAfterSalesMapper.updateById(storeAfterSales); } diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeaftersalesstatus/StoreAfterSalesStatusServiceImpl.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeaftersalesstatus/StoreAfterSalesStatusServiceImpl.java index af4d8a5..e1242b5 100644 --- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeaftersalesstatus/StoreAfterSalesStatusServiceImpl.java +++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeaftersalesstatus/StoreAfterSalesStatusServiceImpl.java @@ -3,6 +3,7 @@ package co.yixiang.yshop.module.order.service.storeaftersalesstatus; import co.yixiang.yshop.module.order.dal.dataobject.storeaftersalesstatus.StoreAfterSalesStatusDO; import co.yixiang.yshop.module.order.dal.mysql.storeaftersalesstatus.StoreAfterSalesStatusMapper; import co.yixiang.yshop.module.order.service.storeorder.AsyncStoreOrderService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -24,8 +25,8 @@ import static co.yixiang.yshop.framework.security.core.util.SecurityFrameworkUti public class StoreAfterSalesStatusServiceImpl implements StoreAfterSalesStatusService { -// @Resource -// private AsyncStoreOrderService asyncStoreOrderService; + @Autowired + private AsyncStoreOrderService asyncStoreOrderService; @Resource private StoreAfterSalesStatusMapper storeAfterSalesStatusMapper; @@ -49,7 +50,7 @@ public class StoreAfterSalesStatusServiceImpl implements StoreAfterSalesStatusSe storeAfterSalesStatusMapper.insert(storeAfterSalesStatus); //异步统计 - // asyncStoreOrderService.orderData(uid); + asyncStoreOrderService.orderData(uid); } } diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeorder/AppStoreOrderServiceImpl.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeorder/AppStoreOrderServiceImpl.java index 31227e9..d63e407 100644 --- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeorder/AppStoreOrderServiceImpl.java +++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeorder/AppStoreOrderServiceImpl.java @@ -6,7 +6,6 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import co.yixiang.yshop.framework.common.constant.ShopConstants; import co.yixiang.yshop.framework.common.enums.OrderInfoEnum; -import co.yixiang.yshop.framework.common.enums.ShopCommonEnum; import co.yixiang.yshop.framework.common.exception.ErrorCode; import co.yixiang.yshop.framework.common.util.json.JsonUtils; import co.yixiang.yshop.framework.common.util.servlet.ServletUtils; @@ -43,20 +42,19 @@ import co.yixiang.yshop.module.pay.PayContext; import co.yixiang.yshop.module.pay.controller.admin.merchantdetails.vo.PayParam; import co.yixiang.yshop.module.pay.dal.dataobject.merchantdetails.MerchantDetailsDO; import co.yixiang.yshop.module.pay.service.merchantdetails.MerchantDetailsService; -import co.yixiang.yshop.module.pay.strategy.weixin.service.WxPayService; import co.yixiang.yshop.module.pay.strategy.weixin.service.WxPayServiceUtils; import co.yixiang.yshop.module.pay.strategy.weixin.skd.HttpKit; import co.yixiang.yshop.module.pay.strategy.weixin.skd.PaymentApi; import co.yixiang.yshop.module.pay.strategy.weixin.skd.PaymentKit; import co.yixiang.yshop.module.pay.strategy.weixin.skd.RandomStringUtil; import co.yixiang.yshop.module.product.controller.app.cart.vo.AppStoreCartQueryVo; +import co.yixiang.yshop.module.product.controller.app.couponrelation.vo.CartCouponDetailVO; import co.yixiang.yshop.module.product.controller.app.couponrelation.vo.CartCouponVO; import co.yixiang.yshop.module.product.controller.app.product.vo.AppStoreProductRespVo; import co.yixiang.yshop.module.product.dal.dataobject.shippingtemplates.ShippingTemplatesDO; import co.yixiang.yshop.module.product.dal.dataobject.shippingtemplatesfree.ShippingTemplatesFreeDO; import co.yixiang.yshop.module.product.dal.dataobject.shippingtemplatesregion.ShippingTemplatesRegionDO; import co.yixiang.yshop.module.product.dal.dataobject.storeproductreply.StoreProductReplyDO; -import co.yixiang.yshop.module.product.service.productcoupon.ProductCouponService; import co.yixiang.yshop.module.product.service.productcouponrelation.AppCouponRelationService; import co.yixiang.yshop.module.product.service.productcouponrelation.dto.CartCouponDto; import co.yixiang.yshop.module.product.service.shippingtemplates.ShippingTemplatesService; @@ -67,6 +65,7 @@ import co.yixiang.yshop.module.product.service.storeproductreply.AppStoreProduct import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -96,6 +95,7 @@ import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.function.Function; import java.util.stream.Collectors; import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -158,6 +158,9 @@ public class AppStoreOrderServiceImpl extends ServiceImpllambdaQuery() .eq(UserAddressDO::getUid, uid) - .eq(param.getAddressId() != null, UserAddressDO::getId, param.getAddressId()) - .eq(param.getAddressId() == null, UserAddressDO::getIsDefault, ShopCommonEnum.IS_DEFAULT.getValue())); + .eq(Objects.nonNull(param.getAddressId()) && param.getAddressId() != 0, UserAddressDO::getId, param.getAddressId()) + .orderByDesc(UserAddressDO::getIsDefault).last("limit 1")); List cartInfo = (List) cartGroup.get("valid"); PriceGroupDto priceGroup = this.getOrderPriceGroup(cartInfo, userAddress, param.getCouponId()); @@ -247,7 +250,7 @@ public class AppStoreOrderServiceImpl extends ServiceImpl computedOrder(Long uid, String key, AppComputeOrderParam param) { //检查订单 - Map map = this.check(uid, key, param); + Map map = this.check(uid, key); if (OrderLogEnum.EXTEND_ORDER.getValue().equals(map.get("status"))) { return map; } @@ -281,7 +284,7 @@ public class AppStoreOrderServiceImpl extends ServiceImpl 0 ? param.getCouponId() : null); + storeOrder.setCouponId(param.getCouponId() != null && param.getCouponId().compareTo(0L) > 0 ? param.getCouponId() : null); storeOrder.setCouponPrice(computeVo.getCouponPrice()); storeOrder.setPayPrice(computeVo.getPayPrice()); storeOrder.setPayPostage(computeVo.getPayPostage()); @@ -499,21 +503,21 @@ public class AppStoreOrderServiceImpl extends ServiceImpl packageParams = new HashMap<>(); if (param.getPaytype().contains(PayTypeEnum.ALI.getValue())) { aliPay(orderInfo, param, packageParams); - updatePayInfo(orderInfo,packageParams); - }else if(param.getPaytype().contains(PayTypeEnum.WEIXIN.getValue())){ - packageParams = payContext.selectPayWay(PayTypeEnum.WEIXIN.getValue(), + updatePayInfo(orderInfo, packageParams); + } else if (param.getPaytype().contains(PayTypeEnum.WEIXIN.getValue())) { + packageParams = payContext.selectPayWay(PayTypeEnum.WEIXIN.getValue(), new PayParam(orderInfo.getOrderId(), orderInfo.getPayPrice(), userDO.getRoutineOpenid(), ServletUtils.getClientIP(), param.getPaytype(), "Yshop商城", merchantDetailsDO)); - updatePayInfo(orderInfo,packageParams); - }else if(param.getPaytype().contains(PayTypeEnum.YUE.getValue())){ - yuePay(param.getUni(),uid); + updatePayInfo(orderInfo, packageParams); + } else if (param.getPaytype().contains(PayTypeEnum.YUE.getValue())) { + yuePay(param.getUni(), uid); } // 异步统计 asyncStoreOrderService.orderData(uid); return packageParams; } - private void updatePayInfo(AppStoreOrderQueryVo orderInfo, Map packageParams){ + private void updatePayInfo(AppStoreOrderQueryVo orderInfo, Map packageParams) { PayInfo payInfo = new PayInfo(); payInfo.setOrderId(orderInfo.getOrderId()); payInfo.setOut_trade_no(packageParams.get("out_trade_no")); @@ -526,17 +530,17 @@ public class AppStoreOrderServiceImpl extends ServiceImpl packageParams ){ - if(PayTypeEnum.ALI_H5.getValue().equals(param.getPaytype())){ + private void aliPay(AppStoreOrderQueryVo orderInfo, AppPayParam param, Map packageParams) { + if (PayTypeEnum.ALI_H5.getValue().equals(param.getPaytype())) { MerchantPayOrder payOrder = new MerchantPayOrder("1", "WAP", "支付宝H5商品购买", - "h5商品购买", orderInfo.getPayPrice(), param.getUni()+"-"+ RandomStringUtil.getRandomCode(3,0)+"H5"); - String str = manager.toPay(payOrder); + "h5商品购买", orderInfo.getPayPrice(), param.getUni() + "-" + RandomStringUtil.getRandomCode(3, 0) + "H5"); + String str = manager.toPay(payOrder); log.info(str); - // packageParams.put("data",manager.toPay(payOrder)); - }else if(PayTypeEnum.ALI_APP.getValue().equals(param.getFrom())){ + // packageParams.put("data",manager.toPay(payOrder)); + } else if (PayTypeEnum.ALI_APP.getValue().equals(param.getFrom())) { MerchantPayOrder payOrder = new MerchantPayOrder("1", "APP", "支付宝APP商品购买", - "支付宝APP5商品购买", orderInfo.getPayPrice(), param.getUni()+"-"+ RandomStringUtil.getRandomCode(3,0)+"APP"); - // packageParams.put("data",manager.app(payOrder)); + "支付宝APP5商品购买", orderInfo.getPayPrice(), param.getUni() + "-" + RandomStringUtil.getRandomCode(3, 0) + "APP"); + // packageParams.put("data",manager.app(payOrder)); } } @@ -591,7 +595,14 @@ public class AppStoreOrderServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(StoreOrderCartInfoDO::getOid, order.getId()); List cartInfos = storeOrderCartInfoService.list(wrapper); - + // 查询是否发货 为后面待发货提前计算时间 + StoreOrderStatusDO orderStatusDO = + storeOrderStatusMapper.selectOne(new LambdaQueryWrapper() + .eq(StoreOrderStatusDO::getOid, order.getId()) + .eq(StoreOrderStatusDO::getChangeType, OrderLogEnum.DELIVERY_GOODS.getValue())); + if (orderStatusDO != null) { + order.setDeliveryTime(orderStatusDO.getChangeTime()); + } List cartInfo = cartInfos.stream() .map(cart -> { AppStoreCartQueryVo cartQueryVo = JSON.parseObject(cart.getCartInfo(), AppStoreCartQueryVo.class); @@ -828,7 +846,7 @@ public class AppStoreOrderServiceImpl extends ServiceImpl() - .eq(StoreOrderStatusDO::getOid, order.getId()) - .eq(StoreOrderStatusDO::getChangeType, OrderLogEnum.DELIVERY_GOODS.getValue())); - if (orderStatusDO != null) { - order.setDeliveryTime(orderStatusDO.getChangeTime()); - } - - return order; } @@ -1055,10 +1073,15 @@ public class AppStoreOrderServiceImpl extends ServiceImpl() + .eq(StoreOrderDO::getId, order.getId()) + .set(StoreOrderDO::getStatus, OrderInfoEnum.STATUS_CANCEL.getValue())); // 异步统计 asyncStoreOrderService.orderData(order.getUid()); @@ -1107,9 +1130,14 @@ public class AppStoreOrderServiceImpl extends ServiceImpl check(Long uid, String key, AppComputeOrderParam param) { + private Map check(Long uid, String key) { Map map = Maps.newHashMap(); if (StrUtil.isBlank(key)) { throw exception(PARAM_ERROR); @@ -1306,38 +1333,42 @@ public class AppStoreOrderServiceImpl extends ServiceImpl cartInfo, UserAddressDO userAddress, Long couponId) { - BigDecimal storePostage; + BigDecimal storePostage = BigDecimal.ZERO; BigDecimal storeFreePostage = BigDecimal.ZERO; BigDecimal costPrice = this.getOrderSumPrice(cartInfo, "truePrice");//获取订单成本价 BigDecimal payIntegral = BigDecimal.ZERO; BigDecimal couponPrice = BigDecimal.ZERO; - if (couponId == null || couponId != -1l) { - Map> cartInfoMap = - cartInfo.stream().collect(Collectors.groupingBy(AppStoreCartQueryVo::getProductId)); + if (couponId == null || couponId != -1L) { List cartCouponDtoList = new ArrayList<>(); - for (List queryVos : cartInfoMap.values()) { - BigDecimal amount = BigDecimal.ZERO; - for (AppStoreCartQueryVo appStoreCartQueryVo : queryVos) { - amount = amount.add(appStoreCartQueryVo.getTruePrice() - .multiply(BigDecimal.valueOf(appStoreCartQueryVo.getCartNum()))); - } - cartCouponDtoList.add(CartCouponDto.builder().productId(queryVos.get(0).getProductId()).price(amount).build()); + for (AppStoreCartQueryVo vo : cartInfo) { + cartCouponDtoList.add(new CartCouponDto(vo.getProductId(), vo.getProductAttrUnique(), NumberUtil.mul(vo.getTruePrice(), vo.getCartNum()))); } List cartCouponVOList = appCouponRelationService.searchCartCoupon(cartCouponDtoList, couponId); - // 默认优惠券 + if (CollectionUtils.isNotEmpty(cartCouponVOList)) { - CartCouponVO defaultCoupon = cartCouponVOList.get(0); - couponPrice = defaultCoupon.getDiscountAmount(); - couponId = defaultCoupon.getDetailId(); + CartCouponVO cartCouponVO = cartCouponVOList.get(0); + couponPrice = cartCouponVO.getDiscountAmount(); + couponId = cartCouponVO.getDetailId(); + List cartCouponDetailVOList = cartCouponVO.getDetailVOList(); + if (CollectionUtils.isNotEmpty(cartCouponDetailVOList)) { + Map cartCouponDetailVOMap = + cartCouponDetailVOList.stream().collect(Collectors.toMap(CartCouponDetailVO::getProductAttrUnique, Function.identity())); + cartInfo.forEach(res -> { + if (ObjectUtil.isNotNull(cartCouponDetailVOMap.get(res.getProductAttrUnique()))) { + res.setCouponPrice(cartCouponDetailVOMap.get(res.getProductAttrUnique()).getProductCoupon()); + } + }); + } } } - - // this.getOrderSumPrice(cartInfo, "payIntegral");//获取订单需要的积分 - - //运费模板 - storePostage = this.handlePostage(cartInfo, userAddress); + // 计算运费 + for (AppStoreCartQueryVo vo : cartInfo) { + BigDecimal postagePrice = this.handlePostage(Arrays.asList(vo), userAddress); + vo.setPostagePrice(postagePrice); + storePostage = storePostage.add(postagePrice); + } BigDecimal totalPrice = costPrice.add(storePostage).subtract(couponPrice);//获取订单总金额 @@ -1391,7 +1422,7 @@ public class AppStoreOrderServiceImpl extends ServiceImpl cartInfo, UserAddressDO userAddress) { + public BigDecimal handlePostage(List cartInfo, UserAddressDO userAddress) { BigDecimal storePostage = BigDecimal.ZERO; if (userAddress != null) { if (userAddress.getCityId() == null) { @@ -1442,11 +1473,11 @@ public class AppStoreOrderServiceImpl extends ServiceImpl wrapperThree = new LambdaQueryWrapper<>(); if (uid != null) { @@ -112,9 +115,8 @@ public class AsyncStoreOrderServiceImpl implements AsyncStoreOrderService { Long completeCount = storeOrderMapper.selectCount(wrapperSix); //售后退款 - Long salesCount = appStoreAfterSalesService.lambdaQuery() - .eq(Objects.nonNull(uid), StoreAfterSalesDO::getUserId, uid) - .count(); + Long salesCount = storeAfterSalesMapper.selectCount(new LambdaQueryWrapper() + .eq(StoreAfterSalesDO::getUserId, uid)); //订单待支付 数量 LambdaQueryWrapper wrapperTwo = new LambdaQueryWrapper<>(); @@ -125,7 +127,7 @@ public class AsyncStoreOrderServiceImpl implements AsyncStoreOrderService { .eq(StoreOrderDO::getRefundStatus, OrderInfoEnum.REFUND_STATUS_NORMAL.getValue()) .eq(StoreOrderDO::getStatus, OrderInfoEnum.STATUS_DEFAULT.getValue()); Long unpaidCount = storeOrderMapper.selectCount(wrapperTwo); - AppUserOrderCountVo appUserOrderCountVo = AppUserOrderCountVo.builder() + AppUserOrderCountVo appUserOrderCountVo = AppUserOrderCountVo.builder() .orderCount(orderCount) .sumPrice(sumPrice) .unpaidCount(unpaidCount) @@ -136,9 +138,10 @@ public class AsyncStoreOrderServiceImpl implements AsyncStoreOrderService { .refundCount(salesCount) .build(); - //先删除再存redis + //先删除再存redis asyncOrderRedisDAO.delete(uid); - asyncOrderRedisDAO.set(appUserOrderCountVo,uid); + log.info("订单统计数据:{}", appUserOrderCountVo); + asyncOrderRedisDAO.set(appUserOrderCountVo, uid); this.getOrderTimeData(); } @@ -146,7 +149,6 @@ public class AsyncStoreOrderServiceImpl implements AsyncStoreOrderService { /** * 首页订单/用户等统计 - * */ @Async @Override diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeorder/StoreOrderServiceImpl.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeorder/StoreOrderServiceImpl.java index 6b4c561..4f722b1 100644 --- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeorder/StoreOrderServiceImpl.java +++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeorder/StoreOrderServiceImpl.java @@ -205,7 +205,7 @@ public class StoreOrderServiceImpl implements StoreOrderService { /** * 订单查询 * @param pageReqVO 分页查询 - * @return + * @return 订单vo */ @Override public PageResult getStoreOrderPage(StoreOrderPageReqVO pageReqVO) { @@ -336,11 +336,11 @@ public class StoreOrderServiceImpl implements StoreOrderService { /** * 处理订单状态 - * @param payStatus - * @param status - * @param refundStatus - * @param del - * @return + * @param payStatus 支付状态 + * @param status 订单状态 + * @param refundStatus 退款状态 + * @param del 删除标准 + * @return 订单状态 */ private String handleOrderStatus(Integer payStatus,Integer status,Integer refundStatus,Integer del) { String statusName = ""; @@ -348,6 +348,8 @@ public class StoreOrderServiceImpl implements StoreOrderService { statusName = "已删除"; }else if (payStatus == 0 && status == 0) { statusName = "未支付"; + } else if (payStatus == 0 && status == 4) { + statusName = "已取消"; } else if (payStatus == 1 && status == 0 && refundStatus == 0) { statusName = "未发货"; } else if (payStatus == 1 && status == 1 && refundStatus == 0) { @@ -358,8 +360,7 @@ public class StoreOrderServiceImpl implements StoreOrderService { statusName = "已完成"; } else if (payStatus == 1 && refundStatus == 2) { statusName = "已退款"; - } - else if (payStatus == 1 && refundStatus == 1) { + } else if (payStatus == 1 && refundStatus == 1) { statusName = "退款中"; } return statusName; diff --git a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeordercartinfo/StoreOrderCartInfoServiceImpl.java b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeordercartinfo/StoreOrderCartInfoServiceImpl.java index 901fb7b..b649817 100644 --- a/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeordercartinfo/StoreOrderCartInfoServiceImpl.java +++ b/yshop-module-mall/yshop-module-order-biz/src/main/java/co/yixiang/yshop/module/order/service/storeordercartinfo/StoreOrderCartInfoServiceImpl.java @@ -46,6 +46,8 @@ public class StoreOrderCartInfoServiceImpl extends ServiceImpl createBrand(@Valid @RequestBody ProductBrandCreateReqVO createReqVO) { - return success(brandService.createBrand(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新品牌") - @PreAuthorize("@ss.hasPermission('product:brand:update')") - public CommonResult updateBrand(@Valid @RequestBody ProductBrandUpdateReqVO updateReqVO) { - brandService.updateBrand(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除品牌") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('product:brand:delete')") - public CommonResult deleteBrand(@RequestParam("id") Long id) { - brandService.deleteBrand(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得品牌") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('product:brand:query')") - public CommonResult getBrand(@RequestParam("id") Long id) { - ProductBrandDO brand = brandService.getBrand(id); - return success(ProductBrandConvert.INSTANCE.convert(brand)); - } - - @GetMapping("/page") - @Operation(summary = "获得品牌分页") - @PreAuthorize("@ss.hasPermission('product:brand:query')") - public CommonResult> getBrandPage(@Valid ProductBrandPageReqVO pageVO) { - PageResult pageResult = brandService.getBrandPage(pageVO); - return success(ProductBrandConvert.INSTANCE.convertPage(pageResult)); - } - - @GetMapping("/list") - @Operation(summary = "获得品牌列表") - @PreAuthorize("@ss.hasPermission('product:brand:query')") - public CommonResult> getBrandList(@Valid ProductBrandListReqVO listVO) { - List list = brandService.getBrandList(listVO); - list.sort(Comparator.comparing(ProductBrandDO::getSort)); - return success(ProductBrandConvert.INSTANCE.convertList(list)); - } - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandBaseVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandBaseVO.java deleted file mode 100644 index 4c8a697..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandBaseVO.java +++ /dev/null @@ -1,34 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.brand.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** -* 商品品牌 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class ProductBrandBaseVO { - - @Schema(description = "品牌名称", required = true, example = "yshop") - @NotNull(message = "品牌名称不能为空") - private String name; - - @Schema(description = "品牌图片", required = true) - @NotNull(message = "品牌图片不能为空") - private String picUrl; - - @Schema(description = "品牌排序", required = true, example = "1") - @NotNull(message = "品牌排序不能为空") - private Integer sort; - - @Schema(description = "品牌描述", example = "描述") - private String description; - - @Schema(description = "状态", required = true, example = "0") - @NotNull(message = "状态不能为空") - private Integer status; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandCreateReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandCreateReqVO.java deleted file mode 100644 index f328a89..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandCreateReqVO.java +++ /dev/null @@ -1,14 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.brand.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -@Schema(description = "管理后台 - 商品品牌创建 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ProductBrandCreateReqVO extends ProductBrandBaseVO { - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandListReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandListReqVO.java deleted file mode 100644 index 3ee4ab6..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandListReqVO.java +++ /dev/null @@ -1,13 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.brand.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "管理后台 - 商品品牌分页 Request VO") -@Data -public class ProductBrandListReqVO { - - @Schema(description = "品牌名称", example = "yshop") - private String name; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandPageReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandPageReqVO.java deleted file mode 100644 index 0bcba3f..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandPageReqVO.java +++ /dev/null @@ -1,30 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.brand.vo; - -import co.yixiang.yshop.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 商品品牌分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ProductBrandPageReqVO extends PageParam { - - @Schema(description = "品牌名称", example = "yshop") - private String name; - - @Schema(description = "状态", example = "0") - private Integer status; - - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @Schema(description = "创建时间") - private LocalDateTime[] createTime; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandRespVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandRespVO.java deleted file mode 100644 index d3c35ee..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandRespVO.java +++ /dev/null @@ -1,22 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.brand.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - 品牌 Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ProductBrandRespVO extends ProductBrandBaseVO { - - @Schema(description = "品牌编号", required = true, example = "1") - private Long id; - - @Schema(description = "创建时间", required = true) - private LocalDateTime createTime; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandUpdateReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandUpdateReqVO.java deleted file mode 100644 index 24d739c..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/brand/vo/ProductBrandUpdateReqVO.java +++ /dev/null @@ -1,20 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.brand.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import javax.validation.constraints.NotNull; - -@Schema(description = "管理后台 - 商品品牌更新 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ProductBrandUpdateReqVO extends ProductBrandBaseVO { - - @Schema(description = "品牌编号", required = true, example = "1") - @NotNull(message = "品牌编号不能为空") - private Long id; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/ProductCategoryController.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/ProductCategoryController.java deleted file mode 100644 index 1559964..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/ProductCategoryController.java +++ /dev/null @@ -1,76 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.category; - -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import co.yixiang.yshop.module.product.controller.admin.category.vo.ProductCategoryCreateReqVO; -import co.yixiang.yshop.module.product.controller.admin.category.vo.ProductCategoryListReqVO; -import co.yixiang.yshop.module.product.controller.admin.category.vo.ProductCategoryRespVO; -import co.yixiang.yshop.module.product.controller.admin.category.vo.ProductCategoryUpdateReqVO; -import co.yixiang.yshop.module.product.convert.category.ProductCategoryConvert; -import co.yixiang.yshop.module.product.dal.dataobject.category.ProductCategoryDO; -import co.yixiang.yshop.module.product.service.category.ProductCategoryService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import javax.validation.Valid; -import java.util.Comparator; -import java.util.List; - -import static co.yixiang.yshop.framework.common.pojo.CommonResult.success; - -@Tag(name = "管理后台 - 商品分类") -@RestController -@RequestMapping("/product/category") -@Validated -public class ProductCategoryController { - - @Resource - private ProductCategoryService categoryService; - - @PostMapping("/create") - @Operation(summary = "创建商品分类") - @PreAuthorize("@ss.hasPermission('product:category:create')") - public CommonResult createCategory(@Valid @RequestBody ProductCategoryCreateReqVO createReqVO) { - return success(categoryService.createCategory(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新商品分类") - @PreAuthorize("@ss.hasPermission('product:category:update')") - public CommonResult updateCategory(@Valid @RequestBody ProductCategoryUpdateReqVO updateReqVO) { - categoryService.updateCategory(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除商品分类") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('product:category:delete')") - public CommonResult deleteCategory(@RequestParam("id") Long id) { - categoryService.deleteCategory(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得商品分类") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('product:category:query')") - public CommonResult getCategory(@RequestParam("id") Long id) { - ProductCategoryDO category = categoryService.getCategory(id); - return success(ProductCategoryConvert.INSTANCE.convert(category)); - } - - @GetMapping("/list") - @Operation(summary = "获得商品分类列表") - @PreAuthorize("@ss.hasPermission('product:category:query')") - public CommonResult> getCategoryList(@Valid ProductCategoryListReqVO treeListReqVO) { - List list = categoryService.getEnableCategoryList(treeListReqVO); - list.sort(Comparator.comparing(ProductCategoryDO::getSort)); - return success(ProductCategoryConvert.INSTANCE.convertList(list)); - } - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryBaseVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryBaseVO.java deleted file mode 100644 index 68c9912..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryBaseVO.java +++ /dev/null @@ -1,38 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.category.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** -* 商品分类 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class ProductCategoryBaseVO { - - @Schema(description = "父分类编号", required = true, example = "1") - @NotNull(message = "父分类编号不能为空") - private Long parentId; - - @Schema(description = "分类名称", required = true, example = "办公文具") - @NotBlank(message = "分类名称不能为空") - private String name; - - @Schema(description = "分类图片", required = true) - @NotBlank(message = "分类图片不能为空") - private String picUrl; - - @Schema(description = "分类排序", required = true, example = "1") - private Integer sort; - - @Schema(description = "分类描述", required = true, example = "描述") - private String description; - - @Schema(description = "开启状态", required = true, example = "0") - @NotNull(message = "开启状态不能为空") - private Integer status; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryCreateReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryCreateReqVO.java deleted file mode 100644 index 5946e9f..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryCreateReqVO.java +++ /dev/null @@ -1,14 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.category.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -@Schema(description = "管理后台 - 商品分类创建 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ProductCategoryCreateReqVO extends ProductCategoryBaseVO { - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryListReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryListReqVO.java deleted file mode 100644 index d1f5835..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryListReqVO.java +++ /dev/null @@ -1,13 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.category.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "管理后台 - 商品分类列表查询 Request VO") -@Data -public class ProductCategoryListReqVO { - - @Schema(description = "分类名称", example = "办公文具") - private String name; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryRespVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryRespVO.java deleted file mode 100644 index 5e6794f..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryRespVO.java +++ /dev/null @@ -1,22 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.category.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - 商品分类 Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ProductCategoryRespVO extends ProductCategoryBaseVO { - - @Schema(description = "分类编号", required = true, example = "2") - private Long id; - - @Schema(description = "创建时间", required = true) - private LocalDateTime createTime; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryUpdateReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryUpdateReqVO.java deleted file mode 100644 index 2538503..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/category/vo/ProductCategoryUpdateReqVO.java +++ /dev/null @@ -1,20 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.category.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import javax.validation.constraints.NotNull; - -@Schema(description = "管理后台 - 商品分类更新 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ProductCategoryUpdateReqVO extends ProductCategoryBaseVO { - - @Schema(description = "分类编号", required = true, example = "2") - @NotNull(message = "分类编号不能为空") - private Long id; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/ProductCouponBaseVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/ProductCouponBaseVO.java deleted file mode 100644 index 7792f8a..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/ProductCouponBaseVO.java +++ /dev/null @@ -1,68 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.productcoupon.vo; - -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import javax.validation.constraints.NotNull; -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** -* 商品优惠券 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class ProductCouponBaseVO extends BaseDO { - - @Schema(description = "优惠券id", required = true, example = "1") - private Long id; - - @Schema(description = "优惠券名称", required = true, example = "1") - private String couponName; - - @Schema(description = "优惠券面值", required = true, example = "1") - private BigDecimal couponValue; - - @Schema(description = "优惠券类型:1、满减券,2、折扣券", required = true, example = "1") - private Integer couponType; - - @Schema(description = "满减门槛", required = true, example = "1") - private BigDecimal threshold; - - @Schema(description = "折扣", required = true, example = "1") - private BigDecimal discount; - - @Schema(description = "优惠券范围:1、所有商品,2、选中商品", required = true, example = "1") - private Integer couponScope; - - @Schema(description = "范围值", required = true, example = "1") - private String scopeValues; - - @Schema(description = "优惠券数量", required = true, example = "1") - private Long number; - - @Schema(description = "领取限制类型 1 无限制 2限制次数", required = true, example = "1") - private Integer receiveType; - - @Schema(description = "限制每人领取数量", required = true, example = "1") - private Long limitNumber; - - @Schema(description = "过期类型:1、按时间,2、按天数", required = true, example = "1") - private Integer expirationType; - - @Schema(description = "生效时间", required = true, example = "1") - private LocalDateTime takingEffectTime; - - @Schema(description = "过期时间", required = true, example = "1") - private LocalDateTime expirationTime; - - @Schema(description = "过期天数", required = true, example = "1") - private Long expirationDay; - - @Schema(description = "备注", required = true, example = "1") - private String remark; - - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/ProductCouponCreateReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/ProductCouponCreateReqVO.java deleted file mode 100644 index 26d9db6..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/ProductCouponCreateReqVO.java +++ /dev/null @@ -1,73 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.productcoupon.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import java.math.BigDecimal; -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 商品优惠券创建 Request VO") -@Data -@ToString(callSuper = true) -public class ProductCouponCreateReqVO{ - - @Schema(description = "优惠券名称", required = true, example = "1") - @NotBlank(message = "优惠券名称不能为空") - private String couponName; - - @Schema(description = "优惠券面值", required = true, example = "1") - private BigDecimal couponValue; - - @Schema(description = "优惠券类型:1、满减券,2、折扣券", required = true, example = "1") - @NotNull(message = "优惠券类型不能为空") - private Integer couponType; - - @Schema(description = "满减门槛", required = true, example = "1") - private BigDecimal threshold; - - @Schema(description = "折扣", required = true, example = "1") - private BigDecimal discount; - - @Schema(description = "优惠券范围类型:1、所有商品,2、选中商品", required = true, example = "1") - @NotNull(message = "优惠券范围类型不能为空") - private Integer couponScope; - - @Schema(description = "范围值", required = true, example = "1") - private String[] ids; - - @Schema(description = "优惠券数量", required = true, example = "1") - @NotNull(message = "优惠券数量不能为空") - private Long number; - - @Schema(description = "领取限制类型 1 无限制 2限制次数", required = true, example = "1") - @NotNull(message = "领取限制类型不能为空") - private Integer receiveType; - - @Schema(description = "限制每人领取数量", required = true, example = "1") - private Long limitNumber; - - @Schema(description = "过期类型:1、按时间,2、按天数", required = true, example = "1") - @NotNull(message = "过期类型不能为空") - private Integer expirationType; - - @Schema(description = "生效时间", required = true, example = "1") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime takingEffectTime; - - @Schema(description = "过期时间", required = true, example = "1") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime expirationTime; - - @Schema(description = "过期天数", required = true, example = "1") - private Long expirationDay; - - @Schema(description = "备注", required = true, example = "1") - private String remark; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/ProductCouponDetailRespVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/ProductCouponDetailRespVO.java deleted file mode 100644 index a0d651e..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/ProductCouponDetailRespVO.java +++ /dev/null @@ -1,18 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.productcoupon.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - - -@Schema(description = "管理后台 - 商品优惠券明细") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ProductCouponDetailRespVO extends ProductCouponBaseVO { - - @Schema(description = "优惠券状态:1、进行中,2、已结束,3、未开始", required = true, example = "进行中") - private String status; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/ProductCouponUpdateReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/ProductCouponUpdateReqVO.java deleted file mode 100644 index 8e116f5..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/ProductCouponUpdateReqVO.java +++ /dev/null @@ -1,69 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.productcoupon.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import javax.validation.constraints.NotNull; -import java.math.BigDecimal; -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 商品优惠券创建 Request VO") -@Data -@ToString(callSuper = true) -public class ProductCouponUpdateReqVO { - - @Schema(description = "优惠券id", required = true, example = "1") - @NotNull(message = "优惠券id不能为空") - private Long id; - - @Schema(description = "优惠券名称", required = true, example = "1") - private String couponName; - - @Schema(description = "优惠券面值", required = true, example = "1") - private BigDecimal couponValue; - - @Schema(description = "优惠券类型:1、满减券,2、折扣券", required = true, example = "1") - private Integer couponType; - - @Schema(description = "满减门槛", required = true, example = "1") - private BigDecimal threshold; - - @Schema(description = "折扣", required = true, example = "1") - private BigDecimal discount; - - @Schema(description = "优惠券范围类型:1、所有商品,2、选中商品", required = true, example = "1") - private Integer couponScope; - - @Schema(description = "范围值", required = true, example = "1") - private String[] ids; - - @Schema(description = "优惠券数量", required = true, example = "1") - private Long number; - - @Schema(description = "领取限制类型 1 无限制 2限制次数", required = true, example = "1") - private Integer receiveType; - - @Schema(description = "限制每人领取数量", required = true, example = "1") - private Long limitNumber; - - @Schema(description = "过期类型:1、按时间,2、按天数", required = true, example = "1") - private Integer expirationType; - - @Schema(description = "生效时间", required = true, example = "1") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime takingEffectTime; - - @Schema(description = "过期时间", required = true, example = "1") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime expirationTime; - - @Schema(description = "过期天数", required = true, example = "1") - private Long expirationDay; - - @Schema(description = "备注", required = true, example = "1") - private String remark; -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/StoreProductCouponPageReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/StoreProductCouponPageReqVO.java deleted file mode 100644 index 1ad4ed8..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/productcoupon/vo/StoreProductCouponPageReqVO.java +++ /dev/null @@ -1,30 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.productcoupon.vo; - -import co.yixiang.yshop.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -@Schema(description = "管理后台 - 商品优惠券分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class StoreProductCouponPageReqVO extends PageParam { - - @Schema(description = "优惠券名称", example = "1") - private String couponName; - - @Schema(description = "优惠券类型:1、满减券,2、折扣券", required = true, example = "1") - private Integer couponType; - - @Schema(description = "优惠券范围:1、所有商品,2、选中商品", required = true, example = "1") - private Integer couponScope; - - @Schema(description = "过期类型:1、按时间,2、按天数", required = true, example = "1") - private Integer expirationType; - - @Schema(description = "领取限制类型 1 无限制 2限制次数", required = true, example = "1") - private Integer receiveType; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/ShippingTemplatesController.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/ShippingTemplatesController.java deleted file mode 100644 index f1aa5c3..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/ShippingTemplatesController.java +++ /dev/null @@ -1,104 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.shippingtemplates; - -import co.yixiang.yshop.module.product.service.shippingtemplates.dto.ShippingTemplatesDto; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import static co.yixiang.yshop.framework.common.pojo.CommonResult.success; - -import co.yixiang.yshop.framework.excel.core.util.ExcelUtils; - -import co.yixiang.yshop.framework.operatelog.core.annotations.OperateLog; -import static co.yixiang.yshop.framework.operatelog.core.enums.OperateTypeEnum.*; - -import co.yixiang.yshop.module.product.controller.admin.shippingtemplates.vo.*; -import co.yixiang.yshop.module.product.dal.dataobject.shippingtemplates.ShippingTemplatesDO; -import co.yixiang.yshop.module.product.convert.shippingtemplates.ShippingTemplatesConvert; -import co.yixiang.yshop.module.product.service.shippingtemplates.ShippingTemplatesService; - -@Tag(name = "管理后台 - 运费模板") -@RestController -@RequestMapping("/product/shipping-templates") -@Validated -public class ShippingTemplatesController { - - @Resource - private ShippingTemplatesService shippingTemplatesService; - - @PostMapping("/create/{id}") - @Operation(summary = "创建运费模板") - @PreAuthorize("@ss.hasPermission('product:shipping-templates:create')") - public CommonResult createShippingTemplates(@Validated @RequestBody ShippingTemplatesDto shippingTemplatesDto, @PathVariable Integer id) { - shippingTemplatesService.addAndUpdate(id,shippingTemplatesDto); - return success(true); - } - - @PutMapping("/update") - @Operation(summary = "更新运费模板") - @PreAuthorize("@ss.hasPermission('product:shipping-templates:update')") - public CommonResult updateShippingTemplates(@Valid @RequestBody ShippingTemplatesUpdateReqVO updateReqVO) { - shippingTemplatesService.updateShippingTemplates(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除运费模板") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('product:shipping-templates:delete')") - public CommonResult deleteShippingTemplates(@RequestParam("id") Integer id) { - shippingTemplatesService.deleteShippingTemplates(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得运费模板") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('product:shipping-templates:query')") - public CommonResult getShippingTemplates(@RequestParam("id") Integer id) { - ShippingTemplatesDO shippingTemplates = shippingTemplatesService.getShippingTemplates(id); - return success(ShippingTemplatesConvert.INSTANCE.convert(shippingTemplates)); - } - - @GetMapping("/list") - @Operation(summary = "获得运费模板列表") - @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") - @PreAuthorize("@ss.hasPermission('product:shipping-templates:query')") - public CommonResult> getShippingTemplatesList(@RequestParam("ids") Collection ids) { - List list = shippingTemplatesService.getShippingTemplatesList(ids); - return success(ShippingTemplatesConvert.INSTANCE.convertList(list)); - } - - @GetMapping("/page") - @Operation(summary = "获得运费模板分页") - @PreAuthorize("@ss.hasPermission('product:shipping-templates:query')") - public CommonResult> getShippingTemplatesPage(@Valid ShippingTemplatesPageReqVO pageVO) { - PageResult pageResult = shippingTemplatesService.getShippingTemplatesPage(pageVO); - return success(ShippingTemplatesConvert.INSTANCE.convertPage(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出运费模板 Excel") - @PreAuthorize("@ss.hasPermission('product:shipping-templates:export')") - @OperateLog(type = EXPORT) - public void exportShippingTemplatesExcel(@Valid ShippingTemplatesExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { - List list = shippingTemplatesService.getShippingTemplatesList(exportReqVO); - // 导出 Excel - List datas = ShippingTemplatesConvert.INSTANCE.convertList02(list); - ExcelUtils.write(response, "运费模板.xls", "数据", ShippingTemplatesExcelVO.class, datas); - } - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesBaseVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesBaseVO.java deleted file mode 100644 index 8ea1461..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesBaseVO.java +++ /dev/null @@ -1,26 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.shippingtemplates.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import javax.validation.constraints.*; - -/** -* 运费模板 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class ShippingTemplatesBaseVO { - - @Schema(description = "模板名称", example = "张三") - private String name; - - @Schema(description = "计费方式", example = "2") - private Integer type; - - @Schema(description = "指定包邮开关") - private Integer appoint; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesCreateReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesCreateReqVO.java deleted file mode 100644 index f0b4c06..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesCreateReqVO.java +++ /dev/null @@ -1,23 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.shippingtemplates.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import javax.validation.constraints.*; - -@Schema(description = "管理后台 - 运费模板创建 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ShippingTemplatesCreateReqVO extends ShippingTemplatesBaseVO { - - @Schema(description = "地域以及费用") - private String regionInfo; - - @Schema(description = "指定包邮内容") - private String appointInfo; - - @Schema(description = "排序") - private Integer sort; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesExcelVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesExcelVO.java deleted file mode 100644 index 9042553..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesExcelVO.java +++ /dev/null @@ -1,34 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.shippingtemplates.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; - -import com.alibaba.excel.annotation.ExcelProperty; - -/** - * 运费模板 Excel VO - * - * @author yshop - */ -@Data -public class ShippingTemplatesExcelVO { - - @ExcelProperty("模板ID") - private Integer id; - - @ExcelProperty("模板名称") - private String name; - - @ExcelProperty("计费方式") - private Integer type; - - @ExcelProperty("指定包邮开关") - private Integer appoint; - - @ExcelProperty("添加时间") - private LocalDateTime createTime; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesExportReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesExportReqVO.java deleted file mode 100644 index 1cec125..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesExportReqVO.java +++ /dev/null @@ -1,15 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.shippingtemplates.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import co.yixiang.yshop.framework.common.pojo.PageParam; - -@Schema(description = "管理后台 - 运费模板 Excel 导出 Request VO,参数和 ShippingTemplatesPageReqVO 是一致的") -@Data -public class ShippingTemplatesExportReqVO { - - @Schema(description = "模板名称", example = "张三") - private String name; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesPageReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesPageReqVO.java deleted file mode 100644 index 9e11ceb..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesPageReqVO.java +++ /dev/null @@ -1,17 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.shippingtemplates.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import co.yixiang.yshop.framework.common.pojo.PageParam; - -@Schema(description = "管理后台 - 运费模板分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ShippingTemplatesPageReqVO extends PageParam { - - @Schema(description = "模板名称", example = "张三") - private String name; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesRespVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesRespVO.java deleted file mode 100644 index e576bf6..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesRespVO.java +++ /dev/null @@ -1,39 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.shippingtemplates.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - 运费模板 Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ShippingTemplatesRespVO extends ShippingTemplatesBaseVO { - - @Schema(description = "模板ID", required = true, example = "17775") - private Integer id; - - @Schema(description = "添加时间") - private LocalDateTime createTime; - - - /** - * 地域以及费用 - */ - @Schema(description = "地域以及费用") - private String regionInfo; - - /** - * 指定包邮内容 - */ - @Schema(description = "指定包邮内容") - private String appointInfo; - - /** - * 排序 - */ - @Schema(description = "排序") - private Integer sort; - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesUpdateReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesUpdateReqVO.java deleted file mode 100644 index 083f190..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesUpdateReqVO.java +++ /dev/null @@ -1,27 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.shippingtemplates.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; - -@Schema(description = "管理后台 - 运费模板更新 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ShippingTemplatesUpdateReqVO extends ShippingTemplatesBaseVO { - - @Schema(description = "模板ID", required = true, example = "17775") - @NotNull(message = "模板ID不能为空") - private Integer id; - - @Schema(description = "地域以及费用") - private String regionInfo; - - @Schema(description = "指定包邮内容") - private String appointInfo; - - @Schema(description = "排序") - private Integer sort; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/StoreProductController.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/StoreProductController.java deleted file mode 100644 index 89e8f5c..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/StoreProductController.java +++ /dev/null @@ -1,123 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproduct; - -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.excel.core.util.ExcelUtils; -import co.yixiang.yshop.framework.operatelog.core.annotations.OperateLog; -import co.yixiang.yshop.module.product.controller.admin.storeproduct.vo.*; -import co.yixiang.yshop.module.product.convert.storeproduct.StoreProductConvert; -import co.yixiang.yshop.module.product.dal.dataobject.storeproduct.StoreProductDO; -import co.yixiang.yshop.module.product.service.storeproduct.StoreProductService; -import co.yixiang.yshop.module.product.service.storeproduct.dto.StoreProductDto; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; -import javax.validation.Valid; -import java.io.IOException; -import java.util.Collection; -import java.util.List; -import java.util.Map; - -import static co.yixiang.yshop.framework.common.pojo.CommonResult.success; -import static co.yixiang.yshop.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; - -@Tag(name = "管理后台 - 商品") -@RestController -@RequestMapping("/product/store-product") -@Validated -public class StoreProductController { - - @Resource - private StoreProductService storeProductService; - - - @PostMapping("/create") - @Operation(summary = "创建商品") - @PreAuthorize("@ss.hasPermission('shop:store-product:create')") - public CommonResult createStoreProduct(@Valid @RequestBody StoreProductDto storeProductDto) { - storeProductService.insertAndEditYxStoreProduct(storeProductDto); - return success(true); - } - - @PutMapping("/update") - @Operation(summary = "更新商品") - @PreAuthorize("@ss.hasPermission('shop:store-product:update')") - public CommonResult updateStoreProduct(@Valid @RequestBody StoreProductUpdateReqVO updateReqVO) { - storeProductService.updateStoreProduct(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除商品") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('shop:store-product:delete')") - public CommonResult deleteStoreProduct(@RequestParam("id") Long id) { - storeProductService.deleteStoreProduct(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得商品") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('shop:store-product:query')") - public CommonResult getStoreProduct(@RequestParam("id") Long id) { - StoreProductDO storeProduct = storeProductService.getStoreProduct(id); - return success(StoreProductConvert.INSTANCE.convert(storeProduct)); - } - - @GetMapping("/list") - @Operation(summary = "获得商品列表") - @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") - @PreAuthorize("@ss.hasPermission('shop:store-product:query')") - public CommonResult> getStoreProductList(@RequestParam("ids") Collection ids) { - List list = storeProductService.getStoreProductList(ids); - return success(StoreProductConvert.INSTANCE.convertList(list)); - } - - @GetMapping("/page") - @Operation(summary = "获得商品分页") - @PreAuthorize("@ss.hasPermission('shop:store-product:query')") - public CommonResult> getStoreProductPage(@Valid StoreProductPageReqVO pageVO) { - PageResult pageResult = storeProductService.getStoreProductPage(pageVO); - return success(StoreProductConvert.INSTANCE.convertPage(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出商品 Excel") - @PreAuthorize("@ss.hasPermission('shop:store-product:export')") - @OperateLog(type = EXPORT) - public void exportStoreProductExcel(@Valid StoreProductExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { - List list = storeProductService.getStoreProductList(exportReqVO); - // 导出 Excel - List datas = StoreProductConvert.INSTANCE.convertList02(list); - ExcelUtils.write(response, "商品.xls", "数据", StoreProductExcelVO.class, datas); - } - - @Operation(summary = "获取商品信息") - @GetMapping(value = "/info/{id}") - public CommonResult> info(@PathVariable Long id){ - return success(storeProductService.getProductInfo(id)); - } - - - @Operation(summary = "生成属性") - @PostMapping(value = "/isFormatAttr/{id}") - public CommonResult> isFormatAttr(@PathVariable Long id,@RequestBody String jsonStr){ - return success(storeProductService.getFormatAttr(id,jsonStr,false)); - } - - @Operation(summary = "商品上架/下架") - @GetMapping(value = "/sale") - public CommonResult onSale(@RequestParam("id") Long id,@RequestParam("type") int status){ - storeProductService.onSale(id,status); - return success(true); - } - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductBaseVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductBaseVO.java deleted file mode 100644 index 2913f03..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductBaseVO.java +++ /dev/null @@ -1,43 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproduct.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import javax.validation.constraints.NotNull; -import java.math.BigDecimal; - -/** -* 商品 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class StoreProductBaseVO { - - @Schema(description = "商品图片", required = true) - @NotNull(message = "商品图片不能为空") - private String image; - - @Schema(description = "商品名称", required = true, example = "张三") - @NotNull(message = "商品名称不能为空") - private String storeName; - - @Schema(description = "商品价格", required = true, example = "18735") - @NotNull(message = "商品价格不能为空") - private BigDecimal price; - - @Schema(description = "单位名", example = "李四") - private String unitName; - - @Schema(description = "销量") - private Integer sales; - - @Schema(description = "库存") - private Integer stock; - - @Schema(description = "上架状态") - private Integer isShow; - - @Schema(description = "是否包邮") - private Integer isPostage; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductCreateReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductCreateReqVO.java deleted file mode 100644 index ebbdc65..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductCreateReqVO.java +++ /dev/null @@ -1,108 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproduct.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import javax.validation.constraints.NotNull; -import java.math.BigDecimal; - -@Schema(description = "管理后台 - 商品创建 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class StoreProductCreateReqVO extends StoreProductBaseVO { - - @Schema(description = "轮播图", required = true) - @NotNull(message = "轮播图不能为空") - private String sliderImage; - - @Schema(description = "商品简介", required = true) - @NotNull(message = "商品简介不能为空") - private String storeInfo; - - @Schema(description = "关键字", required = true) - @NotNull(message = "关键字不能为空") - private String keyword; - - @Schema(description = "产品条码(一维码)") - private String barCode; - - @Schema(description = "分类id", required = true, example = "4928") - @NotNull(message = "分类id不能为空") - private Long cateId; - - @Schema(description = "会员价格", example = "18248") - private BigDecimal vipPrice; - - @Schema(description = "市场价", example = "14818") - private BigDecimal otPrice; - - @Schema(description = "邮费") - private BigDecimal postage; - - @Schema(description = "排序") - private Short sort; - - @Schema(description = "状态(0:未上架,1:上架)") - private Integer isShow; - - @Schema(description = "是否热卖") - private Boolean isHot; - - @Schema(description = "是否优惠") - private Boolean isBenefit; - - @Schema(description = "是否精品") - private Boolean isBest; - - @Schema(description = "是否新品") - private Integer isNew; - - @Schema(description = "产品描述", example = "你说的对") - private String description; - - @Schema(description = "商户是否代理 0不可代理1可代理") - private Byte merUse; - - @Schema(description = "获得积分") - private BigDecimal giveIntegral; - - @Schema(description = "成本价") - private BigDecimal cost; - - @Schema(description = "秒杀状态 0 未开启 1已开启") - private Byte isSeckill; - - @Schema(description = "砍价状态 0未开启 1开启") - private Byte isBargain; - - @Schema(description = "是否优品推荐") - private Boolean isGood; - - @Schema(description = "虚拟销量") - private Integer ficti; - - @Schema(description = "浏览量") - private Integer browse; - - @Schema(description = "产品二维码地址(用户小程序海报)", required = true) - private String codePath; - - @Schema(description = "是否单独分佣") - private Boolean isSub; - - @Schema(description = "运费模板ID", example = "18065") - private Integer tempId; - - @Schema(description = "规格 0单 1多", example = "1") - private Integer specType; - - @Schema(description = "是开启积分兑换") - private Byte isIntegral; - - @Schema(description = "需要多少积分兑换 只在开启积分兑换时生效") - private Integer integral; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductExcelVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductExcelVO.java deleted file mode 100644 index 3031002..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductExcelVO.java +++ /dev/null @@ -1,44 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproduct.vo; - -import com.alibaba.excel.annotation.ExcelProperty; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * 商品 Excel VO - * - * @author yshop - */ -@Data -public class StoreProductExcelVO { - - @ExcelProperty("商品id") - private Long id; - - @ExcelProperty("商品图片") - private String image; - - @ExcelProperty("商品名称") - private String storeName; - - @ExcelProperty("商品价格") - private BigDecimal price; - - @ExcelProperty("单位名") - private String unitName; - - @ExcelProperty("销量") - private Integer sales; - - @ExcelProperty("库存") - private Integer stock; - - @ExcelProperty("添加时间") - private LocalDateTime createTime; - - @ExcelProperty("是否包邮") - private Integer isPostage; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductExportReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductExportReqVO.java deleted file mode 100644 index eff8cae..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductExportReqVO.java +++ /dev/null @@ -1,16 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproduct.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "管理后台 - 商品 Excel 导出 Request VO,参数和 StoreProductPageReqVO 是一致的") -@Data -public class StoreProductExportReqVO { - - @Schema(description = "商品名称", example = "张三") - private String storeName; - - @Schema(description = "是否包邮") - private Byte isPostage; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductPageReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductPageReqVO.java deleted file mode 100644 index fc68851..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductPageReqVO.java +++ /dev/null @@ -1,34 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproduct.vo; - -import co.yixiang.yshop.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import java.util.List; - -@Schema(description = "管理后台 - 商品分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class StoreProductPageReqVO extends PageParam { - - @Schema(description = "商品名称", example = "张三") - private String storeName; - - @Schema(description = "是否包邮") - private Byte isPostage; - - @Schema(description = "上下架", example = "1") - private String isShow; - - @Schema(description = "库存售罄", example = "0") - private String stock; - - @Schema(description = "库存售罄", example = "0") - private Long cateId; - - private List catIds; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductReplyQueryVo.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductReplyQueryVo.java deleted file mode 100644 index 00986b1..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductReplyQueryVo.java +++ /dev/null @@ -1,76 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproduct.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 评论表 查询结果对象 - *

- * - * @author hupeng - * @date 2023-6-12 - */ -@Data -@Schema(description = "后台 - 评论表vo") -public class StoreProductReplyQueryVo implements Serializable { - private static final long serialVersionUID = 1L; - - @Schema(description = "评论ID", required = true) - private Long id; - - @Schema(description = "产品id", required = true) - private Long productId; - - @Schema(description = "产品名称", required = true) - private Long productName; - - @Schema(description = "某种商品类型(普通商品、秒杀商品)", required = true) - private String replyType; - - @Schema(description = "商品分数", required = true) - private Integer productScore; - - @Schema(description = "服务分数", required = true) - private Integer serviceScore; - - @Schema(description = "评论内容", required = true) - private String comment; - - @Schema(description = "评论图片", required = true) - private String []pics; - - @Schema(description = "评论图片,字符串", required = true) - private String pictures; - - @Schema(description = "管理员回复内容", required = true) - private String merchantReplyContent; - - @Schema(description = "管理员回复时间", required = true) - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date merchantReplyTime; - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - @Schema(description = "发布时间", required = true) - private Date createTime; - - @Schema(description = "评价星星数", required = true) - private String star; - - @Schema(description = "用户昵称", required = true) - private String nickname; - - @Schema(description = "用户头像", required = true) - private String avatar; - - @Schema(description = "商品sku", required = true) - private String sku; - - private String cartInfo; - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductRespVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductRespVO.java deleted file mode 100644 index 27c11aa..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductRespVO.java +++ /dev/null @@ -1,19 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproduct.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - 商品 Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class StoreProductRespVO extends StoreProductBaseVO { - - @Schema(description = "商品id", required = true, example = "1175") - private Long id; - - @Schema(description = "添加时间") - private LocalDateTime createTime; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductUpdateReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductUpdateReqVO.java deleted file mode 100644 index b03164e..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductUpdateReqVO.java +++ /dev/null @@ -1,113 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproduct.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -import javax.validation.constraints.NotNull; -import java.math.BigDecimal; - -@Schema(description = "管理后台 - 商品更新 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class StoreProductUpdateReqVO extends StoreProductBaseVO { - - @Schema(description = "商品id", required = true, example = "1175") - @NotNull(message = "商品id不能为空") - private Long id; - - @Schema(description = "轮播图", required = true) - @NotNull(message = "轮播图不能为空") - private String sliderImage; - - @Schema(description = "商品简介", required = true) - @NotNull(message = "商品简介不能为空") - private String storeInfo; - - @Schema(description = "关键字", required = true) - @NotNull(message = "关键字不能为空") - private String keyword; - - @Schema(description = "产品条码(一维码)") - private String barCode; - - @Schema(description = "分类id", required = true, example = "4928") - @NotNull(message = "分类id不能为空") - private Long cateId; - - @Schema(description = "会员价格", example = "18248") - private BigDecimal vipPrice; - - @Schema(description = "市场价", example = "14818") - private BigDecimal otPrice; - - @Schema(description = "邮费") - private BigDecimal postage; - - @Schema(description = "排序") - private Short sort; - - @Schema(description = "状态(0:未上架,1:上架)") - private Integer isShow; - - @Schema(description = "是否热卖") - private Boolean isHot; - - @Schema(description = "是否优惠") - private Boolean isBenefit; - - @Schema(description = "是否精品") - private Boolean isBest; - - @Schema(description = "是否新品") - private Integer isNew; - - @Schema(description = "产品描述", example = "你说的对") - private String description; - - @Schema(description = "商户是否代理 0不可代理1可代理") - private Byte merUse; - - @Schema(description = "获得积分") - private BigDecimal giveIntegral; - - @Schema(description = "成本价") - private BigDecimal cost; - - @Schema(description = "秒杀状态 0 未开启 1已开启") - private Byte isSeckill; - - @Schema(description = "砍价状态 0未开启 1开启") - private Byte isBargain; - - @Schema(description = "是否优品推荐") - private Boolean isGood; - - @Schema(description = "虚拟销量") - private Integer ficti; - - @Schema(description = "浏览量") - private Integer browse; - - @Schema(description = "产品二维码地址(用户小程序海报)", required = true) - @NotNull(message = "产品二维码地址(用户小程序海报)不能为空") - private String codePath; - - @Schema(description = "是否单独分佣") - private Boolean isSub; - - @Schema(description = "运费模板ID", example = "18065") - private Integer tempId; - - @Schema(description = "规格 0单 1多", example = "1") - private Integer specType; - - @Schema(description = "是开启积分兑换") - private Byte isIntegral; - - @Schema(description = "需要多少积分兑换 只在开启积分兑换时生效") - private Integer integral; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrelation/StoreProductRelationController.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrelation/StoreProductRelationController.java deleted file mode 100644 index 3fbf2f9..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrelation/StoreProductRelationController.java +++ /dev/null @@ -1,49 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproductrelation; - -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.product.controller.admin.storeproductrelation.vo.StoreProductRelationPageReqVO; -import co.yixiang.yshop.module.product.controller.admin.storeproductrelation.vo.StoreProductRelationRespVO; -import co.yixiang.yshop.module.product.service.storeproductrelation.StoreProductRelationService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import javax.validation.Valid; - -import static co.yixiang.yshop.framework.common.pojo.CommonResult.success; - -@Tag(name = "管理后台 - 商品点赞和收藏") -@RestController -@RequestMapping("/product/store-product-relation") -@Validated -public class StoreProductRelationController { - - @Resource - private StoreProductRelationService storeProductRelationService; - - - @DeleteMapping("/delete") - @Operation(summary = "删除商品点赞和收藏") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('product:store-product-relation:delete')") - public CommonResult deleteStoreProductRelation(@RequestParam("id") Long id) { - storeProductRelationService.deleteStoreProductRelation(id); - return success(true); - } - - - - @GetMapping("/page") - @Operation(summary = "获得商品点赞和收藏分页") - @PreAuthorize("@ss.hasPermission('product:store-product-relation:query')") - public CommonResult> getStoreProductRelationPage(@Valid StoreProductRelationPageReqVO pageVO) { - PageResult pageResult = storeProductRelationService.getStoreProductRelationPage(pageVO); - return success(pageResult); - } - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrelation/vo/StoreProductRelationBaseVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrelation/vo/StoreProductRelationBaseVO.java deleted file mode 100644 index e320c07..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrelation/vo/StoreProductRelationBaseVO.java +++ /dev/null @@ -1,31 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproductrelation.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import javax.validation.constraints.*; - -/** -* 商品点赞和收藏 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class StoreProductRelationBaseVO { - - @Schema(description = "用户ID", required = true, example = "17942") - @NotNull(message = "用户ID不能为空") - private Long uid; - - @Schema(description = "商品ID", required = true, example = "8816") - @NotNull(message = "商品ID不能为空") - private Long productId; - - @Schema(description = "类型(收藏(collect)、点赞(like))", example = "2") - private String type; - - @Schema(description = "某种类型的商品(普通商品、秒杀商品)") - private String category; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrelation/vo/StoreProductRelationPageReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrelation/vo/StoreProductRelationPageReqVO.java deleted file mode 100644 index 3d0511b..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrelation/vo/StoreProductRelationPageReqVO.java +++ /dev/null @@ -1,37 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproductrelation.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import co.yixiang.yshop.framework.common.pojo.PageParam; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 商品点赞和收藏分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class StoreProductRelationPageReqVO extends PageParam { - - @Schema(description = "用户ID", example = "17942") - private Long uid; - - @Schema(description = "商品ID", example = "8816") - private Long productId; - - @Schema(description = "类型(收藏(collect)、点赞(like))", example = "collect") - private String type = "collect"; - - @Schema(description = "某种类型的商品(普通商品、秒杀商品)") - private String category; - - @Schema(description = "添加时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; - - @Schema(description = "昵称") - private String nickname; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrelation/vo/StoreProductRelationRespVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrelation/vo/StoreProductRelationRespVO.java deleted file mode 100644 index a241ab0..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrelation/vo/StoreProductRelationRespVO.java +++ /dev/null @@ -1,30 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproductrelation.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.time.LocalDateTime; -import java.util.Date; - -@Schema(description = "管理后台 - 商品点赞和收藏 Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class StoreProductRelationRespVO extends StoreProductRelationBaseVO { - - @Schema(description = "id", required = true, example = "24658") - private Long id; - - - @Schema(description = "添加时间", required = true) - private Date createTime; - - @Schema(description = "商品名称", required = true) - private String storeName; - - @Schema(description = "用户昵称", required = true) - private String nickname; - - @Schema(description = "用户头像", required = true) - private String avatar; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/StoreProductReplyController.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/StoreProductReplyController.java deleted file mode 100644 index d8a526e..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/StoreProductReplyController.java +++ /dev/null @@ -1,86 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproductreply; - -import co.yixiang.yshop.module.product.controller.app.product.vo.AppStoreProductReplyQueryVo; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import static co.yixiang.yshop.framework.common.pojo.CommonResult.success; - -import co.yixiang.yshop.framework.excel.core.util.ExcelUtils; - -import co.yixiang.yshop.framework.operatelog.core.annotations.OperateLog; -import static co.yixiang.yshop.framework.operatelog.core.enums.OperateTypeEnum.*; - -import co.yixiang.yshop.module.product.controller.admin.storeproductreply.vo.*; -import co.yixiang.yshop.module.product.dal.dataobject.storeproductreply.StoreProductReplyDO; -import co.yixiang.yshop.module.product.convert.storeproductreply.StoreProductReplyConvert; -import co.yixiang.yshop.module.product.service.storeproductreply.StoreProductReplyService; - -@Tag(name = "管理后台 - 评论") -@RestController -@RequestMapping("/product/store-product-reply") -@Validated -public class StoreProductReplyController { - - @Resource - private StoreProductReplyService storeProductReplyService; - - - @PutMapping("/update") - @Operation(summary = "更新评论") - @PreAuthorize("@ss.hasPermission('product:store-product-reply:update')") - public CommonResult updateStoreProductReply(@Valid @RequestBody StoreProductReplyUpdateReqVO updateReqVO) { - storeProductReplyService.updateStoreProductReply(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除评论") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('product:store-product-reply:delete')") - public CommonResult deleteStoreProductReply(@RequestParam("id") Long id) { - storeProductReplyService.deleteStoreProductReply(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得评论") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('product:store-product-reply:query')") - public CommonResult getStoreProductReply(@RequestParam("id") Long id) { - StoreProductReplyDO storeProductReply = storeProductReplyService.getStoreProductReply(id); - return success(StoreProductReplyConvert.INSTANCE.convert(storeProductReply)); - } - - @PostMapping("/merchantReply") - @Operation(summary = "回复") - @PreAuthorize("@ss.hasPermission('product:store-product-reply:update')") - public CommonResult merchantReply(@Valid @RequestBody StoreProductMerchantReplyReqVO reqVO) { - return success( storeProductReplyService.merchantReply(reqVO)); - } - - - @GetMapping("/page") - @Operation(summary = "获得评论分页") - @PreAuthorize("@ss.hasPermission('product:store-product-reply:query')") - public CommonResult> getStoreProductReplyPage(@Valid StoreProductReplyPageReqVO pageVO) { - PageResult pageResult = storeProductReplyService.getStoreProductReplyPage(pageVO); - return success(pageResult); - } - - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductMerchantReplyReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductMerchantReplyReqVO.java deleted file mode 100644 index ff1fff6..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductMerchantReplyReqVO.java +++ /dev/null @@ -1,29 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproductreply.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; -import org.springframework.format.annotation.DateTimeFormat; - -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 管理员回复 Request VO") -@Data -@ToString(callSuper = true) -public class StoreProductMerchantReplyReqVO { - - @Schema(description = "评论ID", required = true, example = "7419") - @NotNull(message = "评论ID不能为空") - private Long id; - - @NotNull(message = "回复内容不能为空") - @Size(max = 250,message = "回复字数不能超过250个字符") - @Schema(description = "管理员回复内容") - private String merchantReplyContent; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductReplyBaseVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductReplyBaseVO.java deleted file mode 100644 index d747928..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductReplyBaseVO.java +++ /dev/null @@ -1,68 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproductreply.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import javax.validation.constraints.*; -import org.springframework.format.annotation.DateTimeFormat; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -/** -* 评论 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class StoreProductReplyBaseVO { - - @Schema(description = "用户ID", required = true, example = "12573") - @NotNull(message = "用户ID不能为空") - private Long uid; - - @Schema(description = "订单ID", required = true, example = "5646") - @NotNull(message = "订单ID不能为空") - private Long oid; - - @Schema(description = "唯一id", required = true) - @NotNull(message = "唯一id不能为空") - private String unique; - - @Schema(description = "产品id", required = true, example = "23509") - @NotNull(message = "产品id不能为空") - private Long productId; - - @Schema(description = "某种商品类型(普通商品、秒杀商品)", required = true, example = "2") - @NotNull(message = "某种商品类型(普通商品、秒杀商品)不能为空") - private String replyType; - - @Schema(description = "商品分数", required = true) - @NotNull(message = "商品分数不能为空") - private Integer productScore; - - @Schema(description = "服务分数", required = true) - @NotNull(message = "服务分数不能为空") - private Integer serviceScore; - - @Schema(description = "评论内容", required = true) - @NotNull(message = "评论内容不能为空") - private String comment; - - @Schema(description = "评论图片", required = true) - @NotNull(message = "评论图片不能为空") - private String pics; - - @Schema(description = "管理员回复内容") - private String merchantReplyContent; - - @Schema(description = "管理员回复时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime merchantReplyTime; - - @Schema(description = "0未回复1已回复", required = true) - @NotNull(message = "0未回复1已回复不能为空") - private Integer isReply; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductReplyPageReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductReplyPageReqVO.java deleted file mode 100644 index bc600d8..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductReplyPageReqVO.java +++ /dev/null @@ -1,62 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproductreply.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import co.yixiang.yshop.framework.common.pojo.PageParam; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 评论分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class StoreProductReplyPageReqVO extends PageParam { - - @Schema(description = "用户昵称", example = "12573") - private String nickname; - - @Schema(description = "用户ID", example = "12573") - private Long uid; - - @Schema(description = "订单ID", example = "5646") - private Long oid; - - @Schema(description = "唯一id") - private String unique; - - @Schema(description = "产品id", example = "23509") - private Long productId; - - @Schema(description = "某种商品类型(普通商品、秒杀商品)", example = "2") - private String replyType; - - @Schema(description = "商品分数") - private Boolean productScore; - - @Schema(description = "服务分数") - private Boolean serviceScore; - - @Schema(description = "评论内容") - private String comment; - - @Schema(description = "评论图片") - private String pics; - - @Schema(description = "评论时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; - - @Schema(description = "管理员回复内容") - private String merchantReplyContent; - - @Schema(description = "管理员回复时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] merchantReplyTime; - - @Schema(description = "0未回复1已回复") - private Boolean isReply; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductReplyRespVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductReplyRespVO.java deleted file mode 100644 index 98d539b..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductReplyRespVO.java +++ /dev/null @@ -1,19 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproductreply.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - 评论 Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class StoreProductReplyRespVO extends StoreProductReplyBaseVO { - - @Schema(description = "评论ID", required = true, example = "7419") - private Long id; - - @Schema(description = "评论时间", required = true) - private LocalDateTime createTime; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductReplyUpdateReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductReplyUpdateReqVO.java deleted file mode 100644 index 0a27272..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductreply/vo/StoreProductReplyUpdateReqVO.java +++ /dev/null @@ -1,18 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproductreply.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; - -@Schema(description = "管理后台 - 评论更新 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class StoreProductReplyUpdateReqVO extends StoreProductReplyBaseVO { - - @Schema(description = "评论ID", required = true, example = "7419") - @NotNull(message = "评论ID不能为空") - private Long id; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/StoreProductRuleController.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/StoreProductRuleController.java deleted file mode 100644 index 7447f0f..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/StoreProductRuleController.java +++ /dev/null @@ -1,119 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproductrule; - -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; - -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.common.pojo.CommonResult; - -import static co.yixiang.yshop.framework.common.pojo.CommonResult.success; - -import co.yixiang.yshop.framework.excel.core.util.ExcelUtils; - -import co.yixiang.yshop.framework.operatelog.core.annotations.OperateLog; - -import static co.yixiang.yshop.framework.operatelog.core.enums.OperateTypeEnum.*; - -import co.yixiang.yshop.module.product.controller.admin.storeproductrule.vo.*; -import co.yixiang.yshop.module.product.dal.dataobject.storeproductrule.StoreProductRuleDO; -import co.yixiang.yshop.module.product.convert.storeproductrule.StoreProductRuleConvert; -import co.yixiang.yshop.module.product.service.storeproductrule.StoreProductRuleService; - -@Tag(name = "管理后台 - 商品规则值(规格)") -@RestController -@RequestMapping("/product/store-product-rule") -@Validated -public class StoreProductRuleController { - - @Resource - private StoreProductRuleService storeProductRuleService; - - - @PostMapping("/save/{id}") - @Operation(summary = "创建与更新商品规则值(规格)") - @PreAuthorize("@ss.hasPermission('shop:store-product-rule:create')") - public CommonResult createStoreProductRule(@Valid @RequestBody StoreProductRuleCreateReqVO createReqVO, @PathVariable Integer id) { - if (id != null && id > 0) { - StoreProductRuleUpdateReqVO updateReqVO = new StoreProductRuleUpdateReqVO(); - updateReqVO.setId(id); - updateReqVO.setRuleName(createReqVO.getRuleName()); - updateReqVO.setRuleValue(createReqVO.getRuleValue()); - storeProductRuleService.updateStoreProductRule(updateReqVO); - return success(1); - } else { - return success(storeProductRuleService.createStoreProductRule(createReqVO)); - } - } - - - @DeleteMapping("/delete") - @Operation(summary = "删除商品规则值(规格)") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('shop:store-product-rule:delete')") - public CommonResult deleteStoreProductRule(@RequestParam("id") Integer id) { - storeProductRuleService.deleteStoreProductRule(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得商品规则值(规格)") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('shop:store-product-rule:query')") - public CommonResult getStoreProductRule(@RequestParam("id") Integer id) { - StoreProductRuleDO storeProductRule = storeProductRuleService.getStoreProductRule(id); - return success(StoreProductRuleConvert.INSTANCE.convert(storeProductRule)); - } - - @GetMapping("/list") - @Operation(summary = "获得商品规则值(规格)列表") - @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") - @PreAuthorize("@ss.hasPermission('shop:store-product-rule:query')") - public CommonResult> getStoreProductRuleList(@RequestParam("ids") Collection ids) { - List list = storeProductRuleService.getStoreProductRuleList(ids); - return success(StoreProductRuleConvert.INSTANCE.convertList(list)); - } - - @GetMapping("/page") - @Operation(summary = "获得商品规则值(规格)分页") - @PreAuthorize("@ss.hasPermission('shop:store-product-rule:query')") - public CommonResult> getStoreProductRulePage(@Valid StoreProductRulePageReqVO pageVO) { - PageResult pageResult = storeProductRuleService.getStoreProductRulePage(pageVO); - System.out.println("aa:" + pageResult); - return success(StoreProductRuleConvert.INSTANCE.convertPage(pageResult)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出商品规则值(规格) Excel") - @PreAuthorize("@ss.hasPermission('shop:store-product-rule:export')") - @OperateLog(type = EXPORT) - public void exportStoreProductRuleExcel(@Valid StoreProductRuleExportReqVO exportReqVO, - HttpServletResponse response) throws IOException { - List list = storeProductRuleService.getStoreProductRuleList(exportReqVO); - // 导出 Excel转换list数据 - List datas = new ArrayList<>(); - - list.forEach(sprDO -> { - StoreProductRuleExcelVO storeProductRuleExcelVO = new StoreProductRuleExcelVO(); - storeProductRuleExcelVO.setId(sprDO.getId()); - storeProductRuleExcelVO.setRuleName(sprDO.getRuleName()); - storeProductRuleExcelVO.setRuleValue(sprDO.getRuleValue().toJSONString()); - storeProductRuleExcelVO.setCreateTime(sprDO.getCreateTime()); - datas.add(storeProductRuleExcelVO); - } - ); - ExcelUtils.write(response, "商品规则值(规格).xls", "数据", StoreProductRuleExcelVO.class, datas); - } - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleBaseVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleBaseVO.java deleted file mode 100644 index 64cf53a..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleBaseVO.java +++ /dev/null @@ -1,29 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproductrule.vo; - - -import com.alibaba.fastjson.JSONArray; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - -import javax.validation.constraints.*; - - -/** -* 商品规则值(规格) Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class StoreProductRuleBaseVO { - - @Schema(description = "id", required = false, example = "有值表示是更新没值是添加") - private Integer id; - - @Schema(description = "规格名称", required = true, example = "赵六") - @NotNull(message = "规格名称不能为空") - private String ruleName; - - @Schema(description = "规格值", required = true) - @NotNull(message = "规格值不能为空") - private JSONArray ruleValue; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleCreateReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleCreateReqVO.java deleted file mode 100644 index cf97ab0..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleCreateReqVO.java +++ /dev/null @@ -1,12 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproductrule.vo; - -import lombok.*; -import io.swagger.v3.oas.annotations.media.Schema; - -@Schema(description = "管理后台 - 商品规则值(规格)创建 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class StoreProductRuleCreateReqVO extends StoreProductRuleBaseVO { - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleExcelVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleExcelVO.java deleted file mode 100644 index 406531c..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleExcelVO.java +++ /dev/null @@ -1,30 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproductrule.vo; - -import com.alibaba.fastjson.JSONArray; -import lombok.*; - -import java.time.LocalDateTime; - -import com.alibaba.excel.annotation.ExcelProperty; - -/** - * 商品规则值(规格) Excel VO - * - * @author yshop - */ -@Data -public class StoreProductRuleExcelVO { - - @ExcelProperty("规格id") - private Integer id; - - @ExcelProperty("规格名称") - private String ruleName; - - @ExcelProperty("规格值") - private String ruleValue; - - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleExportReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleExportReqVO.java deleted file mode 100644 index 5f444a9..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleExportReqVO.java +++ /dev/null @@ -1,13 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproductrule.vo; - -import lombok.*; -import io.swagger.v3.oas.annotations.media.Schema; - -@Schema(description = "管理后台 - 商品规则值(规格) Excel 导出 Request VO,参数和 StoreProductRulePageReqVO 是一致的") -@Data -public class StoreProductRuleExportReqVO { - - @Schema(description = "规格名称", example = "赵六") - private String ruleName; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRulePageReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRulePageReqVO.java deleted file mode 100644 index 00447c9..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRulePageReqVO.java +++ /dev/null @@ -1,16 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproductrule.vo; - -import lombok.*; -import io.swagger.v3.oas.annotations.media.Schema; -import co.yixiang.yshop.framework.common.pojo.PageParam; - -@Schema(description = "管理后台 - 商品规则值(规格)分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class StoreProductRulePageReqVO extends PageParam { - - @Schema(description = "规格名称", example = "赵六") - private String ruleName; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleRespVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleRespVO.java deleted file mode 100644 index e4549bc..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleRespVO.java +++ /dev/null @@ -1,19 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproductrule.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - 商品规则值(规格) Response VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class StoreProductRuleRespVO extends StoreProductRuleBaseVO { - - @Schema(description = "id", required = true, example = "2067") - private Integer id; - - @Schema(description = "创建时间") - private LocalDateTime createTime; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleUpdateReqVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleUpdateReqVO.java deleted file mode 100644 index 99b866f..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleUpdateReqVO.java +++ /dev/null @@ -1,18 +0,0 @@ -package co.yixiang.yshop.module.product.controller.admin.storeproductrule.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - -import javax.validation.constraints.*; - -@Schema(description = "管理后台 - 商品规则值(规格)更新 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class StoreProductRuleUpdateReqVO extends StoreProductRuleBaseVO { - - @Schema(description = "id", required = true, example = "2067") - @NotNull(message = "id不能为空") - private Integer id; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/cart/vo/AppStoreCartQueryVo.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/cart/vo/AppStoreCartQueryVo.java deleted file mode 100644 index 33c7fad..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/cart/vo/AppStoreCartQueryVo.java +++ /dev/null @@ -1,72 +0,0 @@ -package co.yixiang.yshop.module.product.controller.app.cart.vo; - -import co.yixiang.yshop.module.product.controller.app.product.vo.AppStoreProductRespVo; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - *

- * 购物车表 查询结果对象 - *

- * - * @author hupeng - * @date 2023-6-13 - */ -@Data -@Schema(description = "用户 APP - 购物车数据vo") -public class AppStoreCartQueryVo implements Serializable { - private static final long serialVersionUID = 1L; - - @Schema(description = "购物车表ID", required = true) - private Long id; - - @Schema(description = "用户ID", required = true) - private Long uid; - - @Schema(description = "类型", required = true) - private String type; - - @Schema(description = "商品ID", required = true) - private Long productId; - - @Schema(description = "商品属性", required = true) - private String productAttrUnique; - - @Schema(description = "商品数量", required = true) - private Integer cartNum; - - - @Schema(description = "拼团id", required = true) - private Long combinationId; - - @Schema(description = "秒杀产品ID", required = true) - private Long seckillId; - - @Schema(description = "砍价id", required = true) - private Long bargainId; - - @Schema(description = "商品信息", required = true) - private AppStoreProductRespVo productInfo; - - @Schema(description = "成本价", required = true) - private BigDecimal costPrice; - - @Schema(description = "真实价格", required = true) - private BigDecimal truePrice; - - @Schema(description = "真实库存", required = true) - private Integer trueStock; - - @Schema(description = "vip真实价格", required = true) - private BigDecimal vipTruePrice; - - @Schema(description = "唯一id", required = true) - private String unique; - - @Schema(description = "是否评价 大于0表示已经评价", required = true) - private Long isReply; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/category/AppCategoryController.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/category/AppCategoryController.java deleted file mode 100644 index 84f839f..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/category/AppCategoryController.java +++ /dev/null @@ -1,38 +0,0 @@ -package co.yixiang.yshop.module.product.controller.app.category; - -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import co.yixiang.yshop.module.product.controller.app.category.vo.AppCategoryRespVO; -import co.yixiang.yshop.module.product.convert.category.ProductCategoryConvert; -import co.yixiang.yshop.module.product.dal.dataobject.category.ProductCategoryDO; -import co.yixiang.yshop.module.product.service.category.ProductCategoryService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import java.util.Comparator; -import java.util.List; - -import static co.yixiang.yshop.framework.common.pojo.CommonResult.success; - -@Tag(name = "用户 APP - 商品分类") -@RestController -@RequestMapping("/product/category") -@Validated -public class AppCategoryController { - - @Resource - private ProductCategoryService categoryService; - - @GetMapping("/list") - @Operation(summary = "获得商品分类列表") - public CommonResult> getProductCategoryList() { - List list = categoryService.getEnableCategoryList(); - list.sort(Comparator.comparing(ProductCategoryDO::getSort)); - return success(ProductCategoryConvert.INSTANCE.convertList03(list)); - } - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/category/vo/AppCategoryRespVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/category/vo/AppCategoryRespVO.java deleted file mode 100644 index 4e8bec5..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/category/vo/AppCategoryRespVO.java +++ /dev/null @@ -1,28 +0,0 @@ -package co.yixiang.yshop.module.product.controller.app.category.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -@Data -@Schema(description = "用户 APP - 商品分类 Response VO") -public class AppCategoryRespVO { - - @Schema(description = "分类编号", required = true, example = "2") - private Long id; - - @Schema(description = "父分类编号", required = true, example = "1") - @NotNull(message = "父分类编号不能为空") - private Long parentId; - - @Schema(description = "分类名称", required = true, example = "办公文具") - @NotBlank(message = "分类名称不能为空") - private String name; - - @Schema(description = "分类图片", required = true) - @NotBlank(message = "分类图片不能为空") - private String picUrl; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/coupon/AppCouponController.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/coupon/AppCouponController.java deleted file mode 100644 index 05c1449..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/coupon/AppCouponController.java +++ /dev/null @@ -1,35 +0,0 @@ -package co.yixiang.yshop.module.product.controller.app.coupon; - -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import co.yixiang.yshop.module.product.controller.app.coupon.vo.AppCouponDetailRespVO; -import co.yixiang.yshop.module.product.service.productcoupon.AppCouponService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; - -import java.util.List; - -import static co.yixiang.yshop.framework.common.pojo.CommonResult.success; - -@Tag(name = "用户 APP - 商品优惠券") -@RestController -@RequestMapping("/product/coupon") -@Validated -public class AppCouponController { - - @Resource - private AppCouponService appCouponService; - - - @GetMapping("/receive-list/{productId}") - @Operation(summary = "查询商品可领优惠券") - @Parameter(name = "productId", description = "商品id", required = true, example = "1") - public CommonResult> receiveList(@PathVariable Long productId) { - return success(appCouponService.receiveList(productId)); - } - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/coupon/vo/AppCouponBaseVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/coupon/vo/AppCouponBaseVO.java deleted file mode 100644 index f828ef4..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/coupon/vo/AppCouponBaseVO.java +++ /dev/null @@ -1,67 +0,0 @@ -package co.yixiang.yshop.module.product.controller.app.coupon.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** -* App优惠券 Base VO,提供给添加、修改、详细的子 VO 使用 -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 -*/ -@Data -public class AppCouponBaseVO { - - @Schema(description = "优惠券id", required = true, example = "1") - private Long id; - - @Schema(description = "优惠券名称", required = true, example = "1") - private String couponName; - - @Schema(description = "优惠券面值", required = true, example = "1") - private BigDecimal couponValue; - - @Schema(description = "优惠券类型:1、满减券,2、折扣券", required = true, example = "1") - private Integer couponType; - - @Schema(description = "满减门槛", required = true, example = "1") - private BigDecimal threshold; - - @Schema(description = "折扣", required = true, example = "1") - private BigDecimal discount; - - @Schema(description = "优惠券范围:1、所有商品,2、选中商品", required = true, example = "1") - private Integer couponScope; - - @Schema(description = "范围值", required = true, example = "1") - private String scopeValues; - - @Schema(description = "优惠券数量", required = true, example = "1") - private Long number; - - @Schema(description = "生效时间", required = true, example = "1") - private LocalDateTime takingEffectTime; - - @Schema(description = "过期时间", required = true, example = "1") - private LocalDateTime expirationTime; - - @Schema(description = "领取限制类型 1 无限制 2限制次数", required = true, example = "1") - private Integer receiveType; - - @Schema(description = "限制每人领取数量", required = true, example = "1") - private Long limitNumber; - - @Schema(description = "过期类型:1、按时间,2、按天数", required = true, example = "1") - private Integer expirationType; - - @Schema(description = "过期天数", required = true, example = "1") - private Long expirationDay; - - @Schema(description = "备注", required = true, example = "1") - private String remark; - - - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/coupon/vo/AppCouponDetailRespVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/coupon/vo/AppCouponDetailRespVO.java deleted file mode 100644 index 2d60fda..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/coupon/vo/AppCouponDetailRespVO.java +++ /dev/null @@ -1,15 +0,0 @@ -package co.yixiang.yshop.module.product.controller.app.coupon.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - - -@Schema(description = "用户 APP - 优惠券明细") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class AppCouponDetailRespVO extends AppCouponBaseVO { - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/couponrelation/vo/CartCouponVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/couponrelation/vo/CartCouponVO.java index f44f238..75336bc 100644 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/couponrelation/vo/CartCouponVO.java +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/couponrelation/vo/CartCouponVO.java @@ -5,6 +5,7 @@ import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; /** * 购物车优惠券VO @@ -55,6 +56,8 @@ public class CartCouponVO { @Schema(description = "优惠金额", required = true, example = "1") private BigDecimal discountAmount; + @Schema(description = "购物车优惠券明细", required = true, example = "1") + private List detailVOList; } diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/AppStoreProductController.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/AppStoreProductController.java deleted file mode 100644 index 41a3cdc..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/AppStoreProductController.java +++ /dev/null @@ -1,176 +0,0 @@ -/** - * Copyright (C) 2018-2022 - * All rights reserved, Designed By www.yixiang.co - * 注意: - * 本软件为www.yixiang.co开发研制,未经购买不得使用 - * 购买后可获得全部源代码(禁止转卖、分享、上传到码云、github等开源平台) - * 一经发现盗用、分享等行为,将追究法律责任,后果自负 - */ -package co.yixiang.yshop.module.product.controller.app.product; - - -import cn.hutool.core.util.ObjectUtil; -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import co.yixiang.yshop.module.product.controller.app.product.param.AppStoreProductQueryParam; -import co.yixiang.yshop.module.product.controller.app.product.vo.*; -import co.yixiang.yshop.module.product.enums.product.ProductEnum; -import co.yixiang.yshop.module.product.service.storeproduct.AppStoreProductService; -import co.yixiang.yshop.module.product.service.storeproductreply.AppStoreProductReplyService; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Parameters; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.List; -import java.util.Set; - -import static co.yixiang.yshop.framework.common.pojo.CommonResult.success; -import static co.yixiang.yshop.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; - -/** - *

- * 商品控制器 - *

- * - * @author hupeng - * @since 2023-6-12 - */ -@Slf4j -@RestController -@Tag(name = "用户 APP - 商品") -@RequiredArgsConstructor(onConstructor = @__(@Autowired)) -@RequestMapping("/product") -public class AppStoreProductController { - - private final AppStoreProductService storeProductService; - private final AppStoreProductReplyService appStoreProductReplyService; - - - /** - * 获取首页产品 - */ - @GetMapping("/shop/index") - @Operation(summary = "获取首页信息") - public CommonResult index() { - AppIndexVo indexVo = AppIndexVo.builder() - .firstList(storeProductService.getList(1, 3, ProductEnum.TYPE_3.getValue())) - .likeInfo(storeProductService.getList(1, 3, ProductEnum.TYPE_2.getValue())) - .build(); - return success(indexVo); - } - - - /** - * 获取产品列表 - */ - @GetMapping("/products") - @Operation(summary = "商品列表") - public CommonResult> goodsList(AppStoreProductQueryParam productQueryParam) { - return success(storeProductService.getGoodsList(productQueryParam)); - } - - - /** - * 为你推荐 - */ - @GetMapping("/hot") - @Operation(summary = "为你推荐") - public CommonResult> productRecommend() { - return success(storeProductService.getList(1, 4, - ProductEnum.TYPE_2.getValue())); - } - - - /** - * 普通商品详情 - */ - @GetMapping("/detail/{id}") - @Operation(summary = "普通商品详情") - @Parameter(name = "id", description = "商品ID", required = true, example = "1024") - public CommonResult detail(@PathVariable long id) { - long uid = 0; - System.out.println("uid:" + getLoginUserId()); - if (ObjectUtil.isNotNull(getLoginUserId())) { - uid = getLoginUserId(); - } - AppProductVo productVo = storeProductService.goodsDetail(id, uid); - return success(productVo); - } - - - /** - * 获取产品评论 - */ - @GetMapping("/reply/list/{id}") - @Parameters({ - @Parameter(name = "id", description = "商品ID", - required = true, example = "1"), - @Parameter(name = "type", description = "评论分数类型 0-全部 1-好评 2-中评 3-差评 4-有图", - required = true, example = "1"), - @Parameter(name = "page", description = "页码,默认为1", - required = true, example = "1"), - @Parameter(name = "limit", description = "页大小,默认为10", - required = true, example = "10") - }) - @Operation(summary = "获取产品评论") - public CommonResult> replyList(@PathVariable Long id, - @RequestParam(value = "type", defaultValue = "0") int type, - @RequestParam(value = "page", defaultValue = "1") int page, - @RequestParam(value = "limit", defaultValue = "10") int limit) { - return success(appStoreProductReplyService.getReplyList(id, type, page, limit)); - } - - /** - * 获取产品评论数据 - */ - @GetMapping("/reply/config/{id}") - @Parameter(name = "id", description = "商品ID", required = true, example = "1") - @Operation(summary = "获取产品评论数据") - public CommonResult replyCount(@PathVariable Integer id) { - return success(appStoreProductReplyService.getReplyCount(id)); - } - - - /** - * 商品历史搜索记录 - */ - @GetMapping("/search/history") - @Operation(summary = "商品历史搜索记录") - public CommonResult> searchHistory() { - long uid = 0; - if (ObjectUtil.isNotNull(getLoginUserId())) { - uid = getLoginUserId(); - } - return success(storeProductService.listRecentSearch(uid)); - } - - /** - * 清除商品历史搜索记录 - */ - @PostMapping("/search/history/del") - @Operation(summary = "清除商品历史搜索记录") - public CommonResult delSearchHistory() { - long uid = 0; - if (ObjectUtil.isNotNull(getLoginUserId())) { - uid = getLoginUserId(); - } - storeProductService.removeSearchHistoryAll(uid); - return success(true); - } - - /** - * 热门搜索 - */ - @GetMapping("/search/popular/{start}/{end}") - @Operation(summary = "热门搜索") - public CommonResult> searchPopular(@PathVariable Long start,@PathVariable Long end) { - return success(storeProductService.searchPopular(start, end)); - } - -} - diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/param/AppStoreProductQueryParam.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/param/AppStoreProductQueryParam.java deleted file mode 100644 index 6966efc..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/param/AppStoreProductQueryParam.java +++ /dev/null @@ -1,42 +0,0 @@ -package co.yixiang.yshop.module.product.controller.app.product.param; - -import co.yixiang.yshop.framework.common.params.QueryParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - *

- * 商品表 查询参数对象 - *

- * - * @author hupeng - * @date 2023-6-12 - */ -@Data -@EqualsAndHashCode(callSuper = true) -@Schema(description = "用户 APP - 商品表查询参数") -public class AppStoreProductQueryParam extends QueryParam { - private static final long serialVersionUID = 1L; - - @Schema(description = "类别", required = true) - private String type; - - @Schema(description = "分类ID", required = true) - private String sid; - - @Schema(description = "是否新品,不为空的字符串即可,为空不查询", required = true) - private String news; - - @Schema(description = "是否积分兑换商品", required = true) - private Integer isIntegral; - - @Schema(description = "关键字", required = true) - private String keyword; - - @Schema(description = "按照销量排序,不为空表示查询,为空不查询", required = true) - private String sales; - - @Schema(description = "优惠券id", required = true) - private Long couponId; -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppIndexVo.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppIndexVo.java deleted file mode 100644 index 7e12000..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppIndexVo.java +++ /dev/null @@ -1,30 +0,0 @@ -package co.yixiang.yshop.module.product.controller.app.product.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -@Schema(description = "用户 APP - 首页数据") -public class AppIndexVo { - - - - @Schema(description = "首发新品", required = true) - private List firstList; - - @Schema(description = "热门榜单", required = true) - private List likeInfo; - - @Schema(description = "地图key", required = true) - private String mapKey; - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppProductVo.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppProductVo.java deleted file mode 100644 index 1bf8ebf..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppProductVo.java +++ /dev/null @@ -1,61 +0,0 @@ -package co.yixiang.yshop.module.product.controller.app.product.vo; - -import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrvalue.StoreProductAttrValueDO; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - *

- * 商品dto - *

- * - * @author hupeng - * @date 2023-6-12 - */ -@Data -@Schema(description = "用户 APP - 商品详情vo") -public class AppProductVo { - - @Schema(description = "商品信息列表", required = true) - private List goodList = new ArrayList(); - - @Schema(description = "价格", required = true) - private String priceName = ""; - - @Schema(description = "产品规格", required = true) - private List productAttr = new ArrayList(); - - @Schema(description = "属性集合", required = true) - private Map productValue = new LinkedHashMap<>(); - - @Schema(description = "评论信息", required = true) - private AppStoreProductReplyQueryVo reply; - - @Schema(description = "回复渠道", required = true) - private String replyChance; - - @Schema(description = "回复数", required = true) - private Long replyCount; - - - @Schema(description = "商品信息", required = true) - private AppStoreProductRespVo storeInfo; - - @Schema(description = "腾讯地图key", required = true) - private String mapKey; - - - @Schema(description = "用户ID", required = true) - private Integer uid = 0; - - @Schema(description = "模版名称", required = true) - private String tempName; - - @Schema(description = "优惠信息", required = true) - private String couponSplicing; -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppReplyCountVo.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppReplyCountVo.java deleted file mode 100644 index 30b6ebe..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppReplyCountVo.java +++ /dev/null @@ -1,38 +0,0 @@ -package co.yixiang.yshop.module.product.controller.app.product.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - -import java.io.Serializable; - -/** - * @ClassName ReplyCount - * @Author hupeng <610796224@qq.com> - * @Date 2023/7/9 - **/ -@Getter -@Setter -@AllArgsConstructor -@NoArgsConstructor -@Builder -public class AppReplyCountVo implements Serializable { - - @Schema(description = "总的评论数", required = true) - private Long sumCount; - - @Schema(description = "好评数", required = true) - private Long goodCount; - - @Schema(description = "中评数", required = true) - private Long inCount; - - @Schema(description = "差评数", required = true) - private Long poorCount; - - @Schema(description = "好评率", required = true) - private String replyChance; - - @Schema(description = "好评星星数", required = true) - private String replySstar; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppStoreProductAttrQueryVo.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppStoreProductAttrQueryVo.java deleted file mode 100644 index b07e677..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppStoreProductAttrQueryVo.java +++ /dev/null @@ -1,41 +0,0 @@ -package co.yixiang.yshop.module.product.controller.app.product.vo; - -import co.yixiang.yshop.module.product.service.storeproduct.dto.AttrValueDto; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -/** - *

- * 商品属性表 查询结果对象 - *

- * - * @author hupeng - * @date 2023-6-12 - */ -@Data -@Schema(description = "用户 APP - 商品属性表vo") -public class AppStoreProductAttrQueryVo implements Serializable { - private static final long serialVersionUID = 1L; - - @Schema(description = "ID", required = true) - private Long id; - - @Schema(description = "商品ID", required = true) - private Long productId; - - @Schema(description = "属性名", required = true) - private String attrName; - - @Schema(description = "属性值", required = true) - private String attrValues; - - @Schema(description = "属性值集合", required = true) - private List attrValue; - - @Schema(description = "属性列表", required = true) - private List attrValueArr; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppStoreProductReplyQueryVo.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppStoreProductReplyQueryVo.java deleted file mode 100644 index 406409f..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppStoreProductReplyQueryVo.java +++ /dev/null @@ -1,73 +0,0 @@ -package co.yixiang.yshop.module.product.controller.app.product.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 评论表 查询结果对象 - *

- * - * @author hupeng - * @date 2023-6-12 - */ -@Data -@Schema(description = "用户 APP - 评论表vo") -public class AppStoreProductReplyQueryVo implements Serializable { - private static final long serialVersionUID = 1L; - - @Schema(description = "评论ID", requiredMode = Schema.RequiredMode.REQUIRED) - private Long id; - - @Schema(description = "产品id", requiredMode = Schema.RequiredMode.REQUIRED) - private Long productId; - - @Schema(description = "某种商品类型(普通商品、秒杀商品)", requiredMode = Schema.RequiredMode.REQUIRED) - private String replyType; - - @Schema(description = "商品分数", requiredMode = Schema.RequiredMode.REQUIRED) - private Integer productScore; - - @Schema(description = "服务分数", requiredMode = Schema.RequiredMode.REQUIRED) - private Integer serviceScore; - - @Schema(description = "评论内容", requiredMode = Schema.RequiredMode.REQUIRED) - private String comment; - - @Schema(description = "评论图片", requiredMode = Schema.RequiredMode.REQUIRED) - private String []pics; - - @Schema(description = "评论图片,字符串", requiredMode = Schema.RequiredMode.REQUIRED) - private String pictures; - - @Schema(description = "管理员回复内容", requiredMode = Schema.RequiredMode.REQUIRED) - private String merchantReplyContent; - - @Schema(description = "管理员回复时间", requiredMode = Schema.RequiredMode.REQUIRED) - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - private Date merchantReplyTime; - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - @Schema(description = "发布时间", requiredMode = Schema.RequiredMode.REQUIRED) - private Date createTime; - - @Schema(description = "评价星星数", requiredMode = Schema.RequiredMode.REQUIRED) - private String star; - - @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED) - private String nickname; - - @Schema(description = "用户头像", requiredMode = Schema.RequiredMode.REQUIRED) - private String avatar; - - @Schema(description = "商品sku", requiredMode = Schema.RequiredMode.REQUIRED) - private String sku; - - private String cartInfo; - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppStoreProductRespVo.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppStoreProductRespVo.java deleted file mode 100644 index 9daac24..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/product/vo/AppStoreProductRespVo.java +++ /dev/null @@ -1,92 +0,0 @@ -package co.yixiang.yshop.module.product.controller.app.product.vo; - - -import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrvalue.StoreProductAttrValueDO; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - *

- * 商品表 查询结果对象 - *

- * - * @author hupeng - * @date 2023-6-12 - */ -@Data -@Schema(description = "商品 APP - 获取商品列表查询结果数") -public class AppStoreProductRespVo implements Serializable { - private static final long serialVersionUID = 1L; - - @Schema(description = "id", required = true) - private Long id; - - @Schema(description = "商品图片", required = true) - private String image; - - - @Schema(description = "是否收藏", required = true) - private Boolean userCollect = false; - - @Schema(description = "是否喜欢", required = true) - private Boolean userLike = false; - - @Schema(description = "轮播图,多个用,分割", required = true) - private String sliderImage; - - @Schema(description = "商品属性信息", required = true) - private StoreProductAttrValueDO attrInfo; - - @Schema(description = "商品名称", required = true) - private String storeName; - - @Schema(description = "商品简介", required = true) - private String storeInfo; - - @Schema(description = "关键字", required = true) - private String keyword; - - @Schema(description = "商品价格", required = true) - private BigDecimal price; - - @Schema(description = "会员价格", required = true) - private BigDecimal vipPrice; - - @Schema(description = "市场价", required = true) - private BigDecimal otPrice; - - @Schema(description = "邮费", required = true) - private BigDecimal postage; - - @Schema(description = "单位名", required = true) - private String unitName; - - @Schema(description = "销量", required = true) - private Integer sales; - - @Schema(description = "库存", required = true) - private Integer stock; - - @Schema(description = "产品描述", required = true) - private String description; - - @Schema(description = "获得积分", required = true) - private BigDecimal giveIntegral; - - @Schema(description = "需要多少积分", required = true) - private Integer integral; - - @Schema(description = "状态(0:未上架,1:上架)", required = true) - private Integer isShow; - - @Schema(description = "运费模板id", required = true) - private Integer tempId; - - @Schema(description = "新品(0:默认,1:新品)",required = true) - private Integer isNew; - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/relation/AppStoreProductRelationController.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/relation/AppStoreProductRelationController.java deleted file mode 100644 index 6a4b303..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/relation/AppStoreProductRelationController.java +++ /dev/null @@ -1,112 +0,0 @@ -/** - * Copyright (C) 2018-2022 - * All rights reserved, Designed By www.yixiang.co - * 注意: - * 本软件为www.yixiang.co开发研制,未经购买不得使用 - * 购买后可获得全部源代码(禁止转卖、分享、上传到码云、github等开源平台) - * 一经发现盗用、分享等行为,将追究法律责任,后果自负 - */ -package co.yixiang.yshop.module.product.controller.app.relation; - - -import cn.hutool.core.util.NumberUtil; -import co.yixiang.yshop.framework.common.pojo.CommonResult; -import co.yixiang.yshop.framework.common.util.collection.CollectionUtils; -import co.yixiang.yshop.framework.security.core.annotations.PreAuthenticated; -import co.yixiang.yshop.module.product.controller.app.relation.param.AppStoreProductRelationQueryParam; -import co.yixiang.yshop.module.product.controller.app.relation.param.BatchDelAppStoreProductRelationQueryParam; -import co.yixiang.yshop.module.product.controller.app.relation.vo.AppStoreProductRelationQueryVo; -import co.yixiang.yshop.module.product.service.storeproductrelation.AppStoreProductRelationService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; -import static co.yixiang.yshop.framework.common.pojo.CommonResult.success; -import static co.yixiang.yshop.framework.web.core.util.WebFrameworkUtils.getLoginUserId; -import static co.yixiang.yshop.module.product.enums.ErrorCodeConstants.PARAM_ERROR; - -/** - *

- * 收藏/足迹控制器 - *

- * - * @author hupeng - * @since 2023-6-14 - */ -@Slf4j -@RestController -@Tag(name = "用户 APP - 收藏(足迹)") -@RequiredArgsConstructor(onConstructor = @__(@Autowired)) -@RequestMapping("/relation") -public class AppStoreProductRelationController { - - private final AppStoreProductRelationService appStoreProductRelationService; - - - /** - * 添加收藏 - */ - @PostMapping("/collect/add") - @Operation(summary = "添加收藏") - @PreAuthenticated - public CommonResult collectAdd(@Validated @RequestBody AppStoreProductRelationQueryParam param) { - if (!NumberUtil.isNumber(param.getProductId())) { - throw exception(PARAM_ERROR); - } - appStoreProductRelationService.addProductRelation(Long.parseLong(param.getProductId()), getLoginUserId(), param.getCategory()); - return success(true); - } - - /** - * 取消收藏/删除足迹 - */ - @PreAuthenticated - @PostMapping("/collect/del") - @Operation(summary = "取消收藏") - public CommonResult collectDel(@Validated @RequestBody AppStoreProductRelationQueryParam param) { - if (!NumberUtil.isNumber(param.getProductId())) { - throw exception(PARAM_ERROR); - } - appStoreProductRelationService.delProductRelation(Long.parseLong(param.getProductId()), - getLoginUserId(), param.getCategory(),param.getType()); - return success(true); - } - - /** - * 批量取消收藏 - */ - @PreAuthenticated - @PostMapping("/collect/batchDel") - @Operation(summary = "批量取消收藏/足迹") - public CommonResult batchDelCollect(@Validated @RequestBody BatchDelAppStoreProductRelationQueryParam param) { - if (CollectionUtils.isAnyEmpty(param.getProductIdList())) { - throw exception(PARAM_ERROR); - } - appStoreProductRelationService.batchDelProductRelation(param.getProductIdList(), getLoginUserId(), param.getCategory(),param.getType()); - return success(true); - } - - /** - * 获取收藏产品,足迹 - */ - @PreAuthenticated - @GetMapping("/collect/user") - @Operation(summary = "获取收藏产品,或足迹") - @Parameter(name = "type", description = "类型 collect 收藏 foot足迹", required = true) - public CommonResult> collectRootUser(@RequestParam(value = "page", defaultValue = "1") Integer page, - @RequestParam(value = "limit", defaultValue = "10") Integer limit, - @RequestParam(value = "type") String type) { - return success(appStoreProductRelationService.userCollectRootProductList(page, limit, getLoginUserId(), type)); - } - - -} - diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/relation/param/AppStoreProductRelationQueryParam.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/relation/param/AppStoreProductRelationQueryParam.java deleted file mode 100644 index 42b6671..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/relation/param/AppStoreProductRelationQueryParam.java +++ /dev/null @@ -1,33 +0,0 @@ -package co.yixiang.yshop.module.product.controller.app.relation.param; - -import co.yixiang.yshop.framework.common.validation.InEnum; -import co.yixiang.yshop.module.product.enums.product.RelationCateEnum; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Getter; -import lombok.Setter; - -import javax.validation.constraints.NotBlank; - -/** - *

- * 商品点赞和收藏表 查询参数对象 - *

- * - * @author hupeng - * @date 2019-10-23 - */ -@Getter -@Setter -@Schema(description = "用户 APP - 收藏/足迹查询参数") -public class AppStoreProductRelationQueryParam { - - @NotBlank(message = "参数有误") - @Schema(description = "商品id", requiredMode = Schema.RequiredMode.REQUIRED) - private String productId; - - @Schema(description = "类型,collect|foot|like") - private String type = "collect"; - - @Schema(description = "商品类型,参见RelationCateEnum,默认值common") - private String category = "common"; -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/relation/param/BatchDelAppStoreProductRelationQueryParam.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/relation/param/BatchDelAppStoreProductRelationQueryParam.java deleted file mode 100644 index 104efc7..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/relation/param/BatchDelAppStoreProductRelationQueryParam.java +++ /dev/null @@ -1,31 +0,0 @@ -package co.yixiang.yshop.module.product.controller.app.relation.param; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.Getter; -import lombok.Setter; - -import javax.validation.constraints.NotBlank; -import java.util.List; - -/** - *

- * 商品点赞和收藏表 查询参数对象 - *

- * - * @author hupeng - * @date 2019-10-23 - */ -@Data -@Schema(description = "用户 APP - 批量删除收藏/足迹查询参数") -public class BatchDelAppStoreProductRelationQueryParam { - - @Schema(description = "商品id", requiredMode = Schema.RequiredMode.REQUIRED) - private List productIdList; - - @Schema(description = "商品类型,参见RelationCateEnum,默认值common",defaultValue = "common") - private String category = "common"; - - @Schema(description = "collect/foot",defaultValue = "collect") - private String type = "collect"; -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/relation/vo/AppStoreProductRelationQueryVo.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/relation/vo/AppStoreProductRelationQueryVo.java deleted file mode 100644 index 5c5f0f8..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/app/relation/vo/AppStoreProductRelationQueryVo.java +++ /dev/null @@ -1,59 +0,0 @@ -package co.yixiang.yshop.module.product.controller.app.relation.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.io.Serializable; -import java.util.Date; - -/** - *

- * 商品点赞和收藏表 查询结果对象 - *

- * - * @author hupeng - * @date 2023-6-14 - */ -@Data -@Schema(description = "用户 APP - 商品点赞和收藏vo") -public class AppStoreProductRelationQueryVo implements Serializable { - private static final long serialVersionUID = 1L; - - private Long id; - - @Schema(description = "用户ID", required = true) - private Long uid; - - @Schema(description = "商品ID", required = true) - private Long productId; - - @Schema(description = "类型(收藏(collect)、足迹(root))", required = true) - private String type; - - @Schema(description = "某种类型的商品(普通商品、秒杀商品)", required = true) - private String category; - - @Schema(description = "添加时间", required = true) - private Date createTime; - - @Schema(description = "产品图片", required = true) - private String image; - - @Schema(description = "产品价格", required = true) - private Double price; - - @Schema(description = "产品销量", required = true) - private Integer sales; - - @Schema(description = "商品名称", required = true) - private String storeName; - - @Schema(description = "用户昵称", required = true) - private String nickname; - - @Schema(description = "用户头像", required = true) - private String avatar; - - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/brand/ProductBrandConvert.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/brand/ProductBrandConvert.java deleted file mode 100644 index 1ff4308..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/brand/ProductBrandConvert.java +++ /dev/null @@ -1,33 +0,0 @@ -package co.yixiang.yshop.module.product.convert.brand; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.product.controller.admin.brand.vo.ProductBrandCreateReqVO; -import co.yixiang.yshop.module.product.controller.admin.brand.vo.ProductBrandRespVO; -import co.yixiang.yshop.module.product.controller.admin.brand.vo.ProductBrandUpdateReqVO; -import co.yixiang.yshop.module.product.dal.dataobject.brand.ProductBrandDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -/** - * 品牌 Convert - * - * @author yshop - */ -@Mapper -public interface ProductBrandConvert { - - ProductBrandConvert INSTANCE = Mappers.getMapper(ProductBrandConvert.class); - - ProductBrandDO convert(ProductBrandCreateReqVO bean); - - ProductBrandDO convert(ProductBrandUpdateReqVO bean); - - ProductBrandRespVO convert(ProductBrandDO bean); - - List convertList(List list); - - PageResult convertPage(PageResult page); - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/category/ProductCategoryConvert.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/category/ProductCategoryConvert.java deleted file mode 100644 index d3f5f47..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/category/ProductCategoryConvert.java +++ /dev/null @@ -1,32 +0,0 @@ -package co.yixiang.yshop.module.product.convert.category; - -import co.yixiang.yshop.module.product.controller.admin.category.vo.ProductCategoryCreateReqVO; -import co.yixiang.yshop.module.product.controller.admin.category.vo.ProductCategoryRespVO; -import co.yixiang.yshop.module.product.controller.admin.category.vo.ProductCategoryUpdateReqVO; -import co.yixiang.yshop.module.product.controller.app.category.vo.AppCategoryRespVO; -import co.yixiang.yshop.module.product.dal.dataobject.category.ProductCategoryDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -/** - * 商品分类 Convert - * - * @author yshop - */ -@Mapper -public interface ProductCategoryConvert { - - ProductCategoryConvert INSTANCE = Mappers.getMapper(ProductCategoryConvert.class); - - ProductCategoryDO convert(ProductCategoryCreateReqVO bean); - - ProductCategoryDO convert(ProductCategoryUpdateReqVO bean); - - ProductCategoryRespVO convert(ProductCategoryDO bean); - - List convertList(List list); - - List convertList03(List list); -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/shippingtemplates/ShippingTemplatesConvert.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/shippingtemplates/ShippingTemplatesConvert.java deleted file mode 100644 index b5ac7f4..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/shippingtemplates/ShippingTemplatesConvert.java +++ /dev/null @@ -1,34 +0,0 @@ -package co.yixiang.yshop.module.product.convert.shippingtemplates; - -import java.util.*; - -import co.yixiang.yshop.framework.common.pojo.PageResult; - -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; -import co.yixiang.yshop.module.product.controller.admin.shippingtemplates.vo.*; -import co.yixiang.yshop.module.product.dal.dataobject.shippingtemplates.ShippingTemplatesDO; - -/** - * 运费模板 Convert - * - * @author yshop - */ -@Mapper -public interface ShippingTemplatesConvert { - - ShippingTemplatesConvert INSTANCE = Mappers.getMapper(ShippingTemplatesConvert.class); - - ShippingTemplatesDO convert(ShippingTemplatesCreateReqVO bean); - - ShippingTemplatesDO convert(ShippingTemplatesUpdateReqVO bean); - - ShippingTemplatesRespVO convert(ShippingTemplatesDO bean); - - List convertList(List list); - - PageResult convertPage(PageResult page); - - List convertList02(List list); - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/shippingtemplatesfree/ShippingTemplatesFreeConvert.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/shippingtemplatesfree/ShippingTemplatesFreeConvert.java deleted file mode 100644 index b9f7955..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/shippingtemplatesfree/ShippingTemplatesFreeConvert.java +++ /dev/null @@ -1,16 +0,0 @@ -package co.yixiang.yshop.module.product.convert.shippingtemplatesfree; - -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -/** - * 运费包邮明细 Convert - * - * @author yshop - */ -@Mapper -public interface ShippingTemplatesFreeConvert { - - ShippingTemplatesFreeConvert INSTANCE = Mappers.getMapper(ShippingTemplatesFreeConvert.class); - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/shippingtemplatesregion/ShippingTemplatesRegionConvert.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/shippingtemplatesregion/ShippingTemplatesRegionConvert.java deleted file mode 100644 index da246b8..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/shippingtemplatesregion/ShippingTemplatesRegionConvert.java +++ /dev/null @@ -1,17 +0,0 @@ -package co.yixiang.yshop.module.product.convert.shippingtemplatesregion; - - -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -/** - * 运费区域明细 Convert - * - * @author yshop - */ -@Mapper -public interface ShippingTemplatesRegionConvert { - - ShippingTemplatesRegionConvert INSTANCE = Mappers.getMapper(ShippingTemplatesRegionConvert.class); - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproduct/StoreProductConvert.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproduct/StoreProductConvert.java deleted file mode 100644 index e67d58b..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproduct/StoreProductConvert.java +++ /dev/null @@ -1,38 +0,0 @@ -package co.yixiang.yshop.module.product.convert.storeproduct; - -import java.util.*; - -import co.yixiang.yshop.framework.common.pojo.PageResult; - -import co.yixiang.yshop.module.product.controller.app.product.vo.AppStoreProductRespVo; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; -import co.yixiang.yshop.module.product.controller.admin.storeproduct.vo.*; -import co.yixiang.yshop.module.product.dal.dataobject.storeproduct.StoreProductDO; - -/** - * 商品 Convert - * - * @author yshop - */ -@Mapper -public interface StoreProductConvert { - - StoreProductConvert INSTANCE = Mappers.getMapper(StoreProductConvert.class); - - StoreProductDO convert(StoreProductCreateReqVO bean); - - StoreProductDO convert(StoreProductUpdateReqVO bean); - - StoreProductRespVO convert(StoreProductDO bean); - - AppStoreProductRespVo convert01(StoreProductDO bean); - - List convertList(List list); - - PageResult convertPage(PageResult page); - - List convertList02(List list); - - List convertList03(List list); -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattr/StoreProductAttrConvert.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattr/StoreProductAttrConvert.java deleted file mode 100644 index 6a188d4..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattr/StoreProductAttrConvert.java +++ /dev/null @@ -1,23 +0,0 @@ -package co.yixiang.yshop.module.product.convert.storeproductattr; - -import co.yixiang.yshop.module.product.controller.admin.storeproduct.vo.StoreProductRespVO; -import co.yixiang.yshop.module.product.controller.app.product.vo.AppStoreProductAttrQueryVo; -import co.yixiang.yshop.module.product.dal.dataobject.storeproduct.StoreProductDO; -import co.yixiang.yshop.module.product.dal.dataobject.storeproductattr.StoreProductAttrDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -/** - * 商品属性 Convert - * - * @author yshop - */ -@Mapper -public interface StoreProductAttrConvert { - - StoreProductAttrConvert INSTANCE = Mappers.getMapper(StoreProductAttrConvert.class); - - AppStoreProductAttrQueryVo convert(StoreProductAttrDO bean); - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattrresult/StoreProductAttrResultConvert.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattrresult/StoreProductAttrResultConvert.java deleted file mode 100644 index 4193fab..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattrresult/StoreProductAttrResultConvert.java +++ /dev/null @@ -1,16 +0,0 @@ -package co.yixiang.yshop.module.product.convert.storeproductattrresult; - -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -/** - * 商品属性详情 Convert - * - * @author yshop - */ -@Mapper -public interface StoreProductAttrResultConvert { - - StoreProductAttrResultConvert INSTANCE = Mappers.getMapper(StoreProductAttrResultConvert.class); - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattrvalue/StoreProductAttrValueConvert.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattrvalue/StoreProductAttrValueConvert.java deleted file mode 100644 index dca4d51..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattrvalue/StoreProductAttrValueConvert.java +++ /dev/null @@ -1,17 +0,0 @@ -package co.yixiang.yshop.module.product.convert.storeproductattrvalue; - -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -/** - * 商品属性值 Convert - * - * @author yshop - */ -@Mapper -public interface StoreProductAttrValueConvert { - - StoreProductAttrValueConvert INSTANCE = Mappers.getMapper(StoreProductAttrValueConvert.class); - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductcoupon/StoreProductCouponConvert.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductcoupon/StoreProductCouponConvert.java deleted file mode 100644 index 6e4efbb..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductcoupon/StoreProductCouponConvert.java +++ /dev/null @@ -1,36 +0,0 @@ -package co.yixiang.yshop.module.product.convert.storeproductcoupon; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.product.controller.admin.productcoupon.vo.ProductCouponCreateReqVO; -import co.yixiang.yshop.module.product.controller.admin.productcoupon.vo.ProductCouponDetailRespVO; -import co.yixiang.yshop.module.product.controller.admin.productcoupon.vo.ProductCouponUpdateReqVO; -import co.yixiang.yshop.module.product.controller.admin.storeproduct.vo.StoreProductRespVO; -import co.yixiang.yshop.module.product.controller.app.coupon.vo.AppCouponDetailRespVO; -import co.yixiang.yshop.module.product.dal.dataobject.productcoupon.ProductCouponDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - - -/** - * 商品优惠券 Convert - * - * @author moxiangrong - */ -@Mapper -public interface StoreProductCouponConvert { - - StoreProductCouponConvert INSTANCE = Mappers.getMapper(StoreProductCouponConvert.class); - - ProductCouponDO convert(ProductCouponCreateReqVO vo); - - ProductCouponDO convert(ProductCouponUpdateReqVO vo); - - ProductCouponDetailRespVO convert(ProductCouponDO couponDO); - - PageResult convertPage(PageResult page); - - List convertList(List page); - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductcouponrelation/StoreProductCouponRelationConvert.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductcouponrelation/StoreProductCouponRelationConvert.java deleted file mode 100644 index 9b1246c..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductcouponrelation/StoreProductCouponRelationConvert.java +++ /dev/null @@ -1,23 +0,0 @@ -package co.yixiang.yshop.module.product.convert.storeproductcouponrelation; - -import co.yixiang.yshop.module.product.controller.app.couponrelation.vo.CartCouponVO; -import co.yixiang.yshop.module.product.controller.app.couponrelation.vo.UserCouponVO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - - -/** - * 商品优惠券 Convert - * - * @author moxiangrong - */ -@Mapper -public interface StoreProductCouponRelationConvert { - - StoreProductCouponRelationConvert INSTANCE = Mappers.getMapper(StoreProductCouponRelationConvert.class); - - List convert(List userCouponVOList); - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductrelation/StoreProductRelationConvert.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductrelation/StoreProductRelationConvert.java deleted file mode 100644 index 71b196c..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductrelation/StoreProductRelationConvert.java +++ /dev/null @@ -1,29 +0,0 @@ -package co.yixiang.yshop.module.product.convert.storeproductrelation; - -import java.util.*; - -import co.yixiang.yshop.framework.common.pojo.PageResult; - -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; -import co.yixiang.yshop.module.product.controller.admin.storeproductrelation.vo.*; -import co.yixiang.yshop.module.product.dal.dataobject.storeproductrelation.StoreProductRelationDO; - -/** - * 商品点赞和收藏 Convert - * - * @author yshop - */ -@Mapper -public interface StoreProductRelationConvert { - - StoreProductRelationConvert INSTANCE = Mappers.getMapper(StoreProductRelationConvert.class); - - StoreProductRelationRespVO convert(StoreProductRelationDO bean); - - List convertList(List list); - - PageResult convertPage(PageResult page); - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductreply/StoreProductReplyConvert.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductreply/StoreProductReplyConvert.java deleted file mode 100644 index ab0ae0d..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductreply/StoreProductReplyConvert.java +++ /dev/null @@ -1,32 +0,0 @@ -package co.yixiang.yshop.module.product.convert.storeproductreply; - -import java.util.*; - -import co.yixiang.yshop.framework.common.pojo.PageResult; - -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; -import co.yixiang.yshop.module.product.controller.admin.storeproductreply.vo.*; -import co.yixiang.yshop.module.product.dal.dataobject.storeproductreply.StoreProductReplyDO; - -/** - * 评论 Convert - * - * @author yshop - */ -@Mapper -public interface StoreProductReplyConvert { - - StoreProductReplyConvert INSTANCE = Mappers.getMapper(StoreProductReplyConvert.class); - - - StoreProductReplyDO convert(StoreProductReplyUpdateReqVO bean); - - StoreProductReplyRespVO convert(StoreProductReplyDO bean); - - List convertList(List list); - - PageResult convertPage(PageResult page); - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductrule/StoreProductRuleConvert.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductrule/StoreProductRuleConvert.java deleted file mode 100644 index d7ba517..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductrule/StoreProductRuleConvert.java +++ /dev/null @@ -1,32 +0,0 @@ -package co.yixiang.yshop.module.product.convert.storeproductrule; - -import java.util.*; - -import co.yixiang.yshop.framework.common.pojo.PageResult; - -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; -import co.yixiang.yshop.module.product.controller.admin.storeproductrule.vo.*; -import co.yixiang.yshop.module.product.dal.dataobject.storeproductrule.StoreProductRuleDO; - -/** - * 商品规则值(规格) Convert - * - * @author yshop - */ -@Mapper -public interface StoreProductRuleConvert { - - StoreProductRuleConvert INSTANCE = Mappers.getMapper(StoreProductRuleConvert.class); - - StoreProductRuleDO convert(StoreProductRuleCreateReqVO bean); - - StoreProductRuleDO convert(StoreProductRuleUpdateReqVO bean); - - StoreProductRuleRespVO convert(StoreProductRuleDO bean); - - List convertList(List list); - - PageResult convertPage(PageResult page); - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/brand/ProductBrandDO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/brand/ProductBrandDO.java deleted file mode 100644 index 2bb032b..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/brand/ProductBrandDO.java +++ /dev/null @@ -1,53 +0,0 @@ -package co.yixiang.yshop.module.product.dal.dataobject.brand; - -import co.yixiang.yshop.framework.common.enums.CommonStatusEnum; -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -/** - * 商品品牌 DO - * - * @author yshop - */ -@TableName("yshop_store_product_brand") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ProductBrandDO extends BaseDO { - - /** - * 品牌编号 - */ - @TableId - private Long id; - /** - * 品牌名称 - */ - private String name; - /** - * 品牌图片 - */ - private String picUrl; - /** - * 品牌排序 - */ - private Integer sort; - /** - * 品牌描述 - */ - private String description; - /** - * 状态 - * - * 枚举 {@link CommonStatusEnum} - */ - private Integer status; - - // TODO yshop:firstLetter 首字母 - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/category/ProductCategoryDO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/category/ProductCategoryDO.java deleted file mode 100644 index 34d5352..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/category/ProductCategoryDO.java +++ /dev/null @@ -1,67 +0,0 @@ -package co.yixiang.yshop.module.product.dal.dataobject.category; - -import co.yixiang.yshop.framework.common.enums.CommonStatusEnum; -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -/** - * 商品分类 DO - * - * 商品分类一共两类: - * 1)一级分类:{@link #parentId} 等于 0 - * 2)二级 + 三级分类:{@link #parentId} 不等于 0 - * - * @author yshop - */ -@TableName("yshop_store_product_category") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ProductCategoryDO extends BaseDO { - - /** - * 父分类编号 - 根分类 - */ - public static final Long PARENT_ID_NULL = 0L; - - /** - * 分类编号 - */ - @TableId - private Long id; - /** - * 父分类编号 - */ - private Long parentId; - /** - * 分类名称 - */ - private String name; - /** - * 分类图片 - * - * 一级分类:推荐 200 x 100 分辨率 - * 二级 + 三级分类:推荐 100 x 100 分辨率 - */ - private String picUrl; - /** - * 分类排序 - */ - private Integer sort; - /** - * 分类描述 - */ - private String description; - /** - * 开启状态 - * - * 枚举 {@link CommonStatusEnum} - */ - private Integer status; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/productcoupon/ProductCouponDO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/productcoupon/ProductCouponDO.java deleted file mode 100644 index 25e6d40..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/productcoupon/ProductCouponDO.java +++ /dev/null @@ -1,91 +0,0 @@ -package co.yixiang.yshop.module.product.dal.dataobject.productcoupon; - -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -/** - * 商品优惠券 DO - * - * - * @author moxiangrong - */ -@TableName("yshop_store_product_coupon") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ProductCouponDO extends BaseDO { - - /** - * 优惠券id - */ - @TableId - private Long id; - /** - * 优惠券名称 - */ - private String couponName; - /** - * 优惠券面值 - */ - private BigDecimal couponValue; - /** - * 优惠券类型:1、满减券,2、折扣券 - */ - private Integer couponType; - /** - * 满减门槛 - */ - private BigDecimal threshold; - /** - * 折扣 - */ - private BigDecimal discount; - /** - * 优惠券范围:1、所有商品,2、选中商品 - */ - private Integer couponScope; - /** - * 范围值 - */ - private String scopeValues; - /** - * 优惠券数量 - */ - private Long number; - /** - * 领取限制类型 1 无限制 2限制次数 - */ - private Integer receiveType; - /** - * 限制每人领取数量 - */ - private Long limitNumber; - /** - * 过期类型:1、按时间,2、按天数 - */ - private Integer expirationType; - /** - * 生效时间 - */ - private LocalDateTime takingEffectTime; - /** - * 过期时间 - */ - private LocalDateTime expirationTime; - /** - * 过期天数 - */ - private Long expirationDay; - /** - * 备注 - */ - private String remark; -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/productcouponrelation/ProductCouponRelationDO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/productcouponrelation/ProductCouponRelationDO.java deleted file mode 100644 index 911c967..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/productcouponrelation/ProductCouponRelationDO.java +++ /dev/null @@ -1,50 +0,0 @@ -package co.yixiang.yshop.module.product.dal.dataobject.productcouponrelation; - -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.time.LocalDateTime; - -/** - * 商品优惠券关联 DO - * - * - * @author moxiangrong - */ -@TableName("yshop_store_product_coupon_relation") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ProductCouponRelationDO extends BaseDO { - - /** - * 优惠券关联id - */ - @TableId - private Long id; - /** - * 优惠券id - */ - private Long couponId; - /** - * 用户id - */ - private Long uid; - /** - * 是否使用 - */ - private Integer isUsed; - /** - * 领取时间 - */ - private LocalDateTime receiveTime; - /** - * 使用时间 - */ - private LocalDateTime usageTime; -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/shippingtemplates/ShippingTemplatesDO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/shippingtemplates/ShippingTemplatesDO.java deleted file mode 100644 index de20ede..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/shippingtemplates/ShippingTemplatesDO.java +++ /dev/null @@ -1,55 +0,0 @@ -package co.yixiang.yshop.module.product.dal.dataobject.shippingtemplates; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; - -/** - * 运费模板 DO - * - * @author yshop - */ -@TableName("yshop_shipping_templates") -@KeySequence("yshop_shipping_templates_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ShippingTemplatesDO extends BaseDO { - - /** - * 模板ID - */ - @TableId - private Integer id; - /** - * 模板名称 - */ - private String name; - /** - * 计费方式 - */ - private Integer type; - /** - * 地域以及费用 - */ - private String regionInfo; - /** - * 指定包邮开关 - */ - private Integer appoint; - /** - * 指定包邮内容 - */ - private String appointInfo; - /** - * 排序 - */ - private Integer sort; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/shippingtemplatesfree/ShippingTemplatesFreeDO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/shippingtemplatesfree/ShippingTemplatesFreeDO.java deleted file mode 100644 index e301ac0..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/shippingtemplatesfree/ShippingTemplatesFreeDO.java +++ /dev/null @@ -1,58 +0,0 @@ -package co.yixiang.yshop.module.product.dal.dataobject.shippingtemplatesfree; - -import lombok.*; -import java.util.*; -import java.math.BigDecimal; -import java.math.BigDecimal; -import com.baomidou.mybatisplus.annotation.*; -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; - -/** - * 运费包邮明细 DO - * - * @author yshop - */ -@TableName("yshop_shipping_templates_free") -@KeySequence("yshop_shipping_templates_free_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ShippingTemplatesFreeDO { - - /** - * 编号 - */ - @TableId - private Integer id; - /** - * 省ID - */ - private Integer provinceId; - /** - * 模板ID - */ - private Integer tempId; - /** - * 城市ID - */ - private Integer cityId; - /** - * 包邮件数 - */ - private BigDecimal number; - /** - * 包邮金额 - */ - private BigDecimal price; - /** - * 计费方式 - */ - private Integer type; - /** - * 分组唯一值 - */ - private String uniqid; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/shippingtemplatesregion/ShippingTemplatesRegionDO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/shippingtemplatesregion/ShippingTemplatesRegionDO.java deleted file mode 100644 index fd8d131..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/shippingtemplatesregion/ShippingTemplatesRegionDO.java +++ /dev/null @@ -1,68 +0,0 @@ -package co.yixiang.yshop.module.product.dal.dataobject.shippingtemplatesregion; - -import lombok.*; -import java.util.*; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import com.baomidou.mybatisplus.annotation.*; -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; - -/** - * 运费区域明细 DO - * - * @author yshop - */ -@TableName("yshop_shipping_templates_region") -@KeySequence("yshop_shipping_templates_region_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ShippingTemplatesRegionDO { - - /** - * 编号 - */ - @TableId - private Integer id; - /** - * 省ID - */ - private Integer provinceId; - /** - * 模板ID - */ - private Integer tempId; - /** - * 城市ID - */ - private Integer cityId; - /** - * 首件 - */ - private BigDecimal first; - /** - * 首件运费 - */ - private BigDecimal firstPrice; - /** - * 续件 - */ - private BigDecimal continues; - /** - * 续件运费 - */ - private BigDecimal continuePrice; - /** - * 计费方式 - */ - private Integer type; - /** - * 分组唯一值 - */ - private String uniqid; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproduct/StoreProductDO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproduct/StoreProductDO.java deleted file mode 100644 index 541bb6f..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproduct/StoreProductDO.java +++ /dev/null @@ -1,184 +0,0 @@ -package co.yixiang.yshop.module.product.dal.dataobject.storeproduct; - -import lombok.*; -import java.util.*; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.math.BigDecimal; -import java.math.BigDecimal; -import com.baomidou.mybatisplus.annotation.*; -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; - -/** - * 商品 DO - * - * @author yshop - */ -@TableName("yshop_store_product") -@KeySequence("yshop_store_product_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class StoreProductDO extends BaseDO { - - /** - * 商品id - */ - @TableId - private Long id; - /** - * 商品图片 - */ - private String image; - /** - * 轮播图 - */ - private String sliderImage; - /** - * 商品名称 - */ - private String storeName; - /** - * 商品简介 - */ - private String storeInfo; - /** - * 关键字 - */ - private String keyword; - /** - * 产品条码(一维码) - */ - private String barCode; - /** - * 分类id - */ - private Long cateId; - - //品牌id - private Long brandId; - /** - * 商品价格 - */ - private BigDecimal price; - /** - * 会员价格 - */ - private BigDecimal vipPrice; - /** - * 市场价 - */ - private BigDecimal otPrice; - /** - * 邮费 - */ - private BigDecimal postage; - /** - * 单位名 - */ - private String unitName; - /** - * 排序 - */ - private Short sort; - /** - * 销量 - */ - private Integer sales; - /** - * 库存 - */ - private Integer stock; - /** - * 状态(0:未上架,1:上架) - */ - private Integer isShow; - /** - * 是否热卖 - */ - private Boolean isHot; - /** - * 是否优惠 - */ - private Boolean isBenefit; - /** - * 是否精品 - */ - private Boolean isBest; - /** - * 是否新品 - */ - private Integer isNew; - /** - * 产品描述 - */ - private String description; - /** - * 是否包邮 - */ - private Integer isPostage; - /** - * 商户是否代理 0不可代理1可代理 - */ - private Byte merUse; - /** - * 获得积分 - */ - private BigDecimal giveIntegral; - /** - * 成本价 - */ - private BigDecimal cost; - /** - * 秒杀状态 0 未开启 1已开启 - */ - private Byte isSeckill; - /** - * 砍价状态 0未开启 1开启 - */ - private Byte isBargain; - /** - * 是否优品推荐 - */ - private Boolean isGood; - /** - * 虚拟销量 - */ - private Integer ficti; - /** - * 浏览量 - */ - private Integer browse; - /** - * 产品二维码地址(用户小程序海报) - */ - private String codePath; - /** - * 是否单独分佣 - */ - private Boolean isSub; - /** - * 运费模板ID - */ - private Integer tempId; - /** - * 规格 0单 1多 - */ - private Integer specType; - /** - * 是开启积分兑换 - */ - private Byte isIntegral; - /** - * 需要多少积分兑换 只在开启积分兑换时生效 - */ - private Integer integral; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductattr/StoreProductAttrDO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductattr/StoreProductAttrDO.java deleted file mode 100644 index c4ee557..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductattr/StoreProductAttrDO.java +++ /dev/null @@ -1,40 +0,0 @@ -package co.yixiang.yshop.module.product.dal.dataobject.storeproductattr; - -import lombok.*; -import java.util.*; -import com.baomidou.mybatisplus.annotation.*; -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; - -/** - * 商品属性 DO - * - * @author yshop - */ -@TableName("yshop_store_product_attr") -@KeySequence("yshop_store_product_attr_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class StoreProductAttrDO{ - - /** - * id - */ - @TableId - private Long id; - /** - * 商品ID - */ - private Long productId; - /** - * 属性名 - */ - private String attrName; - /** - * 属性值 - */ - private String attrValues; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductattrresult/StoreProductAttrResultDO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductattrresult/StoreProductAttrResultDO.java deleted file mode 100644 index 48af34c..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductattrresult/StoreProductAttrResultDO.java +++ /dev/null @@ -1,41 +0,0 @@ -package co.yixiang.yshop.module.product.dal.dataobject.storeproductattrresult; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; - -/** - * 商品属性详情 DO - * - * @author yshop - */ -@TableName("yshop_store_product_attr_result") -@KeySequence("yshop_store_product_attr_result_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class StoreProductAttrResultDO { - - /** - * id - */ - @TableId - private Long id; - /** - * 商品ID - */ - private Long productId; - /** - * 商品属性参数 - */ - private String result; - /** - * 上次修改时间 - */ - private Date changeTime; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductattrvalue/StoreProductAttrValueDO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductattrvalue/StoreProductAttrValueDO.java deleted file mode 100644 index de78b57..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductattrvalue/StoreProductAttrValueDO.java +++ /dev/null @@ -1,114 +0,0 @@ -package co.yixiang.yshop.module.product.dal.dataobject.storeproductattrvalue; - -import lombok.*; -import java.util.*; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import java.math.BigDecimal; -import com.baomidou.mybatisplus.annotation.*; -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; - -/** - * 商品属性值 DO - * - * @author yshop - */ -@TableName("yshop_store_product_attr_value") -@KeySequence("yshop_store_product_attr_value_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class StoreProductAttrValueDO { - - /** - * id - */ - @TableId - private Long id; - /** - * 商品ID - */ - private Long productId; - /** - * 商品属性索引值 (attr_value|attr_value[|....]) - */ - private String sku; - /** - * 属性对应的库存 - */ - private Integer stock; - /** - * 销量 - */ - private Integer sales; - /** - * 属性金额 - */ - private BigDecimal price; - /** - * 图片 - */ - private String image; - /** - * 唯一值 - */ - @TableField(value = "`unique`") - private String unique; - /** - * 成本价 - */ - private BigDecimal cost; - /** - * 商品条码 - */ - private String barCode; - /** - * 原价 - */ - private BigDecimal otPrice; - /** - * 重量 - */ - private BigDecimal weight; - /** - * 体积 - */ - private BigDecimal volume; - /** - * 一级返佣 - */ - private BigDecimal brokerage; - /** - * 二级返佣 - */ - private BigDecimal brokerageTwo; - /** - * 拼团价 - */ - private BigDecimal pinkPrice; - /** - * 拼团库存 - */ - private Integer pinkStock; - /** - * 秒杀价 - */ - private BigDecimal seckillPrice; - /** - * 秒杀库存 - */ - private Integer seckillStock; - /** - * 需要多少积分兑换 - */ - private Integer integral; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductrelation/StoreProductRelationDO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductrelation/StoreProductRelationDO.java deleted file mode 100644 index d40dbeb..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductrelation/StoreProductRelationDO.java +++ /dev/null @@ -1,47 +0,0 @@ -package co.yixiang.yshop.module.product.dal.dataobject.storeproductrelation; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; - -/** - * 商品点赞和收藏 DO - * - * @author yshop - */ -@TableName("yshop_store_product_relation") -@KeySequence("yshop_store_product_relation_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class StoreProductRelationDO extends BaseDO { - - /** - * id - */ - @TableId - private Long id; - /** - * 用户ID - */ - private Long uid; - /** - * 商品ID - */ - private Long productId; - /** - * 类型(收藏(collect)、点赞(like)) - */ - private String type; - /** - * 某种类型的商品(普通商品、秒杀商品) - */ - private String category; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductreply/StoreProductReplyDO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductreply/StoreProductReplyDO.java deleted file mode 100644 index 5b9031e..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductreply/StoreProductReplyDO.java +++ /dev/null @@ -1,81 +0,0 @@ -package co.yixiang.yshop.module.product.dal.dataobject.storeproductreply; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; - -/** - * 评论 DO - * - * @author yshop - */ -@TableName("yshop_store_product_reply") -@KeySequence("yshop_store_product_reply_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class StoreProductReplyDO extends BaseDO { - - /** - * 评论ID - */ - @TableId - private Long id; - /** - * 用户ID - */ - private Long uid; - /** - * 订单ID - */ - private Long oid; - /** - * 唯一id - */ - @TableField(value = "`unique`") - private String unique; - /** - * 产品id - */ - private Long productId; - /** - * 某种商品类型(普通商品、秒杀商品) - */ - private String replyType; - /** - * 商品分数 - */ - private Integer productScore; - /** - * 服务分数 - */ - private Integer serviceScore; - /** - * 评论内容 - */ - private String comment; - /** - * 评论图片 - */ - private String pics; - /** - * 管理员回复内容 - */ - private String merchantReplyContent; - /** - * 管理员回复时间 - */ - private LocalDateTime merchantReplyTime; - /** - * 0未回复1已回复 - */ - private Integer isReply; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductrule/StoreProductRuleDO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductrule/StoreProductRuleDO.java deleted file mode 100644 index ee91a8a..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductrule/StoreProductRuleDO.java +++ /dev/null @@ -1,39 +0,0 @@ -package co.yixiang.yshop.module.product.dal.dataobject.storeproductrule; - -import com.alibaba.fastjson.JSONArray; -import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; -import lombok.*; -import com.baomidou.mybatisplus.annotation.*; -import co.yixiang.yshop.framework.mybatis.core.dataobject.BaseDO; - -/** - * 商品规则值(规格) DO - * - * @author yshop - */ -@TableName(value = "yshop_store_product_rule",autoResultMap = true) -@KeySequence("yshop_store_product_rule_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class StoreProductRuleDO extends BaseDO { - - /** - * id - */ - @TableId - private Integer id; - /** - * 规格名称 - */ - private String ruleName; - /** - * 规格值 - */ - @TableField(typeHandler = FastjsonTypeHandler.class) - private JSONArray ruleValue; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/productcoupon/ProductCouponMapper.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/productcoupon/ProductCouponMapper.java deleted file mode 100644 index 68c839f..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/productcoupon/ProductCouponMapper.java +++ /dev/null @@ -1,37 +0,0 @@ -package co.yixiang.yshop.module.product.dal.mysql.productcoupon; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.framework.mybatis.core.query.LambdaQueryWrapperX; -import co.yixiang.yshop.module.product.controller.admin.productcoupon.vo.StoreProductCouponPageReqVO; -import co.yixiang.yshop.module.product.dal.dataobject.productcoupon.ProductCouponDO; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import java.util.List; - -/** - * 商品优惠券 Mapper - * - * @author moxiangrong - */ -@Mapper -public interface ProductCouponMapper extends BaseMapperX { - - - default PageResult selectPage(StoreProductCouponPageReqVO reqVO) { - LambdaQueryWrapperX wrapper = new LambdaQueryWrapperX<>(); - - wrapper.likeIfPresent(ProductCouponDO::getCouponName, reqVO.getCouponName()) - .eqIfPresent(ProductCouponDO::getCouponType, reqVO.getCouponType()) - .eqIfPresent(ProductCouponDO::getCouponScope, reqVO.getCouponScope()) - .eqIfPresent(ProductCouponDO::getExpirationType, reqVO.getExpirationType()) - .eqIfPresent(ProductCouponDO::getReceiveType, reqVO.getReceiveType()) - .orderByDesc(ProductCouponDO::getId); - - return selectPage(reqVO, wrapper); - - } - - List receiveList(@Param("productId") Long productId); - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/productcouponrelation/ProductCouponRelationMapper.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/productcouponrelation/ProductCouponRelationMapper.java deleted file mode 100644 index 7622d77..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/productcouponrelation/ProductCouponRelationMapper.java +++ /dev/null @@ -1,21 +0,0 @@ -package co.yixiang.yshop.module.product.dal.mysql.productcouponrelation; - -import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.module.product.controller.app.couponrelation.vo.UserCouponVO; -import co.yixiang.yshop.module.product.dal.dataobject.productcouponrelation.ProductCouponRelationDO; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * 商品优惠券记录 Mapper - * - * @author moxiangrong - */ -@Mapper -public interface ProductCouponRelationMapper extends BaseMapperX { - - List searchUserCoupon(@Param("type") Integer type, @Param("uid") Long uid, @Param("id") Long id); - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/shippingtemplatesregion/ShippingTemplatesRegionMapper.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/shippingtemplatesregion/ShippingTemplatesRegionMapper.java deleted file mode 100644 index 51c829e..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/shippingtemplatesregion/ShippingTemplatesRegionMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package co.yixiang.yshop.module.product.dal.mysql.shippingtemplatesregion; - -import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.module.product.dal.dataobject.shippingtemplatesregion.ShippingTemplatesRegionDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * 运费区域明细 Mapper - * - * @author yshop - */ -@Mapper -public interface ShippingTemplatesRegionMapper extends BaseMapperX { - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattr/StoreProductAttrMapper.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattr/StoreProductAttrMapper.java deleted file mode 100644 index 9b2dc81..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattr/StoreProductAttrMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package co.yixiang.yshop.module.product.dal.mysql.storeproductattr; - -import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.module.product.dal.dataobject.storeproductattr.StoreProductAttrDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * 商品属性 Mapper - * - * @author yshop - */ -@Mapper -public interface StoreProductAttrMapper extends BaseMapperX { - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattrresult/StoreProductAttrResultMapper.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattrresult/StoreProductAttrResultMapper.java deleted file mode 100644 index 808c690..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattrresult/StoreProductAttrResultMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package co.yixiang.yshop.module.product.dal.mysql.storeproductattrresult; - -import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrresult.StoreProductAttrResultDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * 商品属性详情 Mapper - * - * @author yshop - */ -@Mapper -public interface StoreProductAttrResultMapper extends BaseMapperX { - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattrvalue/StoreProductAttrValueMapper.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattrvalue/StoreProductAttrValueMapper.java index a2f2e0d..fbc9926 100644 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattrvalue/StoreProductAttrValueMapper.java +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattrvalue/StoreProductAttrValueMapper.java @@ -27,15 +27,14 @@ public interface StoreProductAttrValueMapper extends BaseMapperX #{num} THEN sales-#{num} ELSE 0 END" + " where product_id=#{productId} and `unique`=#{unique}") - int incStockDecSales(@Param("num") Integer num,@Param("productId") Long productId, + void incStockDecSales(@Param("num") Integer num,@Param("productId") Long productId, @Param("unique") String unique); } diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductrelation/StoreProductRelationMapper.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductrelation/StoreProductRelationMapper.java deleted file mode 100644 index e06265e..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductrelation/StoreProductRelationMapper.java +++ /dev/null @@ -1,65 +0,0 @@ -package co.yixiang.yshop.module.product.dal.mysql.storeproductrelation; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.framework.mybatis.core.query.LambdaQueryWrapperX; -import co.yixiang.yshop.module.product.controller.admin.storeproductrelation.vo.StoreProductRelationPageReqVO; -import co.yixiang.yshop.module.product.controller.admin.storeproductrelation.vo.StoreProductRelationRespVO; -import co.yixiang.yshop.module.product.controller.app.relation.vo.AppStoreProductRelationQueryVo; -import co.yixiang.yshop.module.product.dal.dataobject.storeproductrelation.StoreProductRelationDO; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * 商品点赞和收藏 Mapper - * - * @author yshop - */ -@Mapper -public interface StoreProductRelationMapper extends BaseMapperX { - - default PageResult selectPage(StoreProductRelationPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(StoreProductRelationDO::getUid, reqVO.getUid()) - .eqIfPresent(StoreProductRelationDO::getProductId, reqVO.getProductId()) - .eqIfPresent(StoreProductRelationDO::getType, reqVO.getType()) - .eqIfPresent(StoreProductRelationDO::getCategory, reqVO.getCategory()) - .betweenIfPresent(StoreProductRelationDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(StoreProductRelationDO::getId)); - } - - - @Select("select C.avatar,C.id as uid,A.type as type,A.category as category ,A.create_time as createTime,B.store_name as storeName,B.price,B.is_integral as isIntegral,A.id id," + - "B.ot_price as otPrice,B.sales,B.image,B.is_show as isShow,B.id as productId" + - " from yshop_store_product_relation A left join yshop_store_product B " + - "on A.product_id = B.id left join yshop_user C on A.uid = C.id" + - " where A.type=#{type} and A.uid=#{uid} and A.deleted = 0 and B.deleted = 0 group by productId order by A.create_time desc") - List userCollectRootProductList(Page page, @Param("uid") Long uid, @Param("type") String type); - - - @Select("") - List allRelationList(Page page, @Param("nickname") String nickname,@Param("type") String type); - - @Select("") - Long allRelationListCount(@Param("nickname") String nickname,@Param("type") String type); - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/redis/RedisKeyConstants.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/redis/RedisKeyConstants.java deleted file mode 100644 index f98036b..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/redis/RedisKeyConstants.java +++ /dev/null @@ -1,25 +0,0 @@ -package co.yixiang.yshop.module.product.dal.redis; - -import co.yixiang.yshop.framework.redis.core.RedisKeyDefine; - -import static co.yixiang.yshop.framework.redis.core.RedisKeyDefine.KeyTypeEnum.STRING; -import static co.yixiang.yshop.framework.redis.core.RedisKeyDefine.KeyTypeEnum.ZSET; - - -/** - * System Redis Key 枚举类 - * - * @author yshop - */ -public interface RedisKeyConstants { - - - RedisKeyDefine YSHOP_USER_SEARCH_HISTORY_KEY = new RedisKeyDefine("用户历史搜索", - "yshop_user_search_history:%d", // - STRING, String.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); - - RedisKeyDefine YSHOP_POPULAR_SEARCH_RECORDS_KEY = new RedisKeyDefine("热门搜索记录", - "yshop_popular_search_records", // - STRING, String.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/framework/web/config/ProductWebConfiguration.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/framework/web/config/ProductWebConfiguration.java deleted file mode 100644 index 870fbcd..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/framework/web/config/ProductWebConfiguration.java +++ /dev/null @@ -1,24 +0,0 @@ -package co.yixiang.yshop.module.product.framework.web.config; - -import co.yixiang.yshop.framework.swagger.config.YshopSwaggerAutoConfiguration; -import org.springdoc.core.GroupedOpenApi; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * product 模块的 web 组件的 Configuration - * - * @author yshop - */ -@Configuration(proxyBeanMethods = false) -public class ProductWebConfiguration { - - /** - * product 模块的 API 分组 - */ - @Bean - public GroupedOpenApi productGroupedOpenApi() { - return YshopSwaggerAutoConfiguration.buildGroupedOpenApi("product"); - } - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/framework/web/package-info.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/framework/web/package-info.java deleted file mode 100644 index c989519..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/framework/web/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * product 模块的 web 配置 - */ -package co.yixiang.yshop.module.product.framework.web; diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcoupon/AppCouponService.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcoupon/AppCouponService.java deleted file mode 100644 index 05b4ea6..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcoupon/AppCouponService.java +++ /dev/null @@ -1,34 +0,0 @@ -package co.yixiang.yshop.module.product.service.productcoupon; - - -import co.yixiang.yshop.module.product.controller.app.coupon.vo.AppCouponDetailRespVO; -import co.yixiang.yshop.module.product.dal.dataobject.productcoupon.ProductCouponDO; -import com.baomidou.mybatisplus.extension.service.IService; - -import java.util.List; - - -/** - * App优惠券 Service 接口 - * - * @author moxiangrong - */ -public interface AppCouponService extends IService { - - /** - * 获取商品可领优惠券列表 - * - * @param productId 商品id - * @return - */ - List receiveList(Long productId); - - /** - * 获取优惠券可用商品列表 - * - * @param id 优惠券id - * @return - */ - List getCouponProductList(Long id); - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcoupon/AppCouponServiceImpl.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcoupon/AppCouponServiceImpl.java deleted file mode 100644 index fb78997..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcoupon/AppCouponServiceImpl.java +++ /dev/null @@ -1,56 +0,0 @@ -package co.yixiang.yshop.module.product.service.productcoupon; - -import co.yixiang.yshop.module.product.controller.app.coupon.vo.AppCouponDetailRespVO; -import co.yixiang.yshop.module.product.convert.storeproductcoupon.StoreProductCouponConvert; -import co.yixiang.yshop.module.product.dal.dataobject.productcoupon.ProductCouponDO; -import co.yixiang.yshop.module.product.dal.mysql.productcoupon.ProductCouponMapper; -import co.yixiang.yshop.module.product.enums.coupon.CouponScopeEnum; -import co.yixiang.yshop.module.product.service.storeproduct.StoreProductService; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.stream.Collectors; - -/** - * App优惠券 Service 实现类 - * - * @author moxiangrong - */ -@Service -@Validated -public class AppCouponServiceImpl extends ServiceImpl implements AppCouponService { - - @Resource - private StoreProductService productService; - - - @Override - public List receiveList(Long productId) { - List couponDOS = this.baseMapper.receiveList(productId); - if (CollectionUtils.isEmpty(couponDOS)) return null; - List couponDetailList = StoreProductCouponConvert.INSTANCE.convertList(couponDOS); - couponDetailList = couponDetailList.stream() - .sorted(Comparator.comparing(AppCouponDetailRespVO::getCouponType, Comparator.reverseOrder()) - /*.thenComparing(AppCouponDetailRespVO::getDiscount, Comparator.naturalOrder()) - .thenComparing(AppCouponDetailRespVO::getCouponValue, Comparator.reverseOrder())*/ - ).collect(Collectors.toList()); - return couponDetailList; - } - - @Override - public List getCouponProductList(Long id) { - List productIdList = new ArrayList<>(); - ProductCouponDO couponDO = getById(id); - if (CouponScopeEnum.PRODUCT.getValue().equals(couponDO.getCouponScope())) { - String[] productIdArr = couponDO.getScopeValues().split(","); - for (String s : productIdArr) productIdList.add(Long.parseLong(s)); - } - return productIdList; - } -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcoupon/ProductCouponService.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcoupon/ProductCouponService.java deleted file mode 100644 index 584a48d..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcoupon/ProductCouponService.java +++ /dev/null @@ -1,60 +0,0 @@ -package co.yixiang.yshop.module.product.service.productcoupon; - - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.product.controller.admin.productcoupon.vo.ProductCouponCreateReqVO; -import co.yixiang.yshop.module.product.controller.admin.productcoupon.vo.ProductCouponDetailRespVO; -import co.yixiang.yshop.module.product.controller.admin.productcoupon.vo.ProductCouponUpdateReqVO; -import co.yixiang.yshop.module.product.controller.admin.productcoupon.vo.StoreProductCouponPageReqVO; -import co.yixiang.yshop.module.product.dal.dataobject.productcoupon.ProductCouponDO; -import com.baomidou.mybatisplus.extension.service.IService; - - -/** - * 商品优惠券 Service 接口 - * - * @author moxiangrong - */ -public interface ProductCouponService extends IService { - - - /** - * 创建优惠券 - * - * @return 优惠券id - */ - Long createCoupon(ProductCouponCreateReqVO vo); - - /** - * 修改优惠券 - * - * @return 优惠券id - */ - Boolean updateCoupon(ProductCouponUpdateReqVO vo); - - /** - * 优惠券明细 - * - * @return 优惠券明细 - */ - ProductCouponDetailRespVO getCouponDetail(Long id); - - - /** - * 获得优惠券分页 - * - * @param pageReqVO 分页查询 - * @return 优惠券分页 - */ - PageResult getStoreProductPage(StoreProductCouponPageReqVO pageReqVO); - - - /** - * 删除优惠券 - * - * @param id 优惠券id - * @return - */ - Boolean deleteCoupon(Long id); - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcoupon/ProductCouponServiceImpl.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcoupon/ProductCouponServiceImpl.java deleted file mode 100644 index 2c4be8e..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcoupon/ProductCouponServiceImpl.java +++ /dev/null @@ -1,95 +0,0 @@ -package co.yixiang.yshop.module.product.service.productcoupon; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.product.controller.admin.productcoupon.vo.ProductCouponCreateReqVO; -import co.yixiang.yshop.module.product.controller.admin.productcoupon.vo.ProductCouponDetailRespVO; -import co.yixiang.yshop.module.product.controller.admin.productcoupon.vo.ProductCouponUpdateReqVO; -import co.yixiang.yshop.module.product.controller.admin.productcoupon.vo.StoreProductCouponPageReqVO; -import co.yixiang.yshop.module.product.convert.storeproductcoupon.StoreProductCouponConvert; -import co.yixiang.yshop.module.product.dal.dataobject.productcoupon.ProductCouponDO; -import co.yixiang.yshop.module.product.dal.mysql.productcoupon.ProductCouponMapper; -import co.yixiang.yshop.module.product.enums.coupon.CouponExpirationEnum; -import co.yixiang.yshop.module.product.enums.coupon.CouponStatusEnum; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import jodd.util.StringUtil; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import java.time.LocalDateTime; - - -/** - * 商品优惠券 Service 实现类 - * - * @author moxiangrong - */ -@Service -@Validated -public class ProductCouponServiceImpl extends ServiceImpl implements ProductCouponService { - - - @Override - public Long createCoupon(ProductCouponCreateReqVO vo) { - ProductCouponDO couponDO = StoreProductCouponConvert.INSTANCE.convert(vo); - if (vo.getIds() != null && vo.getIds().length > 0) { - couponDO.setScopeValues(convertString(vo.getIds())); - } - save(couponDO); - return couponDO.getId(); - } - - @Override - public Boolean updateCoupon(ProductCouponUpdateReqVO vo) { - ProductCouponDO couponDO = StoreProductCouponConvert.INSTANCE.convert(vo); - if (vo.getIds() != null && vo.getIds().length > 0) { - couponDO.setScopeValues(convertString(vo.getIds())); - } - return updateById(couponDO); - } - - @Override - public ProductCouponDetailRespVO getCouponDetail(Long id) { - ProductCouponDO couponDO = getById(id); - if (StringUtil.isNotBlank(couponDO.getScopeValues())) { - couponDO.setScopeValues(convertArr(couponDO.getScopeValues())); - } - ProductCouponDetailRespVO detailRespVO = StoreProductCouponConvert.INSTANCE.convert(couponDO); - return detailRespVO; - } - - @Override - public PageResult getStoreProductPage(StoreProductCouponPageReqVO pageReqVO) { - PageResult pageResult = - StoreProductCouponConvert.INSTANCE.convertPage(this.baseMapper.selectPage(pageReqVO)); - pageResult.getList().forEach(res -> { - if(CouponExpirationEnum.BY_DAY.getValue().equals(res.getExpirationType())){ - res.setStatus(CouponStatusEnum.IN_PROGRESS.getDesc()); - }else { - LocalDateTime now =LocalDateTime.now(); - if (now.isBefore(res.getTakingEffectTime())) { - res.setStatus(CouponStatusEnum.NOT_STARTED.getDesc()); - } else if (now.isAfter(res.getTakingEffectTime()) && now.isBefore(res.getExpirationTime())) { - res.setStatus(CouponStatusEnum.IN_PROGRESS.getDesc()); - } else { - res.setStatus(CouponStatusEnum.ENDED.getDesc()); - } - } - }); - return pageResult; - } - - @Override - public Boolean deleteCoupon(Long id) { - return removeById(id); - } - - private String convertString(String[] arr) { - return String.join(",", arr); - } - - private String convertArr(String value) { - return "[" + value + "]"; - } - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcouponrelation/AppCouponRelationService.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcouponrelation/AppCouponRelationService.java deleted file mode 100644 index 4732538..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcouponrelation/AppCouponRelationService.java +++ /dev/null @@ -1,61 +0,0 @@ -package co.yixiang.yshop.module.product.service.productcouponrelation; - - -import co.yixiang.yshop.module.product.controller.app.couponrelation.vo.CartCouponVO; -import co.yixiang.yshop.module.product.controller.app.couponrelation.vo.UserCouponVO; -import co.yixiang.yshop.module.product.dal.dataobject.productcouponrelation.ProductCouponRelationDO; -import co.yixiang.yshop.module.product.service.productcouponrelation.dto.CartCouponDto; -import com.baomidou.mybatisplus.extension.service.IService; - -import java.util.List; - - -/** - * App优惠券记录 Service 接口 - * - * @author moxiangrong - */ -public interface AppCouponRelationService extends IService { - - /** - * 领取优惠券 - * - * @param id 优惠券id - * @return - */ - void receiveCoupon(Long id); - - /** - * 核销优惠券 - * - * @param id 优惠券明细id - * @return - */ - void verificationCoupon(Long id); - - /** - * 回退优惠券 - * - * @param id 优惠券明细id - * @return - */ - void returnCoupon(Long id); - - /** - * 查询用户已有优惠券 - * - * @param type 查询类型 - * @param id 优惠券id - * @return - */ - List searchUserCoupon(Integer type, Long id); - - /** - * 查询购物车可用优惠券 - * - * @param cartCouponDtoList 购物车信息 - * @return - */ - List searchCartCoupon(List cartCouponDtoList, Long id); - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcouponrelation/AppCouponRelationServiceImpl.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcouponrelation/AppCouponRelationServiceImpl.java deleted file mode 100644 index 9cddd24..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcouponrelation/AppCouponRelationServiceImpl.java +++ /dev/null @@ -1,180 +0,0 @@ -package co.yixiang.yshop.module.product.service.productcouponrelation; - - -import co.yixiang.yshop.framework.mybatis.core.query.LambdaQueryWrapperX; -import co.yixiang.yshop.module.product.controller.app.couponrelation.vo.CartCouponVO; -import co.yixiang.yshop.module.product.controller.app.couponrelation.vo.UserCouponVO; -import co.yixiang.yshop.module.product.convert.storeproductcouponrelation.StoreProductCouponRelationConvert; -import co.yixiang.yshop.module.product.dal.dataobject.productcoupon.ProductCouponDO; -import co.yixiang.yshop.module.product.dal.dataobject.productcouponrelation.ProductCouponRelationDO; -import co.yixiang.yshop.module.product.dal.mysql.productcoupon.ProductCouponMapper; -import co.yixiang.yshop.module.product.dal.mysql.productcouponrelation.ProductCouponRelationMapper; -import co.yixiang.yshop.module.product.enums.coupon.CouponExpirationEnum; -import co.yixiang.yshop.module.product.enums.coupon.CouponReceiveTypeEnum; -import co.yixiang.yshop.module.product.enums.coupon.CouponScopeEnum; -import co.yixiang.yshop.module.product.enums.coupon.CouponTypeEnum; -import co.yixiang.yshop.module.product.enums.couponrelation.CouponIsUsedEnum; -import co.yixiang.yshop.module.product.enums.couponrelation.CouponSearchTypeEnum; -import co.yixiang.yshop.module.product.service.productcouponrelation.dto.CartCouponDto; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.time.temporal.ChronoUnit; -import java.util.*; -import java.util.stream.Collectors; - -import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; -import static co.yixiang.yshop.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; -import static co.yixiang.yshop.module.product.enums.ErrorCodeConstants.*; - -/** - * App优惠券记录 Service 接口 - * - * @author moxiangrong - */ -@Service -@Validated -public class AppCouponRelationServiceImpl extends ServiceImpl implements AppCouponRelationService { - - @Resource - private ProductCouponMapper couponMapper; - - @Override - public void receiveCoupon(Long id) { - Long uid = getLoginUserId(); - // 查询优惠券 - ProductCouponDO couponDO = couponMapper.selectById(id); - if (couponDO == null) { - throw exception(PRODUCT_COUPON_NOT_EXISTS); - } - long count = count(new LambdaQueryWrapperX() - .eq(ProductCouponRelationDO::getCouponId, id).eq(ProductCouponRelationDO::getUid, uid)); - - if (couponDO.getNumber() < 1) throw exception(NOT_PRODUCT_COUPON_ERROR); - if (CouponReceiveTypeEnum.UNLIMITED.getValue().equals(couponDO.getReceiveType()) - || count < couponDO.getLimitNumber()) { - ProductCouponRelationDO relationDO = ProductCouponRelationDO.builder().couponId(id).uid(uid).build(); - relationDO.setReceiveTime(LocalDateTime.now()); - save(relationDO); - couponMapper.updateById(ProductCouponDO.builder().id(couponDO.getId()).number(couponDO.getNumber() - 1).build()); - } else { - throw exception(PRODUCT_COUPON_RECEIVE_ERROR); - } - } - - @Override - public void verificationCoupon(Long id) { - ProductCouponRelationDO productCouponDO = getById(id); - if (productCouponDO == null) { - throw exception(PRODUCT_COUPON_NOT_EXISTS); - } - // 使用优惠券 - productCouponDO.setIsUsed(CouponIsUsedEnum.USED.getValue()); - productCouponDO.setUsageTime(LocalDateTime.now()); - updateById(productCouponDO); - } - - @Override - public void returnCoupon(Long id) { - // 重置优惠券状态 - update(new LambdaUpdateWrapper() - .set(ProductCouponRelationDO::getIsUsed, CouponIsUsedEnum.NOT_USED.getValue()) - .set(ProductCouponRelationDO::getUsageTime, null) - .eq(ProductCouponRelationDO::getId, id)); - } - - @Override - public List searchUserCoupon(Integer type, Long id) { - List userCouponVOS = this.baseMapper.searchUserCoupon(type, getLoginUserId(), id); - for (UserCouponVO userCouponVO : userCouponVOS) { - if (CouponExpirationEnum.BY_DAY.getValue().equals(userCouponVO.getExpirationType())) { - // 计算失效时间 - LocalDateTime expirationTime = - userCouponVO.getReceiveTime().plus(userCouponVO.getExpirationDay(), ChronoUnit.DAYS); - userCouponVO.setTakingEffectTime(userCouponVO.getReceiveTime()); - userCouponVO.setExpirationTime(expirationTime); - } - } - return userCouponVOS; - } - - @Override - public List searchCartCoupon(List cartCouponDtoList, Long id) { - List cartCouponVOList = new ArrayList<>(); - // 获取购物车中商品id集合 - Set productIds = - cartCouponDtoList.stream().map(CartCouponDto::getProductId).collect(Collectors.toSet()); - Map priceMap = - cartCouponDtoList.stream().collect(Collectors.toMap(CartCouponDto::getProductId, CartCouponDto::getPrice)); - // 查询所有可使用的优惠券 - List userCouponVOList = searchUserCoupon(CouponSearchTypeEnum.CAN_USE.getValue(), id); - if (CollectionUtils.isEmpty(userCouponVOList)) { - return cartCouponVOList; - } - cartCouponVOList = StoreProductCouponRelationConvert.INSTANCE.convert(userCouponVOList); - // 过滤出可以使用的优惠券并计算优惠金额 - cartCouponVOList = cartCouponVOList.stream().filter(vo -> filter(productIds, vo, priceMap)).collect(Collectors.toList()); - // 优惠金额降序 - cartCouponVOList = cartCouponVOList.stream() - .sorted(Comparator.comparing(CartCouponVO::getDiscountAmount).reversed()).collect(Collectors.toList()); - return cartCouponVOList; - } - - - /** - * 过滤出可以使用的优惠券 - * - * @param productIds 商品id集合 - * @param cartCouponVO 优惠券信息 - * @param priceMap 金额 - * @return - */ - private Boolean filter(Set productIds, CartCouponVO cartCouponVO, Map priceMap) { - if (CouponScopeEnum.PRODUCT.getValue().equals(cartCouponVO.getCouponScope())) { - Set ids = new HashSet<>(); - for (String s : cartCouponVO.getScopeValues().split(",")) ids.add(Long.parseLong(s)); - // 取交集 - ids.retainAll(productIds); - if (CollectionUtils.isEmpty(ids)) return false; - return compute(ids, cartCouponVO, priceMap); - } else { - return compute(productIds, cartCouponVO, priceMap); - } - } - - /** - * 计算优惠金额 - * - * @param productIds 商品id集合 - * @param cartCouponVO 优惠券信息 - * @param priceMap 金额 - * @return - */ - private Boolean compute(Set productIds, CartCouponVO cartCouponVO, Map priceMap) { - // 累计金额 - BigDecimal amount = BigDecimal.ZERO; - for (Long id : productIds) amount = amount.add(priceMap.get(id)); - // 是否满足门槛 - if (amount.compareTo(cartCouponVO.getThreshold()) < 0) return Boolean.FALSE; - // 计算优惠金额 - if (CouponTypeEnum.FULL_REDUCTION.getValue().equals(cartCouponVO.getCouponType())) { - // 优惠金额不可超出商品总价 - if (amount.compareTo(cartCouponVO.getCouponValue()) < 0) { - cartCouponVO.setDiscountAmount(amount); - } else { - cartCouponVO.setDiscountAmount(cartCouponVO.getCouponValue()); - } - } else { - cartCouponVO.setDiscountAmount(amount.subtract(amount.multiply(cartCouponVO.getDiscount()).divide(BigDecimal.TEN))); - } - return Boolean.TRUE; - } - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcouponrelation/dto/CartCouponDto.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcouponrelation/dto/CartCouponDto.java deleted file mode 100644 index 85e1ca5..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/productcouponrelation/dto/CartCouponDto.java +++ /dev/null @@ -1,26 +0,0 @@ -package co.yixiang.yshop.module.product.service.productcouponrelation.dto; - -import lombok.Builder; -import lombok.Data; -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * @Author moxiangrong - * @Date 2023/11/13 - **/ -@Data -@Builder -public class CartCouponDto implements Serializable { - - /** - * 商品ID - */ - private Long productId; - - /** - * 商品价格 - */ - private BigDecimal price; - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/AppStoreProductServiceImpl.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/AppStoreProductServiceImpl.java deleted file mode 100644 index e16ad11..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/AppStoreProductServiceImpl.java +++ /dev/null @@ -1,445 +0,0 @@ -package co.yixiang.yshop.module.product.service.storeproduct; - -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import co.yixiang.yshop.framework.common.constant.ShopConstants; -import co.yixiang.yshop.framework.common.enums.ShopCommonEnum; -import co.yixiang.yshop.module.product.controller.app.coupon.vo.AppCouponDetailRespVO; -import co.yixiang.yshop.module.product.controller.app.product.param.AppStoreProductQueryParam; -import co.yixiang.yshop.module.product.controller.app.product.vo.AppProductVo; -import co.yixiang.yshop.module.product.controller.app.product.vo.AppStoreProductAttrQueryVo; -import co.yixiang.yshop.module.product.controller.app.product.vo.AppStoreProductReplyQueryVo; -import co.yixiang.yshop.module.product.controller.app.product.vo.AppStoreProductRespVo; -import co.yixiang.yshop.module.product.convert.storeproduct.StoreProductConvert; -import co.yixiang.yshop.module.product.dal.dataobject.shippingtemplates.ShippingTemplatesDO; -import co.yixiang.yshop.module.product.dal.dataobject.storeproduct.StoreProductDO; -import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrvalue.StoreProductAttrValueDO; -import co.yixiang.yshop.module.product.dal.dataobject.storeproductrelation.StoreProductRelationDO; -import co.yixiang.yshop.module.product.dal.mysql.storeproduct.StoreProductMapper; -import co.yixiang.yshop.module.product.dal.mysql.storeproductattrvalue.StoreProductAttrValueMapper; -import co.yixiang.yshop.module.product.dal.mysql.storeproductrelation.StoreProductRelationMapper; -import co.yixiang.yshop.module.product.dal.redis.RedisKeyConstants; -import co.yixiang.yshop.module.product.enums.ProductConstants; -import co.yixiang.yshop.module.product.enums.coupon.CouponTypeEnum; -import co.yixiang.yshop.module.product.enums.product.ProductEnum; -import co.yixiang.yshop.module.product.enums.product.ProductTypeEnum; -import co.yixiang.yshop.module.product.enums.product.RelationCateEnum; -import co.yixiang.yshop.module.product.enums.product.RelationEnum; -import co.yixiang.yshop.module.product.service.productcoupon.AppCouponService; -import co.yixiang.yshop.module.product.service.shippingtemplates.ShippingTemplatesService; -import co.yixiang.yshop.module.product.service.storeproductattr.AppStoreProductAttrService; -import co.yixiang.yshop.module.product.service.storeproductattrvalue.StoreProductAttrValueService; -import co.yixiang.yshop.module.product.service.storeproductrelation.AppStoreProductRelationService; -import co.yixiang.yshop.module.product.service.storeproductreply.AppStoreProductReplyService; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.data.redis.core.ZSetOperations; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.time.Instant; -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - -import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; -import static co.yixiang.yshop.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; -import static co.yixiang.yshop.module.product.enums.ErrorCodeConstants.PRODUCT_STOCK_LESS; -import static co.yixiang.yshop.module.product.enums.ErrorCodeConstants.STORE_PRODUCT_NOT_EXISTS; - -/** - * 商品 AppService 实现类 - * - * @author yshop - */ -@Service -@Validated -public class AppStoreProductServiceImpl extends ServiceImpl implements AppStoreProductService { - - @Resource - private AppStoreProductAttrService appStoreProductAttrService; - @Resource - private AppStoreProductRelationService appStoreProductRelationService; - @Resource - private AppStoreProductReplyService appStoreProductReplyService; - @Resource - private ShippingTemplatesService shippingTemplatesService; - @Resource - private StoreProductAttrValueService storeProductAttrValueService; - @Resource - private StoreProductAttrValueMapper storeProductAttrValueMapper; - - @Resource - private StoreProductRelationMapper storeProductRelationMapper; - - @Resource - private StringRedisTemplate stringRedisTemplate; - - @Resource - private AppCouponService appCouponService; - - /** - * 最近历史搜索的大小 - */ - public static final Integer CURRENT_SEARCH_SIZE = 10; - - /** - * 商品列表 - * - * @param page 页码 - * @param limit 条数 - * @param order ProductEnum - * @return List - */ - @Override - public List getList(int page, int limit, int order) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(StoreProductDO::getIsShow, ShopCommonEnum.SHOW.getValue()) - //.eq(YxStoreProduct::getIsDel,ShopCommonEnum.DELETE_0.getValue()) - .orderByDesc(StoreProductDO::getSort); - wrapper.eq(StoreProductDO::getIsIntegral, 0); - // order - switch (ProductEnum.toType(order)) { - //精品推荐 - case TYPE_1: - wrapper.eq(StoreProductDO::getIsBest, - ShopCommonEnum.YES.getValue()); - break; - //首发新品 - case TYPE_3: - wrapper.eq(StoreProductDO::getIsNew, - ShopCommonEnum.YES.getValue()); - break; - // 猜你喜欢 - case TYPE_4: - wrapper.eq(StoreProductDO::getIsBenefit, - ShopCommonEnum.YES.getValue()); - break; - // 热门榜单 - case TYPE_2: - wrapper.eq(StoreProductDO::getIsHot, - ShopCommonEnum.YES.getValue()); - break; - default: - } - Page pageModel = new Page<>(page, limit); - - IPage pageList = this.baseMapper.selectPage(pageModel, wrapper); - - return StoreProductConvert.INSTANCE.convertList03(pageList.getRecords()); - } - - - /** - * 商品列表 - * - * @param productQueryParam AppStoreProductQueryParam - * @return list - */ - @Override - public List getGoodsList(AppStoreProductQueryParam productQueryParam) { - - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(StoreProductDO::getIsShow, ShopCommonEnum.SHOW.getValue()); - - if (productQueryParam.getIsIntegral() != null) { - wrapper.eq(StoreProductDO::getIsIntegral, productQueryParam.getIsIntegral()); - } - //多字段模糊查询分类搜索 - if (StrUtil.isNotBlank(productQueryParam.getSid()) && - !ShopConstants.YSHOP_ZERO.equals(productQueryParam.getSid())) { - wrapper.eq(StoreProductDO::getCateId, productQueryParam.getSid()); - } - // 查询优惠券可用商品 - if (productQueryParam.getCouponId() != null && productQueryParam.getCouponId() != 0) { - List productIdList = appCouponService.getCouponProductList(productQueryParam.getCouponId()); - wrapper.in(CollectionUtils.isNotEmpty(productIdList), StoreProductDO::getId, productIdList); - } - //关键字搜索 - if (StrUtil.isNotEmpty(productQueryParam.getKeyword())) { - wrapper.and(wrapper1 -> { - wrapper1.or(); - wrapper1.like(StoreProductDO::getStoreName, productQueryParam.getKeyword()); - wrapper1.or(); - wrapper1.like(StoreProductDO::getStoreInfo, productQueryParam.getKeyword()); - wrapper1.or(); - wrapper1.like(StoreProductDO::getKeyword, productQueryParam.getKeyword()); - }); - //缓存用户历史搜索 - Long userId = getLoginUserId(); - addUserSearchHistory(userId, productQueryParam.getKeyword()); - // 缓存搜索记录 - addSearchPopular(productQueryParam.getKeyword()); - } - //新品搜索 - if (StrUtil.isNotBlank(productQueryParam.getNews()) && - !ShopConstants.YSHOP_ZERO.equals(productQueryParam.getNews())) { - wrapper.eq(StoreProductDO::getIsNew, ShopCommonEnum.NEW.getValue()); - } - - //销量查询 - if (StrUtil.isNotBlank(productQueryParam.getSales()) && - !ShopConstants.YSHOP_ZERO.equals(productQueryParam.getSales())) { - wrapper.orderByDesc(StoreProductDO::getSales); - } - - - Page pageModel = new Page<>(productQueryParam.getPage(), - productQueryParam.getLimit()); - - IPage pageList = this.baseMapper.selectPage(pageModel, wrapper); - - return StoreProductConvert.INSTANCE.convertList03(pageList.getRecords()); - } - - - /** - * 商品详情 - * - * @param id 商品id - * @param uid 用户id - * @return ProductVo - */ - @Override - public AppProductVo goodsDetail(Long id, Long uid) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(StoreProductDO::getIsShow, ShopCommonEnum.SHOW.getValue()) - .eq(StoreProductDO::getId, id); - StoreProductDO storeProduct = this.baseMapper.selectOne(wrapper); - if (ObjectUtil.isNull(storeProduct)) { - throw exception(STORE_PRODUCT_NOT_EXISTS); - } - - //获取商品sku - Map returnMap = appStoreProductAttrService.getProductAttrDetail(id); - AppProductVo productVo = new AppProductVo(); - - AppStoreProductRespVo storeProductQueryVo = StoreProductConvert.INSTANCE.convert01(storeProduct); - - //设置销量 - storeProductQueryVo.setSales(storeProductQueryVo.getSales() + storeProduct.getFicti()); - - if (uid > 0) { - //设置VIP价格 - //todo - - //收藏 - boolean isCollect = appStoreProductRelationService.isProductRelation(id, uid, RelationCateEnum.COMMON.getValue()); - storeProductQueryVo.setUserCollect(isCollect); - } - //总条数 - Long totalCount = appStoreProductReplyService.productReplyCount(id); - productVo.setReplyCount(totalCount); - - //评价 - AppStoreProductReplyQueryVo storeProductReplyQueryVo = appStoreProductReplyService.getReply(id); - productVo.setReply(storeProductReplyQueryVo); - - //好评比例 - String replyPer = appStoreProductReplyService.replyPer(id); - productVo.setReplyChance(replyPer); - - //获取运费模板名称 - String tempName = ""; - if (storeProduct.getPostage().compareTo(BigDecimal.ZERO) == 0 && storeProduct.getTempId() == 0) { - tempName = ProductConstants.FREE_POSTAGE; - } else { - ShippingTemplatesDO shippingTemplates = shippingTemplatesService.getById(storeProduct.getTempId()); - if (ObjectUtil.isNotNull(shippingTemplates)) { - tempName = shippingTemplates.getName(); - } else { - tempName = ProductConstants.POSTAGE_TEMP_NOT; - } - - } - productVo.setTempName(tempName); - - //设置商品相关信息 - productVo.setStoreInfo(storeProductQueryVo); - productVo.setProductAttr((List) returnMap.get("productAttr")); - productVo.setProductValue((Map) returnMap.get("productValue")); - - //添加足迹,先删除之前的,更新时间 - LambdaQueryWrapper productDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); - storeProductRelationMapper.delete( - productDOLambdaQueryWrapper.eq(StoreProductRelationDO::getProductId, id) - .eq(StoreProductRelationDO::getUid, uid) - .eq(StoreProductRelationDO::getType, RelationEnum.FOOT.getValue())); - StoreProductRelationDO storeProductRelationDO = StoreProductRelationDO.builder() - .productId(id) - .uid(uid) - .category("common") - .type(RelationEnum.FOOT.getValue()) - .build(); - storeProductRelationMapper.insert(storeProductRelationDO); - - // 设置优惠券信息 - List couponDetailList = appCouponService.receiveList(id); - if (CollectionUtils.isNotEmpty(couponDetailList)) { - AppCouponDetailRespVO couponDetail = couponDetailList.get(0); - if (CouponTypeEnum.FULL_REDUCTION.getValue().equals(couponDetail.getCouponType())) { - productVo.setCouponSplicing("满" + couponDetail.getThreshold() + "元减" + couponDetail.getCouponValue()); - } else { - productVo.setCouponSplicing("满" + couponDetail.getThreshold() + "元" + couponDetail.getDiscount() + "折"); - } - - } - return productVo; - } - - - /** - * 返回普通商品库存 - * - * @param productId 商品id - * @param unique sku唯一值 - * @return int - */ - @Override - public int getProductStock(Long productId, String unique, String type) { - StoreProductAttrValueDO storeProductAttrValue = storeProductAttrValueService - .getOne(Wrappers.lambdaQuery() - .eq(StoreProductAttrValueDO::getUnique, unique) - .eq(StoreProductAttrValueDO::getProductId, productId)); - - if (storeProductAttrValue == null) { - return 0; - } - if (ProductTypeEnum.PINK.getValue().equals(type)) { - return storeProductAttrValue.getPinkStock(); - } else if (ProductTypeEnum.SECKILL.getValue().equals(type)) { - return storeProductAttrValue.getSeckillStock(); - } - return storeProductAttrValue.getStock(); - - } - - /** - * 获取单个商品 - * - * @param id 商品id - * @return YxStoreProductQueryVo - */ - @Override - public AppStoreProductRespVo getStoreProductById(Long id) { - return StoreProductConvert.INSTANCE.convert01(this.baseMapper.selectById(id)); - } - - - /** - * 减少库存与增加销量 - * - * @param num 数量 - * @param productId 商品id - * @param unique sku - */ - @Override - @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) - public void decProductStock(int num, Long productId, String unique, Long activityId, String type) { - - - int res = 0; - res = storeProductAttrValueMapper.decStockIncSales(num, productId, unique); - - if (res == 0) { - throw exception(PRODUCT_STOCK_LESS); - } - - int product = this.baseMapper.decStockIncSales(num, productId); - if (product == 0) { - throw exception(PRODUCT_STOCK_LESS); - } - - - } - - - /** - * 增加库存 减少销量 - * - * @param num 数量 - * @param productId 商品id - * @param unique sku唯一值 - */ - @Override - public void incProductStock(Integer num, Long productId, String unique, Long activityId, String type) { - //处理属性sku - if (StrUtil.isNotEmpty(unique)) { - storeProductAttrValueMapper.incStockDecSales(num, productId, unique); - } - //更新商品 - this.baseMapper.incStockDecSales(num, productId); - } - - private void addUserSearchHistory(Long userId, String keyWord) { - String key = RedisKeyConstants.YSHOP_USER_SEARCH_HISTORY_KEY.formatKey(userId); - //历史搜索记录保持30天,30天不登录查询则自动过期 - stringRedisTemplate.expire(key, 30, TimeUnit.DAYS); - - ZSetOperations zSet = stringRedisTemplate.opsForZSet(); - //由于zset 的集合特性当插入已经存在的 v 值 (搜索记录) 时只会更新score 值, - zSet.add(key, keyWord, Instant.now().getEpochSecond()); - - //只得到当前用户的最近搜索记录,注意这里必须保证set集合的顺序 - Set userRecentSearches = listRecentSearch(userId); - - if (userRecentSearches.size() > CURRENT_SEARCH_SIZE) { - //获取到最开始浏览的第一条 - String firstSearch = userRecentSearches.stream().reduce((first, second) -> second).orElse(null); - //删除最开始浏览的第一条 - zSet.remove(key, firstSearch); - } - } - - - /** - * 历史最近搜索列表 - * - * @return 历史搜索列表 - */ - @Override - public Set listRecentSearch(Long userId) { - String key = RedisKeyConstants.YSHOP_USER_SEARCH_HISTORY_KEY.formatKey(userId); - Set> typedTuples = stringRedisTemplate.opsForZSet().reverseRangeWithScores(key, 0, -1); - return Optional.ofNullable(typedTuples) - .map(tuples -> tuples.stream() - .map(ZSetOperations.TypedTuple::getValue) - .filter(Objects::nonNull) - .limit(20) - .collect(Collectors.collectingAndThen( - Collectors.toCollection(LinkedHashSet::new), LinkedHashSet::new))) - .orElseGet(LinkedHashSet::new); - } - - - @Override - public void removeSearchHistoryAll(Long userId) { - stringRedisTemplate.delete(RedisKeyConstants.YSHOP_USER_SEARCH_HISTORY_KEY.formatKey(userId)); - } - - @Override - public Set searchPopular(Long start, Long end) { - String key = RedisKeyConstants.YSHOP_POPULAR_SEARCH_RECORDS_KEY.formatKey(); - return stringRedisTemplate.opsForZSet().reverseRange(key, start, end); - } - - /** - * 缓存搜索记录 - * - * @param keyWord 搜索关键字 - */ - private void addSearchPopular(String keyWord) { - String key = RedisKeyConstants.YSHOP_POPULAR_SEARCH_RECORDS_KEY.formatKey(); - stringRedisTemplate.opsForZSet().incrementScore(key, keyWord, 1); - } - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/StoreProductService.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/StoreProductService.java index b7b85e4..ef982ea 100644 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/StoreProductService.java +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/StoreProductService.java @@ -54,6 +54,14 @@ public interface StoreProductService extends IService { */ List getStoreProductList(Collection ids); + /** + * 获得商品分页 + * + * @param pageReqVO 分页查询 + * @return 商品分页 + */ + PageResult getCouponProductPage(CouponProductPageReqVO pageReqVO); + /** * 获得商品分页 * diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/StoreProductServiceImpl.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/StoreProductServiceImpl.java index 4a32eee..575822b 100644 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/StoreProductServiceImpl.java +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/StoreProductServiceImpl.java @@ -9,10 +9,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import co.yixiang.yshop.framework.common.enums.ShopCommonEnum; import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.product.controller.admin.storeproduct.vo.StoreProductCreateReqVO; -import co.yixiang.yshop.module.product.controller.admin.storeproduct.vo.StoreProductExportReqVO; -import co.yixiang.yshop.module.product.controller.admin.storeproduct.vo.StoreProductPageReqVO; -import co.yixiang.yshop.module.product.controller.admin.storeproduct.vo.StoreProductUpdateReqVO; +import co.yixiang.yshop.module.product.controller.admin.storeproduct.vo.*; import co.yixiang.yshop.module.product.convert.storeproduct.StoreProductConvert; import co.yixiang.yshop.module.product.convert.storeproductrule.StoreProductRuleConvert; import co.yixiang.yshop.module.product.dal.dataobject.category.ProductCategoryDO; @@ -21,6 +18,7 @@ import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrresult.Sto import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrvalue.StoreProductAttrValueDO; import co.yixiang.yshop.module.product.dal.dataobject.storeproductrule.StoreProductRuleDO; import co.yixiang.yshop.module.product.dal.mysql.storeproduct.StoreProductMapper; +import co.yixiang.yshop.module.product.enums.coupon.CouponScopeEnum; import co.yixiang.yshop.module.product.enums.product.SpecTypeEnum; import co.yixiang.yshop.module.product.service.category.ProductCategoryService; import co.yixiang.yshop.module.product.service.shippingtemplates.ShippingTemplatesService; @@ -113,6 +111,15 @@ public class StoreProductServiceImpl extends ServiceImpl getCouponProductPage(CouponProductPageReqVO pageReqVO) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + if (CouponScopeEnum.PRODUCT.getValue().equals(pageReqVO.getCouponScope())) { + queryWrapper.in(StoreProductDO::getId, pageReqVO.getIds()); + } + return storeProductMapper.selectPage(pageReqVO, queryWrapper); + } + @Override public PageResult getStoreProductPage(StoreProductPageReqVO pageReqVO) { if (pageReqVO.getCateId() != null) { @@ -168,7 +175,7 @@ public class StoreProductServiceImpl extends ServiceImpl> map : detailDto.getRes()) { Map detail = map.get("detail"); String[] detailArr = detail.values().toArray(new String[]{}); - Arrays.sort(detailArr); + // Arrays.sort(detailArr); String sku = String.join(",", detailArr); @@ -513,9 +520,9 @@ public class StoreProductServiceImpl extends ServiceImpl getProductAttrDetail(long productId) { List storeProductAttrs = this.baseMapper .selectList(Wrappers.lambdaQuery() - .eq(StoreProductAttrDO::getProductId,productId) - .orderByAsc(StoreProductAttrDO::getAttrValues)); + .eq(StoreProductAttrDO::getProductId,productId)); List productAttrValues = storeProductAttrValueService .list(Wrappers.lambdaQuery() diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductrule/StoreProductRuleService.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductrule/StoreProductRuleService.java deleted file mode 100644 index 4c7043d..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductrule/StoreProductRuleService.java +++ /dev/null @@ -1,73 +0,0 @@ -package co.yixiang.yshop.module.product.service.storeproductrule; - -import java.util.*; -import javax.validation.*; -import co.yixiang.yshop.module.product.controller.admin.storeproductrule.vo.*; - -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.product.dal.dataobject.storeproductrule.StoreProductRuleDO; - -/** - * 商品规则值(规格) Service 接口 - * - * @author yshop - */ -public interface StoreProductRuleService { - - /** - * 创建商品规则值(规格) - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Integer createStoreProductRule(@Valid StoreProductRuleCreateReqVO createReqVO); - - /** - * 更新商品规则值(规格) - * - * @param updateReqVO 更新信息 - */ - void updateStoreProductRule(@Valid StoreProductRuleUpdateReqVO updateReqVO); - - /** - * 删除商品规则值(规格) - * - * @param id 编号 - */ - void deleteStoreProductRule(Integer id); - - /** - * 获得商品规则值(规格) - * - * @param id 编号 - * @return 商品规则值(规格) - */ - StoreProductRuleDO getStoreProductRule(Integer id); - - /** - * 获得商品规则值(规格)列表 - * - * @param ids 编号 - * @return 商品规则值(规格)列表 - */ - List getStoreProductRuleList(Collection ids); - - /** - * 获得商品规则值(规格)分页 - * - * @param pageReqVO 分页查询 - * @return 商品规则值(规格)分页 - */ - PageResult getStoreProductRulePage(StoreProductRulePageReqVO pageReqVO); - - /** - * 获得商品规则值(规格)列表, 用于 Excel 导出 - * - * @param exportReqVO 查询条件 - * @return 商品规则值(规格)列表 - */ - List getStoreProductRuleList(StoreProductRuleExportReqVO exportReqVO); - - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductrule/StoreProductRuleServiceImpl.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductrule/StoreProductRuleServiceImpl.java deleted file mode 100644 index 74fe9c4..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductrule/StoreProductRuleServiceImpl.java +++ /dev/null @@ -1,88 +0,0 @@ -package co.yixiang.yshop.module.product.service.storeproductrule; - -import co.yixiang.yshop.module.product.convert.storeproductrule.StoreProductRuleConvert; -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; - -import java.util.*; - -import co.yixiang.yshop.module.product.controller.admin.storeproductrule.vo.*; -import co.yixiang.yshop.module.product.dal.dataobject.storeproductrule.StoreProductRuleDO; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.module.product.dal.mysql.storeproductrule.StoreProductRuleMapper; - -import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; -import static co.yixiang.yshop.module.product.enums.ErrorCodeConstants.STORE_PRODUCT_RULE_NOT_EXISTS; - - -/** - * 商品规则值(规格) Service 实现类 - * - * @author yshop - */ -@Service -@Validated -public class StoreProductRuleServiceImpl implements StoreProductRuleService { - - @Resource - private StoreProductRuleMapper storeProductRuleMapper; - - @Override - public Integer createStoreProductRule(StoreProductRuleCreateReqVO createReqVO) { - // 插入 - StoreProductRuleDO storeProductRule = StoreProductRuleConvert.INSTANCE.convert(createReqVO); - storeProductRuleMapper.insert(storeProductRule); - // 返回 - return storeProductRule.getId(); - } - - @Override - public void updateStoreProductRule(StoreProductRuleUpdateReqVO updateReqVO) { - // 校验存在 - validateStoreProductRuleExists(updateReqVO.getId()); - // 更新 - StoreProductRuleDO updateObj = StoreProductRuleConvert.INSTANCE.convert(updateReqVO); - storeProductRuleMapper.updateById(updateObj); - } - - @Override - public void deleteStoreProductRule(Integer id) { - // 校验存在 - validateStoreProductRuleExists(id); - // 删除 - storeProductRuleMapper.deleteById(id); - } - - private void validateStoreProductRuleExists(Integer id) { - if (storeProductRuleMapper.selectById(id) == null) { - throw exception(STORE_PRODUCT_RULE_NOT_EXISTS); - } - } - - @Override - public StoreProductRuleDO getStoreProductRule(Integer id) { - return storeProductRuleMapper.selectById(id); - } - - @Override - public List getStoreProductRuleList(Collection ids) { - if (ids.isEmpty()) { - return storeProductRuleMapper.selectList(); - } - return storeProductRuleMapper.selectBatchIds(ids); - } - - @Override - public PageResult getStoreProductRulePage(StoreProductRulePageReqVO pageReqVO) { - return storeProductRuleMapper.selectPage(pageReqVO); - } - - @Override - public List getStoreProductRuleList(StoreProductRuleExportReqVO exportReqVO) { - return storeProductRuleMapper.selectList(exportReqVO); - } - - - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/shippingtemplates/ShippingTemplatesMapper.xml b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/shippingtemplates/ShippingTemplatesMapper.xml deleted file mode 100644 index 7ede580..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/shippingtemplates/ShippingTemplatesMapper.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/shippingtemplatesfree/ShippingTemplatesFreeMapper.xml b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/shippingtemplatesfree/ShippingTemplatesFreeMapper.xml deleted file mode 100644 index e338c62..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/shippingtemplatesfree/ShippingTemplatesFreeMapper.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/shippingtemplatesregion/ShippingTemplatesRegionMapper.xml b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/shippingtemplatesregion/ShippingTemplatesRegionMapper.xml deleted file mode 100644 index 9b7ff32..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/shippingtemplatesregion/ShippingTemplatesRegionMapper.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproduct/StoreProductMapper.xml b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproduct/StoreProductMapper.xml deleted file mode 100644 index be3a5e1..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproduct/StoreProductMapper.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductattr/StoreProductAttrMapper.xml b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductattr/StoreProductAttrMapper.xml deleted file mode 100644 index de556ed..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductattr/StoreProductAttrMapper.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductattrresult/StoreProductAttrResultMapper.xml b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductattrresult/StoreProductAttrResultMapper.xml deleted file mode 100644 index a270284..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductattrresult/StoreProductAttrResultMapper.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductattrvalue/StoreProductAttrValueMapper.xml b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductattrvalue/StoreProductAttrValueMapper.xml deleted file mode 100644 index 68a9760..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductattrvalue/StoreProductAttrValueMapper.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductrelation/StoreProductRelationMapper.xml b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductrelation/StoreProductRelationMapper.xml deleted file mode 100644 index ec22129..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductrelation/StoreProductRelationMapper.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductreply/StoreProductReplyMapper.xml b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductreply/StoreProductReplyMapper.xml deleted file mode 100644 index 120cc41..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductreply/StoreProductReplyMapper.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductrule/StoreProductRuleMapper.xml b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductrule/StoreProductRuleMapper.xml deleted file mode 100644 index b022e01..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductrule/StoreProductRuleMapper.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/yshop-module-mall/yshop-module-product-biz/src/test/java/co/yixiang/yshop/module/product/service/brand/ProductBrandServiceImplTest.java b/yshop-module-mall/yshop-module-product-biz/src/test/java/co/yixiang/yshop/module/product/service/brand/ProductBrandServiceImplTest.java deleted file mode 100644 index c085eaa..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/test/java/co/yixiang/yshop/module/product/service/brand/ProductBrandServiceImplTest.java +++ /dev/null @@ -1,133 +0,0 @@ -package co.yixiang.yshop.module.product.service.brand; - -import co.yixiang.yshop.framework.common.enums.CommonStatusEnum; -import co.yixiang.yshop.framework.common.pojo.PageResult; -import co.yixiang.yshop.framework.test.core.ut.BaseDbUnitTest; -import co.yixiang.yshop.module.product.controller.admin.brand.vo.ProductBrandCreateReqVO; -import co.yixiang.yshop.module.product.controller.admin.brand.vo.ProductBrandPageReqVO; -import co.yixiang.yshop.module.product.controller.admin.brand.vo.ProductBrandUpdateReqVO; -import co.yixiang.yshop.module.product.dal.dataobject.brand.ProductBrandDO; -import co.yixiang.yshop.module.product.dal.mysql.brand.ProductBrandMapper; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; - -import java.time.LocalDateTime; - -import static co.yixiang.yshop.framework.common.util.date.LocalDateTimeUtils.buildTime; -import static co.yixiang.yshop.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static co.yixiang.yshop.framework.test.core.util.AssertUtils.assertPojoEquals; -import static co.yixiang.yshop.framework.test.core.util.AssertUtils.assertServiceException; -import static co.yixiang.yshop.framework.test.core.util.RandomUtils.randomLongId; -import static co.yixiang.yshop.framework.test.core.util.RandomUtils.randomPojo; -import static co.yixiang.yshop.module.product.enums.ErrorCodeConstants.BRAND_NOT_EXISTS; -import static org.junit.jupiter.api.Assertions.*; - -/** -* {@link ProductBrandServiceImpl} 的单元测试类 -* -* @author yshop -*/ -@Import(ProductBrandServiceImpl.class) -public class ProductBrandServiceImplTest extends BaseDbUnitTest { - - @Resource - private ProductBrandServiceImpl brandService; - - @Resource - private ProductBrandMapper brandMapper; - - @Test - public void testCreateBrand_success() { - // 准备参数 - ProductBrandCreateReqVO reqVO = randomPojo(ProductBrandCreateReqVO.class); - - // 调用 - Long brandId = brandService.createBrand(reqVO); - // 断言 - assertNotNull(brandId); - // 校验记录的属性是否正确 - ProductBrandDO brand = brandMapper.selectById(brandId); - assertPojoEquals(reqVO, brand); - } - - @Test - public void testUpdateBrand_success() { - // mock 数据 - ProductBrandDO dbBrand = randomPojo(ProductBrandDO.class); - brandMapper.insert(dbBrand);// @Sql: 先插入出一条存在的数据 - // 准备参数 - ProductBrandUpdateReqVO reqVO = randomPojo(ProductBrandUpdateReqVO.class, o -> { - o.setId(dbBrand.getId()); // 设置更新的 ID - }); - - // 调用 - brandService.updateBrand(reqVO); - // 校验是否更新正确 - ProductBrandDO brand = brandMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, brand); - } - - @Test - public void testUpdateBrand_notExists() { - // 准备参数 - ProductBrandUpdateReqVO reqVO = randomPojo(ProductBrandUpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> brandService.updateBrand(reqVO), BRAND_NOT_EXISTS); - } - - @Test - public void testDeleteBrand_success() { - // mock 数据 - ProductBrandDO dbBrand = randomPojo(ProductBrandDO.class); - brandMapper.insert(dbBrand);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbBrand.getId(); - - // 调用 - brandService.deleteBrand(id); - // 校验数据不存在了 - assertNull(brandMapper.selectById(id)); - } - - @Test - public void testDeleteBrand_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> brandService.deleteBrand(id), BRAND_NOT_EXISTS); - } - - @Test - public void testGetBrandPage() { - // mock 数据 - ProductBrandDO dbBrand = randomPojo(ProductBrandDO.class, o -> { // 等会查询到 - o.setName("yshop"); - o.setStatus(CommonStatusEnum.ENABLE.getStatus()); - o.setCreateTime(buildTime(2022, 2, 1)); - }); - brandMapper.insert(dbBrand); - // 测试 name 不匹配 - brandMapper.insert(cloneIgnoreId(dbBrand, o -> o.setName("源码"))); - // 测试 status 不匹配 - brandMapper.insert(cloneIgnoreId(dbBrand, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); - // 测试 createTime 不匹配 - brandMapper.insert(cloneIgnoreId(dbBrand, o -> o.setCreateTime(buildTime(2022, 3, 1)))); - // 准备参数 - ProductBrandPageReqVO reqVO = new ProductBrandPageReqVO(); - reqVO.setName("yshop"); - reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); - reqVO.setCreateTime((new LocalDateTime[]{buildTime(2022, 1, 1), buildTime(2022, 2, 25)})); - - // 调用 - PageResult pageResult = brandService.getBrandPage(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(dbBrand, pageResult.getList().get(0)); - } - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/test/java/co/yixiang/yshop/module/product/service/category/ProductCategoryServiceImplTest.java b/yshop-module-mall/yshop-module-product-biz/src/test/java/co/yixiang/yshop/module/product/service/category/ProductCategoryServiceImplTest.java deleted file mode 100644 index 345a729..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/test/java/co/yixiang/yshop/module/product/service/category/ProductCategoryServiceImplTest.java +++ /dev/null @@ -1,145 +0,0 @@ -package co.yixiang.yshop.module.product.service.category; - -import co.yixiang.yshop.framework.test.core.ut.BaseDbUnitTest; -import co.yixiang.yshop.module.product.controller.admin.category.vo.ProductCategoryCreateReqVO; -import co.yixiang.yshop.module.product.controller.admin.category.vo.ProductCategoryListReqVO; -import co.yixiang.yshop.module.product.controller.admin.category.vo.ProductCategoryUpdateReqVO; -import co.yixiang.yshop.module.product.dal.dataobject.category.ProductCategoryDO; -import co.yixiang.yshop.module.product.dal.mysql.category.ProductCategoryMapper; -import org.junit.jupiter.api.Test; -import org.springframework.context.annotation.Import; - -import javax.annotation.Resource; -import java.util.List; - -import static co.yixiang.yshop.framework.common.util.object.ObjectUtils.cloneIgnoreId; -import static co.yixiang.yshop.framework.test.core.util.AssertUtils.assertPojoEquals; -import static co.yixiang.yshop.framework.test.core.util.AssertUtils.assertServiceException; -import static co.yixiang.yshop.framework.test.core.util.RandomUtils.randomLongId; -import static co.yixiang.yshop.framework.test.core.util.RandomUtils.randomPojo; -import static co.yixiang.yshop.module.product.enums.ErrorCodeConstants.CATEGORY_NOT_EXISTS; -import static org.junit.jupiter.api.Assertions.*; - -/** - * {@link ProductCategoryServiceImpl} 的单元测试类 - * - * @author yshop - */ -@Import(ProductCategoryServiceImpl.class) -public class ProductCategoryServiceImplTest extends BaseDbUnitTest { - - @Resource - private ProductCategoryServiceImpl productCategoryService; - - @Resource - private ProductCategoryMapper productCategoryMapper; - - @Test - public void testCreateCategory_success() { - // 准备参数 - ProductCategoryCreateReqVO reqVO = randomPojo(ProductCategoryCreateReqVO.class); - // mock 父类 - ProductCategoryDO parentProductCategory = randomPojo(ProductCategoryDO.class, o -> o.setId(reqVO.getParentId())); - productCategoryMapper.insert(parentProductCategory); - - // 调用 - Long categoryId = productCategoryService.createCategory(reqVO); - // 断言 - assertNotNull(categoryId); - // 校验记录的属性是否正确 - ProductCategoryDO category = productCategoryMapper.selectById(categoryId); - assertPojoEquals(reqVO, category); - } - - @Test - public void testUpdateCategory_success() { - // mock 数据 - ProductCategoryDO dbCategory = randomPojo(ProductCategoryDO.class); - productCategoryMapper.insert(dbCategory);// @Sql: 先插入出一条存在的数据 - // 准备参数 - ProductCategoryUpdateReqVO reqVO = randomPojo(ProductCategoryUpdateReqVO.class, o -> { - o.setId(dbCategory.getId()); // 设置更新的 ID - }); - // mock 父类 - ProductCategoryDO parentProductCategory = randomPojo(ProductCategoryDO.class, o -> o.setId(reqVO.getParentId())); - productCategoryMapper.insert(parentProductCategory); - - // 调用 - productCategoryService.updateCategory(reqVO); - // 校验是否更新正确 - ProductCategoryDO category = productCategoryMapper.selectById(reqVO.getId()); // 获取最新的 - assertPojoEquals(reqVO, category); - } - - @Test - public void testUpdateCategory_notExists() { - // 准备参数 - ProductCategoryUpdateReqVO reqVO = randomPojo(ProductCategoryUpdateReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> productCategoryService.updateCategory(reqVO), CATEGORY_NOT_EXISTS); - } - - @Test - public void testDeleteCategory_success() { - // mock 数据 - ProductCategoryDO dbCategory = randomPojo(ProductCategoryDO.class); - productCategoryMapper.insert(dbCategory);// @Sql: 先插入出一条存在的数据 - // 准备参数 - Long id = dbCategory.getId(); - - // 调用 - productCategoryService.deleteCategory(id); - // 校验数据不存在了 - assertNull(productCategoryMapper.selectById(id)); - } - - @Test - public void testDeleteCategory_notExists() { - // 准备参数 - Long id = randomLongId(); - - // 调用, 并断言异常 - assertServiceException(() -> productCategoryService.deleteCategory(id), CATEGORY_NOT_EXISTS); - } - - @Test - public void testGetCategoryLevel() { - // mock 数据 - ProductCategoryDO category1 = randomPojo(ProductCategoryDO.class, - o -> o.setParentId(ProductCategoryDO.PARENT_ID_NULL)); - productCategoryMapper.insert(category1); - ProductCategoryDO category2 = randomPojo(ProductCategoryDO.class, - o -> o.setParentId(category1.getId())); - productCategoryMapper.insert(category2); - ProductCategoryDO category3 = randomPojo(ProductCategoryDO.class, - o -> o.setParentId(category2.getId())); - productCategoryMapper.insert(category3); - - // 调用,并断言 - assertEquals(productCategoryService.getCategoryLevel(category1.getId()), 1); - assertEquals(productCategoryService.getCategoryLevel(category2.getId()), 2); - assertEquals(productCategoryService.getCategoryLevel(category3.getId()), 3); - } - - @Test - public void testGetCategoryList() { - // mock 数据 - ProductCategoryDO dbCategory = randomPojo(ProductCategoryDO.class, o -> { // 等会查询到 - o.setName("奥特曼"); - }); - productCategoryMapper.insert(dbCategory); - // 测试 name 不匹配 - productCategoryMapper.insert(cloneIgnoreId(dbCategory, o -> o.setName("奥特块"))); - // 准备参数 - ProductCategoryListReqVO reqVO = new ProductCategoryListReqVO(); - reqVO.setName("特曼"); - - // 调用 - List list = productCategoryService.getEnableCategoryList(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(dbCategory, list.get(0)); - } - -} diff --git a/yshop-module-mall/yshop-module-product-biz/src/test/resources/application-unit-test.yaml b/yshop-module-mall/yshop-module-product-biz/src/test/resources/application-unit-test.yaml deleted file mode 100644 index 6561858..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/test/resources/application-unit-test.yaml +++ /dev/null @@ -1,50 +0,0 @@ -spring: - main: - lazy-initialization: true # 开启懒加载,加快速度 - banner-mode: off # 单元测试,禁用 Banner - ---- #################### 数据库相关配置 #################### - -spring: - # 数据源配置项 - datasource: - name: yshop-pro - url: jdbc:h2:mem:testdb;MODE=MYSQL;DATABASE_TO_UPPER=false;NON_KEYWORDS=value; # MODE 使用 MySQL 模式;DATABASE_TO_UPPER 配置表和字段使用小写 - driver-class-name: org.h2.Driver - username: sa - password: - druid: - async-init: true # 单元测试,异步初始化 Druid 连接池,提升启动速度 - initial-size: 1 # 单元测试,配置为 1,提升启动速度 - sql: - init: - schema-locations: classpath:/sql/create_tables.sql - - # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 - redis: - host: 127.0.0.1 # 地址 - port: 16379 # 端口(单元测试,使用 16379 端口) - database: 0 # 数据库索引 - -mybatis-plus: - lazy-initialization: true # 单元测试,设置 MyBatis Mapper 延迟加载,加速每个单元测试 - type-aliases-package: ${yshop.info.base-package}.module.*.dal.dataobject - ---- #################### 定时任务相关配置 #################### - ---- #################### 配置中心相关配置 #################### - ---- #################### 服务保障相关配置 #################### - -# Lock4j 配置项(单元测试,禁用 Lock4j) - -# Resilience4j 配置项 - ---- #################### 监控相关配置 #################### - ---- #################### yshop相关配置 #################### - -# yshop配置项,设置当前项目所有自定义的配置 -yshop: - info: - base-package: co.yixiang.yshop diff --git a/yshop-module-mall/yshop-module-product-biz/src/test/resources/logback.xml b/yshop-module-mall/yshop-module-product-biz/src/test/resources/logback.xml deleted file mode 100644 index daf756b..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/test/resources/logback.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/yshop-module-mall/yshop-module-product-biz/src/test/resources/sql/clean.sql b/yshop-module-mall/yshop-module-product-biz/src/test/resources/sql/clean.sql deleted file mode 100644 index 4807976..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/test/resources/sql/clean.sql +++ /dev/null @@ -1,4 +0,0 @@ -DELETE FROM "product_sku"; -DELETE FROM "product_spu"; -DELETE FROM "product_brand"; -DELETE FROM "product_category"; diff --git a/yshop-module-mall/yshop-module-product-biz/src/test/resources/sql/create_tables.sql b/yshop-module-mall/yshop-module-product-biz/src/test/resources/sql/create_tables.sql deleted file mode 100644 index 8f53ba7..0000000 --- a/yshop-module-mall/yshop-module-product-biz/src/test/resources/sql/create_tables.sql +++ /dev/null @@ -1,84 +0,0 @@ -CREATE TABLE IF NOT EXISTS `product_sku` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `spu_id` bigint NOT NULL COMMENT 'spu编号', - `spu_name` varchar DEFAULT NULL COMMENT '商品 SPU 名字', - `properties` varchar DEFAULT NULL COMMENT '规格值数组-json格式, [{propertId: , valueId: }, {propertId: , valueId: }]', - `price` int NOT NULL DEFAULT '-1' COMMENT '销售价格,单位:分', - `market_price` int DEFAULT NULL COMMENT '市场价', - `cost_price` int NOT NULL DEFAULT '-1' COMMENT '成本价,单位: 分', - `pic_url` varchar NOT NULL COMMENT '图片地址', - `stock` int DEFAULT NULL COMMENT '库存', - `warn_stock` int DEFAULT NULL COMMENT '预警库存', - `volume` double DEFAULT NULL COMMENT '商品体积', - `weight` double DEFAULT NULL COMMENT '商品重量', - `bar_code` varchar DEFAULT NULL COMMENT '条形码', - `status` tinyint DEFAULT NULL COMMENT '状态: 0-正常 1-禁用', - `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `creator` varchar DEFAULT NULL COMMENT '创建人', - `updater` varchar DEFAULT NULL COMMENT '更新人', - `deleted` bit(1) NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY (`id`) -) COMMENT '商品sku'; - - -CREATE TABLE IF NOT EXISTS `product_spu` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号', - `brand_id` bigint DEFAULT NULL COMMENT '商品品牌编号', - `category_id` bigint NOT NULL COMMENT '分类id', - `spec_type` int NOT NULL COMMENT '规格类型:0 单规格 1 多规格', - `code` varchar(128) DEFAULT NULL COMMENT '商品编码', - `name` varchar(128) NOT NULL COMMENT '商品名称', - `sell_point` varchar(128) DEFAULT NULL COMMENT '卖点', - `description` text COMMENT '描述', - `pic_urls` varchar(1024) DEFAULT '' COMMENT '商品轮播图地址数组,以逗号分隔最多上传15张', - `video_url` varchar(128) DEFAULT NULL COMMENT '商品视频', - `market_price` int DEFAULT NULL COMMENT '市场价,单位使用:分', - `min_price` int DEFAULT NULL COMMENT '最小价格,单位使用:分', - `max_price` int DEFAULT NULL COMMENT '最大价格,单位使用:分', - `total_stock` int NOT NULL DEFAULT '0' COMMENT '总库存', - `show_stock` int DEFAULT '0' COMMENT '是否展示库存', - `sales_count` int DEFAULT '0' COMMENT '商品销量', - `virtual_sales_count` int DEFAULT '0' COMMENT '虚拟销量', - `click_count` int DEFAULT '0' COMMENT '商品点击量', - `status` bit(1) DEFAULT NULL COMMENT '上下架状态: 0 上架(开启) 1 下架(禁用)-1 回收', - `sort` int NOT NULL DEFAULT '0' COMMENT '排序字段', - `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `creator` varchar DEFAULT NULL COMMENT '创建人', - `updater` varchar DEFAULT NULL COMMENT '更新人', - `deleted` bit(1) NOT NULL DEFAULT 0 COMMENT '是否删除', -PRIMARY KEY (`id`) -) COMMENT '商品spu'; - -CREATE TABLE IF NOT EXISTS `product_category` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '分类编号', - `parent_id` bigint DEFAULT NULL COMMENT '父分类编号', - `name` varchar(128) NOT NULL COMMENT '分类名称', - `description` varchar(128) NOT NULL COMMENT '分类描述', - `pic_url` varchar DEFAULT NULL COMMENT '分类图片', - `sort` int NOT NULL DEFAULT '0' COMMENT '排序字段', - `status` bit(1) DEFAULT NULL COMMENT '状态', - `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `creator` varchar DEFAULT NULL COMMENT '创建人', - `updater` varchar DEFAULT NULL COMMENT '更新人', - `deleted` bit(1) NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY (`id`) -) COMMENT '商品分类'; - -CREATE TABLE IF NOT EXISTS `product_brand` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '品牌编号', - `name` varchar(128) NOT NULL COMMENT '品牌名称', - `pic_url` varchar DEFAULT NULL COMMENT '品牌图片', - `sort` int NOT NULL DEFAULT '0' COMMENT '排序字段', - `description` varchar(256) NOT NULL DEFAULT '0' COMMENT '品牌描述', - `status` bit(1) DEFAULT NULL COMMENT '状态', - `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `creator` varchar DEFAULT NULL COMMENT '创建人', - `updater` varchar DEFAULT NULL COMMENT '更新人', - `deleted` bit(1) NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY (`id`) -) COMMENT '商品品牌'; diff --git a/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/auth/MemberAuthServiceImpl.java b/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/auth/MemberAuthServiceImpl.java index c7bea9e..5a4d4cb 100644 --- a/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/auth/MemberAuthServiceImpl.java +++ b/yshop-module-member/yshop-module-member-biz/src/main/java/co/yixiang/yshop/module/member/service/auth/MemberAuthServiceImpl.java @@ -139,28 +139,23 @@ public class MemberAuthServiceImpl implements MemberAuthService { log.error(exception.getMessage()); throw exception(AUTH_WEIXIN_MINI_APP_PHONE_CODE_ERROR); } + WxMaJscode2SessionResult session = null; + try { + session = wxMaService.getUserService().getSessionInfo(reqVO.getLoginCode()); + } catch (WxErrorException e) { + log.error(e.getMessage()); + throw exception(MINI_AUTH_LOGIN_BAD); + } // 用户已经存在 MemberUserDO memberUserDO = userMapper.selectByMobile(phoneNumberInfo.getPhoneNumber()); - if (memberUserDO == null || StrUtil.isBlank(memberUserDO.getRoutineOpenid())) { - - WxMaJscode2SessionResult session = null; - try { - session = wxMaService.getUserService().getSessionInfo(reqVO.getLoginCode()); - } catch (WxErrorException e) { - log.error(e.getMessage()); - throw exception(MINI_AUTH_LOGIN_BAD); - } - if (memberUserDO == null) { + if (memberUserDO == null ) { // 获得获得注册用户 memberUserDO = userService.createUserIfAbsent(phoneNumberInfo.getPhoneNumber(), getClientIP(), LoginTypeEnum.WXAPP.getValue()); - memberUserDO.setNickname("yshop用户_" + memberUserDO.getId()); - - } - memberUserDO.setRoutineOpenid(session.getOpenid()); - userMapper.updateById(memberUserDO); - + memberUserDO.setNickname("用户_" + memberUserDO.getId()); } + memberUserDO.setRoutineOpenid(session.getOpenid()); + userMapper.updateById(memberUserDO); // 创建 Token 令牌,记录登录日志 return createTokenAfterLoginSuccess(memberUserDO, memberUserDO.getMobile(), LoginLogTypeEnum.LOGIN_SOCIAL); } diff --git a/yshop-module-pay/yshop-module-pay-biz/src/main/java/co/yixiang/yshop/module/pay/strategy/weixin/service/WxPayServiceUtils.java b/yshop-module-pay/yshop-module-pay-biz/src/main/java/co/yixiang/yshop/module/pay/strategy/weixin/service/WxPayServiceUtils.java index 3cb2087..0ea248c 100644 --- a/yshop-module-pay/yshop-module-pay-biz/src/main/java/co/yixiang/yshop/module/pay/strategy/weixin/service/WxPayServiceUtils.java +++ b/yshop-module-pay/yshop-module-pay-biz/src/main/java/co/yixiang/yshop/module/pay/strategy/weixin/service/WxPayServiceUtils.java @@ -8,19 +8,18 @@ import co.yixiang.yshop.module.pay.strategy.weixin.skd.PaymentKit; import co.yixiang.yshop.module.pay.strategy.weixin.skd.RandomStringUtil; import co.yixiang.yshop.module.pay.strategy.weixin.skd.WXPayUtil; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; +import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; -import java.util.Objects; - -import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; +@Component @Slf4j(topic = "WxPayServiceUtils") -public class WxPayServiceUtils { +public class WxPayServiceUtils implements InitializingBean { /** * 支付小程序appid */ @@ -150,17 +149,8 @@ public class WxPayServiceUtils { //退款资金来源-可用余额退款 String refundAccount="REFUND_SOURCE_RECHARGE_FUNDS"; Map params = new HashMap<>(); - if(outRefundNo.contains("APPLET")){ - //小程序微信退款 - params.put("appid", appid); - }else if(outRefundNo.contains("APP")){ - //APP微信退款 - params.put("appid", app_appid); - }else if(outRefundNo.contains("H5")){ - //H5 - params.put("appid", app_appid); - } - params.put("mch_id",mch_id); + params.put("appid", merchantDetailsDO.getAppid()); + params.put("mch_id",merchantDetailsDO.getMchId()); params.put("nonce_str", System.currentTimeMillis() / 1000 + ""); //商户订单号和微信订单号二选一 // params.put("out_trade_no", wxPayLog.getOutTradeNo()); @@ -174,13 +164,11 @@ public class WxPayServiceUtils { //退款回调 先不做 // params.put("notify_url", pc_refund_notify_url); //签名算法 - String sign = WXPayUtil.generateSignature(params,key); + String sign = WXPayUtil.generateSignature(params,merchantDetailsDO.getKeyPrivate()); params.put("sign", sign); String xml = PaymentKit.toXml(params); log.info(xml); - String cert_url = "/yshop-server/apiclient_cert.p12"; - log.info("certUrl:{}",cert_url); - String xmlStr = WXPayUtil.doRefund("https://api.mch.weixin.qq.com/secapi/pay/refund", xml,cert_url,mch_id); + String xmlStr = WXPayUtil.doRefund("https://api.mch.weixin.qq.com/secapi/pay/refund", xml,cert_url,merchantDetailsDO.getMchId()); //加入微信支付日志 return PaymentKit.xmlToMap(xmlStr); } @@ -263,4 +251,9 @@ public class WxPayServiceUtils { public boolean verifyNotify(Map params){ return PaymentKit.verifyNotify(params,key); } + + @Override + public void afterPropertiesSet() throws Exception { + log.info("微信支付配置读取Bean初始化成功"); + } } diff --git a/yshop-module-system/yshop-module-system-api/src/main/java/co/yixiang/yshop/module/system/enums/ErrorCodeConstants.java b/yshop-module-system/yshop-module-system-api/src/main/java/co/yixiang/yshop/module/system/enums/ErrorCodeConstants.java index 809f1e3..ac717f2 100644 --- a/yshop-module-system/yshop-module-system-api/src/main/java/co/yixiang/yshop/module/system/enums/ErrorCodeConstants.java +++ b/yshop-module-system/yshop-module-system-api/src/main/java/co/yixiang/yshop/module/system/enums/ErrorCodeConstants.java @@ -163,4 +163,6 @@ public interface ErrorCodeConstants { // ========== 站内信发送 1002028000 ========== ErrorCode NOTIFY_SEND_TEMPLATE_PARAM_MISS = new ErrorCode(1002025000, "模板参数({})缺失"); + ErrorCode BACKUP_MANY = new ErrorCode(100202701, "备份太频繁,距离上一次备份未超过5分钟!"); + }