商品详情页
parent
09a2da4f04
commit
48b64bbc0d
|
@ -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 = "商品图片")
|
||||||
|
|
|
@ -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 = "商品图片")
|
||||||
|
|
|
@ -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 = "商品图片")
|
||||||
|
|
|
@ -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 = "商品图片")
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
|
@ -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));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增商品信息
|
* 新增商品信息
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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<>();
|
||||||
|
|
|
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue