黑马程序员技术交流社区

标题: 【郑州校区】品优购电商系统开发第 3 章规格及模板管理 五 [打印本页]

作者: 我是楠楠    时间: 2020-5-13 10:25
标题: 【郑州校区】品优购电商系统开发第 3 章规格及模板管理 五
【郑州校区】品优购电商系统开发第 3 章规格及模板管理 五

4.4 修改规格
4.4.1 获取规格数据
实现思路:通过规格 ID,到后端查询规格和规格选项列表,然后通过组合实体类返回结果
1)修改 pinyougou-sellergoods-interface SpecificationService.java
[AppleScript] 纯文本查看 复制代码
 /**
* 根据 ID 获取实体
* @param id
* @return
*/
public Specification findOne(Long id);

2)修改 pinyougou-sellergoods-service SpecificationServiceImpl.java
[AppleScript] 纯文本查看 复制代码
 /**
* 根据 ID 获取实体
* @param id
* @return
*/
@Override
public Specification findOne(Long id){
//查询规格
TbSpecification tbSpecification = specificationMapper.selectByPrimaryKey(id);
//查询规格选项列表
TbSpecificationOptionExample example=new TbSpecificationOptionExample();
Criteria criteria = example.createCriteria();
criteria.andSpecIdEqualTo(id);//根据规格 ID 查询
List<TbSpecificationOption> optionList =
specificationOptionMapper.selectByExample(example);
//构建组合实体类返回结果
Specification spec=new Specification();
spec.setSpecification(tbSpecification);
spec.setSpecificationOptionList(optionList);
return spec;
}


3)修改 pinyougou-manager-web SpecificationController.java
[AppleScript] 纯文本查看 复制代码
 @RequestMapping("/findOne")
public Specification findOne(Long id){
return specificationService.findOne(id);
}


4)修改页面 specification.html 中列表的修改按钮
[AppleScript] 纯文本查看 复制代码
 <button type="button" class="btn bg-olive btn-xs" data-toggle="modal"
data-target="#editModal" ng-click="findOne(entity.id)">修改</button>


4.4.2 保存修改结果
1)修改 pinyougou-sellergoods-interface SpecificationService.java
[AppleScript] 纯文本查看 复制代码
 /**
* 修改
*/
public void update(Specification specification);


2)修改 pinyougou-sellergoods-service SpecificationServiceImpl.java

[AppleScript] 纯文本查看 复制代码
/**
* 修改
*/
@Override
public void update(Specification specification){
//保存修改的规格
specificationMapper.updateByPrimaryKey(specification.getSpecification());//
保存规格
//删除原有的规格选项
TbSpecificationOptionExample example=new TbSpecificationOptionExample();
com.pinyougou.pojo.TbSpecificationOptionExample.Criteria criteria =
example.createCriteria();
criteria.andSpecIdEqualTo(specification.getSpecification().getId());//指定
规格 ID 为条件
specificationOptionMapper.deleteByExample(example);//删除
//循环插入规格选项
for(TbSpecificationOption
specificationOption:specification.getSpecificationOptionList()){
specificationOption.setSpecId(specification.getSpecification().getId());
specificationOptionMapper.insert(specificationOption);
}
}

3)修改 pinyougou-manager-web SpecificationController.java
[AppleScript] 纯文本查看 复制代码
 /**
* 修改
* @param specification
* @return
*/
@RequestMapping("/update")
public Result update(@RequestBody Specification specification){
try {
specificationService.update(specification);
return new Result(true, "修改成功");
} catch (Exception e) {
e.printStackTrace();
return new Result(false, "修改失败");
}
}


4)修改 specification.js save 方法

[AppleScript] 纯文本查看 复制代码
//保存
$scope.save=function(){
var serviceObject;//服务层对象
if($scope.entity.specification.id!=null){//如果有 ID
serviceObject=specificationService.update( $scope.entity ); //修改
}else{
serviceObject=specificationService.add( $scope.entity );//增加
}
serviceObject.success(
function(response){
if(response.success){
//重新查询
$scope.reloadList();//重新加载
}else{
alert(response.message);
}
}
);
}

4.5 删除规格
实现思路:我们要删除规格的同时,还要记得将关联的规格选项删除掉。

4.5.1 后端代码
修改 pinyougou-sellergoods-service SpecificationServiceImpl.java
[AppleScript] 纯文本查看 复制代码
 /**
* 批量删除
*/
@Override
public void delete(Long[] ids) {
for(Long id:ids){
specificationMapper.deleteByPrimaryKey(id);
//删除原有的规格选项
TbSpecificationOptionExample example=new TbSpecificationOptionExample();
com.pinyougou.pojo.TbSpecificationOptionExample.Criteria criteria =
example.createCriteria();
criteria.andSpecIdEqualTo(id);//指定规格 ID 为条件
specificationOptionMapper.deleteByExample(example);//删除
}
}


4.5.2 前端代码
修改 pinyougou-manager-web specification.html
列表的复选框









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