【全栈】SprintBoot+vue3迷你商城(6)
【全栈】SprintBoot+vue3迷你商城(6)
在上几期中我们基本完成了与用户相关的接口,以及制定拦截器限定了用户相关接口使用的权限
本期我们来实现与商品相关的接口
商品的接口先就实现两个,一个是之前提到的商家添加商品,然后就是主页需要显示商品,即商品列表
1.商家添加商品
所需信息
商家添加商品需要5个信息
- 商品名称 goodsName
- 商品图片 goodsImgUrl
- 商品价格 goodsPrice
- 商家用户名 merchantName
- 商家头像 merchantImgUrl
而这些信息,在第四期中我们就已经建立好了一个模型:
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层
@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层
void add(String goodsName, String goodsImgUrl, float goodsPrice,Integer merchantId);
方法实现
@Override
public void add(String goodsName, String goodsImgUrl, float goodsPrice,Integer merchantId) {
goodsMapper.add(goodsName,goodsImgUrl,goodsPrice,merchantId);
}
mapper层
@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层
@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层
List<Goods> getGoodsList();
方法实现
@Override
public List<Goods> getGoodsList() {
return goodsMapper.getGoodsList();
}
mapper层
@Select("select * from goods;")
List<Goods> getGoodsList();
之后可以在postman中进行接口测试
3.总结
本期我们实现了与商品有关的相关接口,直到这里,我们已经实现了所有的基本接口,不过现在还有一些不完善的地方,而且还有一些其他的接口未实现,我会在后面一一补充。
下期我们便会开始前端的开发。
原文地址:https://blog.csdn.net/Janium/article/details/145308757
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!