中国加油,武汉加油!
篇幅较长,请配合目录观看
项目准备
- 本案例基于 谷粒商场篇】第三天
- 平台属性功能设计 pms_base_attr_info 和 pms_base_attr_value 表
- 平台属性和商品分类之间是多对多关系
- 平台属性和商品之间一对多关系
- 商品spu列表涉及表 pms_product_info
- 添加spu商品涉及表 pms_product_image
- 商品的平台属性是属于电商平台后台管理(整个商品平台维度下)
- 商品的销售属性的属于商家管理(某一个商品维度下)
- 销售属性字典涉及表 pms_base_sale_attr
1. 添加平台属性
1.1 gmall-manage-web的Controller添加方法
@RequestMapping("saveAttrInfo")
@ResponseBody
public String saveAttrInfo(@RequestBody PmsBaseAttrInfo pmsBaseAttrInfo){
String success = iAttrService.saveAttrInfo(pmsBaseAttrInfo);
return success;
}
1.2 gmall-api的IAttrServie添加方法
String saveAttrInfo(PmsBaseAttrInfo pmsBaseAttrInfo);
1.3 gmall-manage-service的impl重写方法
@Override
public String saveAttrInfo(PmsBaseAttrInfo pmsBaseAttrInfo) {
// 保存属性
pmsBaseAttrInfoMapper.insertSelective(pmsBaseAttrInfo); // insertSelective 是否将null插入数据库
List<PmsBaseAttrValue> attrValueList = pmsBaseAttrInfo.getAttrValueList();
for (PmsBaseAttrValue pmsBaseAttrValue : attrValueList) {
pmsBaseAttrValue.setAttrId(pmsBaseAttrInfo.getId());
pmsBaseAttrValueMapper.insertSelective(pmsBaseAttrValue);
}
return "success";
}
2. 修改平台属性
2.1 gmall-manage-web的Controller添加方法
@RequestMapping("getAttrValueList")
@ResponseBody
public List<PmsBaseAttrValue> getAttrValueList(String attrId){
List<PmsBaseAttrValue> pmsBaseAttrValues = iAttrService.getAttrListValue(attrId);
return pmsBaseAttrValues;
}
2.2 gmall-api的Service添加方法
List<PmsBaseAttrValue> getAttrListValue(String attrId);
2.3 gmall-manage-service的impl添加方法
/**
*查询平台属性
* @param attrId
* @return
*/
@Override
public List<PmsBaseAttrValue> getAttrListValue(String attrId) {
PmsBaseAttrValue pmsBaseAttrValue = new PmsBaseAttrValue();
pmsBaseAttrValue.setAttrId(attrId);
List<PmsBaseAttrValue> pmsBaseAttrValues = pmsBaseAttrValueMapper.select(pmsBaseAttrValue);
return pmsBaseAttrValues;
}
2.4 修改gmall-manage-service的impl的saveAttrInfo方法
@Override
public String saveAttrInfo(PmsBaseAttrInfo pmsBaseAttrInfo) {
String id = pmsBaseAttrInfo.getId();
if(StringUtils.isBlank(id)){
// id为空 保存
pmsBaseAttrInfoMapper.insertSelective(pmsBaseAttrInfo); // insertSelective 是否将null插入数据库
List<PmsBaseAttrValue> attrValueList = pmsBaseAttrInfo.getAttrValueList();
for (PmsBaseAttrValue pmsBaseAttrValue : attrValueList) {
pmsBaseAttrValue.setAttrId(pmsBaseAttrInfo.getId());
pmsBaseAttrValueMapper.insertSelective(pmsBaseAttrValue);
}
} else {
// id不为空 修改
// 属性
Example example = new Example(PmsBaseAttrInfo.class);
example.createCriteria().andEqualTo("id", pmsBaseAttrInfo.getId());
pmsBaseAttrInfoMapper.updateByExampleSelective(pmsBaseAttrInfo, example);
// 值
List<PmsBaseAttrValue> attrValueList = pmsBaseAttrInfo.getAttrValueList();
// 按照属性id删除所有属性值
PmsBaseAttrValue pmsBaseAttrValueDel = new PmsBaseAttrValue();
pmsBaseAttrValueDel.setAttrId(pmsBaseAttrInfo.getId());
pmsBaseAttrValueMapper.delete(pmsBaseAttrValueDel);
// 删除后插入新的属性值
for (PmsBaseAttrValue pmsBaseAttrValue : attrValueList) {
pmsBaseAttrValue.setAttrId(pmsBaseAttrInfo.getId());
pmsBaseAttrValueMapper.insertSelective(pmsBaseAttrValue);
}
}
return "success";
}
2.5 重启2个程序入口,刷新前端页面
3. 查询商品spu列表
3.1 gmall-manage-service添加Mapper
package com.wpj.gmall.manage.mapper;
import com.wpj.gmall.bean.PmsProductInfo;
import tk.mybatis.mapper.common.Mapper;
public interface PmsProductInfoMapper extends Mapper<PmsProductInfo> {
}
3.2 gmall-api添加Service
package com.wpj.gmall.service;
import com.wpj.gmall.bean.PmsProductInfo;
import java.util.List;
public interface ISpuService {
List<PmsProductInfo> spuList(String catalog3Id);
}
3.3 gmall-manage-service添加ServiceImpl
package com.wpj.gmall.manage.service.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.wpj.gmall.bean.PmsProductInfo;
import com.wpj.gmall.manage.mapper.PmsProductInfoMapper;
import com.wpj.gmall.service.ISpuService;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
@Service
public class SpuServiceImpl implements ISpuService {
@Autowired
private PmsProductInfoMapper pmsProductInfoMapper;
@Override
public List<PmsProductInfo> spuList(String catalog3Id) {
PmsProductInfo pmsProductInfo = new PmsProductInfo();
pmsProductInfo.setCatalog3Id(catalog3Id);
List<PmsProductInfo> pmsProductInfos = pmsProductInfoMapper.select(pmsProductInfo);
return pmsProductInfos;
}
}
3.4 gmall-manage-web添加Controller
package com.wpj.gmall.manage.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.wpj.gmall.bean.PmsProductInfo;
import com.wpj.gmall.service.ISpuService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
@CrossOrigin
public class SpuController {
@Reference
private ISpuService iSpuService;
@RequestMapping("spuList")
@ResponseBody
public List<PmsProductInfo> spuList(String catalog3Id){
List<PmsProductInfo> pmsProductInfos = iSpuService.spuList(catalog3Id);
return pmsProductInfos;
}
}
3.5 修改前端项目
- E:\codeDevelop\nodeDevelop\gmall-admin\src\views\product\spu\list.vue
- E:\codeDevelop\nodeDevelop\gmall-admin\src\views\product\components\SpuForm.vue
- 前面2个vue文件的spuName全部替换成productName
3.6 重启程序入口并访问测试
4. 查询销售属性
4.1 manage-web的AttrController添加方法
/**
* 查询商品销售属性
* @return
*/
@RequestMapping("baseSaleAttrList")
@ResponseBody
public List<PmsBaseSaleAttr> baseSaleAttrList(){
List<PmsBaseSaleAttr> pmsBaseSaleAttrs = iAttrService.baseSaleAttrList();
return pmsBaseSaleAttrs;
}
4.2 manage-api的service添加方法
List<PmsBaseSaleAttr> baseSaleAttrList();
4.3 manage-service的impl实现方法
/**
* 查询商品销售属性
* @return
*/
@Override
public List<PmsBaseSaleAttr> baseSaleAttrList() {
List<PmsBaseSaleAttr> pmsBaseSaleAttrs = pmsBaseSaleAttrMapper.selectAll();
return pmsBaseSaleAttrs;
}
4.4 manage-service的编写Mapper
package com.wpj.gmall.manage.mapper;
import com.wpj.gmall.bean.PmsBaseSaleAttr;
import tk.mybatis.mapper.common.Mapper;
public interface PmsBaseSaleAttrMapper extends Mapper<PmsBaseSaleAttr> {
}