提交 e441de02 作者: xiaowang

功能:租赁商品编辑

上级 ec92b8f9
...@@ -51,4 +51,11 @@ public class LeaseGoodsController extends BaseController { ...@@ -51,4 +51,11 @@ public class LeaseGoodsController extends BaseController {
public ResultBody leaseGoodsDetails(@RequestParam Integer id) { public ResultBody leaseGoodsDetails(@RequestParam Integer id) {
return leaseGoodsService.leaseGoodsDetails(id); return leaseGoodsService.leaseGoodsDetails(id);
} }
@ApiOperation(value = "编辑租赁商品")
@PostMapping("editLeaseGoods")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
public ResultBody editLeaseGoods(@RequestBody LeaseGoodsVO leaseGoodsVO, HttpServletRequest request) {
return leaseGoodsService.editLeaseGoods(leaseGoodsVO, this.getUserLoginInfoFromRedis(request).getUserAccountId());
}
} }
...@@ -5,6 +5,7 @@ import com.mmc.pms.entity.mall.MallGoodsResourcesDO; ...@@ -5,6 +5,7 @@ import com.mmc.pms.entity.mall.MallGoodsResourcesDO;
import com.mmc.pms.entity.mall.SpecAttrDO; import com.mmc.pms.entity.mall.SpecAttrDO;
import com.mmc.pms.entity.mall.SpecAttrValueDO; import com.mmc.pms.entity.mall.SpecAttrValueDO;
import com.mmc.pms.model.lease.vo.LeaseGoodsVO; import com.mmc.pms.model.lease.vo.LeaseGoodsVO;
import com.mmc.pms.model.mall.SpecAttrVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -44,4 +45,20 @@ public interface LeaseGoodsDao { ...@@ -44,4 +45,20 @@ public interface LeaseGoodsDao {
List<LeasePriceStockDO> listPriceStock(Integer id); List<LeasePriceStockDO> listPriceStock(Integer id);
List<LeasePartsListDO> listLeasePartsListDO(Integer id); List<LeasePartsListDO> listLeasePartsListDO(Integer id);
void updateLeaseGoodsBaseInfo(LeaseGoodsDO leaseGoodsDO);
void deleteLeaseGoodsResources(Integer id);
void deleteLeasePartsList(Integer id);
void deleteSpecAttr(List<Integer> list);
void deleteLeasePriceStock(Integer id);
List<LeaseSpecAttrDO> getLeaseSpecAttr(List<Integer> ids);
void updateSpecAttr(SpecAttrVO specAttrVO);
void deleteSpecAttrValue(List<Integer> delValueIds);
} }
...@@ -14,4 +14,7 @@ public interface LeaseGoodsService { ...@@ -14,4 +14,7 @@ public interface LeaseGoodsService {
ResultBody getLeaseTermInfo(); ResultBody getLeaseTermInfo();
ResultBody leaseGoodsDetails(Integer id); ResultBody leaseGoodsDetails(Integer id);
ResultBody editLeaseGoods(LeaseGoodsVO leaseGoodsVO, Integer userAccountId);
} }
...@@ -86,4 +86,24 @@ public class LeaseGoodsServiceImpl implements LeaseGoodsService { ...@@ -86,4 +86,24 @@ public class LeaseGoodsServiceImpl implements LeaseGoodsService {
leasePartsDOList.stream().map(LeasePartsListDO::buildLeasePartsListVO).collect(Collectors.toList())); leasePartsDOList.stream().map(LeasePartsListDO::buildLeasePartsListVO).collect(Collectors.toList()));
return ResultBody.success(leaseGoodsVO); return ResultBody.success(leaseGoodsVO);
} }
@Override
public ResultBody editLeaseGoods(LeaseGoodsVO leaseGoodsVO, Integer userAccountId) {
ResultBody resultError = mallGoodsService.checkInformation(leaseGoodsVO, null, userAccountId);
if (resultError != null) return resultError;
LeaseGoodsDO leaseGoodsDO = new LeaseGoodsDO(leaseGoodsVO);
// 修改商品基本信息
leaseGoodsDao.updateLeaseGoodsBaseInfo(leaseGoodsDO);
// 修改商城商品的图片等资源信息,先删除后新增
leaseGoodsDao.deleteLeaseGoodsResources(leaseGoodsVO.getId());
mallGoodsService.insertMallGoodsResources(leaseGoodsVO, null, leaseGoodsVO.getId());
// 修改商品清单
leaseGoodsDao.deleteLeasePartsList(leaseGoodsVO.getId());
if (CollectionUtils.isNotEmpty(leaseGoodsVO.getLeasePartsList())) {
this.insertLeasePartsList(leaseGoodsVO.getLeasePartsList(), leaseGoodsVO.getId());
}
// 修改规格
mallGoodsService.updateSpecInfo(null, leaseGoodsVO);
return ResultBody.success();
}
} }
...@@ -40,4 +40,6 @@ public interface MallGoodsService { ...@@ -40,4 +40,6 @@ public interface MallGoodsService {
void insertMallGoodsResources(LeaseGoodsVO leaseGoodsVO, MallGoodsVO mallGoodsVO, Integer id); void insertMallGoodsResources(LeaseGoodsVO leaseGoodsVO, MallGoodsVO mallGoodsVO, Integer id);
void addMallGoodsSpec(List<SpecAttrVO> specAttrList, Integer id, List<PriceStockVO> priceStock, List<LeasePriceStockVO> leasePriceStockVO, Integer flag); void addMallGoodsSpec(List<SpecAttrVO> specAttrList, Integer id, List<PriceStockVO> priceStock, List<LeasePriceStockVO> leasePriceStockVO, Integer flag);
void updateSpecInfo(MallGoodsVO mallGoodsVO, LeaseGoodsVO leaseGoodsVO);
} }
...@@ -6,6 +6,8 @@ import com.mmc.pms.common.ResultEnum; ...@@ -6,6 +6,8 @@ import com.mmc.pms.common.ResultEnum;
import com.mmc.pms.dao.lease.LeaseGoodsDao; import com.mmc.pms.dao.lease.LeaseGoodsDao;
import com.mmc.pms.dao.mall.MallGoodsDao; import com.mmc.pms.dao.mall.MallGoodsDao;
import com.mmc.pms.entity.lease.LeasePriceStockDO; import com.mmc.pms.entity.lease.LeasePriceStockDO;
import com.mmc.pms.entity.lease.LeaseSpecAttrDO;
import com.mmc.pms.entity.lease.LeaseSpecAttrValueDO;
import com.mmc.pms.entity.mall.*; import com.mmc.pms.entity.mall.*;
import com.mmc.pms.model.lease.vo.LeaseGoodsVO; import com.mmc.pms.model.lease.vo.LeaseGoodsVO;
import com.mmc.pms.model.lease.vo.LeasePriceStockVO; import com.mmc.pms.model.lease.vo.LeasePriceStockVO;
...@@ -204,64 +206,165 @@ public class MallGoodsServiceImpl implements MallGoodsService { ...@@ -204,64 +206,165 @@ public class MallGoodsServiceImpl implements MallGoodsService {
mallGoodsDao.deleteMallGoodsResources(mallGoodsVO.getId()); mallGoodsDao.deleteMallGoodsResources(mallGoodsVO.getId());
this.insertMallGoodsResources(null, mallGoodsVO, mallGoodsVO.getId()); this.insertMallGoodsResources(null, mallGoodsVO, mallGoodsVO.getId());
// 修改规格 // 修改规格
List<SpecAttrVO> specAttrList = mallGoodsVO.getSpecAttrList(); updateSpecInfo(mallGoodsVO, null);
// 从数据库获取该商品下的所有规格 return ResultBody.success();
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)) @Override
.collect(Collectors.toList()); @Transactional(rollbackFor = Exception.class)
if (delIds.size() != 0) { public void updateSpecInfo(MallGoodsVO mallGoodsVO, LeaseGoodsVO leaseGoodsVO) {
// 删除多余规格 List<SpecAttrVO> specAttrList;
mallGoodsDao.deleteSpecAttr(delIds); List<SpecAttrVO> updateSpecAttr;
} List<SpecAttrVO> addSpecAttr;
// 获取id不为空的规格,进行修改 if (mallGoodsVO != null) {
List<SpecAttrVO> updateSpecAttr = specAttrList.stream().filter(spec -> spec.getId() != null).collect(Collectors.toList()); specAttrList = mallGoodsVO.getSpecAttrList();
// 从数据库获取规格下的规格值信息,获取所有,避免重复查询数据库 // 从数据库获取该商品下的所有规格
Map<Integer, List<SpecAttrValueDO>> specValueMap = mallGoodsDao.listSpecAttrValue(updateSpecAttr.stream().map(SpecAttrVO::getId).collect(Collectors.toList())) deleteSpecAttr(mallGoodsVO, null, specAttrList);
.stream().collect(Collectors.groupingBy(SpecAttrValueDO::getSpecAttrId)); // 获取id不为空的规格,进行修改
if (CollectionUtils.isNotEmpty(updateSpecAttr)) { updateSpecAttr = specAttrList.stream().filter(spec -> spec.getId() != null).collect(Collectors.toList());
for (SpecAttrVO specAttrVO : updateSpecAttr) { // 从数据库获取规格下的规格值信息,获取所有,避免重复查询数据库
// 修改规格信息 Map<Integer, List<SpecAttrValueDO>> specValueMap = mallGoodsDao.listSpecAttrValue(updateSpecAttr.stream().map(SpecAttrVO::getId).collect(Collectors.toList()))
mallGoodsDao.updateSpecAttr(specAttrVO); .stream().collect(Collectors.groupingBy(SpecAttrValueDO::getSpecAttrId));
// 获取该规格下数据库里的规格值信息 if (CollectionUtils.isNotEmpty(updateSpecAttr)) {
List<SpecAttrValueDO> dbSpecAttrValue = specValueMap.get(specAttrVO.getId()); for (SpecAttrVO specAttrVO : updateSpecAttr) {
List<Integer> delValueIds = dbSpecAttrValue.stream() // 修改规格信息
.map(SpecAttrValueDO::getId) mallGoodsDao.updateSpecAttr(specAttrVO);
.filter(id -> !specAttrVO.getSpecValuesList().stream().map(SpecAttrVO::getId).collect(Collectors.toList()).contains(id)) // 获取该规格下数据库里的规格值信息
.collect(Collectors.toList()); List<SpecAttrValueDO> dbSpecAttrValue = specValueMap.get(specAttrVO.getId());
if (delValueIds.size() != 0) { deleteSpecValue(specAttrVO, null, dbSpecAttrValue);
// 删除多余规格值 // 获取规格值id不为空的就进行规格值修改
mallGoodsDao.deleteSpecAttrValue(delValueIds); List<SpecAttrVO> updateSpecValue = specAttrVO.getSpecValuesList().stream().filter(var -> var.getId() != null).collect(Collectors.toList());
} if (CollectionUtils.isNotEmpty(updateSpecValue)) {
// 获取规格值id不为空的就进行规格值修改 for (SpecAttrVO attrVO : updateSpecValue) {
List<SpecAttrVO> updateSpecValue = specAttrVO.getSpecValuesList().stream().filter(var -> var.getId() != null).collect(Collectors.toList()); mallGoodsDao.updateSpecAttrValue(attrVO);
if (CollectionUtils.isNotEmpty(updateSpecValue)) { }
for (SpecAttrVO attrVO : updateSpecValue) {
mallGoodsDao.updateSpecAttrValue(attrVO);
} }
// 新增规格值
addNewSpecAttrValues(specAttrVO, 0);
} }
// 新增规格值 }
List<SpecAttrVO> addSpecValue = specAttrVO.getSpecValuesList().stream().filter(var -> var.getId() == null).collect(Collectors.toList()); // 获取规格id为空的值,进行新增
if (CollectionUtils.isNotEmpty(addSpecValue)) { addSpecAttr = specAttrList.stream().filter(spec -> spec.getId() == null).collect(Collectors.toList());
List<SpecAttrValueDO> specValueList = addSpecValue.stream().map(d -> { if (CollectionUtils.isNotEmpty(addSpecAttr)) {
SpecAttrValueDO specAttrValueDO = new SpecAttrValueDO(); addMallGoodsSpec(addSpecAttr, mallGoodsVO.getId(), null, null, 0);
specAttrValueDO.setSpecAttrId(specAttrVO.getId()); }
specAttrValueDO.setSpecValueName(d.getSpecName()); // 修改排列组合数据
return specAttrValueDO; mallGoodsDao.deleteMallPriceStock(mallGoodsVO.getId());
}).collect(Collectors.toList()); addMallGoodsSpec(null, mallGoodsVO.getId(), mallGoodsVO.getPriceStock(), null, 0);
mallGoodsDao.batchInsertSpecAttr(specValueList); } else {
specAttrList = leaseGoodsVO.getSpecAttrList();
// 从数据库获取该租赁商品下的所有规格,并删除多余规格
deleteSpecAttr(null, leaseGoodsVO, specAttrList);
// 获取id不为空的规格,进行修改
updateSpecAttr = specAttrList.stream().filter(spec -> spec.getId() != null).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(updateSpecAttr)) {
// 获取规格及规格值
List<LeaseSpecAttrDO> leaseSpecAttrDO = leaseGoodsDao.getLeaseSpecAttr(updateSpecAttr.stream().map(SpecAttrVO::getId).collect(Collectors.toList()));
for (SpecAttrVO specAttrVO : updateSpecAttr) {
// 修改规格
leaseGoodsDao.updateSpecAttr(specAttrVO);
// 删除多余规格
for (LeaseSpecAttrDO specAttrDO : leaseSpecAttrDO) {
if (specAttrVO.getId().equals(specAttrDO.getId())) {
List<LeaseSpecAttrValueDO> dbLeaseSpecAttrValues = specAttrDO.getLeaseSpecAttrValues();
deleteSpecValue(specAttrVO, dbLeaseSpecAttrValues, null);
}
}
// 新增规格值的信息
addNewSpecAttrValues(specAttrVO, 1);
} }
} }
// 修改排列组合数据
leaseGoodsDao.deleteLeasePriceStock(leaseGoodsVO.getId());
addMallGoodsSpec(null, leaseGoodsVO.getId(), null, leaseGoodsVO.getPriceStock(), 1);
} }
// 获取规格id为空的值,进行新增 }
List<SpecAttrVO> addSpecAttr = specAttrList.stream().filter(spec -> spec.getId() == null).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(addSpecAttr)) { /**
addMallGoodsSpec(addSpecAttr, mallGoodsVO.getId(), null, null, 0); * 添加新规格值
*
* @param specAttrVO
* @param flag 标志:0商城 1租赁
*/
@Transactional(rollbackFor = Exception.class)
public void addNewSpecAttrValues(SpecAttrVO specAttrVO, Integer flag) {
List<SpecAttrValueDO> specValueList;
List<SpecAttrVO> addSpecValue = specAttrVO.getSpecValuesList().stream().filter(var -> var.getId() == null).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(addSpecValue)) {
specValueList = addSpecValue.stream().map(d -> {
SpecAttrValueDO specAttrValueDO = new SpecAttrValueDO();
specAttrValueDO.setSpecAttrId(specAttrVO.getId());
specAttrValueDO.setSpecValueName(d.getSpecName());
return specAttrValueDO;
}).collect(Collectors.toList());
if (flag.equals(0)) {
mallGoodsDao.batchInsertSpecAttr(specValueList);
} else {
leaseGoodsDao.batchInsertSpecAttr(specValueList);
}
}
}
/**
* 删除规格值
*
* @param specAttrVO
* @param dbLeaseSpecAttrValues
* @param dbSpecAttrValue
*/
@Transactional(rollbackFor = Exception.class)
public void deleteSpecValue(SpecAttrVO specAttrVO, List<LeaseSpecAttrValueDO> dbLeaseSpecAttrValues, List<SpecAttrValueDO> dbSpecAttrValue) {
List<Integer> delValueIds;
if (CollectionUtils.isNotEmpty(dbSpecAttrValue)) {
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);
}
} else {
delValueIds = dbLeaseSpecAttrValues.stream()
.map(LeaseSpecAttrValueDO::getId)
.filter(id -> !specAttrVO.getSpecValuesList().stream().map(SpecAttrVO::getId).collect(Collectors.toList()).contains(id))
.collect(Collectors.toList());
if (delValueIds.size() != 0) {
// 删除多余规格值
leaseGoodsDao.deleteSpecAttrValue(delValueIds);
}
}
}
/**
* 删除规格
*
* @param mallGoodsVO
* @param leaseGoodsVO
* @param specAttrList
*/
@Transactional(rollbackFor = Exception.class)
public void deleteSpecAttr(MallGoodsVO mallGoodsVO, LeaseGoodsVO leaseGoodsVO, List<SpecAttrVO> specAttrList) {
List<Integer> delIds;
if (leaseGoodsVO != null) {
List<LeaseSpecAttrDO> dbSpecList = leaseGoodsDao.listSpecAttr(leaseGoodsVO.getId());
delIds = dbSpecList.stream().map(LeaseSpecAttrDO::getId)
.filter(id -> !specAttrList.stream().map(SpecAttrVO::getId).collect(Collectors.toList()).contains(id))
.collect(Collectors.toList());
if (delIds.size() != 0) {
// 删除多余规格
leaseGoodsDao.deleteSpecAttr(delIds);
}
} else {
List<SpecAttrDO> dbSpecList = mallGoodsDao.listSpecAttr(mallGoodsVO.getId());
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);
}
} }
// 修改排列组合数据
mallGoodsDao.deleteMallPriceStock(mallGoodsVO.getId());
addMallGoodsSpec(null, mallGoodsVO.getId(), mallGoodsVO.getPriceStock(), null, 0);
return ResultBody.success();
} }
// @Override // @Override
......
...@@ -93,6 +93,95 @@ ...@@ -93,6 +93,95 @@
(#{item.leaseGoodsId},#{item.name},#{item.number},#{item.price}) (#{item.leaseGoodsId},#{item.name},#{item.number},#{item.price})
</foreach> </foreach>
</insert> </insert>
<update id="updateLeaseGoodsBaseInfo">
update lease_goods
<set>
<if test="tradeName != null and tradeName != ''">
trade_name = #{tradeName},
</if>
<if test="sellingPoint != null">
selling_point = #{sellingPoint},
</if>
<if test="level != null">
`level` = #{level},
</if>
<if test="shelfStatus != null">
shelf_status = #{shelfStatus},
</if>
<if test="productTypeId != null">
product_type_id = #{productTypeId},
</if>
<if test="brandInfoId != null">
brand_info_id = #{brandInfoId},
</if>
<if test="deviceModeId != null">
device_mode_id = #{deviceModeId},
</if>
<if test="productParam != null and productParam != ''">
product_param =#{productParam},
</if>
<if test="productDetails != null and productDetails != ''">
product_details = #{productDetails},
</if>
<if test="minLeaseTerm != null">
min_lease_term = #{minLeaseTerm},
</if>
<if test="maxLeaseTerm != null">
max_lease_term = #{maxLeaseTerm},
</if>
<if test="shipAddress != null">
ship_address =#{shipAddress},
</if>
<if test="returnAddress != null">
return_address = #{returnAddress},
</if>
<if test="logisticsCompany != null">
logistics_company = #{logisticsCompany},
</if>
<if test="modeOfDelivery != null">
mode_of_delivery = #{modeOfDelivery}
</if>
</set>
where id = #{id}
</update>
<update id="updateSpecAttr">
update lease_spec_attr
set spec_name = #{specName}
where id = #{id}
</update>
<delete id="deleteLeaseGoodsResources">
delete
from lease_goods_resources
where lease_goods_id = #{id}
</delete>
<delete id="deleteLeasePartsList">
delete
from lease_parts_list
where lease_goods_id = #{id}
</delete>
<delete id="deleteSpecAttr">
delete
from lease_spec_attr
<where>
<foreach collection="list" open="id in (" close=")" item="item" separator=",">
#{item}
</foreach>
</where>
</delete>
<delete id="deleteLeasePriceStock">
delete
from lease_price_stock
where lease_goods_id = #{id}
</delete>
<delete id="deleteSpecAttrValue">
delete
from lease_spec_attr_value
<where>
<foreach collection="list" open="id in (" close=")" item="item" separator=",">
#{item}
</foreach>
</where>
</delete>
<select id="countLeaseGoodsByName" resultType="java.lang.Integer"> <select id="countLeaseGoodsByName" resultType="java.lang.Integer">
select count(*) select count(*)
...@@ -181,4 +270,20 @@ ...@@ -181,4 +270,20 @@
from lease_parts_list from lease_parts_list
where lease_goods_id = #{id} where lease_goods_id = #{id}
</select> </select>
<select id="getLeaseSpecAttr" resultMap="leaseSpecAttr">
SELECT lsa.id,
lsa.lease_goods_id,
lsa.spec_name,
lsav.id as valueId,
lsav.spec_value_name
FROM lease_spec_attr lsa
LEFT JOIN lease_spec_attr_value lsav ON lsa.id = lsav.spec_attr_id
<where>
lsa.lease_goods_id in (
<foreach collection="list" item="item" separator=",">
#{item}
</foreach>
)
</where>
</select>
</mapper> </mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论