商品信息回显--第一版

dev798
wxy 2024-05-13 20:39:48 +08:00
parent 8b4cb7038d
commit 02fe3d34af
7 changed files with 156 additions and 32 deletions

View File

@ -0,0 +1,18 @@
package com.nuyu.product.constant;
/**
* @Author: wangxinyuan
* @Date: 2024/5/13 3:07
*/
public interface ProductConstant {
public static final String CACHE_PREFIX = "muyu:product:";
public static final int TTL = 1000 *60 *60 *24 *14 ;
public static final String STEP_ONE ="0";
public static final String STEP_TWO ="1";
public static final String STEP_THREE ="2";
}

View File

@ -9,6 +9,7 @@ import org.apache.commons.lang3.builder.ToStringStyle;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import javax.validation.constraints.NotNull;
import java.io.Serial;
/**
@ -28,6 +29,7 @@ public class MallProductInfo extends BaseEntity
/** ID */
private Long id;
@NotNull(message = "product is Not Null")
/** 商品名称 */
@Excel(name = "商品名称")
@ -98,6 +100,22 @@ public class MallProductInfo extends BaseEntity
this.id = id;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getPageNum() {
return pageNum;
}
public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
}
public Long getId()
{
return id;

View File

@ -71,7 +71,7 @@ public class MallProductInfoController extends BaseController
@GetMapping(value = "/{id}")
public Result getInfo(@PathVariable("id") Long id)
{
return success(mallProductInfoService.selectMallProductInfoById(id));
return success(mallProductInfoService.selectMallProductInfoAndSkuInfoById(id));
}
/**
@ -91,7 +91,7 @@ public class MallProductInfoController extends BaseController
@RequiresPermissions("product:info:edit")
@Log(title = "商品信息", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit(@RequestBody MallProductInfo mallProductInfo)
public Result edit(@RequestBody MallProductInfoForm mallProductInfo)
{
return toAjax(mallProductInfoService.updateMallProductInfo(mallProductInfo));
}

View File

@ -1,7 +1,9 @@
package com.muyu.product.mapper;
import com.nuyu.product.domain.MallProductInfo;
import com.nuyu.product.req.MallProductInfoForm;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -64,4 +66,6 @@ public interface MallProductInfoMapper
public int deleteMallProductInfoByIds(Long[] ids);
List<MallProductInfo> list(MallProductInfo mallProductInfo);
MallProductInfoForm selectMallProductInfoAndSkuInfoById(@Param("id") Long id);
}

View File

@ -10,10 +10,12 @@ import com.muyu.common.core.utils.DateUtils;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.product.service.MallProductInfoService;
import com.muyu.product.service.MallProductSkuInfoService;
import com.nuyu.product.constant.ProductConstant;
import com.nuyu.product.domain.MallProductInfo;
import com.nuyu.product.domain.MallProductSkuInfo;
import com.nuyu.product.domain.MallProductTypeInfo;
import com.nuyu.product.req.MallProductInfoForm;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
@ -29,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional;
* @author muyu
* @date 2024-05-06
*/
@Slf4j
@Service
public class MallProductInfoServiceImpl implements MallProductInfoService
{
@ -81,35 +84,9 @@ public class MallProductInfoServiceImpl implements MallProductInfoService
// 设置产品创建时间和更新时间
mallProductInfo.setCreateTime(DateUtils.getNowDate());
mallProductInfo.setUpdateTime(DateUtils.getNowDate());
// 插入商城产品基本信息
int num = mallProductInfoMapper.insertMallProductInfo(mallProductInfo);
// 获取产品SKU信息列表
List<MallProductSkuInfo>skuInfoList=mallProductInfo.getSkuInfoList();
// 如果产品信息插入成功且SKU信息不为空则进行SKU信息的插入
if(num > 0 && CollectionUtils.isNotEmpty(skuInfoList)){
// 准备插入的SKU信息列表
Long productInfoId = mallProductInfo.getId();
List<MallProductSkuInfo>mallProductSkuInfoList=new ArrayList<>();
Date createTime = new Date();
// 先删除该产品之前的SKU信息准备插入新的SKU信息
mallProductSkuInfoService.deleteMallProductSkuInfoId(productInfoId);
// 遍历SKU信息列表复制属性并设置SKU信息的关联产品ID及其他默认值
skuInfoList.stream().forEach(item ->{
MallProductSkuInfo mallProductSkuInfo = new MallProductSkuInfo();
BeanUtils.copyProperties(item,mallProductSkuInfo);
mallProductSkuInfo.setProductId(productInfoId);
mallProductSkuInfo.setImage("1");
mallProductSkuInfo.setUpdateBy(String.valueOf(userId));
mallProductSkuInfo.setCreateBy(String.valueOf(userId));
mallProductSkuInfo.setCreateTime(createTime);
mallProductSkuInfo.setUpdateTime(createTime);
mallProductSkuInfoList.add(mallProductSkuInfo);
});
// 批量插入处理后的SKU信息
mallProductSkuInfoService.insertMallProductSkuInfoList(mallProductSkuInfoList);
}
packageDataSeveOrUpdate(mallProductInfo,num,userId);
return num;
}
@ -119,13 +96,68 @@ public class MallProductInfoServiceImpl implements MallProductInfoService
* @param mallProductInfo
* @return
*/
@Transactional
@Override
public int updateMallProductInfo(MallProductInfo mallProductInfo)
public int updateMallProductInfo(MallProductInfoForm mallProductInfo)
{
String step = mallProductInfo.getStep();
log.info("参数{}",step);
switch (step) {
case ProductConstant.STEP_ONE:
Long productInfoId = mallProductInfo.getId();
mallProductInfo.setSkuInfoList(null);
mallProductSkuInfoService.deleteMallProductSkuInfoId(productInfoId);
break;
case ProductConstant.STEP_THREE:
mallProductInfo.setProductDesc("");
break;
default:
break;
}
Long userid = SecurityUtils.getLoginUser().getUserid();
mallProductInfo.setCreateBy(String.valueOf(userid));
Long loginUserId = SecurityUtils.getLoginUser().getUserid();
mallProductInfo.setUpdateBy(String.valueOf(loginUserId));
// 设置产品创建时间和更新时间
mallProductInfo.setCreateTime(DateUtils.getNowDate());
mallProductInfo.setUpdateTime(DateUtils.getNowDate());
return mallProductInfoMapper.updateMallProductInfo(mallProductInfo);
mallProductInfo.setUpdateTime(DateUtils.getNowDate());
int num = mallProductInfoMapper.updateMallProductInfo(mallProductInfo);
packageDataSeveOrUpdate(mallProductInfo,num,userid);
return num;
}
private void packageDataSeveOrUpdate(MallProductInfoForm mallProductInfo, int num, Long userid) {
List<MallProductSkuInfo>skuInfoList=mallProductInfo.getSkuInfoList();
// 如果产品信息插入成功且SKU信息不为空则进行SKU信息的插入
if(num > 0 && CollectionUtils.isNotEmpty(skuInfoList)){
// 准备插入的SKU信息列表
Long productInfoId = mallProductInfo.getId();
List<MallProductSkuInfo>mallProductSkuInfoList=new ArrayList<>();
Date createTime = new Date();
// 先删除该产品之前的SKU信息准备插入新的SKU信息
mallProductSkuInfoService.deleteMallProductSkuInfoId(productInfoId);
// 遍历SKU信息列表复制属性并设置SKU信息的关联产品ID及其他默认值
skuInfoList.stream().forEach(item ->{
MallProductSkuInfo mallProductSkuInfo = new MallProductSkuInfo();
BeanUtils.copyProperties(item,mallProductSkuInfo);
mallProductSkuInfo.setProductId(productInfoId);
mallProductSkuInfo.setImage("1");
mallProductSkuInfo.setUpdateBy(String.valueOf(userid));
mallProductSkuInfo.setCreateBy(String.valueOf(userid));
mallProductSkuInfo.setCreateTime(createTime);
mallProductSkuInfo.setUpdateTime(createTime);
mallProductSkuInfoList.add(mallProductSkuInfo);
});
// 批量插入处理后的SKU信息
mallProductSkuInfoService.insertMallProductSkuInfoList(mallProductSkuInfoList);
}
}
/**
*
*
@ -157,4 +189,9 @@ public class MallProductInfoServiceImpl implements MallProductInfoService
PageInfo<MallProductInfo> pageInfo = new PageInfo<>(products);
return pageInfo;
}
@Override
public MallProductInfoForm selectMallProductInfoAndSkuInfoById(Long id) {
return mallProductInfoMapper.selectMallProductInfoAndSkuInfoById(id);
}
}

View File

@ -45,7 +45,7 @@ public interface MallProductInfoService
* @param mallProductInfo
* @return
*/
public int updateMallProductInfo(MallProductInfo mallProductInfo);
public int updateMallProductInfo(MallProductInfoForm mallProductInfo);
/**
*
@ -66,4 +66,5 @@ public interface MallProductInfoService
//列表
PageInfo<MallProductInfo> list(MallProductInfo mallProductRuleAttrInfo);
MallProductInfoForm selectMallProductInfoAndSkuInfoById(Long id);
}

View File

@ -52,6 +52,52 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
</select>
<resultMap type="com.nuyu.product.req.MallProductInfoForm" id="MallProductInfoAndSkuInfoResult">
<result property="id" column="id" />
<result property="name" column="name" />
<result property="productDesc" column="product_desc" />
<result property="type" column="type" />
<result property="typeIds" column="type_ids" />
<result property="img" column="img" />
<result property="carouselImages" column="carousel_images" />
<result property="commentCount" column="comment_count" />
<result property="collectCount" column="collect_count" />
<result property="brand" column="brand" />
<result property="status" column="status" />
<result property="unit" column="unit" />
<result property="keywords" column="keywords" />
<result property="ruleId" column="rule_id" />
<result property="revision" column="revision" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="step" column="step" />
<collection property="skuInfoList" ofType="com.nuyu.product.domain.MallProductSkuInfo"
resultMap="com.muyu.product.mapper.MallProductSkuInfoMapper.MallProductSkuInfoResult">
</collection>
<!-- <collection property="skuInfoList" ofType="com.nuyu.product.domain.MallProductSkuInfo">-->
<!-- <result property="productId" column="product_id" />-->
<!-- <result property="sku" column="sku" />-->
<!-- <result property="stock" column="stock" />-->
<!-- <result property="price" column="price" />-->
<!-- <result property="purchasePrice" column="purchase_price" />-->
<!-- <result property="sellingPrice" column="selling_price" />-->
<!-- <result property="image" column="image" />-->
<!-- <result property="number" column="number" />-->
<!-- <result property="weight" column="weight" />-->
<!-- <result property="volume" column="volume" />-->
<!-- <result property="revision" column="revision" />-->
<!-- </collection>-->
</resultMap>
<select id="selectMallProductInfoAndSkuInfoById" resultMap="MallProductInfoAndSkuInfoResult" parameterType="java.lang.Long">
select * from mall_product_info mpi left join
mall_product_sku_info mpsi on mpi.id = mpsi.product_id
where mpi.id = #{id}
</select>
<insert id="insertMallProductInfo" parameterType="com.nuyu.product.domain.MallProductInfo" useGeneratedKeys="true" keyProperty="id">
insert into mall_product_info
<trim prefix="(" suffix=")" suffixOverrides=",">