提交 eedd79cb 作者: xiaowang

修改:商城规格详情及编辑

上级 58b7c127
package com.mmc.pms.dao.mall;
import com.mmc.pms.entity.SkuUnitDO;
import com.mmc.pms.entity.mall.*;
import com.mmc.pms.model.mall.MallGoodsVO;
import com.mmc.pms.model.mall.SpecAttrVO;
import com.mmc.pms.model.sale.qo.MallGoodsInfoQO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -21,34 +21,16 @@ public interface MallGoodsDao {
void insertMallGoodsBaseInfo(MallGoodsDO mallGoodsDO);
void insertGoodsSpec(GoodsSpecDO goodsSpecDO);
void batchInsertSpecValues(List<GoodsSpecValuesDO> goodsSpecValuesList);
void batchInsertMallGoodsResources(List<MallGoodsResourcesDO> mallGoodsResourcesList);
MallGoodsDO getMallGoodsBaseInfo(Integer id);
List<MallGoodsResourcesDO> getMallGoodsResources(Integer id);
List<GoodsSpecDO> getMallGoodsSpec(Integer id);
List<GoodsSpecValuesDO> getMallGoodsSpecValues(List<Integer> ids);
void updateMallGoods(@Param("mallGoodsDO") MallGoodsDO mallGoodsDO);
void deleteMallGoodsResources(Integer id);
void deleteGoodsSpec(List<Integer> deleteSpec);
void updateGoodsSpec(GoodsSpecDO goodsSpecDO);
void deleteGoodsSpecValues(List<Integer> deleteSpecValueId);
void updateGoodsSpecValue(GoodsSpecValuesDO goodsSpecValuesDO);
List<SkuUnitDO> getSkuUnit();
int countListMallGoods(MallGoodsInfoQO param);
List<MallGoodsDO> listMallGoods(MallGoodsInfoQO param);
......@@ -61,7 +43,25 @@ public interface MallGoodsDao {
void feignRemoveGoodsByBackUserAccountId(Integer id);
void batchInsertSpecAttr(List<SpecAttrDO> list);
void batchInsertSpecAttr(List<SpecAttrValueDO> list);
void batchInsertPriceStock(List<PriceStockDO> list);
List<SpecAttrDO> listSpecAttr(Integer id);
List<PriceStockDO> listPriceStock(Integer id);
void insertSpecAttr(SpecAttrDO specAttrDO);
List<SpecAttrValueDO> listSpecAttrValue(List<Integer> specIds);
void deleteMallPriceStock(Integer id);
void deleteSpecAttr(List<Integer> delIds);
void updateSpecAttr(SpecAttrVO specAttrVO);
void deleteSpecAttrValue(List<Integer> delValueIds);
void updateSpecAttrValue(SpecAttrVO attrVO);
}
......@@ -94,7 +94,7 @@ public class MallGoodsDO implements Serializable {
public MallGoodsVO buildMallGoodsVO() {
return MallGoodsVO.builder().id(id).userAccountId(userAccountId).tradeName(tradeName).description(description)
.categoryPrimaryId(categoryPrimaryId).categorySubId(categorySubId).shelfStatus(shelfStatus)
.goodsLabel(goodsLabel).labelShow(labelShow).goodsDetails(goodsDetails).build();
.goodsLabel(goodsLabel).labelShow(labelShow).createTime(createTime).goodsDetails(goodsDetails).build();
}
public MallGoodsVO buildListMallGoodsVO() {
......
......@@ -64,5 +64,10 @@ public class PriceStockDO implements Serializable {
this.stock = param.getStock();
this.skuNo = param.getSkuNo();
}
public PriceStockVO buildPriceStockVO() {
return PriceStockVO.builder().id(id).productSpec(productSpec).salePrice(salePrice)
.skuImage(skuImage).channelPrice(channelPrice).stock(stock).skuNo(skuNo).build();
}
}
package com.mmc.pms.entity.mall;
import com.mmc.pms.model.mall.SpecAttrVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
......@@ -28,13 +29,14 @@ public class SpecAttrDO implements Serializable {
* 规格名称
*/
private String specName;
/**
* 规格值名称
*/
private String specValueName;
private Date createTime;
private Date updateTime;
public SpecAttrVO buildSpecAttr() {
return SpecAttrVO.builder().id(id).specName(specName).build();
}
}
package com.mmc.pms.entity.mall;
import com.mmc.pms.model.mall.SpecAttrVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 规格属性表(SpecAttrDO)实体类
*
* @author makejava
* @since 2023-08-08 14:30:03
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SpecAttrValueDO implements Serializable {
private static final long serialVersionUID = -59237014539007263L;
private Integer id;
/**
* 商品id
*/
private Integer specAttrId;
/**
* 规格值名称
*/
private String specValueName;
private Date createTime;
public SpecAttrValueDO(SpecAttrVO specAttrVO) {
specAttrId = specAttrVO.getId();
specValueName = specAttrVO.getSpecName();
}
public SpecAttrVO buildSpecAttr() {
return SpecAttrVO.builder().id(id).specName(specValueName).build();
}
}
......@@ -59,10 +59,6 @@ public class MallGoodsVO {
private Integer labelShow;
@ApiModelProperty(value = "规格")
@NotEmpty(message = "规格不能为空")
private List<GoodsSpecVO> goodsSpecList;
@ApiModelProperty(value = "规格")
@NotEmpty(message = "规格不能为空", groups = {Update.class, Create.class})
private List<SpecAttrVO> specAttrList;
......
......@@ -22,7 +22,6 @@ import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
......@@ -49,26 +48,32 @@ public class MallGoodsServiceImpl implements MallGoodsService {
// 将商品图片等资源存入数据库中
insertMallGoodsResources(mallGoodsVO, mallGoodsDO.getId());
// 将商品规格存入数据库
// insertMallGoodsSpec(mallGoodsVO.getGoodsSpecList(), mallGoodsDO.getId());
addMallGoodsSpec(mallGoodsVO.getSpecAttrList(), mallGoodsDO.getId(), mallGoodsVO.getPriceStock());
return ResultBody.success();
}
@Transactional(rollbackFor = Exception.class)
public void addMallGoodsSpec(List<SpecAttrVO> specAttrList, Integer id, List<PriceStockVO> priceStock) {
List<SpecAttrDO> list = specAttrList.stream()
.flatMap(specAttrVO -> specAttrVO.getSpecValuesList().stream()
.map(attrVO -> {
SpecAttrDO specAttrDO = new SpecAttrDO();
specAttrDO.setMallGoodsId(id);
specAttrDO.setSpecName(specAttrVO.getSpecName());
specAttrDO.setSpecValueName(attrVO.getSpecName());
return specAttrDO;
}))
.collect(Collectors.toList());
mallGoodsDao.batchInsertSpecAttr(list);
List<PriceStockDO> priceStockDOList = priceStock.stream().map(d -> new PriceStockDO(d, id)).collect(Collectors.toList());
mallGoodsDao.batchInsertPriceStock(priceStockDOList);
if (CollectionUtils.isNotEmpty(specAttrList)) {
for (SpecAttrVO specAttrVO : specAttrList) {
SpecAttrDO specAttrDO = new SpecAttrDO();
specAttrDO.setMallGoodsId(id);
specAttrDO.setSpecName(specAttrVO.getSpecName());
mallGoodsDao.insertSpecAttr(specAttrDO);
List<SpecAttrVO> specValuesList = specAttrVO.getSpecValuesList();
List<SpecAttrValueDO> list = specValuesList.stream().map(d -> {
SpecAttrValueDO specAttrValueDO = new SpecAttrValueDO();
specAttrValueDO.setSpecValueName(d.getSpecName());
specAttrValueDO.setSpecAttrId(specAttrDO.getId());
return specAttrValueDO;
}).collect(Collectors.toList());
mallGoodsDao.batchInsertSpecAttr(list);
}
}
if (CollectionUtils.isNotEmpty(priceStock)) {
List<PriceStockDO> priceStockDOList = priceStock.stream().map(d -> new PriceStockDO(d, id)).collect(Collectors.toList());
mallGoodsDao.batchInsertPriceStock(priceStockDOList);
}
}
@Transactional(rollbackFor = Exception.class)
......@@ -124,18 +129,22 @@ public class MallGoodsServiceImpl implements MallGoodsService {
List<MallGoodsResourcesDO> mallGoodsResourcesList = mallGoodsDao.getMallGoodsResources(id);
mallGoodsVO.setResourcesList(mallGoodsResourcesList.stream()
.map(MallGoodsResourcesDO::buildGoodsResourcesVO).collect(Collectors.toList()));
// 获取规格信息
List<GoodsSpecDO> goodsSpecList = mallGoodsDao.getMallGoodsSpec(id);
List<GoodsSpecVO> goodsSpec = goodsSpecList.stream().map(GoodsSpecDO::buildGoodsSpecVO)
.collect(Collectors.toList());
// 获取规格值信息
List<GoodsSpecValuesDO> goodsSpecValuesList = mallGoodsDao.getMallGoodsSpecValues(goodsSpec.stream().map(GoodsSpecVO::getId).collect(Collectors.toList()));
List<GoodsSpecValuesVO> goodsSpecValues = goodsSpecValuesList.stream().map(GoodsSpecValuesDO::buildGoodsSpecValuesVO).collect(Collectors.toList());
Map<Integer, List<GoodsSpecValuesVO>> goodsSpecValuesVO = goodsSpecValues.stream().collect(Collectors.groupingBy(GoodsSpecValuesVO::getGoodsSpecId));
for (GoodsSpecVO goodsSpecVO : goodsSpec) {
goodsSpecVO.setGoodsSpecValuesList(goodsSpecValuesVO.get(goodsSpecVO.getId()));
}
mallGoodsVO.setGoodsSpecList(goodsSpec);
// 获取规格及规格值
List<SpecAttrDO> specAttrDOList = mallGoodsDao.listSpecAttr(id);
List<Integer> specIds = specAttrDOList.stream().map(SpecAttrDO::getId).collect(Collectors.toList());
List<SpecAttrValueDO> specAttrValueDOList = mallGoodsDao.listSpecAttrValue(specIds);
// 转成vo
List<SpecAttrVO> specAttrVOList = specAttrDOList.stream().map(SpecAttrDO::buildSpecAttr).collect(Collectors.toList());
// 拼装数据
Map<Integer, List<SpecAttrValueDO>> specValueMap = specAttrValueDOList.stream().collect(Collectors.groupingBy(SpecAttrValueDO::getSpecAttrId));
specAttrVOList = specAttrVOList.stream().peek(d -> {
List<SpecAttrValueDO> attrValueList = specValueMap.get(d.getId());
d.setSpecValuesList(attrValueList.stream().map(SpecAttrValueDO::buildSpecAttr).collect(Collectors.toList()));
}).collect(Collectors.toList());
mallGoodsVO.setSpecAttrList(specAttrVOList);
// 获取价格库存排列组合
List<PriceStockDO> priceStockDOList = mallGoodsDao.listPriceStock(id);
mallGoodsVO.setPriceStock(priceStockDOList.stream().map(PriceStockDO::buildPriceStockVO).collect(Collectors.toList()));
return ResultBody.success(mallGoodsVO);
}
......@@ -151,53 +160,64 @@ public class MallGoodsServiceImpl implements MallGoodsService {
// 修改商城商品的图片等资源信息,先删除后新增
mallGoodsDao.deleteMallGoodsResources(mallGoodsVO.getId());
this.insertMallGoodsResources(mallGoodsVO, mallGoodsVO.getId());
// 从数据库获取商品规格信息
List<GoodsSpecDO> dbGoodsSpec = mallGoodsDao.getMallGoodsSpec(mallGoodsVO.getId());
List<Integer> specIds = mallGoodsVO.getGoodsSpecList().stream().map(GoodsSpecVO::getId).filter(Objects::nonNull).collect(Collectors.toList());
// 对比要删除的规格
List<Integer> deleteSpec = dbGoodsSpec.stream().map(GoodsSpecDO::getId).filter(id -> !specIds.contains(id)).collect(Collectors.toList());
if (deleteSpec.size() != 0) {
mallGoodsDao.deleteGoodsSpec(deleteSpec);
// 修改规格
List<SpecAttrVO> specAttrList = mallGoodsVO.getSpecAttrList();
// 从数据库获取该商品下的所有规格
List<SpecAttrDO> dbSpecList = mallGoodsDao.listSpecAttr(mallGoodsVO.getId());
List<Integer> delIds = dbSpecList.stream().map(SpecAttrDO::getId)
.filter(id -> !specAttrList.stream().map(SpecAttrVO::getId).collect(Collectors.toList()).contains(id))
.collect(Collectors.toList());
if (delIds.size() != 0) {
// 删除多余规格
mallGoodsDao.deleteSpecAttr(delIds);
}
// 获取规格值信息
Map<Integer, List<GoodsSpecValuesDO>> specValuesMap = mallGoodsDao.getMallGoodsSpecValues(specIds).stream()
.collect(Collectors.groupingBy(GoodsSpecValuesDO::getGoodsSpecId));
// 修改规格信息
for (GoodsSpecVO goodsSpecVO : mallGoodsVO.getGoodsSpecList()) {
if (goodsSpecVO.getId() != null) {
GoodsSpecDO goodsSpecDO = new GoodsSpecDO(goodsSpecVO);
mallGoodsDao.updateGoodsSpec(goodsSpecDO);
// 数据库获取到的规格值信息
List<GoodsSpecValuesDO> dbSpecValues = specValuesMap.get(goodsSpecVO.getId());
List<Integer> specValuesId = goodsSpecVO.getGoodsSpecValuesList().stream().map(GoodsSpecValuesVO::getId).filter(Objects::nonNull).collect(Collectors.toList());
List<Integer> deleteSpecValueId = dbSpecValues.stream().map(GoodsSpecValuesDO::getId).filter(id -> !specValuesId.contains(id)).collect(Collectors.toList());
if (deleteSpecValueId.size() != 0) {
mallGoodsDao.deleteGoodsSpecValues(deleteSpecValueId);
// 获取id不为空的规格,进行修改
List<SpecAttrVO> updateSpecAttr = specAttrList.stream().filter(spec -> spec.getId() != null).collect(Collectors.toList());
// 从数据库获取规格下的规格值信息,获取所有,避免重复查询数据库
Map<Integer, List<SpecAttrValueDO>> specValueMap = mallGoodsDao.listSpecAttrValue(updateSpecAttr.stream().map(SpecAttrVO::getId).collect(Collectors.toList()))
.stream().collect(Collectors.groupingBy(SpecAttrValueDO::getSpecAttrId));
if (CollectionUtils.isNotEmpty(updateSpecAttr)) {
for (SpecAttrVO specAttrVO : updateSpecAttr) {
// 修改规格信息
mallGoodsDao.updateSpecAttr(specAttrVO);
// 获取该规格下数据库里的规格值信息
List<SpecAttrValueDO> dbSpecAttrValue = specValueMap.get(specAttrVO.getId());
List<Integer> delValueIds = dbSpecAttrValue.stream()
.map(SpecAttrValueDO::getId)
.filter(id -> !specAttrVO.getSpecValuesList().stream().map(SpecAttrVO::getId).collect(Collectors.toList()).contains(id))
.collect(Collectors.toList());
if (delValueIds.size() != 0) {
// 删除多余规格值
mallGoodsDao.deleteSpecAttrValue(delValueIds);
}
// 修改规格值的信息
List<GoodsSpecValuesVO> updateSpecValue = goodsSpecVO.getGoodsSpecValuesList().stream().filter(d -> d.getId() != null).collect(Collectors.toList());
for (GoodsSpecValuesVO goodsSpecValuesVO : updateSpecValue) {
GoodsSpecValuesDO goodsSpecValuesDO = new GoodsSpecValuesDO(goodsSpecValuesVO);
goodsSpecValuesDO.setGoodsSpecId(goodsSpecVO.getId());
mallGoodsDao.updateGoodsSpecValue(goodsSpecValuesDO);
// 获取规格值id不为空的就进行规格值修改
List<SpecAttrVO> updateSpecValue = specAttrVO.getSpecValuesList().stream().filter(var -> var.getId() != null).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(updateSpecValue)) {
for (SpecAttrVO attrVO : updateSpecValue) {
mallGoodsDao.updateSpecAttrValue(attrVO);
}
}
// 新增id为空的规格值
List<GoodsSpecValuesVO> newGoodsSpecValues = goodsSpecVO.getGoodsSpecValuesList().stream().filter(d -> d.getId() == null).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(newGoodsSpecValues)) {
List<GoodsSpecValuesDO> goodsSpecValuesList = newGoodsSpecValues.stream().map(d -> {
d.setGoodsSpecId(goodsSpecVO.getId());
return new GoodsSpecValuesDO(d);
// 新增规格值
List<SpecAttrVO> addSpecValue = specAttrVO.getSpecValuesList().stream().filter(var -> var.getId() == null).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(addSpecValue)) {
List<SpecAttrValueDO> specValueList = addSpecValue.stream().map(d -> {
SpecAttrValueDO specAttrValueDO = new SpecAttrValueDO();
specAttrValueDO.setSpecAttrId(specAttrVO.getId());
specAttrValueDO.setSpecValueName(d.getSpecName());
return specAttrValueDO;
}).collect(Collectors.toList());
// 批量插入规格值的信息
mallGoodsDao.batchInsertSpecValues(goodsSpecValuesList);
mallGoodsDao.batchInsertSpecAttr(specValueList);
}
}
}
// 新增id为空的规格
List<GoodsSpecVO> newGoodsSpec = mallGoodsVO.getGoodsSpecList().stream().filter(d -> d.getId() == null).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(newGoodsSpec)) {
this.insertMallGoodsSpec(newGoodsSpec, mallGoodsVO.getId());
// 获取规格id为空的值,进行新增
List<SpecAttrVO> addSpecAttr = specAttrList.stream().filter(spec -> spec.getId() == null).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(addSpecAttr)) {
addMallGoodsSpec(addSpecAttr, mallGoodsVO.getId(), null);
}
// 修改排列组合数据
mallGoodsDao.deleteMallPriceStock(mallGoodsVO.getId());
addMallGoodsSpec(null, mallGoodsVO.getId(), mallGoodsVO.getPriceStock());
return ResultBody.success();
}
......
......@@ -19,31 +19,7 @@
values ( #{goodsNo}, #{tradeName}, #{description}, #{categoryPrimaryId}, #{categorySubId}
, #{shelfStatus}, #{goodsLabel}, #{labelShow}, #{goodsDetails}, #{userAccountId}, #{sort})
</insert>
<insert id="insertGoodsSpec" parameterType="com.mmc.pms.entity.mall.GoodsSpecDO"
keyProperty="id" useGeneratedKeys="true">
insert into goods_spec (mall_goods_id,
spec_name,
choose_type,
must,
sku_unit_id)
values (#{mallGoodsId}, #{specName}, #{chooseType}, #{must}, #{skuUnitId})
</insert>
<!-- 新版待删除 -->
<insert id="batchInsertSpecValues" parameterType="list">
insert into goods_spec_values (goods_spec_id,
spec_value_name,
part_no,
spec_value_image,
show_price,
stock,
sale_price,
channel_price)
values
<foreach collection="list" item="item" separator=",">
(#{item.goodsSpecId},#{item.specValueName},#{item.partNo},#{item.specValueImage}
,#{item.showPrice},#{item.stock},#{item.salePrice},#{item.channelPrice})
</foreach>
</insert>
<insert id="batchInsertMallGoodsResources">
insert into mall_goods_resources (mall_goods_id,
url,
......@@ -55,13 +31,12 @@
</foreach>
</insert>
<insert id="batchInsertSpecAttr">
insert into spec_attr (mall_goods_id,
spec_name,
insert into spec_attr_value (spec_attr_id,
spec_value_name
)
values
<foreach collection="list" item="item" separator=",">
(#{item.mallGoodsId},#{item.specName},#{item.specValueName})
(#{item.specAttrId},#{item.specValueName})
</foreach>
</insert>
<insert id="batchInsertPriceStock">
......@@ -77,6 +52,12 @@
(#{item.mallGoodsId},#{item.productSpec},#{item.salePrice},#{item.skuImage},#{item.channelPrice},#{item.stock},#{item.skuNo})
</foreach>
</insert>
<insert id="insertSpecAttr" useGeneratedKeys="true" keyProperty="id"
parameterType="com.mmc.pms.entity.mall.SpecAttrDO">
insert into spec_attr (mall_goods_id,
spec_name)
values (#{mallGoodsId}, #{specName})
</insert>
<update id="updateMallGoods">
UPDATE mall_goods
SET trade_name = #{mallGoodsDO.tradeName},
......@@ -89,26 +70,6 @@
goods_details = #{mallGoodsDO.goodsDetails}
WHERE id = #{mallGoodsDO.id}
</update>
<update id="updateGoodsSpec">
update goods_spec
set spec_name = #{specName},
choose_type = #{chooseType},
must = #{must},
sku_unit_id = #{skuUnitId}
where id = #{id}
</update>
<update id="updateGoodsSpecValue">
update goods_spec_values
set goods_spec_id = #{goodsSpecId},
spec_value_name = #{specValueName},
part_no =#{partNo},
spec_value_image = #{specValueImage},
show_price = #{showPrice},
stock = #{stock},
sale_price = #{salePrice},
channel_price =#{channelPrice}
where id = #{id}
</update>
<update id="updateMallGoodsSort">
update mall_goods
set sort = #{sort}
......@@ -129,23 +90,38 @@
set is_deleted = 1
where user_account_id = #{id}
</update>
<update id="updateSpecAttr">
update spec_attr
set spec_name = #{specName}
where id = #{id}
</update>
<update id="updateSpecAttrValue">
update spec_attr_value
set spec_value_name = #{specName}
where id = #{id}
</update>
<delete id="deleteMallGoodsResources">
delete
from mall_goods_resources
where mall_goods_id = #{id}
</delete>
<delete id="deleteGoodsSpec">
<delete id="deleteMallPriceStock">
delete
from price_stock
where mall_goods_id = #{id}
</delete>
<delete id="deleteSpecAttr">
delete
from goods_spec
from spec_attr
<where>
<foreach collection="list" open="id in (" close=")" item="item" separator=",">
#{item}
</foreach>
</where>
</delete>
<delete id="deleteGoodsSpecValues">
<delete id="deleteSpecAttrValue">
delete
from goods_spec_values
from spec_attr_value
<where>
<foreach collection="list" open="id in (" close=")" item="item" separator=",">
#{item}
......@@ -179,7 +155,8 @@
label_show,
goods_details,
user_account_id,
sort
sort,
create_time
FROM mall_goods
WHERE id = #{id}
and is_deleted = 0
......@@ -192,40 +169,7 @@
from mall_goods_resources
where mall_goods_id = #{id}
</select>
<select id="getMallGoodsSpec" resultType="com.mmc.pms.entity.mall.GoodsSpecDO">
select id,
mall_goods_id,
spec_name,
choose_type,
must,
sku_unit_id
from goods_spec
where mall_goods_id = #{id}
</select>
<select id="getMallGoodsSpecValues" resultType="com.mmc.pms.entity.mall.GoodsSpecValuesDO">
select id,
goods_spec_id,
spec_value_name,
part_no,
spec_value_image,
show_price,
stock,
sale_price,
channel_price
from goods_spec_values
<where>
<foreach collection="list" separator="," item="item" open="goods_spec_id in (" close=")">
#{item}
</foreach>
</where>
</select>
<select id="getSkuUnit" resultType="com.mmc.pms.entity.SkuUnitDO">
SELECT id,
unit_name unitName,
create_time createTime
FROM sku_unit
WHERE is_deleted = 0
</select>
<select id="countListMallGoods" resultType="java.lang.Integer">
SELECT
count(*)
......@@ -283,4 +227,34 @@
mg.shelf_status DESC , mg.sort DESC,mg.create_time DESC
limit #{pageNo},#{pageSize}
</select>
<select id="listSpecAttr" resultType="com.mmc.pms.entity.mall.SpecAttrDO">
SELECT id, spec_name, mall_goods_id, create_time
FROM spec_attr
where mall_goods_id = #{id}
</select>
<select id="listPriceStock" resultType="com.mmc.pms.entity.mall.PriceStockDO">
SELECT id,
mall_goods_id,
product_spec,
sale_price,
sku_image,
channel_price,
stock,
sku_no,
create_time
FROM price_stock
WHERE mall_goods_id = #{id}
</select>
<select id="listSpecAttrValue" resultType="com.mmc.pms.entity.mall.SpecAttrValueDO">
SELECT id,
spec_attr_id,
spec_value_name,
create_time
FROM spec_attr_value
<where>
<foreach collection="list" separator="," open="spec_attr_id in (" close=")" item="item">
#{item}
</foreach>
</where>
</select>
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论