商品属性组列表

master
DongZeLiang 2024-02-28 16:51:53 +08:00
parent 94d0d2e0e9
commit 5f4785bf7c
6 changed files with 144 additions and 4 deletions

View File

@ -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<AttributeInfo> attributeInfoList;
public static AttributeGroupPageResp groupBuild (AttributeGroup attributeGroup, List<AttributeInfo> attributeInfos) {
return AttributeGroupPageResp.builder()
.id(attributeGroup.getId())
.name(attributeGroup.getName())
.states(attributeGroup.getStates())
.attributeInfoList(attributeInfos)
.build();
}
public static AttributeGroupPageResp groupFunBuild (AttributeGroup attributeGroup, Function<Long,List<AttributeInfo> > function) {
return AttributeGroupPageResp.builder()
.id(attributeGroup.getId())
.name(attributeGroup.getName())
.states(attributeGroup.getStates())
.attributeInfoList(function.apply(attributeGroup.getId()))
.build();
}
}

View File

@ -4,6 +4,7 @@ import java.util.List;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.muyu.product.domain.model.AttributeGroupSaveModel; import com.muyu.product.domain.model.AttributeGroupSaveModel;
import com.muyu.product.domain.resp.AttributeGroupPageResp;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -46,10 +47,11 @@ public class AttributeGroupController extends BaseController {
@ApiOperation("获取属性组列表") @ApiOperation("获取属性组列表")
@RequiresPermissions("product:attributeGroup:list") @RequiresPermissions("product:attributeGroup:list")
@GetMapping("/list") @GetMapping("/list")
public Result<TableDataInfo<AttributeGroup>> list(AttributeGroupQueryReq attributeGroupQueryReq) { public Result<TableDataInfo<AttributeGroupPageResp>> list(AttributeGroupQueryReq attributeGroupQueryReq) {
startPage(); startPage();
List<AttributeGroup> list = attributeGroupService.list(AttributeGroup.queryBuild(attributeGroupQueryReq)); TableDataInfo<AttributeGroupPageResp> tableDataInfo =
return getDataTable(list); attributeGroupService.page(AttributeGroup.queryBuild(attributeGroupQueryReq));
return Result.success(tableDataInfo);
} }
/** /**

View File

@ -1,9 +1,13 @@
package com.muyu.product.service; package com.muyu.product.service;
import java.util.List; import java.util.List;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.product.domain.AttributeGroup; import com.muyu.product.domain.AttributeGroup;
import com.baomidou.mybatisplus.extension.service.IService; 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.model.AttributeGroupSaveModel;
import com.muyu.product.domain.resp.AttributeGroupPageResp;
/** /**
* Service * Service
@ -12,6 +16,14 @@ import com.muyu.product.domain.model.AttributeGroupSaveModel;
* @date 2024-02-27 * @date 2024-02-27
*/ */
public interface AttributeGroupService extends IService<AttributeGroup> { public interface AttributeGroupService extends IService<AttributeGroup> {
/**
*
* @param attributeGroup
* @return
*/
public TableDataInfo<AttributeGroupPageResp> page(AttributeGroup attributeGroup);
/** /**
* *
* *
@ -26,4 +38,5 @@ public interface AttributeGroupService extends IService<AttributeGroup> {
* @return * @return
*/ */
public Boolean save(AttributeGroupSaveModel attributeGroupSaveModel); public Boolean save(AttributeGroupSaveModel attributeGroupSaveModel);
} }

View File

@ -19,4 +19,10 @@ public interface AttributeInfoService extends IService<AttributeInfo> {
*/ */
public List<AttributeInfo> list(AttributeInfo attributeInfo); public List<AttributeInfo> list(AttributeInfo attributeInfo);
/**
* groupId
* @param groupId Id
* @return
*/
public List<AttributeInfo> attributeListByGroupId(Long groupId);
} }

View File

