• 商品详情接口-商品详情VO


    一、数据库结构

    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
  • 相关阅读:
    JS控制文本框输入的内容
    JavaScript属性
    无缝滚动
    CCS实例,网页栏目
    CSS特效
    HTML技巧
    如何解决问题
    判断输入的字符是不是数字
    删除txt文件内容
    能组成几个单词
  • 原文地址:https://www.cnblogs.com/callbin/p/14488324.html
Copyright © 2020-2023  润新知