feat(新增-商品管理): 查询商品详情

Signed-off-by: bunny <1319900154@qq.com>
This commit is contained in:
bunny 2024-03-26 16:19:10 +08:00
parent ac36b13ee1
commit 580e1155db
9 changed files with 121 additions and 1 deletions

View File

@ -43,4 +43,11 @@ public class ProductController {
productService.save(product); productService.save(product);
return Result.success(); return Result.success();
} }
@Operation(summary = "查询商品详情", description = "查询商品详情")
@GetMapping("getById/{id}")
public Result<Product> getById(@PathVariable Long id) {
Product product = productService.getById(id);
return Result.success(product);
}
} }

View File

@ -11,4 +11,12 @@ public interface ProductDetailsMapper {
* @param productDetails 商品实体类 * @param productDetails 商品实体类
*/ */
void save(ProductDetails productDetails); void save(ProductDetails productDetails);
/**
* 根据商品的id查询商品详情数据
*
* @param id 查询的ID
* @return ProductDetails
*/
ProductDetails selectByProductId(Long id);
} }

View File

@ -22,4 +22,12 @@ public interface ProductMapper {
* @param product 商品实体类 * @param product 商品实体类
*/ */
void save(Product product); void save(Product product);
/**
* 根据id查询商品数据
*
* @param id 查询的ID
* @return 商品实体类
*/
Product selectById(Long id);
} }

View File

@ -3,6 +3,8 @@ package com.atguigu.spzx.manger.mapper;
import com.atguigu.spzx.model.entity.product.ProductSku; import com.atguigu.spzx.model.entity.product.ProductSku;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper @Mapper
public interface ProductSkuMapper { public interface ProductSkuMapper {
/** /**
@ -11,4 +13,12 @@ public interface ProductSkuMapper {
* @param productSku 商品实体类 * @param productSku 商品实体类
*/ */
void save(ProductSku productSku); void save(ProductSku productSku);
/**
* 根据商品的id查询sku数据
*
* @param id 查询的ID
* @return 商品实体类列表
*/
List<ProductSku> selectByProductId(Long id);
} }

View File

@ -21,4 +21,12 @@ public interface ProductService {
* @param product 商品实体类 * @param product 商品实体类
*/ */
void save(Product product); void save(Product product);
/**
* 查询商品详情
*
* @param id 查询ID
* @return 商品实体类
*/
Product getById(Long id);
} }

View File

@ -78,4 +78,26 @@ public class ProductServiceImpl implements ProductService {
productDetails.setImageUrls(product.getDetailsImageUrls()); productDetails.setImageUrls(product.getDetailsImageUrls());
productDetailsMapper.save(productDetails); productDetailsMapper.save(productDetails);
} }
/**
* 查询商品详情
*
* @param id 查询ID
* @return 商品实体类
*/
@Override
public Product getById(Long id) {
// 根据id查询商品数据
Product product = productMapper.selectById(id);
// 根据商品的id查询sku数据
List<ProductSku> productSkuList = productSkuMapper.selectByProductId(id);
product.setProductSkuList(productSkuList);
// 根据商品的id查询商品详情数据
ProductDetails productDetails = productDetailsMapper.selectByProductId(product.getId());
product.setDetailsImageUrls(productDetails.getImageUrls());
// 返回数据
return product;
}
} }

View File

@ -1,9 +1,23 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.atguigu.spzx.manger.mapper.ProductDetailsMapper"> <mapper namespace="com.atguigu.spzx.manger.mapper.ProductDetailsMapper">
<!-- 用于select查询公用抽取的列 -->
<sql id="columns">
id,product_id,image_urls,create_time,update_time,is_deleted
</sql>
<!-- 保存数据 --> <!-- 保存数据 -->
<insert id="save" useGeneratedKeys="true" keyProperty="id"> <insert id="save" useGeneratedKeys="true" keyProperty="id">
insert into product_details (id, product_id, image_urls, create_time, update_time, is_deleted) insert into product_details (id, product_id, image_urls, create_time, update_time, is_deleted)
values (#{id}, #{productId}, #{imageUrls}, now(), now(), 0) </insert> values (#{id}, #{productId}, #{imageUrls}, now(), now(), 0)
</insert>
<select id="selectByProductId" resultType="com.atguigu.spzx.model.entity.product.ProductDetails">
select
<include refid="columns"/>
from product_details
where
product_id = #{productId}
</select>
</mapper> </mapper>

View File

@ -43,4 +43,33 @@
</where> </where>
order by id desc order by id desc
</select> </select>
<!-- 根据id查询商品数据 -->
<select id="selectById" resultType="com.atguigu.spzx.model.entity.product.Product">
select p.id,
p.name,
p.brand_id,
p.category1_id,
p.category2_id,
p.category3_id,
p.unit_name,
p.slider_urls,
p.spec_value,
p.status,
p.audit_status,
p.audit_message,
p.create_time,
p.update_time,
p.is_deleted,
b.name brandName,
c1.name category1Name,
c2.name category2Name,
c2.name category3Name
from product p
LEFT JOIN brand b on b.id = p.brand_id
LEFT JOIN category c1 on c1.id = p.category1_id
LEFT JOIN category c2 on c2.id = p.category2_id
LEFT JOIN category c3 on c3.id = p.category3_id
where p.id = #{id}
</select>
</mapper> </mapper>

View File

@ -1,6 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.atguigu.spzx.manger.mapper.ProductSkuMapper"> <mapper namespace="com.atguigu.spzx.manger.mapper.ProductSkuMapper">
<!-- 用于select查询公用抽取的列 -->
<sql id="columns">
id,sku_code,sku_name,product_id,thumb_img,sale_price,market_price,cost_price,stock_num,sku_spec,weight,volume,status,create_time,update_time,is_deleted
</sql>
<!-- 保存数据 --> <!-- 保存数据 -->
<insert id="save" useGeneratedKeys="true" keyProperty="id"> <insert id="save" useGeneratedKeys="true" keyProperty="id">
@ -10,4 +14,14 @@
values (#{id}, #{skuCode}, #{skuName}, #{productId}, #{thumbImg}, #{salePrice}, #{marketPrice}, values (#{id}, #{skuCode}, #{skuName}, #{productId}, #{thumbImg}, #{salePrice}, #{marketPrice},
#{costPrice}, #{stockNum}, #{skuSpec}, #{weight}, #{volume}, #{status}, #{saleNum}, now(), now(), 0) #{costPrice}, #{stockNum}, #{skuSpec}, #{weight}, #{volume}, #{status}, #{saleNum}, now(), now(), 0)
</insert> </insert>
<!-- 根据商品的id查询sku数据 -->
<select id="selectByProductId" resultType="com.atguigu.spzx.model.entity.product.ProductSku">
select
<include refid="columns"/>
from product_sku
where product_id = #{productId}
and is_deleted = 0
order by id desc
</select>
</mapper> </mapper>