目录
1.商品删除、下架、上架效果展示
选中一件商品,点击删除
提示是否删除
点击确认,提示删除成功
然后商品状态修改为删除
下架上架效果相同,不在赘述。
支持批量商品删除、下架、上架
提示
点击确认
状态变为下架
选中,点击上架,状态变为正常
2.前端
在item-list.jsp页面中
删除
下架
上架
可以发现,请求的都是相似url:/rest/item/xxxx ,参数都是params = {"ids":ids}。
提示成功后都会$("#itemList").datagrid("reload");刷新当前页面。
最后在common.js中,需要修改一点代码
// 格式化商品的状态
formatItemStatus : function formatStatus(val,row){
if (val == 1){
return '正常';
} else if(val == 2){
return '<span style="color:red;">下架</span>';
} else if(val == 3){
return '<span style="color:red;">删除</span>';
} else {
return '未知';
}
},
item-list.jsp页面中,格式化状态时需要用
3.后端
3.1后端分析
商品删除、下架、上架本质上都是修改tb_item表中的状态。
所以我们只需要编写一个方法即可根据,请求的方法修改商品状态为1,2,3
3.2服务层
在taotao-manager-interface的ItemService中编写接口
/**
* 更新商品状态
*/
TaotaoResult updateItemStatus(List<Long> ids,String method);
在taotao-manager-service的ItemServiceImpl编写实现类
因为可以批量删除、下架、上架,所以id用list保存
/**
* 根据id,更新商品状态1-正常,2-下架,3-删除
*/
@Override
public TaotaoResult updateItemStatus(List<Long> ids, String method) {
TbItem item = new TbItem();
if (method.equals("reshelf")) {
// 正常,更新status=3即可
item.setStatus((byte) 1);
} else if (method.equals("instock")) {
// 下架,更新status=3即可
item.setStatus((byte) 2);
} else if (method.equals("delete")) {
// 删除,更新status=3即可
item.setStatus((byte) 3);
}
for (Long id : ids) {
// 创建查询条件,根据id更新
TbItemExample tbItemExample = new TbItemExample();
Criteria criteria = tbItemExample.createCriteria();
criteria.andIdEqualTo(id);
// 第一个参数 是要修改的部分值组成的对象,其中有些属性为null则表示该项不修改。
// 第二个参数 是一个对应的查询条件的类, 通过这个类可以实现 order by 和一部分的where 条件。
itemMapper.updateByExampleSelective(item, tbItemExample);
}
return TaotaoResult.ok();
}
3.3表现层
在taotao-manager-web的ItemCotroller编写controller
我们使用rset的风格动态执行方法
/**
* 更新商品状态
*/
@RequestMapping("/rest/item/{method}")
@ResponseBody
public TaotaoResult updateItemStatus(@RequestParam(value="ids")List<Long> ids,@PathVariable String method) {
TaotaoResult result = itemService.updateItemStatus(ids,method);
return result;
}
至此商品删除、下架、上架功能完成