【全栈】SprintBoot+vue3迷你商城(6)
在上几期中我们基本完成了与用户相关的接口,以及制定拦截器限定了用户相关接口使用的权限
本期我们来实现与商品相关的接口
商品的接口先就实现两个,一个是之前提到的商家添加商品,然后就是主页需要显示商品,即商品列表
1.商家添加商品
所需信息
商家添加商品需要5个信息
- 商品名称 goodsName
- 商品图片 goodsImgUrl
- 商品价格 goodsPrice
- 商家用户名 merchantName
- 商家头像 merchantImgUrl
而这些信息,在第四期中我们就已经建立好了一个模型:
java">package com.janium.minimallbe.pojo;import lombok.AllArgsConstructor;
import lombok.Data;@Data
@AllArgsConstructor
public class GoodsShowModel {private Integer id;private String goodsName;private String goodsImgUrl;private float goodsPrice;private String merchantName;private String merchantImgUrl;
}
而商家用户名与商家头像不需要从客户端获取,因为你在调用商家添加商品这个接口时,就已经知道了你的用户
所以这个接口的参数只需要商品名称、商品图片和商品价格
演示
由于现在是实现与商品有关的接口,所以我们层级应用Goods开头
如:GoodsController、GoodsService……
controller层
java">@PostMapping("/add")public Result addGoods(@RequestParam("goodsName") String goodsName,@RequestParam("goodsImgUrl") String goodsImgUrl,@RequestParam("goodsPrice") float goodsPrice) {Map<String,Object> map = ThreadLocalUtil.get();Integer merchantId = (Integer) map.get("id");User u=userService.findByName((String) map.get("username"));if(u.getUserType().equals("商家")) {goodsService.add(goodsName, goodsImgUrl, goodsPrice, merchantId);return Result.success();}return Result.error("普通用户无法添加商品");}
service层
java">void add(String goodsName, String goodsImgUrl, float goodsPrice,Integer merchantId);
方法实现
java"> @Overridepublic void add(String goodsName, String goodsImgUrl, float goodsPrice,Integer merchantId) {goodsMapper.add(goodsName,goodsImgUrl,goodsPrice,merchantId);}
mapper层
java"> @Insert("insert into goods(goodsName,goodsImgUrl,goodsPrice,merchantId,create_time,update_time)" +" values (#{goodsName},#{goodsImgUrl},#{goodsPrice},#{merchantId},now(),now())")void add(String goodsName, String goodsImgUrl, float goodsPrice,Integer merchantId);
之后可以在postman中进行接口测试
2.商品列表
这个接口的思路很简单,就是查询出goods表的所有数据然后返回即可
难就难在以后的分页
分页的功能我们以后在做,我们先做最简单的
controller层
java">@GetMapping("/list")public Result getGoodsList() {List<Goods> goodsList = goodsService.getGoodsList();List<GoodsShowModel> goodsShowModelList = new ArrayList<>();for (Goods goods : goodsList) {User merchant=userService.findById(goods.getMerchantId());GoodsShowModel goodsShowModel=new GoodsShowModel(goods.getId(),goods.getGoodsName(),goods.getGoodsImgUrl(),goods.getGoodsPrice(),merchant.getUsername(),merchant.getUserPic());goodsShowModelList.add(goodsShowModel);}return Result.success(goodsShowModelList);}
service层
java">List<Goods> getGoodsList();
方法实现
java"> @Overridepublic List<Goods> getGoodsList() {return goodsMapper.getGoodsList();}
mapper层
java"> @Select("select * from goods;")List<Goods> getGoodsList();
之后可以在postman中进行接口测试
3.总结
本期我们实现了与商品有关的相关接口,直到这里,我们已经实现了所有的基本接口,不过现在还有一些不完善的地方,而且还有一些其他的接口未实现,我会在后面一一补充。
下期我们便会开始前端的开发。