From 31fc0da4b599e05da76414666e03a899b8826ed4 Mon Sep 17 00:00:00 2001 From: hupeng Date: Fri, 9 Jun 2023 11:04:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=AE=A1=E7=90=86=E5=90=8E?= =?UTF-8?q?=E5=8F=B0=E5=88=86=E7=B1=BB=20=E5=95=86=E5=93=81=20=E8=A7=84?= =?UTF-8?q?=E6=A0=BC=20=E8=BF=90=E8=B4=B9=E6=A8=A1=E6=9D=BF=20=E7=B4=A0?= =?UTF-8?q?=E6=9D=90=E7=AD=89=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/enums/ShopCommonEnum.java | 73 ++ .../product/enums/ErrorCodeConstants.java | 35 +- .../product/enums/product/DefaultEnum.java | 18 + .../product/enums/product/SpecTypeEnum.java | 18 + .../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 | 137 ++++ .../storeproduct/vo/StoreProductBaseVO.java | 43 ++ .../vo/StoreProductCreateReqVO.java | 108 +++ .../storeproduct/vo/StoreProductExcelVO.java | 44 ++ .../vo/StoreProductExportReqVO.java | 16 + .../vo/StoreProductPageReqVO.java | 34 + .../storeproduct/vo/StoreProductRespVO.java | 19 + .../vo/StoreProductUpdateReqVO.java | 113 +++ .../StoreProductRuleController.java | 13 +- .../vo/StoreProductRuleBaseVO.java | 6 +- .../vo/StoreProductRuleCreateReqVO.java | 4 +- .../vo/StoreProductRuleExcelVO.java | 6 +- .../vo/StoreProductRuleExportReqVO.java | 4 +- .../vo/StoreProductRulePageReqVO.java | 3 +- .../vo/StoreProductRuleRespVO.java | 2 +- .../vo/StoreProductRuleUpdateReqVO.java | 4 +- .../ShippingTemplatesConvert.java | 34 + .../ShippingTemplatesFreeConvert.java | 16 + .../ShippingTemplatesRegionConvert.java | 17 + .../storeproduct/StoreProductConvert.java | 34 + .../StoreProductAttrConvert.java | 17 + .../StoreProductAttrResultConvert.java | 16 + .../StoreProductAttrValueConvert.java | 17 + .../StoreProductRuleConvert.java | 6 +- .../ShippingTemplatesDO.java | 55 ++ .../ShippingTemplatesFreeDO.java | 58 ++ .../ShippingTemplatesRegionDO.java | 68 ++ .../storeproduct/StoreProductDO.java | 184 +++++ .../storeproductattr/StoreProductAttrDO.java | 40 ++ .../StoreProductAttrResultDO.java | 41 ++ .../StoreProductAttrValueDO.java | 114 +++ .../storeproductrule/StoreProductRuleDO.java | 5 +- .../ShippingTemplatesMapper.java | 32 + .../ShippingTemplatesFreeMapper.java | 16 + .../ShippingTemplatesRegionMapper.java | 16 + .../storeproduct/StoreProductMapper.java | 62 ++ .../StoreProductAttrMapper.java | 16 + .../StoreProductAttrResultMapper.java | 16 + .../StoreProductRuleMapper.java | 6 +- .../StoreProductAttrValueMapper.java | 16 + .../category/ProductCategoryService.java | 4 +- .../category/ProductCategoryServiceImpl.java | 13 +- .../ShippingTemplatesService.java | 84 +++ .../ShippingTemplatesServiceImpl.java | 250 +++++++ .../shippingtemplates/dto/AppointInfoDto.java | 28 + .../dto/RegionChildrenDto.java | 16 + .../shippingtemplates/dto/RegionDto.java | 23 + .../shippingtemplates/dto/RegionInfoDto.java | 38 + .../dto/ShippingTemplatesDto.java | 51 ++ .../ShippingTemplatesFreeService.java | 14 + .../ShippingTemplatesFreeServiceImpl.java | 23 + .../ShippingTemplatesRegionService.java | 14 + .../ShippingTemplatesRegionServiceImpl.java | 24 + .../storeproduct/StoreProductService.java | 96 +++ .../storeproduct/StoreProductServiceImpl.java | 657 ++++++++++++++++++ .../storeproduct/dto/AttrValueDto.java | 16 + .../service/storeproduct/dto/DetailDto.java | 25 + .../storeproduct/dto/FromatDetailDto.java | 32 + .../service/storeproduct/dto/ProductDto.java | 149 ++++ .../storeproduct/dto/ProductFormatDto.java | 67 ++ .../storeproduct/dto/ProductResultDto.java | 25 + .../storeproduct/dto/StoreProductDto.java | 149 ++++ .../storeproduct/dto/YxStoreProductDto.java | 131 ++++ .../dto/YxStoreProductRelationDto.java | 54 ++ .../dto/YxStoreProductReplyDto.java | 67 ++ .../dto/YxStoreProductRuleDto.java | 37 + .../dto/YxStoreProductSmallDto.java | 31 + .../StoreProductAttrService.java | 51 ++ .../StoreProductAttrServiceImpl.java | 176 +++++ .../StoreProductAttrResultService.java | 48 ++ .../StoreProductAttrResultServiceImpl.java | 81 +++ .../StoreProductAttrValueService.java | 41 ++ .../StoreProductAttrValueServiceImpl.java | 54 ++ .../StoreProductRuleService.java | 9 +- .../StoreProductRuleServiceImpl.java | 27 +- .../ShippingTemplatesMapper.xml | 12 + .../ShippingTemplatesFreeMapper.xml | 12 + .../ShippingTemplatesRegionMapper.xml | 12 + .../storeproduct/StoreProductMapper.xml | 12 + .../StoreProductAttrMapper.xml | 12 + .../StoreProductAttrResultMapper.xml | 12 + .../StoreProductAttrValueMapper.xml | 12 + .../StoreProductRuleMapper.xml | 2 +- .../module/shop/enums/ErrorCodeConstants.java | 2 +- .../src/main/resources/application.yaml | 1 + 97 files changed, 4511 insertions(+), 70 deletions(-) create mode 100644 yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/ShopCommonEnum.java create mode 100644 yshop-module-mall/yshop-module-product-api/src/main/java/co/yixiang/yshop/module/product/enums/product/DefaultEnum.java create mode 100644 yshop-module-mall/yshop-module-product-api/src/main/java/co/yixiang/yshop/module/product/enums/product/SpecTypeEnum.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/ShippingTemplatesController.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesBaseVO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesCreateReqVO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesExcelVO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesExportReqVO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesPageReqVO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesRespVO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesUpdateReqVO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/StoreProductController.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductBaseVO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductCreateReqVO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductExcelVO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductExportReqVO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductPageReqVO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductRespVO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductUpdateReqVO.java rename yshop-module-mall/{yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop => yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product}/controller/admin/storeproductrule/StoreProductRuleController.java (90%) rename yshop-module-mall/{yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop => yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product}/controller/admin/storeproductrule/vo/StoreProductRuleBaseVO.java (83%) rename yshop-module-mall/{yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop => yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product}/controller/admin/storeproductrule/vo/StoreProductRuleCreateReqVO.java (69%) rename yshop-module-mall/{yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop => yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product}/controller/admin/storeproductrule/vo/StoreProductRuleExcelVO.java (74%) rename yshop-module-mall/{yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop => yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product}/controller/admin/storeproductrule/vo/StoreProductRuleExportReqVO.java (69%) rename yshop-module-mall/{yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop => yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product}/controller/admin/storeproductrule/vo/StoreProductRulePageReqVO.java (82%) rename yshop-module-mall/{yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop => yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product}/controller/admin/storeproductrule/vo/StoreProductRuleRespVO.java (86%) rename yshop-module-mall/{yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop => yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product}/controller/admin/storeproductrule/vo/StoreProductRuleUpdateReqVO.java (83%) create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/shippingtemplates/ShippingTemplatesConvert.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/shippingtemplatesfree/ShippingTemplatesFreeConvert.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/shippingtemplatesregion/ShippingTemplatesRegionConvert.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproduct/StoreProductConvert.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattr/StoreProductAttrConvert.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattrresult/StoreProductAttrResultConvert.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattrvalue/StoreProductAttrValueConvert.java rename yshop-module-mall/{yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop => yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product}/convert/storeproductrule/StoreProductRuleConvert.java (77%) create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/shippingtemplates/ShippingTemplatesDO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/shippingtemplatesfree/ShippingTemplatesFreeDO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/shippingtemplatesregion/ShippingTemplatesRegionDO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproduct/StoreProductDO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductattr/StoreProductAttrDO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductattrresult/StoreProductAttrResultDO.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductattrvalue/StoreProductAttrValueDO.java rename yshop-module-mall/{yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop => yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product}/dal/dataobject/storeproductrule/StoreProductRuleDO.java (86%) create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/shippingtemplates/ShippingTemplatesMapper.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/shippingtemplatesfree/ShippingTemplatesFreeMapper.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/shippingtemplatesregion/ShippingTemplatesRegionMapper.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproduct/StoreProductMapper.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattr/StoreProductAttrMapper.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattrresult/StoreProductAttrResultMapper.java rename yshop-module-mall/{yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/dal/mysql/storeproductrule => yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattrvalue}/StoreProductRuleMapper.java (81%) create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductrule/StoreProductAttrValueMapper.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/ShippingTemplatesService.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/ShippingTemplatesServiceImpl.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/AppointInfoDto.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/RegionChildrenDto.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/RegionDto.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/RegionInfoDto.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/ShippingTemplatesDto.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplatesfree/ShippingTemplatesFreeService.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplatesfree/ShippingTemplatesFreeServiceImpl.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplatesregion/ShippingTemplatesRegionService.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplatesregion/ShippingTemplatesRegionServiceImpl.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/StoreProductService.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/StoreProductServiceImpl.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/AttrValueDto.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/DetailDto.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/FromatDetailDto.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/ProductDto.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/ProductFormatDto.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/ProductResultDto.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/StoreProductDto.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductDto.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductRelationDto.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductReplyDto.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductRuleDto.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductSmallDto.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattr/StoreProductAttrService.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattr/StoreProductAttrServiceImpl.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattrresult/StoreProductAttrResultService.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattrresult/StoreProductAttrResultServiceImpl.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattrvalue/StoreProductAttrValueService.java create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattrvalue/StoreProductAttrValueServiceImpl.java rename yshop-module-mall/{yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop => yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product}/service/storeproductrule/StoreProductRuleService.java (87%) rename yshop-module-mall/{yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop => yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product}/service/storeproductrule/StoreProductRuleServiceImpl.java (72%) create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/shippingtemplates/ShippingTemplatesMapper.xml create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/shippingtemplatesfree/ShippingTemplatesFreeMapper.xml create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/shippingtemplatesregion/ShippingTemplatesRegionMapper.xml create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproduct/StoreProductMapper.xml create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductattr/StoreProductAttrMapper.xml create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductattrresult/StoreProductAttrResultMapper.xml create mode 100644 yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductattrvalue/StoreProductAttrValueMapper.xml rename yshop-module-mall/{yshop-module-shop-biz => yshop-module-product-biz}/src/main/resources/mapper/storeproductrule/StoreProductRuleMapper.xml (83%) diff --git a/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/ShopCommonEnum.java b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/ShopCommonEnum.java new file mode 100644 index 0000000..a4a931b --- /dev/null +++ b/yshop-framework/yshop-common/src/main/java/co/yixiang/yshop/framework/common/enums/ShopCommonEnum.java @@ -0,0 +1,73 @@ +package co.yixiang.yshop.framework.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author hupeng + * 商城常用枚举 + */ +@Getter +@AllArgsConstructor +public enum ShopCommonEnum { + + STORE_MODE_1(1,"本地存储"), + STORE_MODE_2(2,"云存储"), + + ENABLE_1(1,"开启"), + ENABLE_2(2,"关闭"), + + EXTRACT_MINUS_1(-1,"提现未通过"), + EXTRACT_0(0,"提现审核中"), + EXTRACT_1(1,"提现已完成"), + + IS_FINISH_0(0,"未完成"), + IS_FINISH_1(1,"已完成"), + + IS_FOREVER_0(0,"不是永久"), + IS_FOREVER_1(1,"永久"), + + AGREE_1(1,"同意"), + AGREE_2(2,"拒绝"), + + IS_PERMANENT_0(0,"限制"), + IS_PERMANENT_1(1,"不限制"), + + IS_STATUS_0(0,"否"), + IS_STATUS_1(1,"是"), + + + IS_PROMOTER_0(0,"默认"), + IS_PROMOTER_1(1,"是客服"), + + IS_NEW_0(0,"默认"), + IS_NEW_1(1,"新品"), + + IS_SUB_0(0,"不单独分佣"), + IS_SUB_1(1,"单独分佣"), + + + GRADE_0(0,"一级推荐人"), + GRADE_1(1,"二级推荐人"), + + REPLY_0(0,"未回复"), + REPLY_1(1,"已回复"), + + ADD_1(1,"增加"), + ADD_2(2,"减少"), + + DELETE_0(0,"未删除"), + DELETE_1(1,"已删除"), + + SHOW_0(0,"不显示"), + SHOW_1(1,"显示"), + + DEFAULT_0(0,"不是默认"), + DEFAULT_1(1,"默认"); + + + + + private Integer value; + private String desc; +} diff --git a/yshop-module-mall/yshop-module-product-api/src/main/java/co/yixiang/yshop/module/product/enums/ErrorCodeConstants.java b/yshop-module-mall/yshop-module-product-api/src/main/java/co/yixiang/yshop/module/product/enums/ErrorCodeConstants.java index e7bbe02..b2f37c5 100644 --- a/yshop-module-mall/yshop-module-product-api/src/main/java/co/yixiang/yshop/module/product/enums/ErrorCodeConstants.java +++ b/yshop-module-mall/yshop-module-product-api/src/main/java/co/yixiang/yshop/module/product/enums/ErrorCodeConstants.java @@ -12,7 +12,7 @@ public interface ErrorCodeConstants { // ========== 商品分类相关 1008001000 ============ ErrorCode CATEGORY_NOT_EXISTS = new ErrorCode(1008001000, "商品分类不存在"); ErrorCode CATEGORY_PARENT_NOT_EXISTS = new ErrorCode(1008001001, "父分类不存在"); - ErrorCode CATEGORY_PARENT_NOT_FIRST_LEVEL = new ErrorCode(1008001002, "父分类不能是二级分类"); + ErrorCode CATEGORY_PARENT_NOT_FIRST_LEVEL = new ErrorCode(1008001002, "分类最多只有二级哦"); ErrorCode CATEGORY_EXISTS_CHILDREN = new ErrorCode(1008001003, "存在子分类,无法删除"); ErrorCode CATEGORY_DISABLED = new ErrorCode(1008001004, "商品分类({})已禁用,无法使用"); @@ -21,25 +21,24 @@ public interface ErrorCodeConstants { ErrorCode BRAND_DISABLED = new ErrorCode(1008002001, "品牌不存在"); ErrorCode BRAND_NAME_EXISTS = new ErrorCode(1008002002, "品牌名称已存在"); - // ========== 商品属性项 1008003000 ========== - ErrorCode PROPERTY_NOT_EXISTS = new ErrorCode(1008003000, "属性项不存在"); - ErrorCode PROPERTY_EXISTS = new ErrorCode(1008003001, "属性项的名称已存在"); - ErrorCode PROPERTY_DELETE_FAIL_VALUE_EXISTS = new ErrorCode(1008003002, "属性项下存在属性值,无法删除"); + // ========== 商品 1008003000 ========== + ErrorCode STORE_PRODUCT_NOT_EXISTS = new ErrorCode(1008003000, "商品不存在"); + ErrorCode STORE_PRODUCT_ATTR_NOT_EXISTS = new ErrorCode(1008003001, "商品属性不存在"); + ErrorCode STORE_PRODUCT_ATTR_RESULT_NOT_EXISTS = new ErrorCode(1008003002, "商品属性详情不存在"); + ErrorCode STORE_PRODUCT_ATTR_VALUE_NOT_EXISTS = new ErrorCode(1008003003, "商品属性值不存在"); + ErrorCode STORE_PRODUCT_RULE_NOT_EXISTS = new ErrorCode(1008003004, "商品规则值(规格)不存在"); + ErrorCode STORE_PRODUCT_RULE_NEED = new ErrorCode(1008003005, "请至少添加一个规格值哦"); + ErrorCode STORE_PRODUCT_RULE_RE = new ErrorCode(1008003006, "规格值里包含'-',请重新添加"); + ErrorCode STORE_PRODUCT_STOCK_ERROR = new ErrorCode(1008003007, "库存不能低于0"); + ErrorCode STORE_PRODUCT_SLIDER_ERROR = new ErrorCode(1008003008, "请上传轮播图"); + ErrorCode STORE_PRODUCT_ATTR_NEED = new ErrorCode(1008003009, "请设置至少一个属性"); - // ========== 商品属性值 1008004000 ========== - ErrorCode PROPERTY_VALUE_NOT_EXISTS = new ErrorCode(1008004000, "属性值不存在"); - ErrorCode PROPERTY_VALUE_EXISTS = new ErrorCode(1008004001, "属性值的名称已存在"); + // ========== 运费模板 1008004000 ========== + ErrorCode SHIPPING_TEMPLATES_NOT_EXISTS = new ErrorCode(1008004000, "运费模板不存在"); + ErrorCode SHIPPING_TEMPLATES_FREE_NOT_EXISTS = new ErrorCode(1008004001, "请添加包邮区域"); + ErrorCode SHIPPING_TEMPLATES_REGION_NOT_EXISTS = new ErrorCode(1008004002, "请添加区域"); + ErrorCode SHIPPING_TEMPLATES_FREE_NEED = new ErrorCode(1008004000, "请指定包邮地区"); - // ========== 商品 SPU 1008005000 ========== - ErrorCode SPU_NOT_EXISTS = new ErrorCode(1008005000, "商品 SPU 不存在"); - ErrorCode SPU_SAVE_FAIL_CATEGORY_LEVEL_ERROR = new ErrorCode(1008005001, "商品分类不正确,原因:必须使用第三级的商品分类下"); - ErrorCode SPU_NOT_ENABLE = new ErrorCode(1008005002, "商品 SPU 不处于上架状态"); - // ========== 商品 SKU 1008006000 ========== - ErrorCode SKU_NOT_EXISTS = new ErrorCode(1008006000, "商品 SKU 不存在"); - ErrorCode SKU_PROPERTIES_DUPLICATED = new ErrorCode(1008006001, "商品 SKU 的属性组合存在重复"); - ErrorCode SPU_ATTR_NUMBERS_MUST_BE_EQUALS = new ErrorCode(1008006002, "一个 SPU 下的每个 SKU,其属性项必须一致"); - ErrorCode SPU_SKU_NOT_DUPLICATE = new ErrorCode(1008006003, "一个 SPU 下的每个 SKU,必须不重复"); - ErrorCode SKU_STOCK_NOT_ENOUGH = new ErrorCode(1008006004, "商品 SKU 库存不足"); } diff --git a/yshop-module-mall/yshop-module-product-api/src/main/java/co/yixiang/yshop/module/product/enums/product/DefaultEnum.java b/yshop-module-mall/yshop-module-product-api/src/main/java/co/yixiang/yshop/module/product/enums/product/DefaultEnum.java new file mode 100644 index 0000000..8a3dedd --- /dev/null +++ b/yshop-module-mall/yshop-module-product-api/src/main/java/co/yixiang/yshop/module/product/enums/product/DefaultEnum.java @@ -0,0 +1,18 @@ +package co.yixiang.yshop.module.product.enums.product; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author hupeng + * 产品相关规格类型枚举 + */ +@Getter +@AllArgsConstructor +public enum DefaultEnum { + DEFAULT_0(0,"默认值0"), + DEFAULT_1(1,"默认值1"); + + private Integer value; + private String desc; +} diff --git a/yshop-module-mall/yshop-module-product-api/src/main/java/co/yixiang/yshop/module/product/enums/product/SpecTypeEnum.java b/yshop-module-mall/yshop-module-product-api/src/main/java/co/yixiang/yshop/module/product/enums/product/SpecTypeEnum.java new file mode 100644 index 0000000..fbb69ef --- /dev/null +++ b/yshop-module-mall/yshop-module-product-api/src/main/java/co/yixiang/yshop/module/product/enums/product/SpecTypeEnum.java @@ -0,0 +1,18 @@ +package co.yixiang.yshop.module.product.enums.product; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author hupeng + * 产品相关规格类型枚举 + */ +@Getter +@AllArgsConstructor +public enum SpecTypeEnum { + TYPE_0(0,"单规格"), + TYPE_1(1,"多规格"); + + private Integer value; + private String desc; +} 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 new file mode 100644 index 0000000..f1aa5c3 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/ShippingTemplatesController.java @@ -0,0 +1,104 @@ +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 new file mode 100644 index 0000000..8ea1461 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesBaseVO.java @@ -0,0 +1,26 @@ +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 new file mode 100644 index 0000000..f0b4c06 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesCreateReqVO.java @@ -0,0 +1,23 @@ +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 new file mode 100644 index 0000000..9042553 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesExcelVO.java @@ -0,0 +1,34 @@ +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 new file mode 100644 index 0000000..1cec125 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesExportReqVO.java @@ -0,0 +1,15 @@ +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 new file mode 100644 index 0000000..9e11ceb --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesPageReqVO.java @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000..e576bf6 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesRespVO.java @@ -0,0 +1,39 @@ +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 new file mode 100644 index 0000000..083f190 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/shippingtemplates/vo/ShippingTemplatesUpdateReqVO.java @@ -0,0 +1,27 @@ +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 new file mode 100644 index 0000000..118e863 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/StoreProductController.java @@ -0,0 +1,137 @@ +package co.yixiang.yshop.module.product.controller.admin.storeproduct; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.ArrayUtil; +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.convert.storeproductrule.StoreProductRuleConvert; +import co.yixiang.yshop.module.product.dal.dataobject.storeproduct.StoreProductDO; +import co.yixiang.yshop.module.product.dal.dataobject.storeproductrule.StoreProductRuleDO; +import co.yixiang.yshop.module.product.service.storeproduct.StoreProductService; +import co.yixiang.yshop.module.product.service.storeproduct.dto.StoreProductDto; +import co.yixiang.yshop.module.product.service.storeproductrule.StoreProductRuleService; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +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.beans.BeanUtils; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +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.*; +import java.util.stream.Collectors; + +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(@Validated @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 new file mode 100644 index 0000000..2913f03 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductBaseVO.java @@ -0,0 +1,43 @@ +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 new file mode 100644 index 0000000..7350221 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductCreateReqVO.java @@ -0,0 +1,108 @@ +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 String 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 new file mode 100644 index 0000000..3031002 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductExcelVO.java @@ -0,0 +1,44 @@ +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 new file mode 100644 index 0000000..eff8cae --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductExportReqVO.java @@ -0,0 +1,16 @@ +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 new file mode 100644 index 0000000..7657cc0 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductPageReqVO.java @@ -0,0 +1,34 @@ +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 String 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/StoreProductRespVO.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductRespVO.java new file mode 100644 index 0000000..27c11aa --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductRespVO.java @@ -0,0 +1,19 @@ +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 new file mode 100644 index 0000000..40518a7 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproduct/vo/StoreProductUpdateReqVO.java @@ -0,0 +1,113 @@ +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 String 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-shop-biz/src/main/java/co/yixiang/yshop/module/shop/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 similarity index 90% rename from yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/controller/admin/storeproductrule/StoreProductRuleController.java rename to yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/StoreProductRuleController.java index a217767..1e0434f 100644 --- a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/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 @@ -1,4 +1,4 @@ -package co.yixiang.yshop.module.shop.controller.admin.storeproductrule; +package co.yixiang.yshop.module.product.controller.admin.storeproductrule; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -8,7 +8,6 @@ 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.*; @@ -23,14 +22,14 @@ 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.shop.controller.admin.storeproductrule.vo.*; -import co.yixiang.yshop.module.shop.dal.dataobject.storeproductrule.StoreProductRuleDO; -import co.yixiang.yshop.module.shop.convert.storeproductrule.StoreProductRuleConvert; -import co.yixiang.yshop.module.shop.service.storeproductrule.StoreProductRuleService; +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("/shop/store-product-rule") +@RequestMapping("/product/store-product-rule") @Validated public class StoreProductRuleController { diff --git a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/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 similarity index 83% rename from yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/controller/admin/storeproductrule/vo/StoreProductRuleBaseVO.java rename to yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleBaseVO.java index fc9ed84..64cf53a 100644 --- a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/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 @@ -1,12 +1,10 @@ -package co.yixiang.yshop.module.shop.controller.admin.storeproductrule.vo; +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 java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; + import javax.validation.constraints.*; diff --git a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/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 similarity index 69% rename from yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/controller/admin/storeproductrule/vo/StoreProductRuleCreateReqVO.java rename to yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleCreateReqVO.java index 97be5f6..cf97ab0 100644 --- a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/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 @@ -1,9 +1,7 @@ -package co.yixiang.yshop.module.shop.controller.admin.storeproductrule.vo; +package co.yixiang.yshop.module.product.controller.admin.storeproductrule.vo; import lombok.*; -import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; -import javax.validation.constraints.*; @Schema(description = "管理后台 - 商品规则值(规格)创建 Request VO") @Data diff --git a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/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 similarity index 74% rename from yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/controller/admin/storeproductrule/vo/StoreProductRuleExcelVO.java rename to yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleExcelVO.java index 2ded900..cbd6ee1 100644 --- a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/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 @@ -1,10 +1,8 @@ -package co.yixiang.yshop.module.shop.controller.admin.storeproductrule.vo; +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 java.util.*; -import java.time.LocalDateTime; + import java.time.LocalDateTime; import com.alibaba.excel.annotation.ExcelProperty; diff --git a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/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 similarity index 69% rename from yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/controller/admin/storeproductrule/vo/StoreProductRuleExportReqVO.java rename to yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleExportReqVO.java index af608fa..5f444a9 100644 --- a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/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 @@ -1,9 +1,7 @@ -package co.yixiang.yshop.module.shop.controller.admin.storeproductrule.vo; +package co.yixiang.yshop.module.product.controller.admin.storeproductrule.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,参数和 StoreProductRulePageReqVO 是一致的") @Data diff --git a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/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 similarity index 82% rename from yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/controller/admin/storeproductrule/vo/StoreProductRulePageReqVO.java rename to yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRulePageReqVO.java index 64dd7cd..00447c9 100644 --- a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/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 @@ -1,7 +1,6 @@ -package co.yixiang.yshop.module.shop.controller.admin.storeproductrule.vo; +package co.yixiang.yshop.module.product.controller.admin.storeproductrule.vo; import lombok.*; -import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; import co.yixiang.yshop.framework.common.pojo.PageParam; diff --git a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/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 similarity index 86% rename from yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/controller/admin/storeproductrule/vo/StoreProductRuleRespVO.java rename to yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleRespVO.java index f19e034..e4549bc 100644 --- a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/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 @@ -1,4 +1,4 @@ -package co.yixiang.yshop.module.shop.controller.admin.storeproductrule.vo; +package co.yixiang.yshop.module.product.controller.admin.storeproductrule.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; diff --git a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/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 similarity index 83% rename from yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/controller/admin/storeproductrule/vo/StoreProductRuleUpdateReqVO.java rename to yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/controller/admin/storeproductrule/vo/StoreProductRuleUpdateReqVO.java index 60e9120..99b866f 100644 --- a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/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 @@ -1,8 +1,8 @@ -package co.yixiang.yshop.module.shop.controller.admin.storeproductrule.vo; +package co.yixiang.yshop.module.product.controller.admin.storeproductrule.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import java.util.*; + import javax.validation.constraints.*; @Schema(description = "管理后台 - 商品规则值(规格)更新 Request VO") 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 new file mode 100644 index 0000000..b5ac7f4 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/shippingtemplates/ShippingTemplatesConvert.java @@ -0,0 +1,34 @@ +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 new file mode 100644 index 0000000..b9f7955 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/shippingtemplatesfree/ShippingTemplatesFreeConvert.java @@ -0,0 +1,16 @@ +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 new file mode 100644 index 0000000..da246b8 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/shippingtemplatesregion/ShippingTemplatesRegionConvert.java @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000..9d159fa --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproduct/StoreProductConvert.java @@ -0,0 +1,34 @@ +package co.yixiang.yshop.module.product.convert.storeproduct; + +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.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); + + 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/storeproductattr/StoreProductAttrConvert.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattr/StoreProductAttrConvert.java new file mode 100644 index 0000000..c54d053 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattr/StoreProductAttrConvert.java @@ -0,0 +1,17 @@ +package co.yixiang.yshop.module.product.convert.storeproductattr; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * 商品属性 Convert + * + * @author yshop + */ +@Mapper +public interface StoreProductAttrConvert { + + StoreProductAttrConvert INSTANCE = Mappers.getMapper(StoreProductAttrConvert.class); + + +} 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 new file mode 100644 index 0000000..4193fab --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattrresult/StoreProductAttrResultConvert.java @@ -0,0 +1,16 @@ +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 new file mode 100644 index 0000000..dca4d51 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductattrvalue/StoreProductAttrValueConvert.java @@ -0,0 +1,17 @@ +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-shop-biz/src/main/java/co/yixiang/yshop/module/shop/convert/storeproductrule/StoreProductRuleConvert.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductrule/StoreProductRuleConvert.java similarity index 77% rename from yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/convert/storeproductrule/StoreProductRuleConvert.java rename to yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductrule/StoreProductRuleConvert.java index 588cb27..1e28082 100644 --- a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/convert/storeproductrule/StoreProductRuleConvert.java +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/convert/storeproductrule/StoreProductRuleConvert.java @@ -1,4 +1,4 @@ -package co.yixiang.yshop.module.shop.convert.storeproductrule; +package co.yixiang.yshop.module.product.convert.storeproductrule; import java.util.*; @@ -6,8 +6,8 @@ import co.yixiang.yshop.framework.common.pojo.PageResult; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -import co.yixiang.yshop.module.shop.controller.admin.storeproductrule.vo.*; -import co.yixiang.yshop.module.shop.dal.dataobject.storeproductrule.StoreProductRuleDO; +import co.yixiang.yshop.module.product.controller.admin.storeproductrule.vo.*; +import co.yixiang.yshop.module.product.dal.dataobject.storeproductrule.StoreProductRuleDO; /** * 商品规则值(规格) Convert 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 new file mode 100644 index 0000000..de20ede --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/shippingtemplates/ShippingTemplatesDO.java @@ -0,0 +1,55 @@ +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 new file mode 100644 index 0000000..e301ac0 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/shippingtemplatesfree/ShippingTemplatesFreeDO.java @@ -0,0 +1,58 @@ +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 new file mode 100644 index 0000000..fd8d131 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/shippingtemplatesregion/ShippingTemplatesRegionDO.java @@ -0,0 +1,68 @@ +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 new file mode 100644 index 0000000..65176d6 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproduct/StoreProductDO.java @@ -0,0 +1,184 @@ +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 String 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 new file mode 100644 index 0000000..c4ee557 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductattr/StoreProductAttrDO.java @@ -0,0 +1,40 @@ +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 new file mode 100644 index 0000000..48af34c --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductattrresult/StoreProductAttrResultDO.java @@ -0,0 +1,41 @@ +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 new file mode 100644 index 0000000..de78b57 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductattrvalue/StoreProductAttrValueDO.java @@ -0,0 +1,114 @@ +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-shop-biz/src/main/java/co/yixiang/yshop/module/shop/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 similarity index 86% rename from yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/dal/dataobject/storeproductrule/StoreProductRuleDO.java rename to yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/dataobject/storeproductrule/StoreProductRuleDO.java index bcb97a9..ee91a8a 100644 --- a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/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 @@ -1,11 +1,8 @@ -package co.yixiang.yshop.module.shop.dal.dataobject.storeproductrule; +package co.yixiang.yshop.module.product.dal.dataobject.storeproductrule; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler; 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; diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/shippingtemplates/ShippingTemplatesMapper.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/shippingtemplates/ShippingTemplatesMapper.java new file mode 100644 index 0000000..261701c --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/shippingtemplates/ShippingTemplatesMapper.java @@ -0,0 +1,32 @@ +package co.yixiang.yshop.module.product.dal.mysql.shippingtemplates; + +import java.util.*; + +import co.yixiang.yshop.framework.common.pojo.PageResult; +import co.yixiang.yshop.framework.mybatis.core.query.LambdaQueryWrapperX; +import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; +import co.yixiang.yshop.module.product.dal.dataobject.shippingtemplates.ShippingTemplatesDO; +import org.apache.ibatis.annotations.Mapper; +import co.yixiang.yshop.module.product.controller.admin.shippingtemplates.vo.*; + +/** + * 运费模板 Mapper + * + * @author yshop + */ +@Mapper +public interface ShippingTemplatesMapper extends BaseMapperX { + + default PageResult selectPage(ShippingTemplatesPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(ShippingTemplatesDO::getName, reqVO.getName()) + .orderByDesc(ShippingTemplatesDO::getId)); + } + + default List selectList(ShippingTemplatesExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .likeIfPresent(ShippingTemplatesDO::getName, reqVO.getName()) + .orderByDesc(ShippingTemplatesDO::getId)); + } + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/shippingtemplatesfree/ShippingTemplatesFreeMapper.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/shippingtemplatesfree/ShippingTemplatesFreeMapper.java new file mode 100644 index 0000000..2c95bae --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/shippingtemplatesfree/ShippingTemplatesFreeMapper.java @@ -0,0 +1,16 @@ +package co.yixiang.yshop.module.product.dal.mysql.shippingtemplatesfree; + +import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; +import co.yixiang.yshop.module.product.dal.dataobject.shippingtemplatesfree.ShippingTemplatesFreeDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 运费包邮明细 Mapper + * + * @author yshop + */ +@Mapper +public interface ShippingTemplatesFreeMapper extends BaseMapperX { + + +} 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 new file mode 100644 index 0000000..51c829e --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/shippingtemplatesregion/ShippingTemplatesRegionMapper.java @@ -0,0 +1,16 @@ +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/storeproduct/StoreProductMapper.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproduct/StoreProductMapper.java new file mode 100644 index 0000000..c3dcbe4 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproduct/StoreProductMapper.java @@ -0,0 +1,62 @@ +package co.yixiang.yshop.module.product.dal.mysql.storeproduct; + +import java.util.*; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import co.yixiang.yshop.framework.common.enums.ShopCommonEnum; +import co.yixiang.yshop.framework.common.pojo.PageResult; +import co.yixiang.yshop.framework.mybatis.core.query.LambdaQueryWrapperX; +import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; +import co.yixiang.yshop.module.product.dal.dataobject.storeproduct.StoreProductDO; +import co.yixiang.yshop.module.product.enums.product.DefaultEnum; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.apache.ibatis.annotations.Mapper; +import co.yixiang.yshop.module.product.controller.admin.storeproduct.vo.*; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; + +/** + * 商品 Mapper + * + * @author yshop + */ +@Mapper +public interface StoreProductMapper extends BaseMapperX { + + default PageResult selectPage(StoreProductPageReqVO reqVO) { + LambdaQueryWrapperX wrapper = new LambdaQueryWrapperX<>(); + + wrapper.likeIfPresent(StoreProductDO::getStoreName, reqVO.getStoreName()) + .eqIfPresent(StoreProductDO::getIsPostage, reqVO.getIsPostage()) + .orderByDesc(StoreProductDO::getId); + + //if(ShopCommonEnum.SHOW_1.getValue().equals(Convert.toInt(reqVO.getIsShow()))){ + wrapper.eq(StoreProductDO::getIsShow,Convert.toInt(reqVO.getIsShow())); + // } + if(DefaultEnum.DEFAULT_0.getValue().equals(Convert.toInt(reqVO.getStock()))){ + wrapper.eq(StoreProductDO::getStock,DefaultEnum.DEFAULT_0.getValue()); + } + // CollUtil.isNotEmpty() + if(CollUtil.isNotEmpty(reqVO.getCatIds())){ + wrapper.in(StoreProductDO::getCateId,reqVO.getCatIds()); + } + + return selectPage(reqVO, wrapper); +// return selectPage(reqVO, new LambdaQueryWrapperX() +// .likeIfPresent(StoreProductDO::getStoreName, reqVO.getStoreName()) +// .eqIfPresent(StoreProductDO::getIsPostage, reqVO.getIsPostage()) +// .orderByDesc(StoreProductDO::getId)); + } + + default List selectList(StoreProductExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .likeIfPresent(StoreProductDO::getStoreName, reqVO.getStoreName()) + .eqIfPresent(StoreProductDO::getIsPostage, reqVO.getIsPostage()) + .orderByDesc(StoreProductDO::getId)); + } + + @Update("update yshop_store_product set is_show = #{status} where id = #{id}") + void updateOnsale(@Param("status") Integer status, @Param("id") Long id); + +} 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 new file mode 100644 index 0000000..9b2dc81 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattr/StoreProductAttrMapper.java @@ -0,0 +1,16 @@ +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 new file mode 100644 index 0000000..808c690 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattrresult/StoreProductAttrResultMapper.java @@ -0,0 +1,16 @@ +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-shop-biz/src/main/java/co/yixiang/yshop/module/shop/dal/mysql/storeproductrule/StoreProductRuleMapper.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattrvalue/StoreProductRuleMapper.java similarity index 81% rename from yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/dal/mysql/storeproductrule/StoreProductRuleMapper.java rename to yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattrvalue/StoreProductRuleMapper.java index 2eeb76c..d48cd6b 100644 --- a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/dal/mysql/storeproductrule/StoreProductRuleMapper.java +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductattrvalue/StoreProductRuleMapper.java @@ -1,13 +1,13 @@ -package co.yixiang.yshop.module.shop.dal.mysql.storeproductrule; +package co.yixiang.yshop.module.product.dal.mysql.storeproductattrvalue; import java.util.*; import co.yixiang.yshop.framework.common.pojo.PageResult; import co.yixiang.yshop.framework.mybatis.core.query.LambdaQueryWrapperX; import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; -import co.yixiang.yshop.module.shop.dal.dataobject.storeproductrule.StoreProductRuleDO; +import co.yixiang.yshop.module.product.dal.dataobject.storeproductrule.StoreProductRuleDO; import org.apache.ibatis.annotations.Mapper; -import co.yixiang.yshop.module.shop.controller.admin.storeproductrule.vo.*; +import co.yixiang.yshop.module.product.controller.admin.storeproductrule.vo.*; /** * 商品规则值(规格) Mapper diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductrule/StoreProductAttrValueMapper.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductrule/StoreProductAttrValueMapper.java new file mode 100644 index 0000000..482e69a --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/dal/mysql/storeproductrule/StoreProductAttrValueMapper.java @@ -0,0 +1,16 @@ +package co.yixiang.yshop.module.product.dal.mysql.storeproductrule; + +import co.yixiang.yshop.framework.mybatis.core.mapper.BaseMapperX; +import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrvalue.StoreProductAttrValueDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 商品属性值 Mapper + * + * @author yshop + */ +@Mapper +public interface StoreProductAttrValueMapper extends BaseMapperX { + + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/category/ProductCategoryService.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/category/ProductCategoryService.java index 58d03a8..0ef509b 100644 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/category/ProductCategoryService.java +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/category/ProductCategoryService.java @@ -4,6 +4,8 @@ import co.yixiang.yshop.module.product.controller.admin.category.vo.ProductCateg 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.dataobject.storeproduct.StoreProductDO; +import com.baomidou.mybatisplus.extension.service.IService; import javax.validation.Valid; import java.util.List; @@ -13,7 +15,7 @@ import java.util.List; * * @author yshop */ -public interface ProductCategoryService { +public interface ProductCategoryService extends IService { /** * 创建商品分类 diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/category/ProductCategoryServiceImpl.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/category/ProductCategoryServiceImpl.java index b57cadc..7862ca2 100644 --- a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/category/ProductCategoryServiceImpl.java +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/category/ProductCategoryServiceImpl.java @@ -6,7 +6,11 @@ import co.yixiang.yshop.module.product.controller.admin.category.vo.ProductCateg 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.dal.dataobject.storeproduct.StoreProductDO; import co.yixiang.yshop.module.product.dal.mysql.category.ProductCategoryMapper; +import co.yixiang.yshop.module.product.dal.mysql.storeproduct.StoreProductMapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -24,7 +28,7 @@ import static co.yixiang.yshop.module.product.enums.ErrorCodeConstants.*; */ @Service @Validated -public class ProductCategoryServiceImpl implements ProductCategoryService { +public class ProductCategoryServiceImpl extends ServiceImpl implements ProductCategoryService { @Resource private ProductCategoryMapper productCategoryMapper; @@ -76,8 +80,11 @@ public class ProductCategoryServiceImpl implements ProductCategoryService { if (category == null) { throw exception(CATEGORY_PARENT_NOT_EXISTS); } - // 父分类不能是二级分类 - if (Objects.equals(id, ProductCategoryDO.PARENT_ID_NULL)) { + + ProductCategoryDO storeCategory = productCategoryMapper.selectById(id); + + // 最多二级 + if (!Objects.equals(storeCategory.getParentId(), ProductCategoryDO.PARENT_ID_NULL)) { throw exception(CATEGORY_PARENT_NOT_FIRST_LEVEL); } } diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/ShippingTemplatesService.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/ShippingTemplatesService.java new file mode 100644 index 0000000..417f3c3 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/ShippingTemplatesService.java @@ -0,0 +1,84 @@ +package co.yixiang.yshop.module.product.service.shippingtemplates; + +import co.yixiang.yshop.framework.common.pojo.PageResult; +import co.yixiang.yshop.module.product.controller.admin.shippingtemplates.vo.ShippingTemplatesCreateReqVO; +import co.yixiang.yshop.module.product.controller.admin.shippingtemplates.vo.ShippingTemplatesExportReqVO; +import co.yixiang.yshop.module.product.controller.admin.shippingtemplates.vo.ShippingTemplatesPageReqVO; +import co.yixiang.yshop.module.product.controller.admin.shippingtemplates.vo.ShippingTemplatesUpdateReqVO; +import co.yixiang.yshop.module.product.dal.dataobject.shippingtemplates.ShippingTemplatesDO; +import co.yixiang.yshop.module.product.service.shippingtemplates.dto.ShippingTemplatesDto; +import com.baomidou.mybatisplus.extension.service.IService; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.List; + +/** + * 运费模板 Service 接口 + * + * @author yshop + */ +public interface ShippingTemplatesService extends IService { + + /** + * 创建运费模板 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Integer createShippingTemplates(@Valid ShippingTemplatesCreateReqVO createReqVO); + + /** + * 更新运费模板 + * + * @param updateReqVO 更新信息 + */ + void updateShippingTemplates(@Valid ShippingTemplatesUpdateReqVO updateReqVO); + + /** + * 删除运费模板 + * + * @param id 编号 + */ + void deleteShippingTemplates(Integer id); + + /** + * 获得运费模板 + * + * @param id 编号 + * @return 运费模板 + */ + ShippingTemplatesDO getShippingTemplates(Integer id); + + /** + * 获得运费模板列表 + * + * @param ids 编号 + * @return 运费模板列表 + */ + List getShippingTemplatesList(Collection ids); + + /** + * 获得运费模板分页 + * + * @param pageReqVO 分页查询 + * @return 运费模板分页 + */ + PageResult getShippingTemplatesPage(ShippingTemplatesPageReqVO pageReqVO); + + /** + * 获得运费模板列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 运费模板列表 + */ + List getShippingTemplatesList(ShippingTemplatesExportReqVO exportReqVO); + + /** + * 新增与更新模板 + * @param id 模板id + * @param shippingTemplatesDto ShippingTemplatesDto + */ + void addAndUpdate(Integer id, ShippingTemplatesDto shippingTemplatesDto); + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/ShippingTemplatesServiceImpl.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/ShippingTemplatesServiceImpl.java new file mode 100644 index 0000000..b3c3220 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/ShippingTemplatesServiceImpl.java @@ -0,0 +1,250 @@ +package co.yixiang.yshop.module.product.service.shippingtemplates; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.IdUtil; +import co.yixiang.yshop.framework.common.enums.ShopCommonEnum; +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.storeproduct.StoreProductDO; +import co.yixiang.yshop.module.product.dal.mysql.storeproduct.StoreProductMapper; +import co.yixiang.yshop.module.product.service.shippingtemplates.dto.*; +import co.yixiang.yshop.module.product.service.shippingtemplatesfree.ShippingTemplatesFreeService; +import co.yixiang.yshop.module.product.service.shippingtemplatesregion.ShippingTemplatesRegionService; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.math.BigDecimal; +import java.util.*; +import co.yixiang.yshop.module.product.controller.admin.shippingtemplates.vo.*; +import co.yixiang.yshop.module.product.dal.dataobject.shippingtemplates.ShippingTemplatesDO; +import co.yixiang.yshop.framework.common.pojo.PageResult; + +import co.yixiang.yshop.module.product.convert.shippingtemplates.ShippingTemplatesConvert; +import co.yixiang.yshop.module.product.dal.mysql.shippingtemplates.ShippingTemplatesMapper; + +import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; +import static co.yixiang.yshop.module.product.enums.ErrorCodeConstants.*; + +/** + * 运费模板 Service 实现类 + * + * @author yshop + */ +@Service +@Validated +public class ShippingTemplatesServiceImpl extends ServiceImpl implements ShippingTemplatesService { + + @Resource + private ShippingTemplatesMapper shippingTemplatesMapper; + @Resource + private ShippingTemplatesRegionService shippingTemplatesRegionService; + @Resource + private ShippingTemplatesFreeService shippingTemplatesFreeService; + + @Override + public Integer createShippingTemplates(ShippingTemplatesCreateReqVO createReqVO) { + // 插入 + ShippingTemplatesDO shippingTemplates = ShippingTemplatesConvert.INSTANCE.convert(createReqVO); + shippingTemplatesMapper.insert(shippingTemplates); + // 返回 + return shippingTemplates.getId(); + } + + @Override + public void updateShippingTemplates(ShippingTemplatesUpdateReqVO updateReqVO) { + // 校验存在 + validateShippingTemplatesExists(updateReqVO.getId()); + // 更新 + ShippingTemplatesDO updateObj = ShippingTemplatesConvert.INSTANCE.convert(updateReqVO); + shippingTemplatesMapper.updateById(updateObj); + } + + @Override + public void deleteShippingTemplates(Integer id) { + // 校验存在 + validateShippingTemplatesExists(id); + // 删除 + shippingTemplatesMapper.deleteById(id); + } + + private void validateShippingTemplatesExists(Integer id) { + if (shippingTemplatesMapper.selectById(id) == null) { + throw exception(SHIPPING_TEMPLATES_NOT_EXISTS); + } + } + + @Override + public ShippingTemplatesDO getShippingTemplates(Integer id) { + return shippingTemplatesMapper.selectById(id); + } + + @Override + public List getShippingTemplatesList(Collection ids) { + return shippingTemplatesMapper.selectBatchIds(ids); + } + + @Override + public PageResult getShippingTemplatesPage(ShippingTemplatesPageReqVO pageReqVO) { + return shippingTemplatesMapper.selectPage(pageReqVO); + } + + @Override + public List getShippingTemplatesList(ShippingTemplatesExportReqVO exportReqVO) { + return shippingTemplatesMapper.selectList(exportReqVO); + } + + /** + * 新增与更新模板 + * @param id 模板id + * @param shippingTemplatesDto ShippingTemplatesDto + */ + @Override + public void addAndUpdate(Integer id, ShippingTemplatesDto shippingTemplatesDto) { + if(ShopCommonEnum.ENABLE_1.getValue().equals(shippingTemplatesDto.getAppoint()) + && shippingTemplatesDto.getAppointInfo().isEmpty()){ + throw exception(SHIPPING_TEMPLATES_FREE_NEED); + } + ShippingTemplatesDO shippingTemplates = new ShippingTemplatesDO(); + BeanUtil.copyProperties(shippingTemplatesDto,shippingTemplates); + shippingTemplates.setRegionInfo(JSON.toJSONString(shippingTemplatesDto.getRegionInfo())); + shippingTemplates.setAppointInfo(JSON.toJSONString(shippingTemplatesDto.getAppointInfo())); + if(id != null && id > 0){ + shippingTemplates.setId(id); + this.updateById(shippingTemplates); + }else{ + this.save(shippingTemplates); + } + + this.saveRegion(shippingTemplatesDto,shippingTemplates.getId()); + this.saveFreeReigion(shippingTemplatesDto,shippingTemplates.getId()); + } + + /** + * 保存模板设置的区域价格 + * @param yxShippingTemplates ShippingTemplatesDTO + * @param tempId 运费模板id + */ + private void saveRegion(ShippingTemplatesDto yxShippingTemplates,Integer tempId){ + Long count = shippingTemplatesRegionService.count(Wrappers + .lambdaQuery() + .eq(ShippingTemplatesRegionDO::getTempId,tempId)); + if(count > 0) { + shippingTemplatesRegionService.remove(Wrappers + .lambdaQuery() + .eq(ShippingTemplatesRegionDO::getTempId,tempId)); + } + + List shippingTemplatesRegions = new ArrayList<>(); + + + List regionInfo = yxShippingTemplates.getRegionInfo(); + + + for (RegionInfoDto regionInfoDto : regionInfo){ + String uni = IdUtil.simpleUUID(); + if(regionInfoDto.getRegion() != null && !regionInfoDto.getRegion().isEmpty()){ + for (RegionDto regionDto : regionInfoDto.getRegion()){ + if(regionDto.getChildren() != null && !regionDto.getChildren().isEmpty()){ + for (RegionChildrenDto childrenDtp : regionDto.getChildren()){ + ShippingTemplatesRegionDO shippingTemplatesRegion = ShippingTemplatesRegionDO.builder() + .tempId(tempId) + .first(new BigDecimal(regionInfoDto.getFirst())) + .firstPrice(new BigDecimal(regionInfoDto.getPrice())) + .continues(new BigDecimal(regionInfoDto.get_continue())) + .continuePrice(new BigDecimal(regionInfoDto.getContinue_price())) + .type(yxShippingTemplates.getType()) + .uniqid(uni) + .provinceId(Integer.valueOf(regionDto.getCity_id())) + .cityId(Integer.valueOf(childrenDtp.getCity_id())) + .build(); + shippingTemplatesRegions.add(shippingTemplatesRegion); + } + }else{ + ShippingTemplatesRegionDO shippingTemplatesRegion = ShippingTemplatesRegionDO.builder() + .tempId(tempId) + .first(new BigDecimal(regionInfoDto.getFirst())) + .firstPrice(new BigDecimal(regionInfoDto.getPrice())) + .continues(new BigDecimal(regionInfoDto.get_continue())) + .continuePrice(new BigDecimal(regionInfoDto.getContinue_price())) + .type(yxShippingTemplates.getType()) + .uniqid(uni) + .provinceId(Integer.valueOf(regionDto.getCity_id())) + .build(); + shippingTemplatesRegions.add(shippingTemplatesRegion); + } + } + } + } + + if(shippingTemplatesRegions.isEmpty()) { + throw exception(SHIPPING_TEMPLATES_REGION_NOT_EXISTS); + } + + shippingTemplatesRegionService.saveBatch(shippingTemplatesRegions); + + } + + /** + * 保存包邮区域 + * @param yxShippingTemplates ShippingTemplatesDto + * @param tempId 模板id + */ + private void saveFreeReigion(ShippingTemplatesDto yxShippingTemplates,Integer tempId){ + + if(yxShippingTemplates.getAppointInfo() == null + || yxShippingTemplates.getAppointInfo().isEmpty()){ + return; + } + + Long count = shippingTemplatesFreeService.count(Wrappers + .lambdaQuery() + .eq(ShippingTemplatesFreeDO::getTempId,tempId)); + if(count > 0) { + shippingTemplatesFreeService.remove(Wrappers + .lambdaQuery() + .eq(ShippingTemplatesFreeDO::getTempId,tempId)); + } + + List shippingTemplatesFrees = new ArrayList<>(); + + + List appointInfo = yxShippingTemplates.getAppointInfo(); + for (AppointInfoDto appointInfoDto : appointInfo){ + String uni = IdUtil.simpleUUID(); + + if(appointInfoDto.getPlace() != null && !appointInfoDto.getPlace().isEmpty()){ + for (RegionDto regionDto : appointInfoDto.getPlace()){ + if(regionDto.getChildren() != null && !regionDto.getChildren().isEmpty()){ + for (RegionChildrenDto childrenDto : regionDto.getChildren()){ + ShippingTemplatesFreeDO shippingTemplatesFree = ShippingTemplatesFreeDO.builder() + .tempId(tempId) + .number(new BigDecimal(appointInfoDto.getA_num())) + .price(new BigDecimal(appointInfoDto.getA_price())) + .type(yxShippingTemplates.getType()) + .uniqid(uni) + .provinceId(Integer.valueOf(regionDto.getCity_id())) + .cityId(Integer.valueOf(childrenDto.getCity_id())) + .build(); + shippingTemplatesFrees.add(shippingTemplatesFree); + } + } + } + } + } + + + if(shippingTemplatesFrees.isEmpty()) { + throw exception(SHIPPING_TEMPLATES_FREE_NOT_EXISTS); + } + + shippingTemplatesFreeService.saveBatch(shippingTemplatesFrees); + + + } + + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/AppointInfoDto.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/AppointInfoDto.java new file mode 100644 index 0000000..1fb1101 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/AppointInfoDto.java @@ -0,0 +1,28 @@ +package co.yixiang.yshop.module.product.service.shippingtemplates.dto; + +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +/** + * @ClassName AppointInfoDto + * @Author hupeng <610796224@qq.com> + * @Date 2020/5/26 + **/ +@Getter +@Setter +public class AppointInfoDto { + + /** 包邮件数 */ + private String a_num; + + /** 包邮费用 */ + private String a_price; + + /** 包邮地区 */ + private List place; + + private String placeName; + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/RegionChildrenDto.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/RegionChildrenDto.java new file mode 100644 index 0000000..c81632c --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/RegionChildrenDto.java @@ -0,0 +1,16 @@ +package co.yixiang.yshop.module.product.service.shippingtemplates.dto; + +import lombok.Getter; +import lombok.Setter; + +/** + * @ClassName RegionChildrenDto + * @Author hupeng <610796224@qq.com> + * @Date 2020/5/25 + **/ +@Getter +@Setter +public class RegionChildrenDto { + + private String city_id; +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/RegionDto.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/RegionDto.java new file mode 100644 index 0000000..0dea629 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/RegionDto.java @@ -0,0 +1,23 @@ +package co.yixiang.yshop.module.product.service.shippingtemplates.dto; + +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +/** + * @ClassName RegionDto + * @Author hupeng <610796224@qq.com> + * @Date 2020/5/25 + **/ +@Getter +@Setter +public class RegionDto { + + private String name; + + private String city_id; + + List children; + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/RegionInfoDto.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/RegionInfoDto.java new file mode 100644 index 0000000..9651829 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/RegionInfoDto.java @@ -0,0 +1,38 @@ +package co.yixiang.yshop.module.product.service.shippingtemplates.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import javax.validation.constraints.NotBlank; +import java.util.List; + +/** + * @ClassName RegionInfoDto + * @Author hupeng <610796224@qq.com> + * @Date 2020/5/25 + **/ +@Getter +@Setter +@ToString +public class RegionInfoDto { + + @NotBlank(message = "请填写可配送区域") + private String regionName; + + @NotBlank(message = "请填写首件") + private String first; + + @NotBlank(message = "请填写首件价格") + private String price; + + @NotBlank(message = "请填写续件") + @JsonProperty("_continue") + private String _continue; + + @NotBlank(message = "请填写续件价格") + private String continue_price; + + private List region; +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/ShippingTemplatesDto.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/ShippingTemplatesDto.java new file mode 100644 index 0000000..0c9044f --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplates/dto/ShippingTemplatesDto.java @@ -0,0 +1,51 @@ +package co.yixiang.yshop.module.product.service.shippingtemplates.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * 运费模板对象 yx_shipping_templates + * + * @author hupeng + * @date 2020-05-23 + */ +@Getter +@Setter +public class ShippingTemplatesDto implements Serializable +{ + private static final long serialVersionUID = 1L; + + /** 模板ID */ + private Integer id; + + /** 模板名称 */ + @NotBlank(message = "模板名称不能为空") + private String name; + + /** 计费方式 */ + private Integer type; + + /** 地域以及费用 */ + @NotNull(message = "请设置地域") + @JsonProperty(value = "region_info") + private List regionInfo; + + /** 指定包邮开关 */ + private Integer appoint; + + /** 指定包邮内容 */ + @JsonProperty(value = "appoint_info") + private List appointInfo; + + /** 排序 */ + private Long sort; + + + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplatesfree/ShippingTemplatesFreeService.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplatesfree/ShippingTemplatesFreeService.java new file mode 100644 index 0000000..8c6f676 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplatesfree/ShippingTemplatesFreeService.java @@ -0,0 +1,14 @@ +package co.yixiang.yshop.module.product.service.shippingtemplatesfree; + +import co.yixiang.yshop.module.product.dal.dataobject.shippingtemplatesfree.ShippingTemplatesFreeDO; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 运费包邮明细 Service 接口 + * + * @author yshop + */ +public interface ShippingTemplatesFreeService extends IService { + + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplatesfree/ShippingTemplatesFreeServiceImpl.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplatesfree/ShippingTemplatesFreeServiceImpl.java new file mode 100644 index 0000000..8005941 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplatesfree/ShippingTemplatesFreeServiceImpl.java @@ -0,0 +1,23 @@ +package co.yixiang.yshop.module.product.service.shippingtemplatesfree; + +import co.yixiang.yshop.module.product.dal.dataobject.shippingtemplatesfree.ShippingTemplatesFreeDO; +import co.yixiang.yshop.module.product.dal.mysql.shippingtemplatesfree.ShippingTemplatesFreeMapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +/** + * 运费包邮明细 Service 实现类 + * + * @author yshop + */ +@Service +@Validated +public class ShippingTemplatesFreeServiceImpl extends ServiceImpl implements ShippingTemplatesFreeService { + + @Resource + private ShippingTemplatesFreeMapper shippingTemplatesFreeMapper; + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplatesregion/ShippingTemplatesRegionService.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplatesregion/ShippingTemplatesRegionService.java new file mode 100644 index 0000000..ea280a1 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplatesregion/ShippingTemplatesRegionService.java @@ -0,0 +1,14 @@ +package co.yixiang.yshop.module.product.service.shippingtemplatesregion; + +import co.yixiang.yshop.module.product.dal.dataobject.shippingtemplatesregion.ShippingTemplatesRegionDO; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 运费区域明细 Service 接口 + * + * @author yshop + */ +public interface ShippingTemplatesRegionService extends IService { + + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplatesregion/ShippingTemplatesRegionServiceImpl.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplatesregion/ShippingTemplatesRegionServiceImpl.java new file mode 100644 index 0000000..d18ff33 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/shippingtemplatesregion/ShippingTemplatesRegionServiceImpl.java @@ -0,0 +1,24 @@ +package co.yixiang.yshop.module.product.service.shippingtemplatesregion; + +import co.yixiang.yshop.module.product.dal.dataobject.shippingtemplatesregion.ShippingTemplatesRegionDO; +import co.yixiang.yshop.module.product.dal.mysql.shippingtemplatesregion.ShippingTemplatesRegionMapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +/** + * 运费区域明细 Service 实现类 + * + * @author yshop + */ +@Service +@Validated +public class ShippingTemplatesRegionServiceImpl extends ServiceImpl implements ShippingTemplatesRegionService { + + @Resource + private ShippingTemplatesRegionMapper shippingTemplatesRegionMapper; + + +} 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 new file mode 100644 index 0000000..b7b85e4 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/StoreProductService.java @@ -0,0 +1,96 @@ +package co.yixiang.yshop.module.product.service.storeproduct; + +import java.util.*; +import javax.validation.*; +import co.yixiang.yshop.module.product.controller.admin.storeproduct.vo.*; +import co.yixiang.yshop.module.product.dal.dataobject.storeproduct.StoreProductDO; +import co.yixiang.yshop.framework.common.pojo.PageResult; +import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrvalue.StoreProductAttrValueDO; +import co.yixiang.yshop.module.product.service.storeproduct.dto.StoreProductDto; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 商品 Service 接口 + * + * @author yshop + */ +public interface StoreProductService extends IService { + + /** + * 创建商品 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createStoreProduct(@Valid StoreProductCreateReqVO createReqVO); + + /** + * 更新商品 + * + * @param updateReqVO 更新信息 + */ + void updateStoreProduct(@Valid StoreProductUpdateReqVO updateReqVO); + + /** + * 删除商品 + * + * @param id 编号 + */ + void deleteStoreProduct(Long id); + + /** + * 获得商品 + * + * @param id 编号 + * @return 商品 + */ + StoreProductDO getStoreProduct(Long id); + + /** + * 获得商品列表 + * + * @param ids 编号 + * @return 商品列表 + */ + List getStoreProductList(Collection ids); + + /** + * 获得商品分页 + * + * @param pageReqVO 分页查询 + * @return 商品分页 + */ + PageResult getStoreProductPage(StoreProductPageReqVO pageReqVO); + + /** + * 获得商品列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 商品列表 + */ + List getStoreProductList(StoreProductExportReqVO exportReqVO); + + /** + * 获取生成的属性 + * @param id 商品id + * @param jsonStr jsonStr + * @return map + */ + Map getFormatAttr(Long id, String jsonStr,boolean isActivity); + + /** + * 新增/保存商品 + * @param storeProductDto 商品 + */ + void insertAndEditYxStoreProduct(StoreProductDto storeProductDto); + + Map getProductInfo(Long id); + + /** + * 商品上架下架 + * @param id 商品id + * @param status ShopCommonEnum + */ + void onSale(Long id,Integer status); + +} 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 new file mode 100644 index 0000000..d2f66b7 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/StoreProductServiceImpl.java @@ -0,0 +1,657 @@ +package co.yixiang.yshop.module.product.service.storeproduct; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import co.yixiang.yshop.framework.common.enums.ShopCommonEnum; +import co.yixiang.yshop.module.product.convert.category.ProductCategoryConvertImpl; +import co.yixiang.yshop.module.product.convert.storeproductrule.StoreProductRuleConvert; +import co.yixiang.yshop.module.product.dal.dataobject.category.ProductCategoryDO; +import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrresult.StoreProductAttrResultDO; +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.storeproductrule.StoreProductAttrValueMapper; +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.storeproduct.dto.*; +import co.yixiang.yshop.module.product.service.storeproductattr.StoreProductAttrService; +import co.yixiang.yshop.module.product.service.storeproductattrresult.StoreProductAttrResultService; +import co.yixiang.yshop.module.product.service.storeproductattrvalue.StoreProductAttrValueService; +import co.yixiang.yshop.module.product.service.storeproductrule.StoreProductRuleService; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; + +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +import co.yixiang.yshop.module.product.controller.admin.storeproduct.vo.*; +import co.yixiang.yshop.module.product.dal.dataobject.storeproduct.StoreProductDO; +import co.yixiang.yshop.framework.common.pojo.PageResult; + +import co.yixiang.yshop.module.product.convert.storeproduct.StoreProductConvert; +import co.yixiang.yshop.module.product.dal.mysql.storeproduct.StoreProductMapper; + +import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; +import static co.yixiang.yshop.module.product.enums.ErrorCodeConstants.*; + +/** + * 商品 Service 实现类 + * + * @author yshop + */ +@Service +@Validated +public class StoreProductServiceImpl extends ServiceImpl implements StoreProductService { + + @Resource + private StoreProductMapper storeProductMapper; + @Resource + private StoreProductAttrValueService storeProductAttrValueService; + @Resource + private StoreProductAttrService storeProductAttrService; + @Resource + private StoreProductRuleService storeProductRuleService; + @Resource + private StoreProductAttrResultService storeProductAttrResultService; + @Resource + private ProductCategoryService productCategoryService; + + @Override + public Long createStoreProduct(StoreProductCreateReqVO createReqVO) { + // 插入 + StoreProductDO storeProduct = StoreProductConvert.INSTANCE.convert(createReqVO); + storeProductMapper.insert(storeProduct); + // 返回 + return storeProduct.getId(); + } + + @Override + public void updateStoreProduct(StoreProductUpdateReqVO updateReqVO) { + // 校验存在 + validateStoreProductExists(updateReqVO.getId()); + // 更新 + StoreProductDO updateObj = StoreProductConvert.INSTANCE.convert(updateReqVO); + storeProductMapper.updateById(updateObj); + } + + @Override + public void deleteStoreProduct(Long id) { + // 校验存在 + validateStoreProductExists(id); + // 删除 + storeProductMapper.deleteById(id); + } + + private void validateStoreProductExists(Long id) { + if (storeProductMapper.selectById(id) == null) { + throw exception(STORE_PRODUCT_NOT_EXISTS); + } + } + + @Override + public StoreProductDO getStoreProduct(Long id) { + return storeProductMapper.selectById(id); + } + + @Override + public List getStoreProductList(Collection ids) { + return storeProductMapper.selectBatchIds(ids); + } + + @Override + public PageResult getStoreProductPage(StoreProductPageReqVO pageReqVO) { + if(StrUtil.isNotEmpty(pageReqVO.getCateId())) { + ProductCategoryDO productCategoryDO = productCategoryService.getCategory(Convert.toLong(pageReqVO.getCateId())); + if(productCategoryDO != null) { + List catIds = new ArrayList<>(); + if (Objects.equals(productCategoryDO.getParentId(), ProductCategoryDO.PARENT_ID_NULL)) { + catIds = productCategoryService.list((Wrappers.lambdaQuery() + .eq(ProductCategoryDO::getParentId, productCategoryDO.getId()))) + .stream().map(ProductCategoryDO::getId).collect(Collectors.toList()); + } else { + catIds.add(Convert.toLong(pageReqVO.getCateId())); + } + pageReqVO.setCatIds(catIds); + } + } + return storeProductMapper.selectPage(pageReqVO); + } + + @Override + public List getStoreProductList(StoreProductExportReqVO exportReqVO) { + return storeProductMapper.selectList(exportReqVO); + } + + /** + * 获取生成的属性 + * + * @param id 商品id + * @param jsonStr jsonStr + * @return map + */ + @Override + public Map getFormatAttr(Long id, String jsonStr, boolean isActivity) { + JSONObject jsonObject = JSON.parseObject(jsonStr); + Map resultMap = new LinkedHashMap<>(3); + + if (jsonObject == null || jsonObject.get("attrs") == null || jsonObject.getJSONArray("attrs").isEmpty()) { + resultMap.put("attr", new ArrayList<>()); + resultMap.put("value", new ArrayList<>()); + resultMap.put("header", new ArrayList<>()); + return resultMap; + } + + + List fromatDetailDTOList = JSON.parseArray(jsonObject.get("attrs").toString(), + FromatDetailDto.class); + + //fromatDetailDTOList + DetailDto detailDto = this.attrFormat(fromatDetailDTOList); + + List> headerMapList = null; + List> valueMapList = new ArrayList<>(); + String align = "center"; + Map headerMap = new LinkedHashMap<>(); + for (Map> map : detailDto.getRes()) { + Map detail = map.get("detail"); + String[] detailArr = detail.values().toArray(new String[]{}); + Arrays.sort(detailArr); + + String sku = String.join(",", detailArr); + + Map valueMap = new LinkedHashMap<>(); + + List detailKeys = + detail.entrySet() + .stream() + .map(Map.Entry::getKey) + .collect(Collectors.toList()); + + int i = 0; + headerMapList = new ArrayList<>(); + for (String title : detailKeys) { + headerMap.put("title", title); + headerMap.put("minWidth", "130"); + headerMap.put("align", align); + headerMap.put("key", "value" + (i + 1)); + headerMap.put("slot", "value" + (i + 1)); + headerMapList.add(ObjectUtil.clone(headerMap)); + i++; + } + + String[] detailValues = detail.values().toArray(new String[]{}); + for (int j = 0; j < detailValues.length; j++) { + String key = "value" + (j + 1); + valueMap.put(key, detailValues[j]); + } +// /** 拼团属性对应的金额 */ +// private BigDecimal pinkPrice; +// +// /** 秒杀属性对应的金额 */ +// private BigDecimal seckillPrice; +// /** 拼团库存属性对应的库存 */ +// private Integer pinkStock; +// +// private Integer seckillStock; + valueMap.put("detail", detail); + valueMap.put("sku", ""); + valueMap.put("pic", ""); + valueMap.put("price", 0); + valueMap.put("cost", 0); + valueMap.put("ot_price", 0); + valueMap.put("stock", 0); + valueMap.put("bar_code", ""); + valueMap.put("weight", 0); + valueMap.put("volume", 0); + valueMap.put("brokerage", 0); + valueMap.put("brokerage_two", 0); + valueMap.put("pink_price", 0); + valueMap.put("seckill_price", 0); + valueMap.put("pink_stock", 0); + valueMap.put("seckill_stock", 0); + valueMap.put("integral", 0); + if (id > 0) { + StoreProductAttrValueDO storeProductAttrValue = storeProductAttrValueService + .getOne(Wrappers.lambdaQuery() + .eq(StoreProductAttrValueDO::getProductId, id) + .eq(StoreProductAttrValueDO::getSku, sku)); + if (storeProductAttrValue != null) { + valueMap.put("sku",storeProductAttrValue.getSku()); + valueMap.put("pic", storeProductAttrValue.getImage()); + valueMap.put("price", storeProductAttrValue.getPrice()); + valueMap.put("cost", storeProductAttrValue.getCost()); + valueMap.put("ot_price", storeProductAttrValue.getOtPrice()); + valueMap.put("stock", storeProductAttrValue.getStock()); + valueMap.put("bar_code", storeProductAttrValue.getBarCode()); + valueMap.put("weight", storeProductAttrValue.getWeight()); + valueMap.put("volume", storeProductAttrValue.getVolume()); + valueMap.put("brokerage", storeProductAttrValue.getBrokerage()); + valueMap.put("brokerage_two", storeProductAttrValue.getBrokerageTwo()); + valueMap.put("pink_price", storeProductAttrValue.getPinkPrice()); + valueMap.put("seckill_price", storeProductAttrValue.getSeckillPrice()); + valueMap.put("pink_stock", storeProductAttrValue.getPinkStock()); + valueMap.put("seckill_stock", storeProductAttrValue.getSeckillStock()); + valueMap.put("integral", storeProductAttrValue.getIntegral()); + } + } + + valueMapList.add(ObjectUtil.clone(valueMap)); + + } + + this.addMap(headerMap, headerMapList, align, isActivity); + + + resultMap.put("attr", fromatDetailDTOList); + resultMap.put("value", valueMapList); + resultMap.put("header", headerMapList); + + return resultMap; + } + + /** + * 增加表头 + * + * @param headerMap headerMap + * @param headerMapList headerMapList + * @param align align + */ + private void addMap(Map headerMap, List> headerMapList, String align, boolean isActivity) { + headerMap.put("title", "图片"); + headerMap.put("slot", "pic"); + headerMap.put("align", align); + headerMap.put("minWidth", 80); + headerMapList.add(ObjectUtil.clone(headerMap)); + + headerMap.put("title", "售价"); + headerMap.put("slot", "price"); + headerMap.put("align", align); + headerMap.put("minWidth", 120); + headerMapList.add(ObjectUtil.clone(headerMap)); + + headerMap.put("title", "成本价"); + headerMap.put("slot", "cost"); + headerMap.put("align", align); + headerMap.put("minWidth", 140); + headerMapList.add(ObjectUtil.clone(headerMap)); + + headerMap.put("title", "原价"); + headerMap.put("slot", "ot_price"); + headerMap.put("align", align); + headerMap.put("minWidth", 140); + headerMapList.add(ObjectUtil.clone(headerMap)); + + headerMap.put("title", "库存"); + headerMap.put("slot", "stock"); + headerMap.put("align", align); + headerMap.put("minWidth", 140); + headerMapList.add(ObjectUtil.clone(headerMap)); + + headerMap.put("title", "产品编号"); + headerMap.put("slot", "bar_code"); + headerMap.put("align", align); + headerMap.put("minWidth", 140); + headerMapList.add(ObjectUtil.clone(headerMap)); + + headerMap.put("title", "重量(KG)"); + headerMap.put("slot", "weight"); + headerMap.put("align", align); + headerMap.put("minWidth", 140); + headerMapList.add(ObjectUtil.clone(headerMap)); + + headerMap.put("title", "体积(m³)"); + headerMap.put("slot", "volume"); + headerMap.put("align", align); + headerMap.put("minWidth", 140); + headerMapList.add(ObjectUtil.clone(headerMap)); + +// headerMap.put("title", "所需兑换积分"); +// headerMap.put("slot", "integral"); +// headerMap.put("align", align); +// headerMap.put("minWidth", 140); +// headerMapList.add(ObjectUtil.clone(headerMap)); + + if (isActivity) { + headerMap.put("title", "拼团价"); + headerMap.put("slot", "pink_price"); + headerMap.put("align", align); + headerMap.put("minWidth", 140); + headerMapList.add(ObjectUtil.clone(headerMap)); + + headerMap.put("title", "拼团活动库存"); + headerMap.put("slot", "pink_stock"); + headerMap.put("align", align); + headerMap.put("minWidth", 140); + headerMapList.add(ObjectUtil.clone(headerMap)); + + headerMap.put("title", "秒杀价"); + headerMap.put("slot", "seckill_price"); + headerMap.put("align", align); + headerMap.put("minWidth", 140); + headerMapList.add(ObjectUtil.clone(headerMap)); + + headerMap.put("title", "秒杀活动库存"); + headerMap.put("slot", "seckill_stock"); + headerMap.put("align", align); + headerMap.put("minWidth", 140); + headerMapList.add(ObjectUtil.clone(headerMap)); + } + + headerMap.put("title", "操作"); + headerMap.put("slot", "action"); + headerMap.put("align", align); + headerMap.put("minWidth", 70); + headerMapList.add(ObjectUtil.clone(headerMap)); + } + + + + /** + * 组合规则属性算法 + * + * @param fromatDetailDTOList + * @return DetailDto + */ + private DetailDto attrFormat(List fromatDetailDTOList) { + + List data = new ArrayList<>(); + List>> res = new ArrayList<>(); + + fromatDetailDTOList.stream() + .map(FromatDetailDto::getDetail) + .forEach(i -> { + if (i == null || i.isEmpty()) { + throw exception(STORE_PRODUCT_RULE_NEED); + } + String str = ArrayUtil.join(i.toArray(), ","); + if (str.contains("-")) { + throw exception(STORE_PRODUCT_RULE_RE); + } + }); + + if (fromatDetailDTOList.size() > 1) { + for (int i = 0; i < fromatDetailDTOList.size() - 1; i++) { + if (i == 0) { + data = fromatDetailDTOList.get(i).getDetail(); + } + List tmp = new LinkedList<>(); + for (String v : data) { + for (String g : fromatDetailDTOList.get(i + 1).getDetail()) { + String rep2 = ""; + if (i == 0) { + rep2 = fromatDetailDTOList.get(i).getValue() + "_" + v + "-" + + fromatDetailDTOList.get(i + 1).getValue() + "_" + g; + } else { + rep2 = v + "-" + + fromatDetailDTOList.get(i + 1).getValue() + "_" + g; + } + + tmp.add(rep2); + + if (i == fromatDetailDTOList.size() - 2) { + Map> rep4 = new LinkedHashMap<>(); + Map reptemp = new LinkedHashMap<>(); + for (String h : Arrays.asList(rep2.split("-"))) { + List rep3 = Arrays.asList(h.split("_")); + if (rep3.size() > 1) { + reptemp.put(rep3.get(0), rep3.get(1)); + } else { + reptemp.put(rep3.get(0), ""); + } + } + rep4.put("detail", reptemp); + + res.add(rep4); + } + } + + } + + if (!tmp.isEmpty()) { + data = tmp; + } + } + } else { + List dataArr = new ArrayList<>(); + for (FromatDetailDto fromatDetailDTO : fromatDetailDTOList) { + for (String str : fromatDetailDTO.getDetail()) { + Map> map2 = new LinkedHashMap<>(); + dataArr.add(fromatDetailDTO.getValue() + "_" + str); + Map map1 = new LinkedHashMap<>(); + map1.put(fromatDetailDTO.getValue(), str); + map2.put("detail", map1); + res.add(map2); + } + } + String s = StrUtil.join("-", dataArr); + data.add(s); + } + + DetailDto detailDto = new DetailDto(); + detailDto.setData(data); + detailDto.setRes(res); + + return detailDto; + } + + /** + * 新增/保存商品 + * + * @param storeProductDto 商品 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void insertAndEditYxStoreProduct(StoreProductDto storeProductDto) { + //storeProductDto.setDescription(RegexUtil.converProductDescription(storeProductDto.getDescription())); + ProductResultDto resultDTO = this.computedProduct(storeProductDto.getAttrs()); + + //添加商品 + StoreProductDO yxStoreProduct = new StoreProductDO(); + BeanUtil.copyProperties(storeProductDto, yxStoreProduct, "sliderImage"); + if (storeProductDto.getSliderImage().isEmpty()) { + throw exception(STORE_PRODUCT_SLIDER_ERROR); + } + + yxStoreProduct.setPrice(BigDecimal.valueOf(resultDTO.getMinPrice())); + yxStoreProduct.setOtPrice(BigDecimal.valueOf(resultDTO.getMinOtPrice())); + yxStoreProduct.setCost(BigDecimal.valueOf(resultDTO.getMinCost())); + yxStoreProduct.setIntegral(resultDTO.getMinIntegral()); + yxStoreProduct.setStock(resultDTO.getStock()); + yxStoreProduct.setSliderImage(String.join(",", storeProductDto.getSliderImage())); + +// if (storeProductDto.getId() != null) { +// //清空商品转发图 +// deleteForwardImg(storeProductDto.getId()); +// } + + + this.saveOrUpdate(yxStoreProduct); + + //属性处理 + //处理单sKu + if (SpecTypeEnum.TYPE_0.getValue().equals(storeProductDto.getSpecType())) { + FromatDetailDto fromatDetailDto = FromatDetailDto.builder() + .value("规格") + .detailValue("") + .attrHidden("") + .detail(ListUtil.toList("默认")) + .build(); + List attrs = storeProductDto.getAttrs(); + ProductFormatDto productFormatDto = attrs.get(0); + productFormatDto.setValue1("规格"); + Map map = new HashMap<>(); + map.put("规格", "默认"); + productFormatDto.setDetail(map); + storeProductAttrService.insertYxStoreProductAttr(ListUtil.toList(fromatDetailDto), + ListUtil.toList(productFormatDto), yxStoreProduct.getId()); + } else { + storeProductAttrService.insertYxStoreProductAttr(storeProductDto.getItems(), + storeProductDto.getAttrs(), yxStoreProduct.getId()); + } + + + } + + @Override + public Map getProductInfo(Long id) { + Map map = new LinkedHashMap<>(3); + + ArrayUtil.newArray(String.class, 3); + //运费模板 + //todo + map.put("tempList", ArrayUtil.newArray(String.class, 3)); + + + //商品规格 + List list = storeProductRuleService.getStoreProductRuleList(CollUtil.newArrayList()); + map.put("ruleList", StoreProductRuleConvert.INSTANCE.convertList(list)); + if (id == 0 ) { + return map; + } + + //处理商品详情 + StoreProductDO storeProduct = storeProductMapper.selectById(id); + ProductDto productDto = new ProductDto(); + BeanUtil.copyProperties(storeProduct,productDto,"sliderImage"); + productDto.setSliderImage(Arrays.asList(storeProduct.getSliderImage().split(","))); + StoreProductAttrResultDO storeProductAttrResult = storeProductAttrResultService + .getOne(Wrappers.lambdaQuery() + .eq(StoreProductAttrResultDO::getProductId,id).last("limit 1")); + JSONObject result = JSON.parseObject(storeProductAttrResult.getResult()); + List attrValues = storeProductAttrValueService.list(new LambdaQueryWrapper().eq(StoreProductAttrValueDO::getProductId, id)); + List productFormatDtos =attrValues.stream().map(i ->{ + ProductFormatDto productFormatDto = new ProductFormatDto(); + BeanUtils.copyProperties(i,productFormatDto); + productFormatDto.setPic(i.getImage()); + return productFormatDto; + }).collect(Collectors.toList()); + if(SpecTypeEnum.TYPE_1.getValue().equals(storeProduct.getSpecType())){ + productDto.setAttr(new ProductFormatDto()); + productDto.setAttrs(productFormatDtos); + productDto.setItems(result.getObject("attr",ArrayList.class)); + }else{ + this.productFromat(productDto, result); + } + + map.put("productInfo",productDto); + + return map; + + } + + /** + * 商品上架下架 + * + * @param id 商品id + * @param status ShopCommonEnum + */ + @Override + public void onSale(Long id, Integer status) { + if (ShopCommonEnum.SHOW_1.getValue().equals(status)) { + status = ShopCommonEnum.SHOW_0.getValue(); + } else { + status = ShopCommonEnum.SHOW_1.getValue(); + } + storeProductMapper.updateOnsale(status, id); + } + + + /** + * 获取商品属性 + * @param productDto + * @param result + */ + private void productFromat(ProductDto productDto, JSONObject result) { + Map mapAttr = (Map) result.getObject("value",ArrayList.class).get(0); + ProductFormatDto productFormatDto = ProductFormatDto.builder() + .pic(mapAttr.get("pic").toString()) + .price(Double.valueOf(mapAttr.get("price").toString())) + .cost(Double.valueOf(mapAttr.get("cost").toString())) + .otPrice(Double.valueOf(mapAttr.get("otPrice").toString())) + .stock(Integer.valueOf(mapAttr.get("stock").toString())) + .barCode(mapAttr.get("barCode").toString()) + .weight(Double.valueOf(mapAttr.get("weight").toString())) + .volume(Double.valueOf(mapAttr.get("volume").toString())) + .value1(mapAttr.get("value1").toString()) + .integral(mapAttr.get("integral") !=null ? Integer.valueOf(mapAttr.get("integral").toString()) : 0) + .brokerage(Double.valueOf(mapAttr.get("brokerage").toString())) + .brokerageTwo(Double.valueOf(mapAttr.get("brokerageTwo").toString())) + .pinkPrice(Double.valueOf(mapAttr.get("pinkPrice").toString())) + .pinkStock(Integer.valueOf(mapAttr.get("pinkStock").toString())) + .seckillPrice(Double.valueOf(mapAttr.get("seckillPrice").toString())) + .seckillStock(Integer.valueOf(mapAttr.get("seckillStock").toString())) + .build(); + productDto.setAttr(productFormatDto); + } + + + /** + * 计算产品数据 + * + * @param attrs attrs + * @return ProductResultDto + */ + private ProductResultDto computedProduct(List attrs) { + //取最小价格 + Double minPrice = attrs + .stream() + .map(ProductFormatDto::getPrice) + .min(Comparator.naturalOrder()) + .orElse(0d); + + //取最小积分 + Integer minIntegral = attrs + .stream() + .map(ProductFormatDto::getIntegral) + .min(Comparator.naturalOrder()) + .orElse(0); + + Double minOtPrice = attrs + .stream() + .map(ProductFormatDto::getOtPrice) + .min(Comparator.naturalOrder()) + .orElse(0d); + + Double minCost = attrs + .stream() + .map(ProductFormatDto::getCost) + .min(Comparator.naturalOrder()) + .orElse(0d); + //计算库存 + Integer stock = attrs + .stream() + .map(ProductFormatDto::getStock) + .reduce(Integer::sum) + .orElse(0); + + if (stock <= 0) { + throw exception(STORE_PRODUCT_STOCK_ERROR); + } + + return ProductResultDto.builder() + .minPrice(minPrice) + .minOtPrice(minOtPrice) + .minCost(minCost) + .stock(stock) + .minIntegral(minIntegral) + .build(); + } + + + + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/AttrValueDto.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/AttrValueDto.java new file mode 100644 index 0000000..cb08948 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/AttrValueDto.java @@ -0,0 +1,16 @@ +package co.yixiang.yshop.module.product.service.storeproduct.dto; + +import lombok.Data; + +/** + * @ClassName AttrValueDTO + * @Author hupeng <610796224@qq.com> + * @Date 2019/10/23 + **/ +@Data +public class AttrValueDto { + + private String attr; + + private Boolean check = false; +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/DetailDto.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/DetailDto.java new file mode 100644 index 0000000..88a26d9 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/DetailDto.java @@ -0,0 +1,25 @@ +/** + * Copyright (C) 2018-2022 + * All rights reserved, Designed By www.yixiang.co + + */ +package co.yixiang.yshop.module.product.service.storeproduct.dto; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @ClassName DetailDTO + * @Author hupeng <610796224@qq.com> + * @Date 2019/10/12 + **/ +@Data +public class DetailDto { + private List data; + + //private List>>> res; + + private List>> res; +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/FromatDetailDto.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/FromatDetailDto.java new file mode 100644 index 0000000..d8d9d88 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/FromatDetailDto.java @@ -0,0 +1,32 @@ +/** + * Copyright (C) 2018-2022 + * All rights reserved, Designed By www.yixiang.co + + */ +package co.yixiang.yshop.module.product.service.storeproduct.dto; + +import lombok.*; + +import java.util.List; + +/** + * @ClassName FromatDetailDTO + * @Author hupeng <610796224@qq.com> + * @Date 2019/10/12 + **/ + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class FromatDetailDto { + private String attrHidden; + + private String detailValue; + + private List detail; + + private String value; + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/ProductDto.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/ProductDto.java new file mode 100644 index 0000000..6928b02 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/ProductDto.java @@ -0,0 +1,149 @@ +package co.yixiang.yshop.module.product.service.storeproduct.dto; + + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +/** + * 商品对象VO + * + * @author hupeng + * @date 2020-04-25 + */ +@NoArgsConstructor +@AllArgsConstructor +@Getter +@Setter +public class ProductDto +{ + + /** 商品id */ + private Long id; + + + /** 商品图片 */ + private String image; + + /** 轮播图 */ + @JsonProperty("slider_image") + private List sliderImage; + + /** 商品名称 */ + @JsonProperty("store_name") + private String storeName; + + /** 商品简介 */ + @JsonProperty("store_info") + private String storeInfo; + + /** 关键字 */ + private String keyword; + + /** 商品条码(一维码) */ + @JsonProperty("bar_code") + private String barCode; + + /** 分类id */ + @JsonProperty("cate_id") + private String cateId; + + /** 商品价格 */ + private Double price; + + + /** 市场价 */ + @JsonProperty("ot_price") + private Double otPrice; + + /** 邮费 */ + private Double postage; + + /** 单位名 */ + @JsonProperty("unit_name") + private String unitName; + + /** 排序 */ + private Long sort; + + /** 销量 */ + private Long sales; + + /** 库存 */ + private Long stock; + + /** 状态(0:未上架,1:上架) */ + @JsonProperty("is_show") + private Integer isShow; + + /** 是否热卖 */ + @JsonProperty("is_hot") + private Integer isHot; + + /** 是否优惠 */ + @JsonProperty("is_benefit") + private Integer isBenefit; + + /** 是否精品 */ + @JsonProperty("is_best") + private Integer isBest; + + /** 是否新品 */ + @JsonProperty("is_new") + private Integer isNew; + + /** 商品描述 */ + private String description; + + + /** 是否包邮 */ + @JsonProperty("is_postage") + private Integer isPostage; + + + /** 获得积分 */ + @JsonProperty("give_integral") + private Double giveIntegral; + + /** 成本价 */ + private Double cost; + + + /** 是否优品推荐 */ + @JsonProperty("is_good") + private Integer isGood; + + /** 是否单独分佣 */ + @JsonProperty("is_sub") + private Integer isSub; + + /** 是否开启啊积分兑换 */ + @JsonProperty("is_integral") + private Integer isIntegral; + + /** 虚拟销量 */ + private Long ficti; + + + /** 运费模板ID */ + @JsonProperty("temp_id") + private Long tempId; + + /** 规格 0单 1多 */ + @JsonProperty("spec_type") + private Integer specType; + + private ProductFormatDto attr; + + private List items; + + private List attrs; + + + + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/ProductFormatDto.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/ProductFormatDto.java new file mode 100644 index 0000000..7fa9a63 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/ProductFormatDto.java @@ -0,0 +1,67 @@ +/** + * Copyright (C) 2018-2022 + * All rights reserved, Designed By www.yixiang.co + + */ +package co.yixiang.yshop.module.product.service.storeproduct.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.*; + +import java.util.Map; + +/** + * @ClassName ProductFormatDTO + * @Author hupeng <610796224@qq.com> + * @Date 2019/10/12 + **/ + +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +public class ProductFormatDto { + + private String sku = ""; + + @JsonProperty("bar_code") + private String barCode = ""; + + private Double brokerage = 0d; + + @JsonProperty("brokerage_two") + private Double brokerageTwo = 0d; + + private Double price = 0d; + + @JsonProperty("ot_price") + private Double otPrice = 0d; + + private Double cost = 0d; + + private Integer stock = 0; + + private Integer integral = 0; + + private String pic = ""; + + private String value1 = ""; + + private String value2 = ""; + + private Double volume = 0d; + + private Double weight = 0d; + @JsonProperty("pink_price") + private Double pinkPrice = 0d; + @JsonProperty("pink_stock") + private Integer pinkStock = 0; + @JsonProperty("seckill_price") + private Double seckillPrice = 0d; + @JsonProperty("seckill_stock") + private Integer seckillStock = 0; + + private Map detail; + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/ProductResultDto.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/ProductResultDto.java new file mode 100644 index 0000000..f3e0aaa --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/ProductResultDto.java @@ -0,0 +1,25 @@ +package co.yixiang.yshop.module.product.service.storeproduct.dto; + +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +/** + * @ClassName 产品结果DTO + * @Author hupeng <610796224@qq.com> + * @Date 2020/4/24 + **/ +@Getter +@Setter +@Builder +public class ProductResultDto { + private Double minPrice; + + private Double minOtPrice; + + private Double minCost; + + private Integer stock; + + private Integer minIntegral; +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/StoreProductDto.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/StoreProductDto.java new file mode 100644 index 0000000..6abb925 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/StoreProductDto.java @@ -0,0 +1,149 @@ +package co.yixiang.yshop.module.product.service.storeproduct.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.List; + + +/** + * 商品对象DTO + * + * @author hupeng + * @date 2020-04-23 + */ +@Getter +@Setter +@ToString +public class StoreProductDto +{ + + /** 商品id */ + private Long id; + + + /** 商品图片 */ + @NotBlank(message = "商品图片必传") + private String image; + + /** 轮播图 */ + @NotNull(message = "轮播图不为空") + @JsonProperty("slider_image") + private List sliderImage; + + /** 商品名称 */ + @NotBlank(message = "商品名称不能为空") + @JsonProperty("store_name") + private String storeName; + + /** 商品简介 */ + @JsonProperty("store_info") + private String storeInfo; + + /** 关键字 */ + @NotBlank(message = "关键字不能为空") + private String keyword; + + /** 商品条码(一维码) */ + @JsonProperty("bar_code") + private String barCode; + + /** 分类id */ + @NotNull(message = "分类id不能为空") + @JsonProperty("cate_id") + private String cateId; + + /** 商品价格 */ + private Double price; + + /** 市场价 */ + private Double otPrice; + + /** 邮费 */ + private Double postage; + + /** 单位名 */ + @JsonProperty("unit_name") + private String unitName; + + /** 排序 */ + private Long sort; + + /** 销量 */ + private Long sales; + + /** 库存 */ + private Long stock; + + /** 状态(0:未上架,1:上架) */ + @JsonProperty("is_show") + private Integer isShow; + + /** 是否热卖 */ + @JsonProperty("is_hot") + private Integer isHot; + + /** 是否优惠 */ + @JsonProperty("is_benefit") + private Integer isBenefit; + + /** 是否精品 */ + @JsonProperty("is_best") + private Integer isBest; + + /** 是否新品 */ + @JsonProperty("is_new") + private Integer isNew; + + /** 商品描述 */ + @NotBlank(message = "商品详情不能为空") + private String description; + + + /** 是否包邮 */ + @JsonProperty("is_postage") + private Integer isPostage; + + /** 获得积分 */ + @JsonProperty("give_integral") + private Double giveIntegral; + + /** 成本价 */ + private Double cost; + + + /** 是否优品推荐 */ + @JsonProperty("is_good") + private Integer isGood; + + /** 是否单独分佣 */ + @JsonProperty("is_sub") + private Integer isSub; + + /** 是否开启啊积分兑换 */ + @JsonProperty("is_integral") + private Integer isIntegral; + + /** 虚拟销量 */ + private Long ficti; + + /** 运费模板ID */ + @JsonProperty("temp_id") + private Long tempId; + + /** 规格 0单 1多 */ + @JsonProperty("spec_type") + private Integer specType; + + //属性项目 + private List items; + + //sku结果集 + private List attrs; + + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductDto.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductDto.java new file mode 100644 index 0000000..968e8c7 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductDto.java @@ -0,0 +1,131 @@ +/** + * Copyright (C) 2018-2022 + * All rights reserved, Designed By www.yixiang.co + + */ +package co.yixiang.yshop.module.product.service.storeproduct.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** +* @author hupeng +* @date 2020-05-12 +*/ +@Data +public class YxStoreProductDto implements Serializable { + + /** 商品id */ + private Integer id; + + /** 商户Id(0为总后台管理员创建,不为0的时候是商户后台创建) */ + private Integer merId; + + /** 商品图片 */ + private String image; + + /** 轮播图 */ + private String sliderImage; + + /** 商品名称 */ + private String storeName; + + /** 商品简介 */ + private String storeInfo; + + /** 关键字 */ + private String keyword; + + /** 产品条码(一维码) */ + private String barCode; + + /** 分类id */ + private String cateId; + + /** 商品价格 */ + private BigDecimal price; + + /** 会员价格 */ + private BigDecimal vipPrice; + + /** 市场价 */ + private BigDecimal otPrice; + + /** 邮费 */ + private BigDecimal postage; + + /** 单位名 */ + private String unitName; + + /** 排序 */ + private Integer sort; + + /** 销量 */ + private Integer sales; + + /** 库存 */ + private Integer stock; + + /** 状态(0:未上架,1:上架) */ + private Integer isShow; + + /** 是否热卖 */ + private Integer isHot; + + /** 是否优惠 */ + private Integer isBenefit; + + /** 是否精品 */ + private Integer isBest; + + /** 是否新品 */ + private Integer isNew; + + /** 产品描述 */ + private String description; + + /** 添加时间 */ + private Integer addTime; + + /** 是否包邮 */ + private Integer isPostage; + + /** 是否删除 */ + private Integer isDel; + + /** 商户是否代理 0不可代理1可代理 */ + private Integer merUse; + + /** 获得积分 */ + private BigDecimal giveIntegral; + + /** 成本价 */ + private BigDecimal cost; + + /** 秒杀状态 0 未开启 1已开启 */ + private Integer isSeckill; + + /** 砍价状态 0未开启 1开启 */ + private Integer isBargain; + + /** 是否优品推荐 */ + private Integer isGood; + + /** 虚拟销量 */ + private Integer ficti; + + /** 浏览量 */ + private Integer browse; + + /** 产品二维码地址(用户小程序海报) */ + private String codePath; + + /** 淘宝京东1688类型 */ + private String soureLink; + + private Integer isIntegral; + + // private YxStoreCategorySmallDto storeCategory; +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductRelationDto.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductRelationDto.java new file mode 100644 index 0000000..d8e3bf9 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductRelationDto.java @@ -0,0 +1,54 @@ +///** +// * Copyright (C) 2018-2022 +// * All rights reserved, Designed By www.yixiang.co +// * 注意: +// * 本软件为www.yixiang.co开发研制,未经购买不得使用 +// * 购买后可获得全部源代码(禁止转卖、分享、上传到码云、github等开源平台) +// * 一经发现盗用、分享等行为,将追究法律责任,后果自负 +// */ +//package co.yixiang.yshop.module.product.service.storeproduct.dto; +// +//import co.yixiang.modules.product.domain.YxStoreProduct; +//import com.fasterxml.jackson.annotation.JsonFormat; +//import lombok.Data; +//import org.springframework.format.annotation.DateTimeFormat; +// +//import java.io.Serializable; +//import java.sql.Timestamp; +// +///** +// * @author hupeng +// * @date 2020-09-03 +// */ +//@Data +//public class YxStoreProductRelationDto implements Serializable { +// +// private Long id; +// +// /** 用户ID */ +// private Long uid; +// +// private String userName; +// +// /** 商品ID */ +// private Long productId; +// +// private YxStoreProduct product; +// +// /** 类型(收藏(collect)、点赞(like)) */ +// private String type; +// +// /** 某种类型的商品(普通商品、秒杀商品) */ +// private String category; +// +// /** 添加时间 */ +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") +// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") +// private Timestamp createTime; +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") +// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") +// private Timestamp updateTime; +// +// private Integer isDel; +//} +// diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductReplyDto.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductReplyDto.java new file mode 100644 index 0000000..eb1f6e0 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductReplyDto.java @@ -0,0 +1,67 @@ +///** +// * Copyright (C) 2018-2022 +// * All rights reserved, Designed By www.yixiang.co +// +// */ +//package co.yixiang.yshop.module.product.service.storeproduct.dto; +// +//import co.yixiang.modules.user.service.dto.YxUserSmallDto; +//import lombok.Data; +// +//import java.io.Serializable; +//import java.util.Date; +// +///** +//* @author hupeng +//* @date 2020-05-12 +//*/ +//@Data +//public class YxStoreProductReplyDto implements Serializable { +// +// // 评论ID +// private Long id; +// +// // 用户ID +// private Long uid; +// +// private YxUserSmallDto user; +// +// // 订单ID +// private Long oid; +// +// // 唯一id +// private String unique; +// +// // 产品id +// private Long productId; +// +// private YxStoreProductSmallDto storeProduct; +// +// +// // 某种商品类型(普通商品、秒杀商品) +// private String replyType; +// +// // 商品分数 +// private Integer productScore; +// +// // 服务分数 +// private Integer serviceScore; +// +// // 评论内容 +// private String comment; +// +// // 评论图片 +// private String pics; +// +// // 评论时间 +// private Date createTime; +// +// // 管理员回复内容 +// private String merchantReplyContent; +// +// // 管理员回复时间 +// private Date merchantReplyTime; +// +// // 0未回复1已回复 +// private Integer isReply; +//} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductRuleDto.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductRuleDto.java new file mode 100644 index 0000000..aa9b398 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductRuleDto.java @@ -0,0 +1,37 @@ +/** +* Copyright (C) 2018-2022 +* All rights reserved, Designed By www.yixiang.co +* 注意: +* 本软件为www.yixiang.co开发研制,未经购买不得使用 +* 购买后可获得全部源代码(禁止转卖、分享、上传到码云、github等开源平台) +* 一经发现盗用、分享等行为,将追究法律责任,后果自负 +*/ +package co.yixiang.yshop.module.product.service.storeproduct.dto; + +import com.alibaba.fastjson.JSONArray; +import lombok.Data; + +import java.io.Serializable; +import java.sql.Timestamp; + +/** +* @author hupeng +* @date 2020-06-28 +*/ +@Data +public class YxStoreProductRuleDto implements Serializable { + + private Integer id; + + /** 规格名称 */ + private String ruleName; + + /** 规格值 */ + private JSONArray ruleValue; + + private Timestamp createTime; + + private Timestamp updateTime; + + private Integer isDel; +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductSmallDto.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductSmallDto.java new file mode 100644 index 0000000..957a9d3 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproduct/dto/YxStoreProductSmallDto.java @@ -0,0 +1,31 @@ +/** + * Copyright (C) 2018-2022 + * All rights reserved, Designed By www.yixiang.co + + */ +package co.yixiang.yshop.module.product.service.storeproduct.dto; + +import lombok.Data; + +import java.io.Serializable; + + +/** +* @author hupeng +* @date 2019-10-04 +*/ +@Data +public class YxStoreProductSmallDto implements Serializable { + + // 商品id + private Integer id; + + // 商品图片 + private String image; + + + // 商品名称 + private String storeName; + + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattr/StoreProductAttrService.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattr/StoreProductAttrService.java new file mode 100644 index 0000000..59a500d --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattr/StoreProductAttrService.java @@ -0,0 +1,51 @@ +package co.yixiang.yshop.module.product.service.storeproductattr; + +import co.yixiang.yshop.module.product.dal.dataobject.storeproductattr.StoreProductAttrDO; +import co.yixiang.yshop.module.product.service.storeproduct.dto.FromatDetailDto; +import co.yixiang.yshop.module.product.service.storeproduct.dto.ProductFormatDto; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Collection; +import java.util.List; + +/** + * 商品属性 Service 接口 + * + * @author yshop + */ +public interface StoreProductAttrService extends IService { + + /** + * 删除商品属性 + * + * @param id 编号 + */ + void deleteStoreProductAttr(Long id); + + /** + * 获得商品属性 + * + * @param id 编号 + * @return 商品属性 + */ + StoreProductAttrDO getStoreProductAttr(Long id); + + /** + * 获得商品属性列表 + * + * @param ids 编号 + * @return 商品属性列表 + */ + List getStoreProductAttrList(Collection ids); + + + /** + * 新增商品属性 + * @param items attr + * @param attrs value + * @param productId 商品id + */ + void insertYxStoreProductAttr(List items, List attrs, + Long productId); + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattr/StoreProductAttrServiceImpl.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattr/StoreProductAttrServiceImpl.java new file mode 100644 index 0000000..eee1890 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattr/StoreProductAttrServiceImpl.java @@ -0,0 +1,176 @@ +package co.yixiang.yshop.module.product.service.storeproductattr; + +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import co.yixiang.yshop.module.product.dal.dataobject.storeproductattr.StoreProductAttrDO; +import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrvalue.StoreProductAttrValueDO; +import co.yixiang.yshop.module.product.dal.mysql.storeproductattr.StoreProductAttrMapper; +import co.yixiang.yshop.module.product.dal.mysql.storeproductrule.StoreProductAttrValueMapper; +import co.yixiang.yshop.module.product.service.storeproduct.dto.FromatDetailDto; +import co.yixiang.yshop.module.product.service.storeproduct.dto.ProductFormatDto; +import co.yixiang.yshop.module.product.service.storeproductattrresult.StoreProductAttrResultService; +import co.yixiang.yshop.module.product.service.storeproductattrvalue.StoreProductAttrValueService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; + +import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; +import static co.yixiang.yshop.module.product.enums.ErrorCodeConstants.*; + +/** + * 商品属性 Service 实现类 + * + * @author yshop + */ +@Service +@Validated +public class StoreProductAttrServiceImpl extends ServiceImpl implements StoreProductAttrService { + + @Resource + private StoreProductAttrMapper storeProductAttrMapper; + @Resource + private StoreProductAttrValueService storeProductAttrValueService; + @Resource + private StoreProductAttrValueMapper storeProductAttrValueMapper; + @Resource + private StoreProductAttrResultService storeProductAttrResultService; + + + @Override + public void deleteStoreProductAttr(Long id) { + // 校验存在 + validateStoreProductAttrExists(id); + // 删除 + storeProductAttrMapper.deleteById(id); + } + + private void validateStoreProductAttrExists(Long id) { + if (storeProductAttrMapper.selectById(id) == null) { + throw exception(STORE_PRODUCT_ATTR_NOT_EXISTS); + } + } + + @Override + public StoreProductAttrDO getStoreProductAttr(Long id) { + return storeProductAttrMapper.selectById(id); + } + + @Override + public List getStoreProductAttrList(Collection ids) { + return storeProductAttrMapper.selectBatchIds(ids); + } + + + /** + * 新增商品属性 + * @param items attr + * @param attrs value + * @param productId 商品id + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void insertYxStoreProductAttr(List items, List attrs, + Long productId) + { + List attrGroup = new ArrayList<>(); + for (FromatDetailDto fromatDetailDto : items) { + StoreProductAttrDO storeProductAttr = StoreProductAttrDO.builder() + .productId(productId) + .attrName(fromatDetailDto.getValue()) + .attrValues(StrUtil.join(",",fromatDetailDto.getDetail())) + .build(); + + attrGroup.add(storeProductAttr); + } + + /*int count = storeProductAttrValueService.count(Wrappers.lambdaQuery().eq(YxStoreProductAttrValue::getProductId, productId)); + if (count > 0 ) { + throw new BadRequestException("该产品已被添加到其他活动,禁止操作!"); + }*/ + + List valueGroup = new ArrayList<>(); + for (ProductFormatDto productFormatDto : attrs) { + +// if(productFormatDto.getPinkStock()>productFormatDto.getStock() || productFormatDto.getSeckillStock()>productFormatDto.getStock()){ +// throw new BadRequestException("活动商品库存不能大于原有商品库存"); +// } + List stringList = new ArrayList<>(productFormatDto.getDetail().values()); + Collections.sort(stringList); + StoreProductAttrValueDO oldAttrValue = storeProductAttrValueService.getOne(new LambdaQueryWrapper() + .eq(StoreProductAttrValueDO::getSku, productFormatDto.getSku()) + .eq(StoreProductAttrValueDO::getProductId, productId)); + + String unique = IdUtil.simpleUUID(); + if (Objects.nonNull(oldAttrValue)) { + unique = oldAttrValue.getUnique(); + } + + StoreProductAttrValueDO yxStoreProductAttrValue = StoreProductAttrValueDO.builder() + .id(Objects.isNull(oldAttrValue) ? null : oldAttrValue.getId()) + .productId(productId) + .sku(StrUtil.join(",",stringList)) + .price(BigDecimal.valueOf(productFormatDto.getPrice())) + .cost(BigDecimal.valueOf(productFormatDto.getCost())) + .otPrice(BigDecimal.valueOf(productFormatDto.getOtPrice())) + .unique(unique) + .image(productFormatDto.getPic()) + .barCode(productFormatDto.getBarCode()) + .weight(BigDecimal.valueOf(productFormatDto.getWeight())) + .volume(BigDecimal.valueOf(productFormatDto.getVolume())) + .brokerage(BigDecimal.valueOf(productFormatDto.getBrokerage())) + .brokerageTwo(BigDecimal.valueOf(productFormatDto.getBrokerageTwo())) + .stock(productFormatDto.getStock()) + .integral(productFormatDto.getIntegral()) + .pinkPrice(BigDecimal.valueOf(productFormatDto.getPinkPrice()==null?0:productFormatDto.getPinkPrice())) + .seckillPrice(BigDecimal.valueOf(productFormatDto.getSeckillPrice()==null?0:productFormatDto.getSeckillPrice())) + .pinkStock(productFormatDto.getPinkStock()==null?0:productFormatDto.getPinkStock()) + .seckillStock(productFormatDto.getSeckillStock()==null?0:productFormatDto.getSeckillStock()) + .build(); + + valueGroup.add(yxStoreProductAttrValue); + } + + if(attrGroup.isEmpty() || valueGroup.isEmpty()){ + throw exception(STORE_PRODUCT_ATTR_NEED); + } + + //清理属性 + this.clearProductAttr(productId); + + //批量添加 + this.saveBatch(attrGroup); + storeProductAttrValueService.saveBatch(valueGroup); + + Map map = new LinkedHashMap<>(); + map.put("attr",items); + map.put("value",attrs); + + storeProductAttrResultService.insertYxStoreProductAttrResult(map,productId); + } + + /** + * 删除YxStoreProductAttrValue表的属性 + * @param productId 商品id + */ + private void clearProductAttr(Long productId) { + if(ObjectUtil.isNull(productId)) { + throw exception(STORE_PRODUCT_NOT_EXISTS); + } + + storeProductAttrMapper.delete(Wrappers.lambdaQuery() + .eq(StoreProductAttrDO::getProductId,productId)); + storeProductAttrValueMapper.delete(Wrappers.lambdaQuery() + .eq(StoreProductAttrValueDO::getProductId,productId)); + + } + + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattrresult/StoreProductAttrResultService.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattrresult/StoreProductAttrResultService.java new file mode 100644 index 0000000..564e998 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattrresult/StoreProductAttrResultService.java @@ -0,0 +1,48 @@ +package co.yixiang.yshop.module.product.service.storeproductattrresult; + +import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrresult.StoreProductAttrResultDO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 商品属性详情 Service 接口 + * + * @author yshop + */ +public interface StoreProductAttrResultService extends IService { + + /** + * 删除商品属性详情 + * + * @param id 编号 + */ + void deleteStoreProductAttrResult(Long id); + + /** + * 获得商品属性详情 + * + * @param id 编号 + * @return 商品属性详情 + */ + StoreProductAttrResultDO getStoreProductAttrResult(Long id); + + /** + * 获得商品属性详情列表 + * + * @param ids 编号 + * @return 商品属性详情列表 + */ + List getStoreProductAttrResultList(Collection ids); + + + /** + * 新增商品属性详情 + * @param map map + * @param productId 商品id + */ + void insertYxStoreProductAttrResult(Map map, Long productId); + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattrresult/StoreProductAttrResultServiceImpl.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattrresult/StoreProductAttrResultServiceImpl.java new file mode 100644 index 0000000..97b9afb --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattrresult/StoreProductAttrResultServiceImpl.java @@ -0,0 +1,81 @@ +package co.yixiang.yshop.module.product.service.storeproductattrresult; + +import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrresult.StoreProductAttrResultDO; +import co.yixiang.yshop.module.product.dal.mysql.storeproductattrresult.StoreProductAttrResultMapper; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +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.Collection; +import java.util.Date; +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.product.enums.ErrorCodeConstants.STORE_PRODUCT_ATTR_RESULT_NOT_EXISTS; + +/** + * 商品属性详情 Service 实现类 + * + * @author yshop + */ +@Service +@Validated +public class StoreProductAttrResultServiceImpl extends ServiceImpl implements StoreProductAttrResultService { + + @Resource + private StoreProductAttrResultMapper storeProductAttrResultMapper; + + + @Override + public void deleteStoreProductAttrResult(Long id) { + // 校验存在 + validateStoreProductAttrResultExists(id); + // 删除 + storeProductAttrResultMapper.deleteById(id); + } + + private void validateStoreProductAttrResultExists(Long id) { + if (storeProductAttrResultMapper.selectById(id) == null) { + throw exception(STORE_PRODUCT_ATTR_RESULT_NOT_EXISTS); + } + } + + @Override + public StoreProductAttrResultDO getStoreProductAttrResult(Long id) { + return storeProductAttrResultMapper.selectById(id); + } + + @Override + public List getStoreProductAttrResultList(Collection ids) { + return storeProductAttrResultMapper.selectBatchIds(ids); + } + + + /** + * 新增商品属性详情 + * @param map map + * @param productId 商品id + */ + @Override + public void insertYxStoreProductAttrResult(Map map, Long productId) + { + StoreProductAttrResultDO yxStoreProductAttrResult = new StoreProductAttrResultDO(); + yxStoreProductAttrResult.setProductId(productId); + yxStoreProductAttrResult.setResult(JSON.toJSONString(map)); + yxStoreProductAttrResult.setChangeTime(new Date()); + + long count = this.count(Wrappers.lambdaQuery() + .eq(StoreProductAttrResultDO::getProductId,productId)); + if(count > 0) { + this.remove(Wrappers.lambdaQuery() + .eq(StoreProductAttrResultDO::getProductId,productId)); + } + + this.save(yxStoreProductAttrResult); + } + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattrvalue/StoreProductAttrValueService.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattrvalue/StoreProductAttrValueService.java new file mode 100644 index 0000000..a3516b0 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattrvalue/StoreProductAttrValueService.java @@ -0,0 +1,41 @@ +package co.yixiang.yshop.module.product.service.storeproductattrvalue; + +import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrvalue.StoreProductAttrValueDO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Collection; +import java.util.List; + +/** + * 商品属性值 Service 接口 + * + * @author yshop + */ +public interface StoreProductAttrValueService extends IService { + + + /** + * 删除商品属性值 + * + * @param id 编号 + */ + void deleteStoreProductAttrValue(Long id); + + /** + * 获得商品属性值 + * + * @param id 编号 + * @return 商品属性值 + */ + StoreProductAttrValueDO getStoreProductAttrValue(Long id); + + /** + * 获得商品属性值列表 + * + * @param ids 编号 + * @return 商品属性值列表 + */ + List getStoreProductAttrValueList(Collection ids); + + +} diff --git a/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattrvalue/StoreProductAttrValueServiceImpl.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattrvalue/StoreProductAttrValueServiceImpl.java new file mode 100644 index 0000000..fae761a --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductattrvalue/StoreProductAttrValueServiceImpl.java @@ -0,0 +1,54 @@ +package co.yixiang.yshop.module.product.service.storeproductattrvalue; + +import co.yixiang.yshop.module.product.dal.dataobject.storeproductattrvalue.StoreProductAttrValueDO; +import co.yixiang.yshop.module.product.dal.mysql.storeproductrule.StoreProductAttrValueMapper; +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.Collection; +import java.util.List; + +import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; +import static co.yixiang.yshop.module.product.enums.ErrorCodeConstants.STORE_PRODUCT_ATTR_VALUE_NOT_EXISTS; + +/** + * 商品属性值 Service 实现类 + * + * @author yshop + */ +@Service +@Validated +public class StoreProductAttrValueServiceImpl extends ServiceImpl implements StoreProductAttrValueService { + + @Resource + private StoreProductAttrValueMapper storeProductAttrValueMapper; + + + @Override + public void deleteStoreProductAttrValue(Long id) { + // 校验存在 + validateStoreProductAttrValueExists(id); + // 删除 + storeProductAttrValueMapper.deleteById(id); + } + + private void validateStoreProductAttrValueExists(Long id) { + if (storeProductAttrValueMapper.selectById(id) == null) { + throw exception(STORE_PRODUCT_ATTR_VALUE_NOT_EXISTS); + } + } + + @Override + public StoreProductAttrValueDO getStoreProductAttrValue(Long id) { + return storeProductAttrValueMapper.selectById(id); + } + + @Override + public List getStoreProductAttrValueList(Collection ids) { + return storeProductAttrValueMapper.selectBatchIds(ids); + } + + +} diff --git a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/service/storeproductrule/StoreProductRuleService.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductrule/StoreProductRuleService.java similarity index 87% rename from yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/service/storeproductrule/StoreProductRuleService.java rename to yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductrule/StoreProductRuleService.java index 80f8c3b..4c7043d 100644 --- a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/service/storeproductrule/StoreProductRuleService.java +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductrule/StoreProductRuleService.java @@ -1,10 +1,11 @@ -package co.yixiang.yshop.module.shop.service.storeproductrule; +package co.yixiang.yshop.module.product.service.storeproductrule; import java.util.*; import javax.validation.*; -import co.yixiang.yshop.module.shop.controller.admin.storeproductrule.vo.*; -import co.yixiang.yshop.module.shop.dal.dataobject.storeproductrule.StoreProductRuleDO; +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 接口 @@ -67,4 +68,6 @@ public interface StoreProductRuleService { */ List getStoreProductRuleList(StoreProductRuleExportReqVO exportReqVO); + + } diff --git a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/service/storeproductrule/StoreProductRuleServiceImpl.java b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductrule/StoreProductRuleServiceImpl.java similarity index 72% rename from yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/service/storeproductrule/StoreProductRuleServiceImpl.java rename to yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductrule/StoreProductRuleServiceImpl.java index ceeba2b..91f7b41 100644 --- a/yshop-module-mall/yshop-module-shop-biz/src/main/java/co/yixiang/yshop/module/shop/service/storeproductrule/StoreProductRuleServiceImpl.java +++ b/yshop-module-mall/yshop-module-product-biz/src/main/java/co/yixiang/yshop/module/product/service/storeproductrule/StoreProductRuleServiceImpl.java @@ -1,19 +1,27 @@ -package co.yixiang.yshop.module.shop.service.storeproductrule; +package co.yixiang.yshop.module.product.service.storeproductrule; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import co.yixiang.yshop.module.product.convert.storeproductrule.StoreProductRuleConvert; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; import java.util.*; -import co.yixiang.yshop.module.shop.controller.admin.storeproductrule.vo.*; -import co.yixiang.yshop.module.shop.dal.dataobject.storeproductrule.StoreProductRuleDO; -import co.yixiang.yshop.framework.common.pojo.PageResult; +import java.util.stream.Collectors; -import co.yixiang.yshop.module.shop.convert.storeproductrule.StoreProductRuleConvert; -import co.yixiang.yshop.module.shop.dal.mysql.storeproductrule.StoreProductRuleMapper; +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.storeproductattrvalue.StoreProductRuleMapper; import static co.yixiang.yshop.framework.common.exception.util.ServiceExceptionUtil.exception; -import static co.yixiang.yshop.module.shop.enums.ErrorCodeConstants.*; +import static co.yixiang.yshop.module.product.enums.ErrorCodeConstants.STORE_PRODUCT_RULE_NOT_EXISTS; + /** * 商品规则值(规格) Service 实现类 @@ -66,6 +74,9 @@ public class StoreProductRuleServiceImpl implements StoreProductRuleService { @Override public List getStoreProductRuleList(Collection ids) { + if (ids.isEmpty()) { + return storeProductRuleMapper.selectList(); + } return storeProductRuleMapper.selectBatchIds(ids); } @@ -79,4 +90,6 @@ public class StoreProductRuleServiceImpl implements StoreProductRuleService { 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 new file mode 100644 index 0000000..cb2b57f --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/shippingtemplates/ShippingTemplatesMapper.xml @@ -0,0 +1,12 @@ + + + + + + + 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 new file mode 100644 index 0000000..5c74691 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/shippingtemplatesfree/ShippingTemplatesFreeMapper.xml @@ -0,0 +1,12 @@ + + + + + + + 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 new file mode 100644 index 0000000..1ef684c --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/shippingtemplatesregion/ShippingTemplatesRegionMapper.xml @@ -0,0 +1,12 @@ + + + + + + + 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 new file mode 100644 index 0000000..fdf2bf6 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproduct/StoreProductMapper.xml @@ -0,0 +1,12 @@ + + + + + + + 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 new file mode 100644 index 0000000..6a04617 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductattr/StoreProductAttrMapper.xml @@ -0,0 +1,12 @@ + + + + + + + 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 new file mode 100644 index 0000000..1d40e25 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductattrresult/StoreProductAttrResultMapper.xml @@ -0,0 +1,12 @@ + + + + + + + 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 new file mode 100644 index 0000000..4991633 --- /dev/null +++ b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductattrvalue/StoreProductAttrValueMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/yshop-module-mall/yshop-module-shop-biz/src/main/resources/mapper/storeproductrule/StoreProductRuleMapper.xml b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductrule/StoreProductRuleMapper.xml similarity index 83% rename from yshop-module-mall/yshop-module-shop-biz/src/main/resources/mapper/storeproductrule/StoreProductRuleMapper.xml rename to yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductrule/StoreProductRuleMapper.xml index 0622b5d..27a2bac 100644 --- a/yshop-module-mall/yshop-module-shop-biz/src/main/resources/mapper/storeproductrule/StoreProductRuleMapper.xml +++ b/yshop-module-mall/yshop-module-product-biz/src/main/resources/mapper/storeproductrule/StoreProductRuleMapper.xml @@ -1,6 +1,6 @@ - +