商城商品修改

@TOC



版权声明:本文为博主转载,出处为 https://blog.csdn.net/pdsu161530247/article/details/81808859



目录

1.商品编辑效果展示

2.前端

2.1准备商品信息

2.2更新商品信息

3.后端

3.1准备商品信息

3.1.1服务端

3.1.2表现层

3.2更新商品信息

3.2.1服务层

3.2.2表现层

4.注意事项


1.商品编辑效果展示

选择商品,点击编辑

会弹出编辑商品的窗口,然后显示商品信息

我们修改一些数据,比如价格、库存、商品图片以及商品描述

点击提交

发现该商品,价格、库存、商品图片以及商品描述都变为我们修改的了

2.前端

2.1准备商品信息

在item-list.jsp中,使用easyui中datagrid的toolbar属性实现了编辑按钮的添加。


  
  
  1. text: '编辑',
  2. iconCls: 'icon-edit',
  3. handler: function(){
  4. var ids = getSelectionsIds();
  5. if(ids.length == 0){
  6. $.messager.alert( '提示', '必须选择一个商品才能编辑!');
  7. return ;
  8. }
  9. if(ids.indexOf( ',') > 0){
  10. $.messager.alert( '提示', '只能选择一个商品!');
  11. return ;
  12. }
  13. $( "#itemEditWindow").window({
  14. onLoad : function(){
  15. //回显数据
  16. var data = $( "#itemList").datagrid( "getSelections")[ 0];
  17. data.priceView = TAOTAO.formatPrice(data.price);
  18. $( "#itemeEditForm").form( "load",data);
  19. });
  20. // 加载商品描述
  21. $.getJSON( '/item/desc/'+data.id, function(_data){
  22. if(_data.status == 200){
  23. itemEditEditor.html(_data.data.itemDesc);
  24. }
  25. });
  26. TAOTAO.init({
  27. "pics" : data.image,
  28. "cid" : data.cid,
  29. fun: function(node){
  30. TAOTAO.changeItemParam(node, "itemeEditForm");
  31. }
  32. });
  33. }
  34. }).window( "open");
  35. }

在点击编辑按钮时,触发handler:function,首先判断,是否多选和不选,如果是则提示用户。

$("#itemEditWindow").window({}).window("open");这一步是打开商品编辑的页面,也就是item-edit.jsp页面。

此时触发onLoad函数准备数据

$("#itemList").datagrid("getSelections")是获取所有被选中行的信息,[0]是获取第一行

data.priceView = TAOTAO.formatPrice(data.price);将真实的价格(单位:分),转换为元

$("#itemeEditForm").form("load",data);调用easyui的form组件的load函数,渲染item-edit.jsp中id="itemeEditForm"的表单。

请求url:'/item/desc/'+data.id,并将选中行的商品id,使用rset格式发送请求。并渲染富文本编辑器的内容。

TAOTAO.init({})函数,在common.js中,初始化图片上传组件和选择类目组件。

图片上传组件initPicUpload会回显图片


  
  
  1. if(data && data.pics){
  2. var imgs = data.pics.split( ",");
  3. for( var i in imgs){
  4. if($.trim(imgs[i]).length > 0){
  5. _ele.siblings( ".pics").find( "ul").append( "<li><a href='"+imgs[i]+ "' target='_blank'>" +
  6. "<img src='"+imgs[i]+ "' width='80' height='50' /></a></li>");
  7. }
  8. }
  9. }

 图片上传组件initPicUpload在用户上传新商品图片后,移除老图片

 选择类目组件initItemCat会回显选择的商品类目

2.2更新商品信息

$("#itemEditWindow").window({}).window("open");打开的窗口地址修改为/item-edit,因为@RequestMapping("/{page}")会拦截/xxx,并返回xxx.jsp的视图

打开item-edit.jsp页面后,TAOTAO.createEditor("#itemeEditForm [name=desc]")通过id和表单选择器,实例化编辑器。

当用户点击提交时先验证表单,然后将商品价格转换为,以为单位分的价格。

itemEditEditor.sync();同步富文本编辑器的内容到表单中的textarea里面去。

最后,发起ajax请求url:/item/update,$("#itemeEditForm").serialize()将表单中的项以key=value的形式post提交。

