商品规格参数管理

 

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);
    }
}