首页 > 其他分享 >尚品汇-(十一)

尚品汇-(十一)

时间:2024-07-07 19:59:01浏览次数:6  
标签:十一 TableField 尚品 private ApiModelProperty value import com

(1)spu保存

这个页面选择了手机之后,会调用查询分类品牌的接口,显示品牌,在分类品牌中添加了两个品牌后也会在这里显示出来 

销售属性名称需要查询base_sale_attr表:

实体类:BaseSaleAttr

package com.atguigu.gmall.model.product;

import com.atguigu.gmall.model.base.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * <p>
 * BaseSaleAttr
 * </p>
 *
 */
@Data
@ApiModel(description = "销售属性")
@TableName("base_sale_attr")
public class BaseSaleAttr extends BaseEntity {
	
	private static final long serialVersionUID = 1L;
	
	@ApiModelProperty(value = "销售属性名称")
	@TableField("name")
	private String name;

}

加载销售属性

创建mapper:BaseSaleAttrMapper 

@Mapper
public interface BaseSaleAttrMapper extends BaseMapper<BaseSaleAttr> {
}

继续在MangeService添加接口


/**
 * 查询所有的销售属性数据
 * @return
 */
List<BaseSaleAttr> getBaseSaleAttrList();

实现类

@Autowired
private BaseSaleAttrMapper baseSaleAttrMapper;

@Override
public List<BaseSaleAttr> getBaseSaleAttrList() {
    return baseSaleAttrMapper.selectList(null);
}

继续在控制器SpuManageController添加接口:

@RestController
@RequestMapping("admin/product")
public class SpuManageController {

    // 引入服务层
    @Autowired
    private ManageService manageService;

    // 销售属性http://api.gmall.com/admin/product/baseSaleAttrList
    @GetMapping("baseSaleAttrList")
    public Result baseSaleAttrList(){
        // 查询所有的销售属性集合
        List<BaseSaleAttr>  baseSaleAttrList = manageService.getBaseSaleAttrList();

        return Result.ok(baseSaleAttrList);
    }
}

(2)保存后台代码

实体类:SpuInfo 

package com.atguigu.gmall.model.product;

import com.atguigu.gmall.model.base.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.List;

/**
 * <p>
 * SpuInfo
 * </p>
 *
 */
@Data
@ApiModel(description = "SpuInfo")
@TableName("spu_info")
public class SpuInfo extends BaseEntity {
	
	private static final long serialVersionUID = 1L;
	
	@ApiModelProperty(value = "商品名称")
	@TableField("spu_name")
	private String spuName;

	@ApiModelProperty(value = "商品描述(后台简述)")
	@TableField("description")
	private String description;

	@ApiModelProperty(value = "三级分类id")
	@TableField("category3_id")
	private Long category3Id;

	@ApiModelProperty(value = "品牌id")
	@TableField("tm_id")
	private Long tmId;

	// 销售属性集合
	@TableField(exist = false)
	private List<SpuSaleAttr> spuSaleAttrList;

	// 商品的图片集合
	@TableField(exist = false)
	private List<SpuImage> spuImageList;

	// 商品的海报图片集合
	@TableField(exist = false)
	private List<SpuPoster> spuPosterList;
}

SpuImage :spu图片实体类

package com.atguigu.gmall.model.product;

import com.atguigu.gmall.model.base.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * <p>
 * SpuImage
 * </p>
 *
 */
@Data
@ApiModel(description = "Spu图片")
@TableName("spu_image")
public class SpuImage extends BaseEntity {
	
	private static final long serialVersionUID = 1L;
	
	@ApiModelProperty(value = "商品id")
	@TableField("spu_id")
	private Long spuId;

	@ApiModelProperty(value = "图片名称")
	@TableField("img_name")
	private String imgName;

	@ApiModelProperty(value = "图片路径")
	@TableField("img_url")
	private String imgUrl;

}

 SpuPoster :spu海报实体类

package com.atguigu.gmall.model.product;

import com.atguigu.gmall.model.base.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * <p>
 * SpuPoster
 * </p>
 *

 */
@Data
@ApiModel(description = "SpuPoster")
@TableName("spu_poster")
public class SpuPoster extends BaseEntity {
	
	private static final long serialVersionUID = 1L;
	
	@ApiModelProperty(value = "商品id")
	@TableField("spu_id")
	private Long spuId;

	@ApiModelProperty(value = "文件名称")
	@TableField("img_name")
	private String imgName;

	@ApiModelProperty(value = "文件路径")
	@TableField("img_url")
	private String imgUrl;

}

 SpuSaleAttr :销售属性实体类

