From 7c7d2ef9809264fc15f9f0efaaae2a1c1db675c2 Mon Sep 17 00:00:00 2001 From: ddyd <2073699128@qq.com> Date: Sun, 24 Aug 2025 15:32:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E5=95=86=E5=93=81?= =?UTF-8?q?=E8=A7=84=E6=A0=BC=E5=8F=82=E6=95=B0=E5=92=8C=E9=94=80=E5=94=AE?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E6=B7=B7=E4=B9=B1=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AttrGroupController.java | 13 ++++++ .../CategoryBrandRelationController.java | 23 ++++++++++ .../product/service/AttrGroupService.java | 4 ++ .../service/CategoryBrandRelationService.java | 4 ++ .../service/impl/AttrGroupServiceImpl.java | 35 +++++++++++++++ .../product/service/impl/AttrServiceImpl.java | 22 +++++---- .../CategoryBrandRelationServiceImpl.java | 23 ++++++++++ .../product/vo/AttrGroupWithAttrVo.java | 45 +++++++++++++++++++ .../bookmall/product/vo/BrandVo.java | 14 ++++++ renren-fast-vue/package-lock.json | 5 +++ renren-fast-vue/package.json | 1 + .../src/components/upload/multiUpload.vue | 2 +- renren-fast-vue/src/main.js | 2 + .../src/views/modules/product/spuadd.vue | 10 ++--- 14 files changed, 189 insertions(+), 14 deletions(-) create mode 100644 book-product/src/main/java/com/bookstore/bookmall/product/vo/AttrGroupWithAttrVo.java create mode 100644 book-product/src/main/java/com/bookstore/bookmall/product/vo/BrandVo.java diff --git a/book-product/src/main/java/com/bookstore/bookmall/product/controller/AttrGroupController.java b/book-product/src/main/java/com/bookstore/bookmall/product/controller/AttrGroupController.java index 1c44afa..41f61b6 100644 --- a/book-product/src/main/java/com/bookstore/bookmall/product/controller/AttrGroupController.java +++ b/book-product/src/main/java/com/bookstore/bookmall/product/controller/AttrGroupController.java @@ -11,6 +11,7 @@ import com.bookstore.bookmall.product.service.AttrAttrgroupRelationService; import com.bookstore.bookmall.product.service.AttrService; import com.bookstore.bookmall.product.service.CategoryService; import com.bookstore.bookmall.product.vo.AttrGroupRelationVo; +import com.bookstore.bookmall.product.vo.AttrGroupWithAttrVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -40,6 +41,18 @@ public class AttrGroupController { @Autowired private AttrAttrgroupRelationService relationService; + + // /product/categroup/{catelogId}/withattr + @GetMapping("/{catelogId}/withattr") + public R getAttrGroupWithAttrs(@PathVariable("catelogId") Long catelogId){ + //查出当前分类下所有属性分组 + //查出分类下所有分组的所有关联属性 + List vos = attrGroupService.getAttrGroupWithAttrsByCatelogId(catelogId); + + return R.ok().put("data", vos); + } + + //添加关联属性 ///product/attrgroup/attr/relation @PostMapping("/attr/relation") diff --git a/book-product/src/main/java/com/bookstore/bookmall/product/controller/CategoryBrandRelationController.java b/book-product/src/main/java/com/bookstore/bookmall/product/controller/CategoryBrandRelationController.java index 3291fb4..b4897c6 100644 --- a/book-product/src/main/java/com/bookstore/bookmall/product/controller/CategoryBrandRelationController.java +++ b/book-product/src/main/java/com/bookstore/bookmall/product/controller/CategoryBrandRelationController.java @@ -3,9 +3,13 @@ package com.bookstore.bookmall.product.controller; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.bookstore.bookmall.product.entity.BrandEntity; +import com.bookstore.bookmall.product.vo.BrandVo; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -29,6 +33,25 @@ public class CategoryBrandRelationController { @Autowired private CategoryBrandRelationService categoryBrandRelationService; + //1、Controller:处理请求,接受和校验数据 + //2、Service接受controller传来的数据,业务处理 + //3、Controller接受service处理完的数据,封装为页面指定的vo + + // /product/categorybrandrelation/brands/list + @GetMapping("/brands/list") + public R relationBrandsList(@RequestParam(value = "catId", required = true) Long catId) { + List brandEntities = categoryBrandRelationService.getBrandsByCatId(catId); + List collect = brandEntities.stream().map((entity) -> { + BrandVo brandVo = new BrandVo(); + brandVo.setBrandId(entity.getBrandId()); + brandVo.setBrandName(entity.getName()); + return brandVo; + }).collect(Collectors.toList()); + return R.ok().put("data", collect); + } + + + /** * 列表 */ diff --git a/book-product/src/main/java/com/bookstore/bookmall/product/service/AttrGroupService.java b/book-product/src/main/java/com/bookstore/bookmall/product/service/AttrGroupService.java index 60488ed..c74cc4f 100644 --- a/book-product/src/main/java/com/bookstore/bookmall/product/service/AttrGroupService.java +++ b/book-product/src/main/java/com/bookstore/bookmall/product/service/AttrGroupService.java @@ -2,9 +2,11 @@ package com.bookstore.bookmall.product.service; import com.baomidou.mybatisplus.extension.service.IService; import com.bookstore.bookmall.product.vo.AttrGroupRelationVo; +import com.bookstore.bookmall.product.vo.AttrGroupWithAttrVo; import com.bookstore.common.utils.PageUtils; import com.bookstore.bookmall.product.entity.AttrGroupEntity; +import java.util.List; import java.util.Map; /** @@ -21,5 +23,7 @@ public interface AttrGroupService extends IService { PageUtils querypage(Map params, Long catelogId); void deleteRelation(AttrGroupRelationVo[] vos); + + List getAttrGroupWithAttrsByCatelogId(Long catelogId); } diff --git a/book-product/src/main/java/com/bookstore/bookmall/product/service/CategoryBrandRelationService.java b/book-product/src/main/java/com/bookstore/bookmall/product/service/CategoryBrandRelationService.java index c3c58f5..4fedaf1 100644 --- a/book-product/src/main/java/com/bookstore/bookmall/product/service/CategoryBrandRelationService.java +++ b/book-product/src/main/java/com/bookstore/bookmall/product/service/CategoryBrandRelationService.java @@ -1,9 +1,11 @@ package com.bookstore.bookmall.product.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.bookstore.bookmall.product.entity.BrandEntity; import com.bookstore.common.utils.PageUtils; import com.bookstore.bookmall.product.entity.CategoryBrandRelationEntity; +import java.util.List; import java.util.Map; /** @@ -18,5 +20,7 @@ public interface CategoryBrandRelationService extends IService params); void saveDetail(CategoryBrandRelationEntity categoryBrandRelation); + + List getBrandsByCatId(Long catId); } diff --git a/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/AttrGroupServiceImpl.java b/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/AttrGroupServiceImpl.java index ac4bfdf..9c346e1 100644 --- a/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/AttrGroupServiceImpl.java +++ b/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/AttrGroupServiceImpl.java @@ -3,12 +3,16 @@ package com.bookstore.bookmall.product.service.impl; import com.alibaba.nacos.shaded.io.grpc.netty.shaded.io.netty.util.internal.StringUtil; import com.bookstore.bookmall.product.dao.AttrAttrgroupRelationDao; import com.bookstore.bookmall.product.entity.AttrAttrgroupRelationEntity; +import com.bookstore.bookmall.product.entity.AttrEntity; +import com.bookstore.bookmall.product.service.AttrService; import com.bookstore.bookmall.product.vo.AttrGroupRelationVo; +import com.bookstore.bookmall.product.vo.AttrGroupWithAttrVo; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -31,6 +35,9 @@ public class AttrGroupServiceImpl extends ServiceImpl params) { @@ -88,4 +95,32 @@ public class AttrGroupServiceImpl extends ServiceImpl getAttrGroupWithAttrsByCatelogId(Long catelogId) { + //查询分类下所有分组 + List groupEntities = this.list(new QueryWrapper().eq("catelog_id", catelogId)); + //查询分组的所有属性 + List collect = groupEntities.stream().map((entity) -> { + //基本属性 + AttrGroupWithAttrVo attrVo = new AttrGroupWithAttrVo(); + BeanUtils.copyProperties(entity, attrVo); + //分组下所有属性集合 + List relationAttrs = attrService.getRelationAttr(attrVo.getAttrGroupId()); + relationAttrs = (relationAttrs == null) ? new ArrayList<>() : relationAttrs; + attrVo.setAttrs(relationAttrs); + return attrVo; + }).collect(Collectors.toList()); + + return collect; + } + } \ No newline at end of file diff --git a/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/AttrServiceImpl.java b/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/AttrServiceImpl.java index 20228a8..9a1aaa7 100644 --- a/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/AttrServiceImpl.java +++ b/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/AttrServiceImpl.java @@ -18,9 +18,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import java.util.stream.Stream; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -77,9 +79,9 @@ public class AttrServiceImpl extends ServiceImpl implements //后台管理,查询基本内容和关联分组和关联属性 @Override public PageUtils queryBasePage(Map params, Long cateLogId, String attrType) { - QueryWrapper wrapper = new QueryWrapper(); + QueryWrapper wrapper = new QueryWrapper().eq("attr_type", "base".equalsIgnoreCase(attrType)?1:0); if (cateLogId != 0) { - wrapper.eq("catelog_id", cateLogId).eq("attr_name", "base".equalsIgnoreCase(attrType)?1:0); + wrapper.eq("catelog_id", cateLogId); } String key = (String)params.get("key"); if (!StringUtils.isNullOrEmpty(key)) { @@ -127,15 +129,14 @@ public class AttrServiceImpl extends ServiceImpl implements // log.info("查询属性,attrId: {}", attrId); AttrRespVo respVo = new AttrRespVo(); AttrEntity attrEntity = this.getById(attrId); + BeanUtils.copyProperties(attrEntity, respVo); //如果是base if (attrEntity.getAttrType() == ProductConstant.AttrEnum.ATTR_TYPE_BASE.getCode()) { //设置分组id - BeanUtils.copyProperties(attrEntity, respVo); // log.info("beanutilzhengchang"); AttrAttrgroupRelationEntity RelationEntity = RelationDao.selectOne( new QueryWrapper().eq("attr_id",attrId)); - if (RelationEntity!=null) { // log.info("查询属性,relation正常"); respVo.setAttrGroupId(RelationEntity.getAttrGroupId()); @@ -234,7 +235,11 @@ public class AttrServiceImpl extends ServiceImpl implements }).collect(Collectors.toList()); //这些分组的属性 List relationEntities = RelationDao.selectList( - new QueryWrapper().in("attr_group_id", collect)); + new QueryWrapper() + .in("attr_group_id", collect.isEmpty() ? + Collections.singletonList(attrgroupId) : + Stream.concat(collect.stream(), Stream.of(attrgroupId)).collect(Collectors.toList()))); + List attrIds = relationEntities.stream().map((entity) -> { return entity.getAttrId(); }).collect(Collectors.toList()); @@ -243,6 +248,9 @@ public class AttrServiceImpl extends ServiceImpl implements //条件 QueryWrapper queryWrapper = new QueryWrapper().eq("catelog_id", catelogId).eq( "attr_type",ProductConstant.AttrEnum.ATTR_TYPE_BASE.getCode() ); + if (attrIds !=null && attrIds.size() > 0) { + queryWrapper.notIn("attr_id", attrIds); + } //关键字查找 String key = (String) params.get("key"); if (!StringUtils.isNullOrEmpty(key)) { @@ -250,9 +258,7 @@ public class AttrServiceImpl extends ServiceImpl implements wrapper.eq("attr_id", key).or().like("attr_name", key); }); } - if (attrIds !=null && attrIds.size() > 0) { - queryWrapper.notIn("attr_id", attrIds); - } + //分页查询 IPage page = this.page(new Query().getPage(params), queryWrapper); diff --git a/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/CategoryBrandRelationServiceImpl.java b/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/CategoryBrandRelationServiceImpl.java index 92e2616..ff012a9 100644 --- a/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/CategoryBrandRelationServiceImpl.java +++ b/book-product/src/main/java/com/bookstore/bookmall/product/service/impl/CategoryBrandRelationServiceImpl.java @@ -4,9 +4,14 @@ import com.bookstore.bookmall.product.dao.BrandDao; import com.bookstore.bookmall.product.dao.CategoryDao; import com.bookstore.bookmall.product.entity.BrandEntity; import com.bookstore.bookmall.product.entity.CategoryEntity; +import com.bookstore.bookmall.product.service.BrandService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; + import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -25,6 +30,12 @@ public class CategoryBrandRelationServiceImpl extends ServiceImpl params) { @@ -51,4 +62,16 @@ public class CategoryBrandRelationServiceImpl extends ServiceImpl getBrandsByCatId(Long catId) { + List catelogId = RelationDao.selectList(new QueryWrapper().eq("catelog_id", catId)); + List collect = catelogId.stream().map((item) -> { + Long brandId = item.getBrandId(); + BrandEntity byId = brandService.getById(brandId); + return byId; + }).collect(Collectors.toList()); + + return collect; + } + } \ No newline at end of file diff --git a/book-product/src/main/java/com/bookstore/bookmall/product/vo/AttrGroupWithAttrVo.java b/book-product/src/main/java/com/bookstore/bookmall/product/vo/AttrGroupWithAttrVo.java new file mode 100644 index 0000000..be79681 --- /dev/null +++ b/book-product/src/main/java/com/bookstore/bookmall/product/vo/AttrGroupWithAttrVo.java @@ -0,0 +1,45 @@ +package com.bookstore.bookmall.product.vo; + + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.bookstore.bookmall.product.entity.AttrEntity; +import lombok.Data; + +import java.util.List; + +@Data +public class AttrGroupWithAttrVo { + /** + * 分组id + */ + @TableId + private Long attrGroupId; + /** + * 组名 + */ + private String attrGroupName; + /** + * 排序 + */ + private Integer sort; + /** + * 描述 + */ + private String descript; + /** + * 组图标 + */ + private String icon; + /** + * 所属分类id + */ + private Long catelogId; + + private Long[] catelogPath; + + private List attrs; + + + +} diff --git a/book-product/src/main/java/com/bookstore/bookmall/product/vo/BrandVo.java b/book-product/src/main/java/com/bookstore/bookmall/product/vo/BrandVo.java new file mode 100644 index 0000000..863bc0e --- /dev/null +++ b/book-product/src/main/java/com/bookstore/bookmall/product/vo/BrandVo.java @@ -0,0 +1,14 @@ +package com.bookstore.bookmall.product.vo; + +import lombok.Data; + +@Data +public class BrandVo { + /* + "brandId": 0, + "brandName": "string" + * */ + + private Long brandId; + private String brandName; +} diff --git a/renren-fast-vue/package-lock.json b/renren-fast-vue/package-lock.json index 77146b8..42046d6 100644 --- a/renren-fast-vue/package-lock.json +++ b/renren-fast-vue/package-lock.json @@ -16831,6 +16831,11 @@ "safe-buffer": "^5.1.2" } }, + "pubsub-js": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/pubsub-js/-/pubsub-js-1.9.5.tgz", + "integrity": "sha512-5MZ0I9i5JWVO7SizvOviKvZU2qaBbl2KQX150FAA+fJBwYpwOUId7aNygURWSdPzlsA/xZ/InUKXqBbzM0czTA==" + }, "pump": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", diff --git a/renren-fast-vue/package.json b/renren-fast-vue/package.json index b2e28ea..038159e 100644 --- a/renren-fast-vue/package.json +++ b/renren-fast-vue/package.json @@ -26,6 +26,7 @@ "lodash": "4.17.5", "node-sass": "^6.0.1", "npm": "^6.9.0", + "pubsub-js": "^1.9.5", "sass-loader": "6.0.6", "svg-sprite-loader": "3.7.3", "vue": "2.5.16", diff --git a/renren-fast-vue/src/components/upload/multiUpload.vue b/renren-fast-vue/src/components/upload/multiUpload.vue index e10aa12..a457848 100644 --- a/renren-fast-vue/src/components/upload/multiUpload.vue +++ b/renren-fast-vue/src/components/upload/multiUpload.vue @@ -1,7 +1,7 @@