黑马程序员技术交流社区

标题: 【郑州校区】品优购电商系统开发第 7 章 六 [打印本页]

作者: 我是楠楠    时间: 2020-5-26 15:19
标题: 【郑州校区】品优购电商系统开发第 7 章 六
【郑州校区】品优购电商系统开发第 7 章 六

2.8 保存数据
2.8.1 后端代码
修改 pinyougou-sellergoods-interface GoodsService.java
[AppleScript] 纯文本查看 复制代码
public void update(Goods goods);

修改 pinyougou-sellergoods-service GoodsServiceImpl ,SKU 列表插入的代码提取出来,封装到私有方法中
[AppleScript] 纯文本查看 复制代码
/**
* 插入 SKU 列表数据
* @param goods
*/
private void saveItemList(Goods goods){
if("1".equals(goods.getGoods().getIsEnableSpec())){
for(TbItem item :goods.getItemList()){
.........中间代码略
}
}else{
TbItem item=new TbItem();
.........中间代码略
itemMapper.insert(item);
}
}

add 方法中调用 此方法,修改如下:
[AppleScript] 纯文本查看 复制代码
public void add(Goods goods) {
goods.getGoods().setAuditStatus("0");
goodsMapper.insert(goods.getGoods()); //插入商品表
goods.getGoodsDesc().setGoodsId(goods.getGoods().getId());
goodsDescMapper.insert(goods.getGoodsDesc());//插入商品扩展数据
saveItemList(goods);//插入商品 SKU 列表数据
}

怎么样,是不是比原来更加清爽了呢?
接下来,我们修改 update 方法,实现修改

[AppleScript] 纯文本查看 复制代码
public void update(Goods goods){
goods.getGoods().setAuditStatus("0");//设置未申请状态:如果是经过修改的商品,需要重新
设置状态
goodsMapper.updateByPrimaryKey(goods.getGoods());//保存商品表
goodsDescMapper.updateByPrimaryKey(goods.getGoodsDesc());//保存商品扩展表
//删除原有的 sku 列表数据
TbItemExample example=new TbItemExample();
com.pinyougou.pojo.TbItemExample.Criteria criteria = example.createCriteria();
criteria.andGoodsIdEqualTo(goods.getGoods().getId());
itemMapper.deleteByExample(example);
//添加新的 sku 列表数据
saveItemList(goods);//插入商品 SKU 列表数据
}

修改 pinyougou-manager-web 工程的 GoodsController.java
[AppleScript] 纯文本查看 复制代码
@RequestMapping("/update")
public Result update(@RequestBody Goods goods){
......
}

修改 pinyougou-shop-web 工程的 GoodsController.java
[AppleScript] 纯文本查看 复制代码
/**
* 修改
* @param goods
* @return
*/
@RequestMapping("/update")
public Result update(@RequestBody Goods goods){
//校验是否是当前商家的 id
Goods goods2 = goodsService.findOne(goods.getGoods().getId());
//获取当前登录的商家 ID
String sellerId = SecurityContextHolder.getContext().getAuthentication().getName();
//如果传递过来的商家 ID 并不是当前登录的用户的 ID,则属于非法操作
if(!goods2.getGoods().getSellerId().equals(sellerId)
|| !goods.getGoods().getSellerId().equals(sellerId) ){
return new Result(false, "操作非法");
}
try {
goodsService.update(goods);
return new Result(true, "修改成功");
} catch (Exception e) {
e.printStackTrace();
return new Result(false, "修改失败");
}
}


代码解释:出于安全考虑,在商户后台执行的商品修改,必须要校验提交的商品属于该商户

2.8.2 前端代码
1)修改 goodsController.js ,新增保存的方法
[AppleScript] 纯文本查看 复制代码
//保存
$scope.save=function(){
//提取文本编辑器的值
$scope.entity.goodsDesc.introduction=editor.html();
var serviceObject;//服务层对象
if($scope.entity.goods.id!=null){//如果有 ID
serviceObject=goodsService.update( $scope.entity ); //修改
}else{
serviceObject=goodsService.add( $scope.entity );//增加
}
serviceObject.success(
function(response){
if(response.success){
alert('保存成功');
$scope.entity={};
editor.html("");
}else{
alert(response.message);
}
}
);
}


2)修改 goods_edit.html 调用

[AppleScript] 纯文本查看 复制代码
<button class="btn btn-primary" ng-click="save()"><i class="fa fa-save"></i> 保 存
</button>







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2