diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/util/R.java b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/domain/R.java similarity index 96% rename from muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/util/R.java rename to muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/domain/R.java index 8693ab0..2224c1a 100644 --- a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/util/R.java +++ b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/domain/R.java @@ -1,9 +1,10 @@ -package com.muyu.product.domain.util; - +package com.muyu.common.core.domain; +import com.muyu.common.core.constant.Constants; import java.io.Serializable; + /** * 响应信息主体 * diff --git a/muyu-common/muyu-common-system/src/main/java/com/muyu/common/system/remote/RemoteFileService.java b/muyu-common/muyu-common-system/src/main/java/com/muyu/common/system/remote/RemoteFileService.java index 96dd181..d7ebb90 100644 --- a/muyu-common/muyu-common-system/src/main/java/com/muyu/common/system/remote/RemoteFileService.java +++ b/muyu-common/muyu-common-system/src/main/java/com/muyu/common/system/remote/RemoteFileService.java @@ -1,7 +1,7 @@ package com.muyu.common.system.remote; import com.muyu.common.core.constant.ServiceNameConstants; -import com.muyu.common.core.domain.Result; +import com.muyu.common.core.domain.R; import com.muyu.common.system.domain.SysFile; import com.muyu.common.system.remote.factory.RemoteFileFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; @@ -21,9 +21,8 @@ public interface RemoteFileService { * 上传文件 * * @param file 文件信息 - * * @return 结果 */ @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - public Result upload (@RequestPart(value = "file") MultipartFile file); + public R upload(@RequestPart(value = "file") MultipartFile file); } diff --git a/muyu-common/muyu-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteFileFallbackFactory.java b/muyu-common/muyu-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteFileFallbackFactory.java index 395f74f..bced09f 100644 --- a/muyu-common/muyu-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteFileFallbackFactory.java +++ b/muyu-common/muyu-common-system/src/main/java/com/muyu/common/system/remote/factory/RemoteFileFallbackFactory.java @@ -1,8 +1,9 @@ package com.muyu.common.system.remote.factory; +import com.muyu.common.core.domain.R; import com.muyu.common.core.domain.Result; -import com.muyu.common.system.remote.RemoteFileService; import com.muyu.common.system.domain.SysFile; +import com.muyu.common.system.remote.RemoteFileService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; @@ -23,8 +24,8 @@ public class RemoteFileFallbackFactory implements FallbackFactory upload (MultipartFile file) { - return Result.error("上传文件失败:" + throwable.getMessage()); + public R upload (MultipartFile file) { + return R.fail("上传文件失败:" + throwable.getMessage()); } }; } diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/DTO/Category.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/DTO/Category.java index cb20099..339de1c 100644 --- a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/DTO/Category.java +++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/DTO/Category.java @@ -15,31 +15,31 @@ public class Category extends BaseEntity { @ApiModelProperty(value = "id") - private String id; + private Integer id; @ApiModelProperty(value = "上级分类的编号:0表示一级分类") - private String parent_id; + private Integer parentId; @ApiModelProperty(value = "名称") - private String category_name; + private String categoryName; @ApiModelProperty(value = "分类级别:0->1级;1->2级") - private String level; + private Integer level; @ApiModelProperty(value = "商品数量") - private String product_count; + private Integer productCount; @ApiModelProperty(value = "商品单位") - private String product_unit; + private String productUnit; @ApiModelProperty(value = "是否显示在导航栏:0->不显示;1->显示") - private String nav_status; + private Integer navStatus; @ApiModelProperty(value = "显示状态:0->不显示;1->显示") - private String show_status; + private Integer showStatus; @ApiModelProperty(value = "排序") - private String sort; + private Integer sort; @ApiModelProperty(value = "图标") private String icon; diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/QueryProductReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/QueryProductReq.java index a8d0e84..f4f66d6 100644 --- a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/QueryProductReq.java +++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/QueryProductReq.java @@ -32,6 +32,6 @@ public class QueryProductReq { private Integer pageNum = 1; @ApiModelProperty(value = "分页参数") - private Integer pageSize = 10; + private Integer pageSize = 5; } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ArgumentController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ArgumentController.java index fa06aba..52cf2e5 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ArgumentController.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ArgumentController.java @@ -1,13 +1,12 @@ package com.muyu.product.controller; import com.muyu.common.core.domain.AjaxResult; +import com.muyu.common.core.domain.R; import com.muyu.product.domain.DTO.Brand; import com.muyu.product.domain.DTO.Services; -import com.muyu.product.domain.util.R; import com.muyu.product.domain.vo.ProductCategoryVo; import com.muyu.product.service.ArgumentService; import io.swagger.annotations.Api; -import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProductController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProductController.java index 3477c62..ff8efc3 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProductController.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProductController.java @@ -2,21 +2,29 @@ package com.muyu.product.controller; import com.github.pagehelper.PageInfo; import com.muyu.common.core.domain.AjaxResult; +import com.muyu.common.core.utils.StringUtils; +import com.muyu.common.core.utils.file.FileTypeUtils; +import com.muyu.common.core.utils.file.MimeTypeUtils; +import com.muyu.common.system.domain.SysFile; import com.muyu.common.system.remote.RemoteFileService; import com.muyu.product.domain.DTO.Product; import com.muyu.product.domain.Resp.ProductResp; import com.muyu.product.domain.req.ProductReq; import com.muyu.product.domain.req.QueryProductReq; -import com.muyu.product.domain.util.R; +import com.muyu.common.core.domain.R; import com.muyu.product.service.ProductService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid; +import java.util.Arrays; + +import static com.muyu.common.core.domain.AjaxResult.error; import static com.muyu.common.core.domain.AjaxResult.success; /** @@ -34,6 +42,7 @@ public class ProductController { @Autowired private RemoteFileService remoteFileService; + @ApiOperation("查询商品信息") @GetMapping("/queryProduct") public AjaxResult queryProduct(QueryProductReq req){ @@ -49,4 +58,27 @@ public class ProductController { } + @ApiOperation("图片上传") + @PostMapping("/upload") + public AjaxResult avatar(@RequestParam("file") MultipartFile file) + { + if (!file.isEmpty()) + { + String extension = FileTypeUtils.getExtension(file); + if (!StringUtils.equalsAnyIgnoreCase(extension, MimeTypeUtils.IMAGE_EXTENSION)) + { + return error("文件格式不正确,请上传" + Arrays.toString(MimeTypeUtils.IMAGE_EXTENSION) + "格式"); + } + R fileResult = remoteFileService.upload(file); + if (StringUtils.isNull(fileResult) || StringUtils.isNull(fileResult.getData())) + { + return error("文件服务异常,请联系管理员"); + } + String url = fileResult.getData().getUrl(); + AjaxResult ajax = AjaxResult.success(); + ajax.put("imgUrl", url); + return ajax; + } + return error("上传图片异常,请联系管理员"); + } } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/ArgumentMapper.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/ArgumentMapper.java index 28e3699..fe23fd3 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/ArgumentMapper.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/ArgumentMapper.java @@ -1,6 +1,9 @@ package com.muyu.product.mapper; import com.muyu.product.domain.DTO.Brand; +import com.muyu.product.domain.DTO.Category; +import com.muyu.product.domain.DTO.Services; +import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -8,6 +11,12 @@ import java.util.List; * @Author: wangxinyuan * @Date: 2024/3/29 17:07 */ +@Mapper public interface ArgumentMapper { List queryBrand(); + + List queryService(); + + List queryCategory(); + } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/ProductMapper.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/ProductMapper.java index e756eb7..c6bbeb4 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/ProductMapper.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/ProductMapper.java @@ -14,4 +14,8 @@ import java.util.List; public interface ProductMapper { List queryProduct(QueryProductReq productReq); + + void insertProduct(Product product); + + void updateMothodId(Integer id); } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/ProductSkuMapper.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/ProductSkuMapper.java index c36fea7..4529819 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/ProductSkuMapper.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/ProductSkuMapper.java @@ -1,8 +1,11 @@ package com.muyu.product.mapper; +import org.apache.ibatis.annotations.Mapper; + /** * @Author: wangxinyuan * @Date: 2024/3/29 17:29 */ +@Mapper public interface ProductSkuMapper { } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/PromotionMapper.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/PromotionMapper.java index 750085e..e5fca48 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/PromotionMapper.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/PromotionMapper.java @@ -1,8 +1,21 @@ package com.muyu.product.mapper; +import com.muyu.product.domain.DTO.Ladder; +import com.muyu.product.domain.DTO.Member; +import com.muyu.product.domain.DTO.Preference; +import com.muyu.product.domain.DTO.Price; + /** * @Author: wangxinyuan * @Date: 2024/3/29 17:07 */ public interface PromotionMapper { + + void insertPreference(Preference preference); + + void insertMember(Member member); + + void insertLadder(Ladder item); + + void insertPrice(Price item); } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/ServicesMapper.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/ServicesMapper.java index f8c7f0c..1860cc7 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/ServicesMapper.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/ServicesMapper.java @@ -1,8 +1,15 @@ package com.muyu.product.mapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + /** * @Author: wangxinyuan * @Date: 2024/3/29 17:07 */ +@Mapper public interface ServicesMapper { + + int insertProductServicep(Integer productId, List serviceIds); } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ServiceService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ServiceService.java index 8f52a14..54a0bb2 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ServiceService.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ServiceService.java @@ -1,8 +1,11 @@ package com.muyu.product.service; +import java.util.List; + /** * @Author: wangxinyuan * @Date: 2024/3/29 17:05 */ public interface ServiceService { + int insertProductService(Integer id, List serviceIds); } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ArgumentServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ArgumentServiceImpl.java index 2c227f6..9f1b6a8 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ArgumentServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ArgumentServiceImpl.java @@ -1,6 +1,7 @@ package com.muyu.product.service.impl; import com.muyu.product.domain.DTO.Brand; +import com.muyu.product.domain.DTO.Category; import com.muyu.product.domain.DTO.Services; import com.muyu.product.domain.vo.ProductCategoryVo; import com.muyu.product.mapper.ArgumentMapper; @@ -8,6 +9,8 @@ import com.muyu.product.service.ArgumentService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; /** @@ -26,11 +29,40 @@ public class ArgumentServiceImpl implements ArgumentService { @Override public List queryService() { - return null; + return argumentMapper.queryService(); } @Override public List queryCategory() { - return null; + ListcategoryList=argumentMapper.queryCategory(); + ListproductCategoryVos=convertToProductCategoryVoTree(categoryList); + return productCategoryVos; + } + + private List convertToProductCategoryVoTree(List categoryList) { + ArrayList productCategoryVos = new ArrayList<>(); + HashMap idToProductCategoryVoMap = new HashMap<>(); + + for (Category category : categoryList) { + ProductCategoryVo productCategoryVo = new ProductCategoryVo(); + productCategoryVo.setId(category.getId()); + productCategoryVo.setName(category.getCategoryName()); + productCategoryVo.setParentId(category.getParentId()); + productCategoryVo.setChildrenList(new ArrayList<>()); + idToProductCategoryVoMap.put(category.getId(),productCategoryVo); + } + + for (ProductCategoryVo productCategoryVo : idToProductCategoryVoMap.values()) { + if(productCategoryVo.getParentId()==0){ + productCategoryVos.add(productCategoryVo); + }else { + Integer parentId = productCategoryVo.getParentId(); + ProductCategoryVo parentProductCategoryVo = idToProductCategoryVoMap.get(parentId); + if(parentProductCategoryVo!=null){ + parentProductCategoryVo.getChildrenList().add(productCategoryVo); + } + } + } + return productCategoryVos; } } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProductServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProductServiceImpl.java index aad0b40..7b58593 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProductServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProductServiceImpl.java @@ -2,7 +2,8 @@ package com.muyu.product.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; -import com.muyu.product.domain.DTO.Product; +import com.muyu.product.domain.DTO.*; +import com.muyu.product.domain.DTO.Number; import com.muyu.product.domain.Resp.ProductResp; import com.muyu.product.domain.req.ProductReq; import com.muyu.product.domain.req.QueryProductReq; @@ -58,10 +59,61 @@ public class ProductServiceImpl implements ProductService { insertProduct(productReq.getProduct()); + insertProductService(productReq.getProduct().getId(),productReq.getServiceIds()); + + insertProductPromotion(productReq); + + } + + private void insertProductPromotion(ProductReq productReq) { + Integer methodType = productReq.getProduct().getMethodType(); + + //没有优惠 + if(Number.zero.getValue().equals(String.valueOf(methodType))){ + updateMethodId(Integer.valueOf(Number.zero.getValue())); + } + + //特价优惠 + if(Number.one.getValue().equals(String.valueOf(methodType))){ + Preference preference = productReq.getPreference(); + promotionMapper.insertPreference(preference); + updateMethodId(preference.getId()); + } + + //会员优惠 + if(Number.two.getValue().equals(String.valueOf(methodType))){ + Member member = productReq.getMember(); + promotionMapper.insertMember(member); + updateMethodId(member.getId()); + } + + //阶梯价格 + if(Number.three.getValue().equals(String.valueOf(methodType))){ + List ladder = productReq.getLadder(); + ladder.forEach(item -> { + promotionMapper.insertLadder(item); + }); + } + + //满减价格 + if(Number.four.getValue().equals(String.valueOf(methodType))){ + List price = productReq.getPrice(); + price.forEach(item -> { + promotionMapper.insertPrice(item); + }); + } + } + + private void updateMethodId(Integer id) { + productMapper.updateMothodId(id); + } + + private void insertProductService(Integer id, List serviceIds) { + serviceService.insertProductService(id,serviceIds); } private void insertProduct(Product product) { - + productMapper.insertProduct(product); } } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ServiceServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ServiceServiceImpl.java index b86c531..bb0dc23 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ServiceServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ServiceServiceImpl.java @@ -1,12 +1,23 @@ package com.muyu.product.service.impl; +import com.muyu.product.mapper.ServicesMapper; import com.muyu.product.service.ServiceService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** * @Author: wangxinyuan * @Date: 2024/3/29 17:05 */ @Service public class ServiceServiceImpl implements ServiceService { + + @Autowired + private ServicesMapper servicesMapper; + @Override + public int insertProductService(Integer productId, List serviceIds) { + return servicesMapper.insertProductServicep(productId,serviceIds); + } } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/ArgumentMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/ArgumentMapper.xml index 0705e74..84c0d70 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/ArgumentMapper.xml +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/ArgumentMapper.xml @@ -9,5 +9,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select id,brand_name from t_product_brand + + + + diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/ProductMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/ProductMapper.xml index 2a8c179..e86e796 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/ProductMapper.xml +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/ProductMapper.xml @@ -12,6 +12,63 @@ product_recommended,details_title,details_information,details_key_word,details_remark, method_type,t_product_brand.brand_name,t_product_type.type_name,sale_price + + + INSERT INTO `cargo`.`t_Product` ( + `product_name`, + `product_number`, + `brand_id`, + `type_id`, + `product_subheading`, + `product_information`, + `product_unit`, + `product_weight`, + `product_sort`, + `product_points`, + `product_growth`, + `product_max_points`, + `product_foreknow`, + `product_staus`, + `product_new`, + `product_recommended`, + `details_title`, + `details_information`, + `details_key_word`, + `details_remark`, + `method_type`, + `create_by`, + `create_time` + ) VALUES ( + #{productName}, + #{productNumber}, + #{brandId}, + #{typeId}, + #{productSubheading}, + #{productInformation}, + #{productUnit}, + #{productWeight}, + #{productSort}, + #{productPoints}, + #{productGrowth}, + #{productMaxPoints}, + #{productForeknow}, + #{productStatus}, + #{productNew}, + #{productRecommended}, + #{detailsTitle}, + #{detailsInformation}, + #{detailsKeyWord}, + #{detailsRemark}, + #{methodType}, + #{createBy}, + NOW() + ); + + + + + +