day70_淘淘商城项目_03_作业_商品编辑、商品删除、商品上架下架
淘淘商城项目_03_作业
-
-
- 9.4、作业
-
- 9.4.1、商品编辑
- 9.4.2、商品删除
- 9.4.3、商品上架下架
-
9.4、作业
商品编辑、商品删除、商品上架下架。
9.4.1、商品编辑
功能分析:
item-list.jsp

我们再来看看item-add.jsp,先看看隐藏域

再来看看URL部分

请求URL: /item/update
参数: 表单数据(TbItem)
返回值:Taotaoresult
业务逻辑如下:
基于商品id进行操作,
首先对商品表进行重置设置,
按照预设规则执行;
接着对商品描述表进行配置参数设置,
同样遵循预设规则执行;
调用taotaoResult对象的ok方法返回成功状态。
1)Dao
单表更新商品数据,直接使用逆向工程生成的Mapper。
2)Service
接口代码:
/** * 根据商品id查询商品描述,将查询结果封装到TaotaoResult中
* @param itemId
* @return
*/
TaotaoResult getItemDesc(Long itemId);
/** * 更新商品
* @param item
* @param desc
* @return
*/
TaotaoResult updateItem(TbItem item, String desc);
ItemServiceImpl实现类代码:
@Override
public TaotaoResult getItemDesc(Long itemId) {
TbItemDesc itemDesc = itemDescMapper.selectByPrimaryKey(itemId);
return TaotaoResult.ok(itemDesc);
}
@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();
}
在taotao-manager-service工程的应用上下文中进行...配置文件中的发布操作

4)引用服务
在taotao-manager-web工程springmvc.xml中引用服务

5)Controller
/** * 根据商品id,获取商品描述
* @param itemId
* @return
*/
@RequestMapping(value="/item/desc/{itemId}")
@ResponseBody
public TaotaoResult getItemDesc(@PathVariable Long itemId) {
TaotaoResult result = itemService.getItemDesc(itemId);
return result;
}
、
/** * 更新(修改)商品
* @param item
* @param desc
* @return
*/
@RequestMapping("/item/update")
@ResponseBody
public TaotaoResult updateItem(TbItem item, String desc) {
TaotaoResult result = itemService.updateItem(item, desc);
return result;
}
在完成对taotao-manager工程及taotao-manager-web工程的重新安装后,在启动这两个程序的过程中未遇到任何阻碍。经过浏览器的测试验证成功完成,并未发现任何问题或异常情况。
9.4.2、商品删除
功能分析:

通过观察发现,所有的请求都指向相同的形式化的URL地址:/item/status/[x_x],参数均为相同的格式:“ids”属性值为[ids]

在item-list.jsp页面中,格式化状态时需要用

我们都知道数据来源较为严谨的一般情况下我们不建议真正删除数据而是将其标记为已删除的状态如果需要恢复数据的状态则可以直接从后端数据库中进行操作因此在本案例中商品被删除下架或上架的过程本质上都是对tb_item表中的status字段进行更新因此我们只需开发一个逻辑模块即可实现根据请求类型动态调整商品对应的状态字段值
业务逻辑:
不同按钮的点击结果会对应表现层的不同处理方法。
当商品状态处于正常情况时,则应将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("/item/status/{method}")
@ResponseBody
public TaotaoResult updateItemStatus(@RequestParam(value="ids") List<Long> ids, @PathVariable String method) {
TaotaoResult result = itemService.updateItemStatus(ids, method);
return result;
}
在重新配置taotao-manager和taotao-manager-web这两个工程后运行这两个应用。经过浏览器的全面测试和性能评估。

9.4.3、商品上架下架
同上“商品删除”。
至此商品管理就完成了。
转载文章务必保留出处和署名,谢谢!