package com.atguigu.gmall.model.product;

import com.atguigu.gmall.model.base.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.List;

/**
 * <p>
 * SpuSaleAttr
 * </p>
 *
 */
@Data
@ApiModel(description = "销售属性")
@TableName("spu_sale_attr")
public class SpuSaleAttr extends BaseEntity {
	
	private static final long serialVersionUID = 1L;
	
	@ApiModelProperty(value = "商品id")
	@TableField("spu_id")
	private Long spuId;

	@ApiModelProperty(value = "销售属性id")
	@TableField("base_sale_attr_id")
	private Long baseSaleAttrId;

	@ApiModelProperty(value = "销售属性名称(冗余)")
	@TableField("sale_attr_name")
	private String saleAttrName;

	// 销售属性值对象集合
	@TableField(exist = false)
	List<SpuSaleAttrValue> spuSaleAttrValueList;

}

SpuSaleAttrValue :销售属性值实体类

package com.atguigu.gmall.model.product;

import com.atguigu.gmall.model.base.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;


/**
 * <p>
 * SpuSaleAttrValue
 * </p>
 *
 */
@Data
@ApiModel(description = "销售属性值")
@TableName("spu_sale_attr_value")
public class SpuSaleAttrValue extends BaseEntity {
	
	private static final long serialVersionUID = 1L;
	
	@ApiModelProperty(value = "商品id")
	@TableField("spu_id")
	private Long spuId;

	@ApiModelProperty(value = "销售属性id")
	@TableField("base_sale_attr_id")
	private Long baseSaleAttrId;

	@ApiModelProperty(value = "销售属性值名称")
	@TableField("sale_attr_value_name")
	private String saleAttrValueName;

	@ApiModelProperty(value = "销售属性名称(冗余)")
	@TableField("sale_attr_name")
	private String saleAttrName;

	// 是否是默认选中状态
//	@TableField("sale_attr_name")
//	String isChecked;
	@TableField(exist = false)
	String isChecked;

}

 

创建mapper

建立对应的mapper 文件

SpuImageMapper、SpuSaleAttrMapper 、SpuSaleAttrValueMapper 、SpuPosterMapper

@Mapper
public interface SpuImageMapper extends BaseMapper<SpuImage> {
}
@Mapper
public interface SpuSaleAttrMapper extends BaseMapper<SpuSaleAttr> {

}
@Mapper
public interface SpuSaleAttrValueMapper extends BaseMapper<SpuSaleAttrValue> {
}
@Mapper
public interface SpuPosterMapper extends BaseMapper<SpuPoster> {
}

继续添加在接口添加代码

/**
 * 保存商品数据
 * @param spuInfo
 */
void saveSpuInfo(SpuInfo spuInfo);

实现类:

@Override
@Transactional(rollbackFor = Exception.class)
public void saveSpuInfo(SpuInfo spuInfo) {
    /*
        spuInfo;
        spuImage;
        spuSaleAttr;
        spuSaleAttrValue;
        spuPoster
     */
    //保存spu信息
    spuInfoMapper.insert(spuInfo);


  //保存图片
    //  获取到spuImage 集合数据
    List<SpuImage> spuImageList = spuInfo.getSpuImageList();
    //  判断不为空
    if (!CollectionUtils.isEmpty(spuImageList)){
        //  循环遍历
        for (SpuImage spuImage : spuImageList) {
            //  需要将spuId 赋值
            spuImage.setSpuId(spuInfo.getId());
            //  保存spuImge
            spuImageMapper.insert(spuImage);
        }
    }

//保存销售属性
    //  获取销售属性集合
    List<SpuSaleAttr> spuSaleAttrList = spuInfo.getSpuSaleAttrList();
    //  判断
    if (!CollectionUtils.isEmpty(spuSaleAttrList)){
        //  循环遍历
        for (SpuSaleAttr spuSaleAttr : spuSaleAttrList) {
            //  需要将spuId 赋值
            spuSaleAttr.setSpuId(spuInfo.getId());
            spuSaleAttrMapper.insert(spuSaleAttr);


        //保存销售属性值
            //  再此获取销售属性值集合
            List<SpuSaleAttrValue> spuSaleAttrValueList = spuSaleAttr.getSpuSaleAttrValueList();
            //  判断
            if (!CollectionUtils.isEmpty(spuSaleAttrValueList)){
                //  循环遍历
                for (SpuSaleAttrValue spuSaleAttrValue : spuSaleAttrValueList) {
                    //   需要将spuId, sale_attr_name 赋值
                    spuSaleAttrValue.setSpuId(spuInfo.getId());
                    spuSaleAttrValue.setSaleAttrName(spuSaleAttr.getSaleAttrName());
                    spuSaleAttrValueMapper.insert(spuSaleAttrValue);
                }
            }
        }
    }


//保存海报

    //  获取到posterList 集合数据
    List<SpuPoster> spuPosterList = spuInfo.getSpuPosterList();
    //  判断不为空
    if (!CollectionUtils.isEmpty(spuPosterList)){
        for (SpuPoster spuPoster : spuPosterList) {
            //  需要将spuId 赋值
            spuPoster.setSpuId(spuInfo.getId());
            //  保存spuPoster
            spuPosterMapper.insert(spuPoster);
        }
    }
}

