callbin

一、数据库结构

create table `foodie-shop-dev`.items
(
    id            varchar(64) not null comment \'商品主键id\'
        primary key,
    item_name     varchar(32) not null comment \'商品名称 商品名称\',
    cat_id        int         not null comment \'分类外键id 分类id\',
    root_cat_id   int         not null comment \'一级分类外键id\',
    sell_counts   int         not null comment \'累计销售 累计销售\',
    on_off_status int         not null comment \'上下架状态 上下架状态,1:上架 2:下架\',
    content       text        not null comment \'商品内容 商品内容\',
    created_time  datetime    not null comment \'创建时间\',
    updated_time  datetime    not null comment \'更新时间\'
)
    comment \'商品表 商品信息相关表:分类表,商品图片表,商品规格表,商品参数表\' charset = utf8mb4;
商品表 items
create table `foodie-shop-dev`.items_img
(
    id           varchar(64)  not null comment \'图片主键\'
        primary key,
    item_id      varchar(64)  not null comment \'商品外键id 商品外键id\',
    url          varchar(128) not null comment \'图片地址 图片地址\',
    sort         int          not null comment \'顺序 图片顺序,从小到大\',
    is_main      int          not null comment \'是否主图 是否主图,1:是,0:否\',
    created_time datetime     not null comment \'创建时间\',
    updated_time datetime     not null comment \'更新时间\'
)
    comment \'商品图片 \' charset = utf8mb4;
商品图片 items_img
create table `foodie-shop-dev`.items_spec
(
    id             varchar(64)   not null comment \'商品规格id\'
        primary key,
    item_id        varchar(64)   not null comment \'商品外键id\',
    name           varchar(32)   not null comment \'规格名称\',
    stock          int           not null comment \'库存\',
    discounts      decimal(4, 2) not null comment \'折扣力度\',
    price_discount int           not null comment \'优惠价\',
    price_normal   int           not null comment \'原价\',
    created_time   datetime      not null comment \'创建时间\',
    updated_time   datetime      not null comment \'更新时间\'
)
    comment \'商品规格 每一件商品都有不同的规格,不同的规格又有不同的价格和优惠力度,规格表为此设计\' charset = utf8mb4;
商品规格 items_spec
create table `foodie-shop-dev`.items_param
(
    id               varchar(64) not null comment \'商品参数id\'
        primary key,
    item_id          varchar(32) not null comment \'商品外键id\',
    produc_place     varchar(32) not null comment \'产地 产地,例:中国江苏\',
    foot_period      varchar(32) not null comment \'保质期 保质期,例:180天\',
    brand            varchar(32) not null comment \'品牌名 品牌名,例:三只大灰狼\',
    factory_name     varchar(32) not null comment \'生产厂名 生产厂名,例:大灰狼工厂\',
    factory_address  varchar(32) not null comment \'生产厂址 生产厂址,例:大灰狼生产基地\',
    packaging_method varchar(32) not null comment \'包装方式 包装方式,例:袋装\',
    weight           varchar(32) not null comment \'规格重量 规格重量,例:35g\',
    storage_method   varchar(32) not null comment \'存储方法 存储方法,例:常温5~25°\',
    eat_method       varchar(32) not null comment \'食用方式 食用方式,例:开袋即食\',
    created_time     datetime    not null comment \'创建时间\',
    updated_time     datetime    not null comment \'更新时间\'
)
    comment \'商品参数 \' charset = utf8mb4;
商品参数 items_param

 

二、service模块

  1.接口定义(路径:com/imooc/service/ItemService.java)

 

package com.imooc.service;


import com.imooc.pojo.Items;
import com.imooc.pojo.ItemsImg;
import com.imooc.pojo.ItemsParam;
import com.imooc.pojo.ItemsSpec;

import java.util.List;

public interface ItemService {

    /**
     * 根据商品ID查询详情
     * @param itemId
     * @return
     */
    public Items queryItemById(String itemId);

    /**
     * 根据商品ID查询图片列表
     * @param itemId
     * @return
     */
    public List<ItemsImg> queryItemImgList(String itemId);

    /**
     * 根据商品ID查询商品规格列表
     * @param itemId
     * @return
     */
    public List<ItemsSpec> queryItemSpecList(String itemId);

    /**
     * 根据商品ID查询商品参数
     * @param itemId
     * @return
     */
    public ItemsParam queryItemParam(String itemId);


}
View Code

  2.接口实现

    (路径:com/imooc/service/impl/ItemServiceImpl.java)

 

package com.imooc.service.impl;

import com.imooc.mapper.ItemsImgMapper;
import com.imooc.mapper.ItemsMapper;
import com.imooc.mapper.ItemsParamMapper;
import com.imooc.mapper.ItemsSpecMapper;
import com.imooc.pojo.Items;
import com.imooc.pojo.ItemsImg;
import com.imooc.pojo.ItemsParam;
import com.imooc.pojo.ItemsSpec;
import com.imooc.service.ItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;

import java.util.List;

@Service
public class ItemServiceImpl implements ItemService {
    @Autowired
    ItemsMapper itemsMapper;

