商品编辑、商品删除、商品上架下架。
功能分析: item-list.jsp
我们再来看看item-add.jsp,先看看隐藏域
再来看看URL部分
请求URL: /item/update 参数: 表单数据(TbItem) 返回值:Taotaoresult
业务逻辑: 根据商品id,更新商品表,条件更新。 根据商品id,更新商品描述表,条件更新。 TaotaoResult.ok()。
1)Dao 单表更新商品数据,直接使用逆向工程生成的Mapper。
2)Service 接口代码:
/**
* 更新商品
* @param item
* @param desc
* @return
*/
TaotaoResult updateItem(TbItem item, String desc);
ItemServiceImpl实现类代码:
@Override
public TaotaoResult updateItem(TbItem item, String desc) {
// 1、根据商品id,更新商品表,条件更新
TbItemExample itemExample = new TbItemExample();
Criteria criteria = itemExample.createCriteria();
criteria.andIdEqualTo(item.getId());
itemMapper.updateByExampleSelective(item, itemExample);
// 2、根据商品id,更新商品描述表,条件更新
TbItemDesc itemDesc = new TbItemDesc();
itemDesc.setItemDesc(desc);
TbItemDescExample itemDescExample = new TbItemDescExample();
com.taotao.pojo.TbItemDescExample.Criteria createCriteria =itemDescExample.createCriteria();
createCriteria.andItemIdEqualTo(item.getId());
itemDescMapper.updateByExampleSelective(itemDesc, itemDescExample);
return TaotaoResult.ok();
}
3)发布服务 在taotao-manager-service工程applicationContext-service.xml中发布服务
4)引用服务 在taotao-manager-web工程springmvc.xml中引用服务
5)Controller
/**
* 更新(修改)商品
* @param item
* @param desc
* @return
*/
@RequestMapping("/update")
@ResponseBody
public TaotaoResult updateItem(TbItem item, String desc) {
TaotaoResult result = itemService.updateItem(item, desc);
return result;
}
6)测试 我们重新安装taotao-content工程、taotao-manager工程和taotao-manager-web工程后,启动他们。浏览器测试成功。不在赘图!
功能分析:
可以发现,请求的都是相似url:/item/status/xxxx,参数都是:params = {"ids":ids} 提示成功后都会$("#itemList").datagrid("reload");刷新当前页面。 最后在common.js中,需要修改一点代码,如下:
在item-list.jsp页面中,格式化状态时需要用
我们知道,数据来之不易,一般情况下,我们不建议真正删除数据,而是将它的状态改变为删除状态,想再用他们的话,将数据状态再改回来
,要是真正删除数据直接从后台数据库中删。所以本例中,商品删除、下架、上架本质上都是修改tb_item表中的状态字段status的值。
所以我们只需要编写一个方法即可,根据请求的方法动态修改商品状态为1,2,3。
业务逻辑: 页面点击不同的按钮,表现层映射成不同的方法处理即可。 商品状态为正常,更新status=1即可 商品状态为下架,更新status=2即可 商品状态为删除,更新status=3即可
1)Dao 单表修改数据,直接使用逆向工程生成的Mapper。
2)Service ItemService接口代码:
/**
* 根据商品id,更新商品状态:1-正常,2-下架,3-删除
* @param ids
* @param method
* @return
*/
TaotaoResult updateItemStatus(List<Long> ids,String method);
ItemServiceImpl实现类代码:
@Override
public TaotaoResult updateItemStatus(List<Long> ids, String method) {
TbItem item = new TbItem();
if (method.equals("reshelf")) {
// 商品状态为正常,更新status=1即可
item.setStatus((byte) 1);
} else if (method.equals("instock")) {
// 商品状态为下架,更新status=2即可
item.setStatus((byte) 2);
} else if (method.equals("delete")) {
// 商品状态为删除,更新status=3即可
item.setStatus((byte) 3);
}
for (Long id : ids) {
// 创建查询条件,根据id更新
TbItemExample example = new TbItemExample();
Criteria criteria = example.createCriteria();
criteria.andIdEqualTo(id);
// 第一个参数:是要修改的部分值组成的对象,其中有些属性为null则表示该项不修改。
// 第二个参数:是一个对应的查询条件的类, 通过这个类可以实现 order by 和一部分的where 条件。
itemMapper.updateByExampleSelective(item, example);
}
return TaotaoResult.ok();
}
3)发布服务 同上“商品编辑”。
4)引用服务 同上“商品编辑”。
5)Controller
/**
* 根据商品id,更新商品状态:1-正常(上架),2-下架,3-删除
* @param ids
* @param method
* @return
*/
@RequestMapping("/status/{method}")
@ResponseBody
public TaotaoResult updateItemStatus(@RequestParam(value="ids") List<Long> ids, @PathVariable String method) {
TaotaoResult result = itemService.updateItemStatus(ids, method);
return result;
}
6)测试 我们重新安装taotao-content工程、taotao-manager工程和taotao-manager-web工程后,启动他们。浏览器测试成功。如下图所示:
同上“商品删除”。
至此商品管理就完成了。