更新商品信息成功后,关闭item-edit.jsp,并清空表单内容,刷新item-list.jsp页面的内容。

3.后端

由于前端是拿别人现成的,所以分析起来比较累。

如果仅看功能的话,本质上就是用户从前端点击编辑,后端准备数据返回给前端。用户更新编辑的信息,从前端发送到后端保存到数据库中。所以后端就是提供数据,保存数据,编写比较容易。

3.1准备商品信息

由于商品的信息大部分都是通过$("#itemList").datagrid("getSelections")[0]从item-list.jsp页面取出来的,只有商品描述ItemDesc没有,所以我们根据商品id,从数据库中查询ItemDesc即可。

3.1.1服务端

在taotao-manager-interface的ItemService中添加接口


  
  
  1. /**
  2. * 根据id查询商品描述
  3. * @param id
  4. * @return
  5. */
  6. TaotaoResult getItemDesc(Long id);

在taotao-manager-service的ItemServiceImpl中编写实现类


  
  
  1. /**
  2. * 根据id查询商品描述,封装到TaotaoResult中
  3. */
  4. @Override
  5. public TaotaoResult getItemDesc( Long id) {
  6. TbItemDesc itemDesc = itemDescMapper.selectByPrimaryKey(id);
  7. return TaotaoResult.ok(itemDesc);
  8. }

3.1.2表现层

在taotao-manager-web的ItemCotroller中编写controller

由于前端发起请求的时候,请求的url:/item/desc/id,所以我们使用@RequestMapping(value="/item/desc/{id}")接受id


  
  
  1. /**
  2. * 根据id获取商品描述
  3. */
  4. @RequestMapping(value="/item/desc/{id}")
  5. @ResponseBody
  6. public TaotaoResult getItemDesc( @PathVariable("id") Long id) {
  7. TaotaoResult result = itemService.getItemDesc(id);
  8. return result;
  9. }

3.2更新商品信息

当用户编辑完商品信息后,就要保存商品信息了。

3.2.1服务层

在taotao-manager-interface的ItemService中添加接口


  
  
  1. /**
  2. * 更新商品
  3. * @param item
  4. * @param desc
  5. * @return
  6. */
  7. TaotaoResult updateItem(TbItem item, String desc);

 在taotao-manager-service的ItemServiceImpl中添加实现类


  
  
  1. @Override
  2. public TaotaoResult updateItem(TbItem item, String desc) {
  3. // 1.根据商品id更新商品表
  4. Long id = item.getId();
  5. // 创建查询条件,根据id更新商品表
  6. TbItemExample tbItemExample = new TbItemExample();
  7. Criteria criteria = tbItemExample.createCriteria();
  8. criteria.andIdEqualTo(id);
  9. itemMapper.updateByExampleSelective(item, tbItemExample);
  10. // 2.根据商品id更新商品描述表
  11. TbItemDesc itemDesc = new TbItemDesc();
  12. itemDesc.setItemDesc(desc);
  13. TbItemDescExample tbItemDescExample = new TbItemDescExample();
  14. com.taotao.pojo.TbItemDescExample.Criteria createCriteria = tbItemDescExample.createCriteria();
  15. createCriteria.andItemIdEqualTo(id);
  16. itemDescMapper.updateByExampleSelective(itemDesc, tbItemDescExample);
  17. return TaotaoResult.ok();
  18. }

 

3.2.2表现层

 在taotao-manager-web的ItemCotroller中编写controller


  
  
  1. /**
  2. * 更新商品信息
  3. * @param item
  4. * @param desc
  5. * @return
  6. */
  7. @RequestMapping(value="/item/update")
  8. @ResponseBody
  9. public TaotaoResult updateItem(TbItem item, String desc) {
  10. TaotaoResult result = itemService.updateItem(item, desc);
  11. return result;
  12. }

4.注意事项

item-edit.jsp与item-list.jsp里面的url一定要与controller中的对应,因为item-edit.jsp与item-list.jsp我修改了一点,与原页面不一样。



版权声明:本文为博主转载,出处为 https://blog.csdn.net/pdsu161530247/article/details/81808859



目录

猜你喜欢

转载自blog.csdn.net/weixin_43765506/article/details/84333251