1. 商品分类业务功能
1.1 商品状态修改
1.1.1 业务接口文档
1.1.2 页面JS分析
- 作用域插槽获取当前行对象
- 实现商品分类Ajax请求
1.1.3 编辑ItemCatController
1.1.4 编辑ItemCatService
1.2 ElementUI-对话框用法
1.2.1 页面HTML
<el-dialog
title="提示AAAA"
:visible.sync="dialogVisible"
width="30%">
<span>这是一段信息</span>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="dialogVisible = false">确 定</el-button>
</span>
</el-dialog>
1.2.2 页面JS
1.3 商品分类新增
1.3.1 业务接口文档说明
1.3.2 页面JS分析
1.3.3 编辑ItemCatController
1.3.4 编辑ItemCatService
1.3.5 关于Bug解决
说明: 如果新增商品分类中报错,则在查询3级列表展现时.添加条件控制
1.4 商品分类删除
1.4.1 删除业务说明
说明: 如果用户删除1级,则应该将所有的子级信息全部删除.
1.4.2 删除业务接口
1.4.3 页面JS分析
1.4.4 编辑ItemCatController
/**
* 实现商品分类删除操作
* URL: /itemCat/deleteItemCat?id=xxx&level=xxx
* 返回值: SysResult对象
*/
@DeleteMapping("/deleteItemCat")
public SysResult deleteItemCat(ItemCat itemCat){
itemCatService.deleteItemCat(itemCat);
return SysResult.success();
}
1.4.4 编辑ItemCatService
/**
* 策略: 如果是父级,则应该删除子级
* @param itemCat
*/
@Override
@Transactional
public void deleteItemCat(ItemCat itemCat) {
//1.判断是否为三级菜单
if(itemCat.getLevel() == 3){
//如果是三级.则直接删除
itemCatMapper.deleteById(itemCat.getId());
return; //程序终止.
}
//2.检查菜单是否为二级
if(itemCat.getLevel() == 2){
//应该先删除三级 根据parent_id= 2级ID即可.
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("parent_id",itemCat.getId());
itemCatMapper.delete(queryWrapper);
//再删除2级菜单
itemCatMapper.deleteById(itemCat.getId());
return;
}
//删除1级商品分类信息 先删除3级.再删除2级.
//1.首先获取商品分类2级信息 parent_id= 1级ID
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("parent_id",itemCat.getId());
List<ItemCat> twoList = itemCatMapper.selectList(queryWrapper);
for (ItemCat twoItemCat : twoList){
queryWrapper.clear();
queryWrapper.eq("parent_id",twoItemCat.getId());
itemCatMapper.delete(queryWrapper);//删除3级菜单
itemCatMapper.deleteById(twoItemCat.getId());//删除2级
}
itemCatMapper.deleteById(itemCat.getId()); //删除1级.
}
2.商品列表展现
2.1 商品列表跳转
业务需求: 当用户跳转到/item 应该跳转到Item.vue页面
2.2 商品列表展现
2.2.1 业务接口实现
2.2.2 页面JS分析
2.2.3 Item表结构
2.2.4 Item POJO对象
2.2.5 编辑ItemController
@RestController
@CrossOrigin
@RequestMapping("/item")
public class ItemController {
@Autowired
private ItemService itemService;
/**
* URL地址:/item/getItemList?query=&pageNum=1&pageSize=10
* 参数: pageResult对象
* 返回值: SysResult(pageResult)
*/
@GetMapping("/getItemList")
public SysResult getItemList(PageResult pageResult){
pageResult = itemService.getItemList(pageResult);
return SysResult.success(pageResult);
}
}
2.2.6 编辑ItemService
@Service
public class ItemServiceImpl implements ItemService{
@Autowired
private ItemMapper itemMapper;
/**
* 1.手写Sql 一种写法
* 2.利用MP机制实现分页
* @param pageResult
* @return
*/
@Override
public PageResult getItemList(PageResult pageResult) {//3个
IPage page = new Page(pageResult.getPageNum(),pageResult.getPageSize());
QueryWrapper queryWrapper = new QueryWrapper();
boolean flag = StringUtils.hasLength(pageResult.getQuery());
queryWrapper.like(flag,"title",pageResult.getQuery());
//执行分页查询,返回值依然是分页对象信息
page = itemMapper.selectPage(page,queryWrapper);
//回传5个参数 total/分页后的数据
long total = page.getTotal();
List<Item> rows = page.getRecords();
return pageResult.setTotal(total).setRows(rows);
}
}