自学内容网 自学内容网

【全栈】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)!