From 3752e7e8d00e66ba0203a3d0b236e13433b67cf5 Mon Sep 17 00:00:00 2001 From: ddyd <2073699128@qq.com> Date: Thu, 21 Aug 2025 09:38:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E7=B3=BB=E7=BB=9F=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E5=B1=9E=E6=80=A7=E8=A7=84=E6=A0=BC=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E4=B8=8E=E5=90=8E=E7=AB=AF=E5=AF=B9=E6=8E=A5=E5=AE=8C=E6=AF=95?= =?UTF-8?q?=EF=BC=8C=E5=B0=9A=E6=9C=AA=E5=AE=8C=E5=96=84=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/controller/AttrController.java | 23 +++-- .../bookmall/product/service/AttrService.java | 6 ++ .../product/service/impl/AttrServiceImpl.java | 90 ++++++++++++++++++- .../bookmall/product/vo/AttrRespVo.java | 13 +++ .../bookstore/bookmall/product/vo/AttrVo.java | 51 +++++++++++ 5 files changed, 175 insertions(+), 8 deletions(-) create mode 100644 book-product/src/main/java/com/bookstore/bookmall/product/vo/AttrRespVo.java create mode 100644 book-product/src/main/java/com/bookstore/bookmall/product/vo/AttrVo.java diff --git a/book-product/src/main/java/com/bookstore/bookmall/product/controller/AttrController.java b/book-product/src/main/java/com/bookstore/bookmall/product/controller/AttrController.java index 7e8e1e9..da0255e 100644 --- a/book-product/src/main/java/com/bookstore/bookmall/product/controller/AttrController.java +++ b/book-product/src/main/java/com/bookstore/bookmall/product/controller/AttrController.java @@ -4,12 +4,9 @@ import java.util.Arrays; import java.util.Map; +import com.bookstore.bookmall.product.vo.AttrVo; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import com.bookstore.bookmall.product.entity.AttrEntity; import com.bookstore.bookmall.product.service.AttrService; @@ -31,6 +28,17 @@ public class AttrController { @Autowired private AttrService attrService; + // /product/attr/base/list/{catelogId} + @GetMapping("/base/list/{catelogId}") + public R baseAttrList(@RequestParam Map params, + @PathVariable("catelogId") Long cateLogId) { + PageUtils page = attrService.queryBasePage(params, cateLogId); + return R.ok().put("page", page); + } + + + + /** * 列表 */ @@ -58,12 +66,13 @@ public class AttrController { */ @RequestMapping("/save") //@RequiresPermissions("product:attr:save") - public R save(@RequestBody AttrEntity attr){ - attrService.save(attr); + public R save(@RequestBody AttrVo attr){ + attrService.saveAttr(attr); return R.ok(); } + /** * 修改 */ diff --git a/book-product/src/main/java/com/bookstore/bookmall/product/service/AttrService.java b/book-product/src/main/java/com/bookstore/bookmall/product/service/AttrService.java index 57d33a5..113127c 100644 --- a/book-product/src/main/java/com/bookstore/bookmall/product/service/AttrService.java +++ b/book-product/src/main/java/com/bookstore/bookmall/product/service/AttrService.java @@ -1,6 +1,7 @@ package com.bookstore.bookmall.product.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.bookstore.bookmall.product.vo.AttrVo; import com.bookstore.common.utils.PageUtils; import com.bookstore.bookmall.product.entity.AttrEntity; @@ -17,5 +18,10 @@ public interface AttrService extends IService { PageUtils queryPage(Map params); + void saveAttr(AttrVo attr); + + PageUtils queryBasePage(Map params, Long cateLogId); + } + 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 d02c43a..633e298 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 @@ -1,7 +1,27 @@ package com.bookstore.bookmall.product.service.impl; +import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A; +import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper; +import com.bookstore.bookmall.product.dao.AttrAttrgroupRelationDao; +import com.bookstore.bookmall.product.dao.AttrGroupDao; +import com.bookstore.bookmall.product.dao.CategoryDao; +import com.bookstore.bookmall.product.entity.AttrAttrgroupRelationEntity; +import com.bookstore.bookmall.product.entity.AttrGroupEntity; +import com.bookstore.bookmall.product.entity.CategoryEntity; +import com.bookstore.bookmall.product.service.AttrAttrgroupRelationService; +import com.bookstore.bookmall.product.vo.AttrRespVo; +import com.bookstore.bookmall.product.vo.AttrVo; +import com.mysql.cj.util.StringUtils; +import lombok.extern.slf4j.Slf4j; +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.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; @@ -11,11 +31,19 @@ import com.bookstore.common.utils.Query; import com.bookstore.bookmall.product.dao.AttrDao; import com.bookstore.bookmall.product.entity.AttrEntity; import com.bookstore.bookmall.product.service.AttrService; +import org.springframework.transaction.annotation.Transactional; - +@Slf4j @Service("attrService") public class AttrServiceImpl extends ServiceImpl implements AttrService { + @Autowired + AttrAttrgroupRelationDao RelationDao; + @Autowired + CategoryDao categoryDao; + @Autowired + AttrGroupDao attrGroupDao; + @Override public PageUtils queryPage(Map params) { IPage page = this.page( @@ -26,4 +54,64 @@ public class AttrServiceImpl extends ServiceImpl implements return new PageUtils(page); } + @Transactional + @Override + public void saveAttr(AttrVo attr) { + AttrEntity attrEntity = new AttrEntity(); + BeanUtils.copyProperties(attr, attrEntity); //复制属性,将attr复制到attrEntity,前提是属性名一一对应 + //保存基本数据 + this.save(attrEntity); + //2、保存关联关系 + AttrAttrgroupRelationEntity RelationEntity = new AttrAttrgroupRelationEntity(); + RelationEntity.setAttrGroupId(attr.getAttrGroupId()); + RelationEntity.setAttrId(attr.getAttrId()); + RelationDao.insert(RelationEntity); + } + + //后台管理,查询基本内容和关联分组和关联属性 + @Override + public PageUtils queryBasePage(Map params, Long cateLogId) { + QueryWrapper wrapper = new QueryWrapper(); + if (cateLogId != 0) { + wrapper.eq("catelog_id", cateLogId); + } + String key = (String)params.get("key"); + if (!StringUtils.isNullOrEmpty(key)) { + wrapper.eq("attr_id", key).or().like("attr_name", key); + } + IPage page = this.page( + new Query().getPage(params), + wrapper + ); + PageUtils pageUtils = new PageUtils(page); + List records = (List) pageUtils.getList(); + List respVos = records.stream().map((attrEntity) -> { + //拷贝基本属性 + AttrRespVo attrRespVo = new AttrRespVo(); + BeanUtils.copyProperties(attrEntity, attrRespVo); + //设置分组名字和分类名字 + //在分组关系中查找id + AttrAttrgroupRelationEntity relationEntity = RelationDao.selectOne( + new QueryWrapper().eq("attr_id",attrEntity.getAttrId())); + if (relationEntity!=null) { + // log.info("查询到relation"); + AttrGroupEntity attrGroupEntity = attrGroupDao.selectById(relationEntity.getAttrGroupId()); + attrRespVo.setGroupName(attrGroupEntity.getAttrGroupName()); + // log.info(attrGroupEntity.getAttrGroupName()); + } + CategoryEntity categoryEntity = categoryDao.selectById(attrEntity.getCatelogId()); + if (categoryEntity!=null) { + // log.info("查询到categoryEntity"); + attrRespVo.setCatelogName(categoryEntity.getName()); + // log.info(categoryEntity.getName()); + } + return attrRespVo; + }).collect(Collectors.toList()); + + pageUtils.setList(respVos); + return pageUtils; + } + + + } \ No newline at end of file diff --git a/book-product/src/main/java/com/bookstore/bookmall/product/vo/AttrRespVo.java b/book-product/src/main/java/com/bookstore/bookmall/product/vo/AttrRespVo.java new file mode 100644 index 0000000..19b0850 --- /dev/null +++ b/book-product/src/main/java/com/bookstore/bookmall/product/vo/AttrRespVo.java @@ -0,0 +1,13 @@ +package com.bookstore.bookmall.product.vo; + +import lombok.Data; + +@Data +public class AttrRespVo extends AttrVo{ + //cateLogName 所属分类名字 + //groupName 所属分组名字 + + private String catelogName; + private String groupName; + +} diff --git a/book-product/src/main/java/com/bookstore/bookmall/product/vo/AttrVo.java b/book-product/src/main/java/com/bookstore/bookmall/product/vo/AttrVo.java new file mode 100644 index 0000000..e5e2981 --- /dev/null +++ b/book-product/src/main/java/com/bookstore/bookmall/product/vo/AttrVo.java @@ -0,0 +1,51 @@ +package com.bookstore.bookmall.product.vo; + + +import lombok.Data; + +@Data +public class AttrVo { + /** + * 属性id + */ + + private Long attrId; + /** + * 属性名 + */ + private String attrName; + /** + * 是否需要检索[0-不需要,1-需要] + */ + private Integer searchType; + /** + * 值类型[0-为单个值,1-可以选择多个值] + */ + private Integer valueType; + /** + * 属性图标 + */ + private String icon; + /** + * 可选值列表[用逗号分隔] + */ + private String valueSelect; + /** + * 属性类型[0-销售属性,1-基本属性,2-既是销售属性又是基本属性] + */ + private Integer attrType; + /** + * 启用状态[0 - 禁用,1 - 启用] + */ + private Long enable; + /** + * 所属分类 + */ + private Long catelogId; + /** + * 快速展示【是否展示在介绍上;0-否 1-是】,在sku中仍然可以调整 + */ + private Integer showDesc; + + private Long attrGroupId; +}