diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/AttributeGroupPageResp.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/AttributeGroupPageResp.java new file mode 100644 index 0000000..7936caf --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/AttributeGroupPageResp.java @@ -0,0 +1,59 @@ +package com.muyu.product.domain.resp; + +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.product.domain.AttributeGroup; +import com.muyu.product.domain.AttributeInfo; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.List; +import java.util.function.Function; + +/** + * @author DongZl + * @description: 属性组列表对象 + * @Date 2024-2-28 下午 04:15 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class AttributeGroupPageResp extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** 属性组编号 */ + private Long id; + + /** 组名称 */ + private String name; + + /** 状态 */ + private String states; + + /** + * 属性对象集合 + */ + private List attributeInfoList; + + public static AttributeGroupPageResp groupBuild (AttributeGroup attributeGroup, List attributeInfos) { + return AttributeGroupPageResp.builder() + .id(attributeGroup.getId()) + .name(attributeGroup.getName()) + .states(attributeGroup.getStates()) + .attributeInfoList(attributeInfos) + .build(); + } + public static AttributeGroupPageResp groupFunBuild (AttributeGroup attributeGroup, Function > function) { + return AttributeGroupPageResp.builder() + .id(attributeGroup.getId()) + .name(attributeGroup.getName()) + .states(attributeGroup.getStates()) + .attributeInfoList(function.apply(attributeGroup.getId())) + .build(); + } +} diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/AttributeGroupController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/AttributeGroupController.java index 28ca764..bd489a0 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/AttributeGroupController.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/AttributeGroupController.java @@ -4,6 +4,7 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; import com.muyu.product.domain.model.AttributeGroupSaveModel; +import com.muyu.product.domain.resp.AttributeGroupPageResp; import io.swagger.annotations.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -46,10 +47,11 @@ public class AttributeGroupController extends BaseController { @ApiOperation("获取属性组列表") @RequiresPermissions("product:attributeGroup:list") @GetMapping("/list") - public Result> list(AttributeGroupQueryReq attributeGroupQueryReq) { + public Result> list(AttributeGroupQueryReq attributeGroupQueryReq) { startPage(); - List list = attributeGroupService.list(AttributeGroup.queryBuild(attributeGroupQueryReq)); - return getDataTable(list); + TableDataInfo tableDataInfo = + attributeGroupService.page(AttributeGroup.queryBuild(attributeGroupQueryReq)); + return Result.success(tableDataInfo); } /** diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/AttributeGroupService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/AttributeGroupService.java index ab85646..9527f88 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/AttributeGroupService.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/AttributeGroupService.java @@ -1,9 +1,13 @@ package com.muyu.product.service; import java.util.List; + +import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.product.domain.AttributeGroup; import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.product.domain.AttributeInfo; import com.muyu.product.domain.model.AttributeGroupSaveModel; +import com.muyu.product.domain.resp.AttributeGroupPageResp; /** * 属性组Service接口 @@ -12,6 +16,14 @@ import com.muyu.product.domain.model.AttributeGroupSaveModel; * @date 2024-02-27 */ public interface AttributeGroupService extends IService { + + /** + * 分页查询 + * @param attributeGroup 分组对象 + * @return 返回结果 + */ + public TableDataInfo page(AttributeGroup attributeGroup); + /** * 查询属性组列表 * @@ -26,4 +38,5 @@ public interface AttributeGroupService extends IService { * @return 是否成功 */ public Boolean save(AttributeGroupSaveModel attributeGroupSaveModel); + } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/AttributeInfoService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/AttributeInfoService.java index ae1811a..14d9431 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/AttributeInfoService.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/AttributeInfoService.java @@ -19,4 +19,10 @@ public interface AttributeInfoService extends IService { */ public List list(AttributeInfo attributeInfo); + /** + * 通过groupId查询属性集合 + * @param groupId 属性组Id + * @return 属性集合 + */ + public List attributeListByGroupId(Long groupId); } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AttributeGroupServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AttributeGroupServiceImpl.java index 40b2307..85f52d1 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AttributeGroupServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AttributeGroupServiceImpl.java @@ -2,19 +2,26 @@ package com.muyu.product.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageInfo; import com.muyu.common.core.utils.ObjUtils; +import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.product.domain.AsAttributeGroup; import com.muyu.product.domain.AttributeGroup; +import com.muyu.product.domain.AttributeInfo; import com.muyu.product.domain.model.AttributeGroupSaveModel; +import com.muyu.product.domain.resp.AttributeGroupPageResp; import com.muyu.product.mapper.AttributeGroupMapper; import com.muyu.product.service.AsAttributeGroupService; import com.muyu.product.service.AttributeGroupService; +import com.muyu.product.service.AttributeInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.function.Function; +import java.util.stream.Stream; /** * 属性组Service业务层处理 @@ -29,6 +36,32 @@ public class AttributeGroupServiceImpl extends ServiceImpl page (AttributeGroup attributeGroupQuery) { + List list = this.list(attributeGroupQuery); + List pageRespList = list.stream() + .map(attributeGroup -> + AttributeGroupPageResp.groupFunBuild( + attributeGroup, groupId -> attributeInfoService.attributeListByGroupId(groupId) + ) + ) + .toList(); + return TableDataInfo.builder() + .total(new PageInfo(list).getTotal()) + .rows(pageRespList) + .build(); + } + /** * 查询属性组列表 * @@ -40,7 +73,6 @@ public class AttributeGroupServiceImpl extends ServiceImpl list (AttributeGroup attributeGroup) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - if (ObjUtils.notNull(attributeGroup.getName())) { queryWrapper.like(AttributeGroup::getName, attributeGroup.getName()); } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AttributeInfoServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AttributeInfoServiceImpl.java index e542431..cfa5de5 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AttributeInfoServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AttributeInfoServiceImpl.java @@ -2,8 +2,12 @@ package com.muyu.product.service.impl; import java.util.List; +import com.muyu.common.core.exception.ServiceException; import com.muyu.common.core.utils.ObjUtils; +import com.muyu.product.domain.AsAttributeGroup; +import com.muyu.product.service.AsAttributeGroupService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.muyu.product.mapper.AttributeInfoMapper; import com.muyu.product.domain.AttributeInfo; @@ -21,6 +25,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @Service public class AttributeInfoServiceImpl extends ServiceImpl implements AttributeInfoService { + @Autowired + private AsAttributeGroupService asAttributeGroupService; + /** * 查询商品属性列表 * @@ -42,4 +49,25 @@ public class AttributeInfoServiceImpl extends ServiceImpl attributeListByGroupId (Long groupId) { + if (groupId == null){ + throw new ServiceException("查询商品属性组,属性组ID不可为空"); + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(AsAttributeGroup::getGroupId, groupId); + return this.listByIds( + asAttributeGroupService.list(queryWrapper).stream() + .map(AsAttributeGroup::getAttributeId) + .toList() + ); + } }