添加创建产品功能

This commit is contained in:
zhh
2018-04-26 14:01:39 +08:00
parent f603ca624d
commit edc71542ae
83 changed files with 347 additions and 34604 deletions

View File

@@ -3,6 +3,7 @@ package com.macro.mall;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* 应用启动入口
@@ -10,6 +11,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
*/
@SpringBootApplication
@MapperScan({"com.macro.mall.mapper","com.macro.mall.dao"})
@EnableTransactionManagement
public class MallAdminApplication {
public static void main(String[] args) {
SpringApplication.run(MallAdminApplication.class, args);

View File

@@ -0,0 +1,14 @@
package com.macro.mall.dao;
import com.macro.mall.model.CmsPrefrenceAreaProductRelation;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 自定义优选和商品关系操作
* Created by macro on 2018/4/26.
*/
public interface CmsPrefrenceAreaProductRelationDao {
int insertList(@Param("list") List<CmsPrefrenceAreaProductRelation> prefrenceAreaProductRelationList);
}

View File

@@ -0,0 +1,14 @@
package com.macro.mall.dao;
import com.macro.mall.model.CmsSubjectProductRelation;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 自定义商品和专题关系操作
* Created by macro on 2018/4/26.
*/
public interface CmsSubjectProductRelationDao {
int insertList(@Param("list") List<CmsSubjectProductRelation> subjectProductRelationList);
}

View File

@@ -0,0 +1,14 @@
package com.macro.mall.dao;
import com.macro.mall.model.PmsProductAttributeValue;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 商品参数商品自定义规格属性Dao
* Created by macro on 2018/4/26.
*/
public interface PmsProductAttributeValueDao {
int insertList(@Param("list")List<PmsProductAttributeValue> productAttributeValueList);
}

View File

@@ -17,13 +17,13 @@ public class PmsProductParam {
@ApiModelProperty("商品阶梯价格设置")
private List<PmsProductLadder> productLadderList;
@ApiModelProperty("商品满减价格设置")
private List<PmsProductFullReduction> pmsProductFullReductionList;
private List<PmsProductFullReduction> productFullReductionList;
@ApiModelProperty("商品会员价格设置")
private List<PmsMemberPrice> pmsMemberPriceList;
private List<PmsMemberPrice> memberPriceList;
@ApiModelProperty("商品的sku库存信息")
private List<PmsSkuStock> skuStockList;
@ApiModelProperty("商品参数及自定义规格属性")
private List<PmsProductAttributeValue> pmsProductAttributeValueList;
private List<PmsProductAttributeValue> productAttributeValueList;
@ApiModelProperty("专题和商品关系")
private List<CmsSubjectProductRelation> subjectProductRelationList;
@ApiModelProperty("优选专区和商品的关系")
@@ -45,20 +45,20 @@ public class PmsProductParam {
this.productLadderList = productLadderList;
}
public List<PmsProductFullReduction> getPmsProductFullReductionList() {
return pmsProductFullReductionList;
public List<PmsProductFullReduction> getProductFullReductionList() {
return productFullReductionList;
}
public void setPmsProductFullReductionList(List<PmsProductFullReduction> pmsProductFullReductionList) {
this.pmsProductFullReductionList = pmsProductFullReductionList;
public void setProductFullReductionList(List<PmsProductFullReduction> productFullReductionList) {
this.productFullReductionList = productFullReductionList;
}
public List<PmsMemberPrice> getPmsMemberPriceList() {
return pmsMemberPriceList;
public List<PmsMemberPrice> getMemberPriceList() {
return memberPriceList;
}
public void setPmsMemberPriceList(List<PmsMemberPrice> pmsMemberPriceList) {
this.pmsMemberPriceList = pmsMemberPriceList;
public void setMemberPriceList(List<PmsMemberPrice> memberPriceList) {
this.memberPriceList = memberPriceList;
}
public List<PmsSkuStock> getSkuStockList() {
@@ -69,12 +69,12 @@ public class PmsProductParam {
this.skuStockList = skuStockList;
}
public List<PmsProductAttributeValue> getPmsProductAttributeValueList() {
return pmsProductAttributeValueList;
public List<PmsProductAttributeValue> getProductAttributeValueList() {
return productAttributeValueList;
}
public void setPmsProductAttributeValueList(List<PmsProductAttributeValue> pmsProductAttributeValueList) {
this.pmsProductAttributeValueList = pmsProductAttributeValueList;
public void setProductAttributeValueList(List<PmsProductAttributeValue> productAttributeValueList) {
this.productAttributeValueList = productAttributeValueList;
}
public List<CmsSubjectProductRelation> getSubjectProductRelationList() {

View File

@@ -2,6 +2,9 @@ package com.macro.mall.service;
import com.macro.mall.dto.PmsProductCategoryParam;
import com.macro.mall.model.PmsProductCategory;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;

View File

@@ -1,6 +1,9 @@
package com.macro.mall.service;
import com.macro.mall.dto.PmsProductParam;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
/**
* 商品管理Service
@@ -10,5 +13,6 @@ public interface PmsProductService {
/**
* 创建商品
*/
@Transactional(isolation = Isolation.DEFAULT,propagation = Propagation.REQUIRED)
int create(PmsProductParam productParam);
}

View File

@@ -1,26 +1,26 @@
package com.macro.mall.service.impl;
import com.macro.mall.dao.PmsMemberPriceDao;
import com.macro.mall.dao.PmsProductFullReductionDao;
import com.macro.mall.dao.PmsProductLadderDao;
import com.macro.mall.dao.*;
import com.macro.mall.dto.PmsProductParam;
import com.macro.mall.mapper.PmsProductMapper;
import com.macro.mall.model.PmsMemberPrice;
import com.macro.mall.model.PmsProduct;
import com.macro.mall.model.PmsProductFullReduction;
import com.macro.mall.model.PmsProductLadder;
import com.macro.mall.model.*;
import com.macro.mall.service.PmsProductService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.lang.reflect.Method;
import java.util.List;
/**
* 商品管理Service实现类
* Created by macro on 2018/4/26.
*/
@Service
public class PmsProductServiceImpl implements PmsProductService {
private static final Logger LOGGER = LoggerFactory.getLogger(PmsProductServiceImpl.class);
@Autowired
private PmsProductMapper productMapper;
@Autowired
@@ -29,6 +29,14 @@ public class PmsProductServiceImpl implements PmsProductService {
private PmsProductLadderDao productLadderDao;
@Autowired
private PmsProductFullReductionDao productFullReductionDao;
@Autowired
private PmsSkuStockDao skuStockDao;
@Autowired
private PmsProductAttributeValueDao productAttributeValueDao;
@Autowired
private CmsSubjectProductRelationDao subjectProductRelationDao;
@Autowired
private CmsPrefrenceAreaProductRelationDao prefrenceAreaProductRelationDao;
@Override
public int create(PmsProductParam productParam) {
@@ -40,7 +48,37 @@ public class PmsProductServiceImpl implements PmsProductService {
//根据促销类型设置价格:、阶梯价格、满减价格
Long productId = product.getId();
//会员价格
List<PmsMemberPrice> memberPriceList = productParam.getPmsMemberPriceList();
relateAndInsertList(memberPriceDao,productParam.getMemberPriceList(),productId);
//阶梯价格
relateAndInsertList(productLadderDao,productParam.getProductLadderList(),productId);
//满减价格
relateAndInsertList(productFullReductionDao, productParam.getProductFullReductionList(), productId);
//添加sku库存信息
relateAndInsertList(skuStockDao, productParam.getSkuStockList(), productId);
//添加商品参数,添加自定义商品规格
relateAndInsertList(productAttributeValueDao, productParam.getProductAttributeValueList(), productId);
//关联专题
relateAndInsertList(subjectProductRelationDao, productParam.getSubjectProductRelationList(), productId);
//关联优选
relateAndInsertList(prefrenceAreaProductRelationDao, productParam.getPrefrenceAreaProductRelationList(), productId);
count = 1;
return count;
}
/**
* @deprecated
* 旧版创建
*/
public int createOld(PmsProductParam productParam) {
int count;
//创建商品
PmsProduct product = productParam.getProduct();
product.setId(null);
productMapper.insertSelective(product);
//根据促销类型设置价格:、阶梯价格、满减价格
Long productId = product.getId();
//会员价格
List<PmsMemberPrice> memberPriceList = productParam.getMemberPriceList();
if (!CollectionUtils.isEmpty(memberPriceList)) {
for (PmsMemberPrice pmsMemberPrice : memberPriceList) {
pmsMemberPrice.setId(null);
@@ -58,7 +96,7 @@ public class PmsProductServiceImpl implements PmsProductService {
productLadderDao.insertList(productLadderList);
}
//满减价格
List<PmsProductFullReduction> productFullReductionList = productParam.getPmsProductFullReductionList();
List<PmsProductFullReduction> productFullReductionList = productParam.getProductFullReductionList();
if (!CollectionUtils.isEmpty(productFullReductionList)) {
for (PmsProductFullReduction productFullReduction : productFullReductionList) {
productFullReduction.setId(null);
@@ -67,11 +105,52 @@ public class PmsProductServiceImpl implements PmsProductService {
productFullReductionDao.insertList(productFullReductionList);
}
//添加sku库存信息
//添加商品参数
//添加自定义商品规格
List<PmsSkuStock> skuStockList = productParam.getSkuStockList();
if(!CollectionUtils.isEmpty(skuStockList)){
for (PmsSkuStock skuStock : skuStockList) {
skuStock.setId(null);
skuStock.setProductId(productId);
}
skuStockDao.insertList(skuStockList);
}
//添加商品参数,添加自定义商品规格
List<PmsProductAttributeValue> productAttributeValueList = productParam.getProductAttributeValueList();
if(!CollectionUtils.isEmpty(productAttributeValueList)){
for (PmsProductAttributeValue productAttributeValue : productAttributeValueList) {
productAttributeValue.setId(null);
productAttributeValue.setProductId(productId);
}
productAttributeValueDao.insertList(productAttributeValueList);
}
//关联专题
relateAndInsertList(subjectProductRelationDao, productParam.getSubjectProductRelationList(), productId);
//关联优选
relateAndInsertList(prefrenceAreaProductRelationDao, productParam.getPrefrenceAreaProductRelationList(), productId);
count = 1;
return count;
}
/**
* 建立和插入关系表操作
*
* @param dao 可以操作的dao
* @param dataList 要插入的数据
* @param productId 建立关系的id
*/
private void relateAndInsertList(Object dao, List dataList, Long productId) {
try {
if (CollectionUtils.isEmpty(dataList)) return;
for (Object item : dataList) {
Method setId = item.getClass().getMethod("setId", Long.class);
setId.invoke(item, (Long) null);
Method setProductId = item.getClass().getMethod("setProductId", Long.class);
setProductId.invoke(item, productId);
}
Method insertList = dao.getClass().getMethod("insertList", List.class);
insertList.invoke(dao, dataList);
} catch (Exception e) {
LOGGER.warn("创建产品出错:{}",e.getMessage());
throw new RuntimeException(e.getMessage());
}
}
}