商品详情页

master
DongZeLiang 2024-03-25 11:46:41 +08:00
parent 09a2da4f04
commit 48b64bbc0d
10 changed files with 164 additions and 19 deletions

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,59 @@
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;
/**
* @author DongZl
* @description:
* @Date 2024-3-25 10:46
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProjectDetailResp {
/**
*
*/
private List<CategoryInfo> categoryInfoList;
/**
*
*/
private ProjectInfo projectInfo;
/**
* Sku
*/
private List<ProjectSkuInfo> projectSkuInfoList;
/**
*
*/
private List<AsProductAttributeInfo> productAttributeInfoList;
/**
*
*/
private List<RuleAttrAddModel> ruleAttrModelList;
/**
*
*/
private List<TemplateAttributeModel> attributeInfoList;
/**
*
*/
private List<TemplateAttributeGroupModel> attributeGroupList;
}

View File

@ -3,6 +3,7 @@ package com.muyu.product.controller;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.muyu.product.domain.resp.ProjectDetailResp;
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;
@ -75,6 +76,17 @@ public class ProjectInfoController extends BaseController {
return Result.success(projectInfoService.getById(id)); return Result.success(projectInfoService.getById(id));
} }
/**
*
*/
@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));
}
/** /**
* *
*/ */

View File

@ -67,4 +67,6 @@ public interface CategoryInfoService extends IService<CategoryInfo> {
* @return * @return
*/ */
CategoryCommonElementResp getTemplateAttributeByCateGoryId (Long cateGoryId); CategoryCommonElementResp getTemplateAttributeByCateGoryId (Long cateGoryId);
public <T, AS> List<T> getCommon (Long categoryId, IService<AS> iService, IService<T> bsiService);
} }

View File

@ -4,6 +4,7 @@ import java.util.List;
import com.muyu.product.domain.ProjectInfo; import com.muyu.product.domain.ProjectInfo;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.product.domain.req.ProjectInfoSaveReq; import com.muyu.product.domain.req.ProjectInfoSaveReq;
import com.muyu.product.domain.resp.ProjectDetailResp;
/** /**
* Service * Service
@ -26,4 +27,11 @@ public interface ProjectInfoService extends IService<ProjectInfo> {
* @return * @return
*/ */
boolean save (ProjectInfoSaveReq projectInfoSaveReq); boolean save (ProjectInfoSaveReq projectInfoSaveReq);
/**
* ID
* @param id ID
* @return
*/
ProjectDetailResp getDetailInfo (Long id);
} }

View File

@ -232,7 +232,7 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
return attributeInfoList; return attributeInfoList;
} }
@Override
public <T, AS> List<T> getCommon (Long categoryId, IService<AS> iService, IService<T> bsiService) { public <T, AS> List<T> getCommon (Long categoryId, IService<AS> iService, IService<T> bsiService) {
List<T> list = new ArrayList(); List<T> list = new ArrayList();
QueryWrapper<AS> asQueryWrapper = new QueryWrapper<>(); QueryWrapper<AS> asQueryWrapper = new QueryWrapper<>();

View File

@ -1,23 +1,24 @@
package com.muyu.product.service.impl; package com.muyu.product.service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import com.muyu.common.core.utils.ObjUtils; import com.muyu.common.core.utils.ObjUtils;
import com.muyu.common.security.utils.SecurityUtils; import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.product.domain.AsProductAttributeInfo; import com.muyu.product.domain.*;
import com.muyu.product.domain.ProjectSkuInfo;
import com.muyu.product.domain.model.AttrValueModel; import com.muyu.product.domain.model.AttrValueModel;
import com.muyu.product.domain.model.ProductSkuModel; import com.muyu.product.domain.model.ProductSkuModel;
import com.muyu.product.domain.model.ProjectAddModel; import com.muyu.product.domain.model.ProjectAddModel;
import com.muyu.product.domain.model.RuleAttrAddModel;
import com.muyu.product.domain.req.ProjectInfoSaveReq; import com.muyu.product.domain.req.ProjectInfoSaveReq;
import com.muyu.product.service.AsProductAttributeInfoService; import com.muyu.product.domain.resp.CategoryCommonElementResp;
import com.muyu.product.service.ProjectSkuInfoService; import com.muyu.product.domain.resp.ProjectDetailResp;
import com.muyu.product.service.*;
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 com.muyu.product.mapper.ProjectInfoMapper; import com.muyu.product.mapper.ProjectInfoMapper;
import com.muyu.product.domain.ProjectInfo;
import com.muyu.product.service.ProjectInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -37,6 +38,25 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
@Autowired @Autowired
private ProjectSkuInfoService projectSkuInfoService; private ProjectSkuInfoService projectSkuInfoService;
@Autowired
private CategoryInfoService categoryInfoService;
@Autowired
private RuleAttrInfoService ruleAttrInfoService;
@Autowired
private AsCategoryAttributeService asCategoryAttributeService;
@Autowired
private AsCategoryAttributeGroupService asCategoryAttributeGroupService;
@Autowired
private AttributeGroupService attributeGroupService;
@Autowired
private AttributeInfoService attributeInfoService;
/** /**
* *
* *
@ -127,4 +147,48 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
} }
return save; return save;
} }
/**
* ID
*
* @param id ID
* @return
*/
@Override
public ProjectDetailResp getDetailInfo (Long id) {
// 商品信息获取
ProjectInfo projectInfo = this.getById(id);
// 品类集合
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<>() {{
eq(AsProductAttributeInfo::getProductId, id);
}});
// 商品规格
List<RuleAttrAddModel> ruleAttrModelList = ruleAttrInfoService.list(new LambdaQueryWrapper<>() {{
eq(RuleAttrInfo::getRuleId, projectInfo.getRuleId());
}}).stream()
.map(RuleAttrAddModel::infoBuild).toList();
CategoryCommonElementResp templateAttribute = this.categoryInfoService.getTemplateAttributeByCateGoryId(projectInfo.getType());
return ProjectDetailResp.builder()
.projectInfo(projectInfo)
.categoryInfoList(categoryInfoList)
.projectSkuInfoList(projectSkuInfoList)
.productAttributeInfoList(productAttributeInfoList)
.ruleAttrModelList(ruleAttrModelList)
.attributeInfoList(templateAttribute.getTemplateAttributeList())
.attributeGroupList(templateAttribute.getTemplateAttributeGroupList())
.build();
}
} }