乐优商场项目day09—商品规格参数管理
商品规格参数管理
1.添加实体类
@Table(name = "tb_spec_group")
public class SpecGroup {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long cid;
private String name;
@Transient
private List<SpecParam> params;
// getter和setter
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getCid() {
return cid;
}
public void setCid(Long cid) {
this.cid = cid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<SpecParam> getParams() {
return params;
}
public void setParams(List<SpecParam> params) {
this.params = params;
}
}
@Table(name = "tb_spec_param")
public class SpecParam {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long cid;
private Long groupId;
private String name;
@Column(name = "`numeric`")
private Boolean numeric;
private String unit;
private Boolean generic;
private Boolean searching;
private String segments;
// 生成getter和setter方法
}
2.添加通用mapper
import tk.mybatis.mapper.common.Mapper;
public interface SpecGroupMapper extends Mapper<SpecGroup> {
}
3.编写controller
@RestController
@RequestMapping("spec")
public class SpecificationController {
@Autowired
private SpecificationService specificationService;
/**
* 根据分类id查询分组
* @param cid
* @return
*/
@GetMapping("groups/{cid}")
public ResponseEntity<List<SpecGroup>> queryGroupsByCid(@PathVariable("cid")Long cid){
List<SpecGroup> groups = this.specificationService.queryGroupsByCid(cid);
if (CollectionUtils.isEmpty(groups)){
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok(groups);
}
}
4.编写service 及 queryGroupsByCid() 方法
@Service
public class SpecificationService {
@Autowired
private SpecGroupMapper groupMapper;
/**
* 根据分类id查询分组
* @param cid
* @return
*/
public List<SpecGroup> queryGroupsByCid(Long cid) {
SpecGroup specGroup = new SpecGroup();
specGroup.setCid(cid);
return this.groupMapper.select(specGroup);
}
}
重启 item-service 服务
访问http://api.leyou.com/api/item/spec/groups/76 ,看看能不能获取到数据:
获取成功了,说明业务逻辑代码没有错。
我们再去后台看看:
也查询并显示成功了。
不过一个分组下的规格参数没有还查询显示出来:
下面再来实现查询显示分组下的规格参数。
1.添加通用mapper
import tk.mybatis.mapper.common.Mapper;
public interface SpecParamMapper extends Mapper<SpecParam> {
}
2.在SpecificationController 中编写逻辑代码:
/**
* 根据条件查询规格参数
* @param gid
* @return
*/
@GetMapping("params")
public ResponseEntity<List<SpecParam>> queryParams(@RequestParam("gid")Long gid){
List<SpecParam> params = this.specificationService.queryParams(gid);
if (CollectionUtils.isEmpty(params)){
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok(params);
}
3.在 SpecificationService 中添加并实现queryParams()方法
@Autowired
private SpecParamMapper paramMapper;
/**
* 根据条件查询规格参数
* @param gid
* @return
*/
public List<SpecParam> queryParams(Long gid) {
SpecParam param = new SpecParam();
param.setGroupId(gid);
return this.paramMapper.select(param);
}
重启 item-service 服务
去后台页面试一下:
商品规格参数管理的 查 我们就完成了。
增删改 功能还没有实现,但页面中已经定义了相关接口。可以直接去实现一下。
我这里实现一下,商品组的增加,删除,和修改。
(商品组详情的 增删改 也大同小异,大家可以增加试着去实现。)
后台页面按F12调出页面控制台,然后点击相关功能按键,可以查看路径和请求方式。
例如:
这样我们就知道了,新增分组的的的请求路径是 /spec/group ,请求方式是post。
知道这两个,代码就容易实现了。
删除和修改的 请求路径 和 请求方式 也是用一样的方法查看。
这里给出代码,大家可以参考一下。
1.controller
@RestController
@RequestMapping("spec")
public class SpecificationController {
@Autowired
private SpecificationService specificationService;
/**
* 根据分类id查询分组
* @param cid
* @return
*/
@GetMapping("groups/{cid}")
public ResponseEntity<List<SpecGroup>> queryGroupsByCid(@PathVariable("cid")Long cid){
List<SpecGroup> groups = this.specificationService.queryGroupsByCid(cid);
if (CollectionUtils.isEmpty(groups)){
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok(groups);
}
/**
* 根据条件查询规格参数
* @param gid
* @return
*/
@GetMapping("params")
public ResponseEntity<List<SpecParam>> queryParams(@RequestParam("gid")Long gid){
List<SpecParam> params = this.specificationService.queryParams(gid);
if (CollectionUtils.isEmpty(params)){
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok(params);
}
/**
* 新增商品组
* @param specGroup
* @return
*/
@PostMapping("group")
public ResponseEntity<Void> addGroup(@RequestBody SpecGroup specGroup){
this.specificationService.addGroup(specGroup);
return ResponseEntity.status(HttpStatus.CREATED).build();
}
/**
* 删除商品组
* @param id
* @return
*/
@DeleteMapping("group/{id}")
public ResponseEntity<Void> deleteGroup(@PathVariable("id")Long id){
this.specificationService.deleteGroup(id);
return ResponseEntity.ok().build();
}
/**
* 修改商品组
* @param specGroup
* @return
*/
@PutMapping("group")
public ResponseEntity<Void> updateGroup(@RequestBody SpecGroup specGroup){
this.specificationService.updateGroup(specGroup);
return ResponseEntity.ok().build();
}
}
2.service
@Service
public class SpecificationService {
@Autowired
private SpecGroupMapper groupMapper;
/**
* 根据分类id查询分组
* @param cid
* @return
*/
public List<SpecGroup> queryGroupsByCid(Long cid) {
SpecGroup specGroup = new SpecGroup();
specGroup.setCid(cid);
return this.groupMapper.select(specGroup);
}
@Autowired
private SpecParamMapper paramMapper;
/**
* 根据条件查询规格参数
* @param gid
* @return
*/
public List<SpecParam> queryParams(Long gid) {
SpecParam param = new SpecParam();
param.setGroupId(gid);
return this.paramMapper.select(param);
}
/**
* 新增商品组
* @param specGroup
*/
public void addGroup(SpecGroup specGroup) {
this.groupMapper.insert(specGroup);
}
/**
* 删除商品组
* @param id
*/
public void deleteGroup(Long id) {
SpecGroup specGroup = new SpecGroup();
specGroup.setId(id);
this.groupMapper.deleteByPrimaryKey(specGroup);
}
/**
* 修改商品组
* @param specGroup
*/
public void updateGroup(SpecGroup specGroup) {
this.groupMapper.updateByPrimaryKey(specGroup);
}
}