优化商品的多属性功能,编辑的页面也可以操作多属性
This commit is contained in:
@@ -23,9 +23,7 @@ import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
|
||||
@Service
|
||||
@@ -97,6 +95,21 @@ public class MaterialExtendService {
|
||||
updatedJson.add(tempJson);
|
||||
}
|
||||
}
|
||||
//针对多属性商品要考虑到有条码被删的情况,需要和原来的条码明细进行对比
|
||||
//1.先查询原来的条码列表
|
||||
List<MaterialExtendVo4List> meList = materialExtendMapperEx.getDetailList(materialId);
|
||||
//2.构造新的条码列表map
|
||||
Map<String, String> barCodeMap = new HashMap<>();
|
||||
for (int i = 0; i < meArr.size(); i++) {
|
||||
JSONObject tempJson = meArr.getJSONObject(i);
|
||||
barCodeMap.put(tempJson.getString("barCode"),tempJson.getString("barCode"));
|
||||
}
|
||||
//3.如果老的条码在新的里面不存在,则丢入删除队列
|
||||
for(MaterialExtendVo4List me: meList) {
|
||||
if(barCodeMap.get(me.getBarCode()) == null) {
|
||||
deletedJson.add(me.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (null != deletedJson) {
|
||||
|
||||
@@ -154,6 +154,8 @@ public class MaterialService {
|
||||
public int insertMaterial(JSONObject obj, HttpServletRequest request)throws Exception {
|
||||
Material m = JSONObject.parseObject(obj.toJSONString(), Material.class);
|
||||
m.setEnabled(true);
|
||||
//构造多属性数组字符串
|
||||
m.setAttribute(parseAttributeBySku(obj));
|
||||
try{
|
||||
materialMapperEx.insertSelectiveEx(m);
|
||||
Long mId = m.getId();
|
||||
@@ -196,6 +198,8 @@ public class MaterialService {
|
||||
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
|
||||
public int updateMaterial(JSONObject obj, HttpServletRequest request) throws Exception{
|
||||
Material material = JSONObject.parseObject(obj.toJSONString(), Material.class);
|
||||
//构造多属性数组字符串
|
||||
material.setAttribute(parseAttributeBySku(obj));
|
||||
try{
|
||||
materialMapper.updateByPrimaryKeySelective(material);
|
||||
if(material.getUnitId() == null) {
|
||||
@@ -1462,4 +1466,26 @@ public class MaterialService {
|
||||
public MaterialExtend getMaterialExtendBySerialNumber(String serialNumber) {
|
||||
return materialMapperEx.getMaterialExtendBySerialNumber(serialNumber);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造多属性数组字符串
|
||||
* @param obj
|
||||
* @return
|
||||
*/
|
||||
public String parseAttributeBySku(JSONObject obj) {
|
||||
if(obj!=null) {
|
||||
JSONObject attributeObj = new JSONObject();
|
||||
JSONArray manySku = obj.getJSONArray("manySku");
|
||||
JSONArray skuOne = obj.getJSONArray("skuOne");
|
||||
JSONArray skuTwo = obj.getJSONArray("skuTwo");
|
||||
JSONArray skuThree = obj.getJSONArray("skuThree");
|
||||
attributeObj.put("manySku", manySku);
|
||||
attributeObj.put("skuOne", skuOne);
|
||||
attributeObj.put("skuTwo", skuTwo);
|
||||
attributeObj.put("skuThree", skuThree);
|
||||
return attributeObj.toJSONString();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user