商品详情页面

master
rouchen 2024-03-25 20:05:21 +08:00
parent 9ef7aba9b8
commit abd068cfb0
11 changed files with 155 additions and 23 deletions

View File

@ -54,17 +54,17 @@ public class ProjectInfo extends BaseEntity {
/** 主类型 */
@Excel(name = "主类型")
@ApiModelProperty(name = "主类型", value = "主类型")
private String mianType;
private Long mianType;
/** 父类型 */
@Excel(name = "父类型")
@ApiModelProperty(name = "父类型", value = "父类型")
private String parentType;
private Long parentType;
/** 商品类型 */
@Excel(name = "商品类型")
@ApiModelProperty(name = "商品类型", value = "商品类型")
private String type;
private Long type;
/** 商品图片 */
@Excel(name = "商品图片")

View File

@ -29,5 +29,7 @@
}
]
"商品数量"
"商品"
"商品图片"
自由属性:[]
}

View File

@ -43,19 +43,19 @@ public class ProjectAddModel extends BaseEntity {
*
*/
@ApiModelProperty(name = "主类型",value = "主类型")
private String mianType;
private Long mianType;
/**
*
*/
@ApiModelProperty(name = "父类型",value = "父类型")
private String parentType;
private Long parentType;
/**
*
*/
@ApiModelProperty(name = "商品类型",value = "商品类型")
private String type;
private Long type;
/**
*

View File

@ -38,15 +38,15 @@ public class ProjectInfoEditReq extends BaseEntity {
/** 主类型 */
@ApiModelProperty(name = "主类型", value = "主类型")
private String mianType;
private Long mianType;
/** 父类型 */
@ApiModelProperty(name = "父类型", value = "父类型")
private String parentType;
private Long parentType;
/** 商品类型 */
@ApiModelProperty(name = "商品类型", value = "商品类型")
private String type;
private Long type;
/** 商品图片 */
@ApiModelProperty(name = "商品图片", value = "商品图片")

View File

@ -33,15 +33,15 @@ public class ProjectInfoQueryReq extends BaseEntity {
/** 主类型 */
@ApiModelProperty(name = "主类型", value = "主类型")
private String mianType;
private Long mianType;
/** 父类型 */
@ApiModelProperty(name = "父类型", value = "父类型")
private String parentType;
private Long parentType;
/** 商品类型 */
@ApiModelProperty(name = "商品类型", value = "商品类型")
private String type;
private Long type;
/** 商品图片 */
@ApiModelProperty(name = "商品图片", value = "商品图片")

View File

@ -0,0 +1,61 @@
package com.muyu.product.domain.resp;
import com.muyu.product.domain.*;
import com.muyu.product.domain.model.RuleAttrAddModel;
import com.muyu.product.domain.model.TemplateAttributeGroupModel;
import com.muyu.product.domain.model.TemplateAttributeModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* ProjectDetailResp
*
* @author LeYang
* on 2024/3/25
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ProjectDetailResp {
/**
*
*/
private List<CategoryInfo> categoryInfoList;
/**
*
*/
private ProjectInfo projectInfo;
/**
*
*/
private BrandInfo brandInfo;
/**
* sku
*/
private List<ProjectSkuInfo> projectSkuInfoList;
/**
*
*/
private List<AsProductAttributeInfo> productAttributeInfoList;
/**
*
*/
private List<RuleAttrAddModel> ruleAttrAddModelList;
/**
*
*/
private List<TemplateAttributeModel> attributeInfoList;
/**
*
*/
private List<TemplateAttributeGroupModel> attributeGroupList;
}

View File

@ -9,6 +9,7 @@ import com.muyu.product.domain.ProjectSkuInfo;
import com.muyu.product.domain.model.CategoryInfoSaveModel;
import com.muyu.product.domain.model.ProductSkuModel;
import com.muyu.product.domain.model.ProjectAddModel;
import com.muyu.product.domain.resp.ProjectDetailResp;
import com.muyu.product.service.AsProductAttributeInfoService;
import com.muyu.product.service.ProjectSkuInfoService;
import io.swagger.annotations.*;
@ -76,12 +77,22 @@ public class ProjectInfoController extends BaseController {
ExcelUtil<ProjectInfo> util = new ExcelUtil<ProjectInfo>(ProjectInfo.class);
util.exportExcel(response, list, "商品信息数据");
}
/**
*
*/
@ApiOperation("获取商品信息详细信息")
@RequiresPermissions("product:info:query")
@GetMapping(value = "/detail/{id}")
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
public Result<ProjectDetailResp> getDetailInfo(@PathVariable("id") Long id) {
return Result.success(projectInfoService.getDetailInfo(id));
}
/**
*
*/
@ApiOperation("获取商品信息详细信息")
@RequiresPermissions("product:info:query")
@GetMapping(value = "/{id}")
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
public Result<ProjectAddModel> getInfo(@PathVariable("id") Long id) {

View File

@ -75,4 +75,6 @@ public interface CategoryInfoService extends IService<CategoryInfo> {
CategoryInfoSaveModel getCategoryInfoByProjectId(Long id);
public <T,AS> List<T> getCommon(Long categoryId,IService<AS> iService,IService<T> bsiService);
}

View File

@ -7,6 +7,7 @@ import com.muyu.product.domain.model.ProductSkuModel;
import com.muyu.product.domain.model.ProjectAddModel;
import com.muyu.product.domain.req.ProjectInfoEditReq;
import com.muyu.product.domain.req.ProjectInfoSaveReq;
import com.muyu.product.domain.resp.ProjectDetailResp;
/**
* Service
@ -29,4 +30,6 @@ public interface ProjectInfoService extends IService<ProjectInfo> {
boolean updateInfo(ProjectInfoEditReq projectInfoEditReq);
boolean del(List<Long> ids);
ProjectDetailResp getDetailInfo(Long id);
}

View File

@ -62,6 +62,7 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
@Autowired
private AttributeGroupService attributeGroupService;
/**
*
*
@ -236,7 +237,7 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
return attributeInfoList;
}
@Override
public <T, AS> List<T> getCommon (Long categoryId, IService<AS> iService, IService<T> bsiService) {
List<T> list = new ArrayList();
QueryWrapper<AS> asQueryWrapper = new QueryWrapper<>();
@ -431,4 +432,6 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
public CategoryInfoSaveModel getCategoryInfoByProjectId(Long id) {
return categoryInfoMapper.getCategoryInfoByProjectId(id);
}
}

View File

@ -1,16 +1,17 @@
package com.muyu.product.service.impl;
import java.util.ArrayList;
import java.util.List;
import com.muyu.common.core.utils.ObjUtils;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.product.domain.*;
import com.muyu.product.domain.model.AttrValueModel;
import com.muyu.product.domain.model.CategoryInfoSaveModel;
import com.muyu.product.domain.model.ProductSkuModel;
import com.muyu.product.domain.model.ProjectAddModel;
import com.muyu.product.domain.model.*;
import com.muyu.product.domain.req.ProjectInfoEditReq;
import com.muyu.product.domain.req.ProjectInfoSaveReq;
import com.muyu.product.domain.resp.CategoryCommonElementResp;
import com.muyu.product.domain.resp.ProjectDetailResp;
import com.muyu.product.mapper.AsCategoryAttributeGroupMapper;
import com.muyu.product.mapper.CategoryInfoMapper;
import com.muyu.product.mapper.ProjectSkuInfoMapper;
import com.muyu.product.service.*;
@ -34,6 +35,20 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
private AsProductAttributeInfoService asProductAttributeInfoService;
@Autowired
private ProjectSkuInfoService projectSkuInfoService;
@Autowired
private CategoryInfoService categoryInfoService;
@Autowired
private RuleAttrInfoServiceImpl ruleAttrInfoService;
@Autowired
private AsCategoryAttributeService asCategoryAttributeService;
@Autowired
private AsCategoryAttributeGroupService asCategoryAttributeGroupService;
@Autowired
private AttributeGroupService attributeGroupService;
@Autowired
private AttributeInfoService attributeInfoService;
@Autowired
private BrandInfoService brandInfoService;
/**
*
*
@ -85,10 +100,6 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
queryWrapper.eq(ProjectInfo::getBrandId, projectInfo.getBrandId());
}
return list(queryWrapper);
}
@ -199,4 +210,43 @@ private AsBrandProjectService asBrandProjectService;
return false;
}
@Override
public ProjectDetailResp getDetailInfo(Long id) {
//商品信息获取
ProjectInfo projectInfo = this.getById(id);
//品牌信息
BrandInfo brandInfo =this.brandInfoService.getById(projectInfo.getBrandId());
//品类集合
List<CategoryInfo> categoryInfoList = categoryInfoService.listByIds(new ArrayList<>() {{
add(projectInfo.getMianType());
add(projectInfo.getParentType());
add(projectInfo.getType());
}});
//商品sku集合
List<ProjectSkuInfo> projectSkuInfoList = this.projectSkuInfoService.list(new LambdaQueryWrapper<>() {{
eq(ProjectSkuInfo::getProjectId, id);
}});
//商品和属性集合
List<AsProductAttributeInfo> productAttributeInfoList = this.asProductAttributeInfoService.list(new LambdaQueryWrapper<AsProductAttributeInfo>() {{
eq(AsProductAttributeInfo::getProductId, id);
}});
//商品规格
List<RuleAttrAddModel> ruleAttrModelList = this.ruleAttrInfoService.list(new LambdaQueryWrapper<RuleAttrInfo>() {{
eq(RuleAttrInfo::getRuleId, projectInfo.getRuleId());
}}).stream()
.map(RuleAttrAddModel::infoBuild).toList();
CategoryCommonElementResp templateAttribute = this.categoryInfoService.getTemplateAttributeByCateGoryId(projectInfo.getType());
return ProjectDetailResp.builder()
.projectInfo(projectInfo)
.brandInfo(brandInfo)
.categoryInfoList(categoryInfoList)
.projectSkuInfoList(projectSkuInfoList)
.productAttributeInfoList(productAttributeInfoList)
.ruleAttrAddModelList(ruleAttrModelList)
.attributeInfoList(templateAttribute.getTemplateAttributeList())
.attributeGroupList(templateAttribute.getTemplateAttributeGroupList())
.build();
}
}