@ -2,19 +2,26 @@ package com.muyu.product.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.utils.ObjUtils;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.product.domain.AsAttributeGroup; import com.muyu.product.domain.AsAttributeGroup;
import com.muyu.product.domain.AttributeGroup; import com.muyu.product.domain.AttributeGroup;
import com.muyu.product.domain.AttributeInfo;
import com.muyu.product.domain.model.AttributeGroupSaveModel; import com.muyu.product.domain.model.AttributeGroupSaveModel;
import com.muyu.product.domain.resp.AttributeGroupPageResp;
import com.muyu.product.mapper.AttributeGroupMapper; import com.muyu.product.mapper.AttributeGroupMapper;
import com.muyu.product.service.AsAttributeGroupService; import com.muyu.product.service.AsAttributeGroupService;
import com.muyu.product.service.AttributeGroupService; import com.muyu.product.service.AttributeGroupService;
import com.muyu.product.service.AttributeInfoService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.function.Function;
import java.util.stream.Stream;
/** /**
* Service * Service
@ -29,6 +36,32 @@ public class AttributeGroupServiceImpl extends ServiceImpl<AttributeGroupMapper,
@Autowired @Autowired
private AsAttributeGroupService attributeGroupService; private AsAttributeGroupService attributeGroupService;
@Autowired
private AttributeInfoService attributeInfoService;
/**
*
*
* @param attributeGroupQuery
*
* @return
*/
@Override
public TableDataInfo<AttributeGroupPageResp> page (AttributeGroup attributeGroupQuery) {
List<AttributeGroup> list = this.list(attributeGroupQuery);
List<AttributeGroupPageResp> pageRespList = list.stream()
.map(attributeGroup ->
AttributeGroupPageResp.groupFunBuild(
attributeGroup, groupId -> attributeInfoService.attributeListByGroupId(groupId)
)
)
.toList();
return TableDataInfo.<AttributeGroupPageResp>builder()
.total(new PageInfo(list).getTotal())
.rows(pageRespList)
.build();
}
/** /**
* *
* *
@ -40,7 +73,6 @@ public class AttributeGroupServiceImpl extends ServiceImpl<AttributeGroupMapper,
public List<AttributeGroup> list (AttributeGroup attributeGroup) { public List<AttributeGroup> list (AttributeGroup attributeGroup) {
LambdaQueryWrapper<AttributeGroup> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<AttributeGroup> queryWrapper = new LambdaQueryWrapper<>();
if (ObjUtils.notNull(attributeGroup.getName())) { if (ObjUtils.notNull(attributeGroup.getName())) {
queryWrapper.like(AttributeGroup::getName, attributeGroup.getName()); queryWrapper.like(AttributeGroup::getName, attributeGroup.getName());
} }

View File

@ -2,8 +2,12 @@ package com.muyu.product.service.impl;
import java.util.List; import java.util.List;
import com.muyu.common.core.exception.ServiceException;
import com.muyu.common.core.utils.ObjUtils; 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 lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.muyu.product.mapper.AttributeInfoMapper; import com.muyu.product.mapper.AttributeInfoMapper;
import com.muyu.product.domain.AttributeInfo; import com.muyu.product.domain.AttributeInfo;
@ -21,6 +25,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@Service @Service
public class AttributeInfoServiceImpl extends ServiceImpl<AttributeInfoMapper, AttributeInfo> implements AttributeInfoService { public class AttributeInfoServiceImpl extends ServiceImpl<AttributeInfoMapper, AttributeInfo> implements AttributeInfoService {
@Autowired
private AsAttributeGroupService asAttributeGroupService;
/** /**
* *
* *
@ -42,4 +49,25 @@ public class AttributeInfoServiceImpl extends ServiceImpl<AttributeInfoMapper, A
return list(queryWrapper); return list(queryWrapper);
} }
/**
* groupId
*
* @param groupId Id
*
* @return
*/
@Override
public List<AttributeInfo> attributeListByGroupId (Long groupId) {
if (groupId == null){
throw new ServiceException("查询商品属性组属性组ID不可为空");
}
LambdaQueryWrapper<AsAttributeGroup> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AsAttributeGroup::getGroupId, groupId);
return this.listByIds(
asAttributeGroupService.list(queryWrapper).stream()
.map(AsAttributeGroup::getAttributeId)
.toList()
);
}
} }