    @Autowired
    ItemsImgMapper itemsImgMapper;

    @Autowired
    ItemsSpecMapper itemsSpecMapper;

    @Autowired
    ItemsParamMapper itemsParamMapper;

    @Transactional(propagation = Propagation.SUPPORTS)
    @Override
    public Items queryItemById(String itemId) {
        return itemsMapper.selectByPrimaryKey(itemId);
    }

    @Transactional(propagation = Propagation.SUPPORTS)
    @Override
    public List<ItemsImg> queryItemImgList(String itemId) {
        Example itemsImgExp = new Example(ItemsImg.class);
        Example.Criteria criteria =itemsImgExp.createCriteria();
        criteria.andEqualTo("itemId",itemId);
        return itemsImgMapper.selectByExample(itemsImgExp);
    }

    @Transactional(propagation = Propagation.SUPPORTS)
    @Override
    public List<ItemsSpec> queryItemSpecList(String itemId) {
        Example itemsSpecExp = new Example(ItemsSpec.class);
        Example.Criteria criteria =itemsSpecExp.createCriteria();
        criteria.andEqualTo("itemId",itemId);
        return itemsSpecMapper.selectByExample(itemsSpecExp);
    }

    @Transactional(propagation = Propagation.SUPPORTS)
    @Override
    public ItemsParam queryItemParam(String itemId) {
        Example itemsParamExp = new Example(ItemsParam.class);
        Example.Criteria criteria =itemsParamExp.createCriteria();
        criteria.andEqualTo("itemId",itemId);
        return itemsParamMapper.selectOneByExample(itemsParamExp);
    }
}
View Code

 

三、Api模块

  路径:com/imooc/controller/ItemController.java

package com.imooc.controller;

import com.imooc.enums.YesOrNo;
import com.imooc.pojo.*;
import com.imooc.pojo.vo.CategoryVO;
import com.imooc.pojo.vo.ItemInfoVO;
import com.imooc.pojo.vo.NewItemsVO;
import com.imooc.service.CarouselService;
import com.imooc.service.CategoryService;
import com.imooc.service.ItemService;
import com.imooc.utils.IMOOCJSONResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@Api(value = "商品接口",tags = "商品信息展示的相关接口")
@RestController
@RequestMapping("item")
public class ItemController {

    @Autowired
     private ItemService itemService;

    @ApiOperation(value="查询商品详情",notes = "查询商品详情",httpMethod = "GET")
    @GetMapping("/info/{itemId}")
    public IMOOCJSONResult info(
            @ApiParam(name = "itemId",value = "商品ID",required = true)
            @PathVariable() String itemId) {
         if (StringUtils.isBlank(itemId)) {

             return IMOOCJSONResult.errorMsg("");

         }


        Items item = itemService.queryItemById(itemId);
        List<ItemsImg> itemImgList=itemService.queryItemImgList(itemId);
        List<ItemsSpec> itemSpecList=itemService.queryItemSpecList(itemId);
        ItemsParam itemParam=itemService.queryItemParam(itemId);
        ItemInfoVO itemInfoVO=new ItemInfoVO();
        itemInfoVO.setItem(item);
        itemInfoVO.setItemImgList(itemImgList);
        itemInfoVO.setItemSpecList(itemSpecList);
        itemInfoVO.setItemParam(itemParam);

        return IMOOCJSONResult.ok(itemInfoVO);
    }

}
View Code

 

四、商品详情VO定义(用户返回到前端)

     路径:com/imooc/pojo/vo/ItemInfoVO.java

package com.imooc.pojo.vo;

import com.imooc.pojo.Items;
import com.imooc.pojo.ItemsImg;
import com.imooc.pojo.ItemsParam;
import com.imooc.pojo.ItemsSpec;

import java.util.List;

/**
 * 商品详情VO
 */
public class ItemInfoVO {
    public Items getItem() {
        return item;
    }

    public void setItem(Items item) {
        this.item = item;
    }

    public List<ItemsImg> getItemImgList() {
        return itemImgList;
    }

    public void setItemImgList(List<ItemsImg> itemImgList) {
        this.itemImgList = itemImgList;
    }

    public List<ItemsSpec> getItemSpecList() {
        return itemSpecList;
    }

    public void setItemSpecList(List<ItemsSpec> itemSpecList) {
        this.itemSpecList = itemSpecList;
    }

    public ItemsParam getItemParam() {
        return itemParam;
    }

    public void setItemParam(ItemsParam itemParam) {
        this.itemParam = itemParam;
    }

    private Items item;
    private List<ItemsImg> itemImgList;
    private List<ItemsSpec> itemSpecList;
    private ItemsParam itemParam;
}
View Code

 

分类:

技术点:

相关文章:

  • 2021-11-13
  • 2021-11-09
  • 2021-10-19
  • 2021-06-29
  • 2021-11-13
  • 2021-04-18
  • 2021-11-23
  • 2021-11-23
猜你喜欢
  • 2022-01-03
  • 2021-11-13
  • 2021-10-11
  • 2021-11-13
  • 2021-11-13
  • 2021-11-13
  • 2021-11-13
相关资源
相似解决方案