继续在控制器添加代码

/**
 * 保存spu
 * @param spuInfo
 * @return
 */
@PostMapping("saveSpuInfo")
public Result saveSpuInfo(@RequestBody SpuInfo spuInfo){
    // 调用服务层的保存方法
    manageService.saveSpuInfo(spuInfo);
    return Result.ok();
}

(3)spu表关系:

 

 

 

 

标签:十一,TableField,尚品,private,ApiModelProperty,value,import,com
From: https://blog.csdn.net/dengfengling999/article/details/140162839

相关文章

  • 尚品汇-(十)
    spu的保存功能中的图片上传(1)MinIo介绍MinIO是一个基于ApacheLicensev2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不......
  • 那些日子 二十一
    第三天,依旧还剩余一个下午,吃完油泼面开始下起了雨,我快步加小跑回到出租屋。明天周六,不知道回家与否,总感觉从业以来,只要是被迫离职的,心里都会堵得慌。聆听着雨声,点燃一支烟,脑海里闪过之前工作公司的一些领导同事们,我在想是不是因为跳槽太多导致我完全丧失了归属感,比如跟同事一起......
  • Nuxt3 的生命周期和钩子函数(十一)
    title:Nuxt3的生命周期和钩子函数(十一)date:2024/7/5updated:2024/7/5author:cmdragonexcerpt:摘要:本文详细介绍了Nuxt3中几个关键的生命周期钩子和它们的使用方法,包括webpack:done用于Webpack编译完成后执行操作,webpack:progress监听编译进度,render:response和render......
  • ensp 实验十一单臂路由 三层交换机
    本实验基于单臂路由、三层交换机、ospf实现通信。网络拓扑图如下:如图所示,LSW1为二层交换机,和AR1之间使用单臂路由进行连接,在两台pc机之间设置vlan1020。LSW1和两台pc机之间的0/0/2、0/0/3接口使用access口;0/0/1则使用trunk口进行通信并且允许vlan1020通过。并且公告两台pc机......
  • 2024年《地政》第十一章整理学习黑板报
      ......
  • Java基础(十一):抽象类、接口、内部类
    目录一、抽象类1、语法格式2、abstract修饰类3、abstract修饰方法二、接口1、定义格式2、接口的说明3、接口的使用规则3.1、类实现接口3.2、接口的多实现3.3、接口的多继承3.4、接口与实现类对象构成多态引用3.5、使用接口的静态成员3.5、使用接口的静态方法4、JDK8中......
  • Android SurfaceFlinger——创建Surface(二十一)
           通过前面的篇文章我们简单了解了Surface和Layer,并且知道了SurfaceComposerClient的createSurface()方法最终创建的其实是一个Layer,这里我们来看一下真正的获取Surface的方法。一、获取Surface       通过系统动画的播放流程中我们知道真正......
  • 十一、Redis持久化之AOF
    文章目录一、AOF(AppendOnlyFile)1.1是什么1.2AOF持久化流程1.3AOF默认不开启1.4AOF和RDB同时开启,redis听谁的?1.5AOF启动/修复/恢复1.6AOF同步频率设置1.7Rewrite压缩1.8优势1.9劣势1.10小总结二、总结(Whichone)2.1用哪个好2.2官网建议上一篇十、Red......
  • 《优化接口设计的思路》系列:第十一篇—表格的导入导出接口优化
    一、前言大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。作为一名从业已达六年的老码农,我的工作主要是开发后端Java业务系统,包括各种管理后台和小程序等。在这些项目中,我设计过单/多......
  • spring boot(学习笔记第十一课)
    springboot(学习笔记第十一课)Session共享,JPA实现自动RESTful学习内容:Session共享JPA实现自动RESTful1.Session共享Session共享面临问题springboot默认将session保存在webserver的内存里面,会产生什么问题呢。如上图所示,有nginx作为服务器前置负载均衡器的时......