|
@@ -1,6 +1,7 @@
|
|
|
package com.caimei365.commodity.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.caimei365.commodity.components.PriceUtilService;
|
|
|
import com.caimei365.commodity.mapper.PriceMapper;
|
|
@@ -24,6 +25,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
import org.springframework.util.Assert;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.sql.Array;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -154,6 +156,18 @@ public class ShopServiceImpl implements ShopService {
|
|
|
return ResponseJson.success(map);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 供应商 -- 运费模板选择
|
|
|
+ *
|
|
|
+ * @param shopId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ResponseJson getFreight(Integer shopId) {
|
|
|
+ List<FreightTemplateVo> shopTemplate = shopMapper.getTemplate(shopId);
|
|
|
+ return ResponseJson.success(shopTemplate);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 供应商 -- 运费模板
|
|
|
*
|
|
@@ -342,28 +356,46 @@ public class ShopServiceImpl implements ShopService {
|
|
|
*/
|
|
|
@Override
|
|
|
public ResponseJson saveFreightTemplate(FreightTemplateDto freightTemplateDto) {
|
|
|
+ log.info("freightTemplateDto===="+freightTemplateDto);
|
|
|
if (null == freightTemplateDto) {
|
|
|
return ResponseJson.error(-1, "运费模板不能为空",null);
|
|
|
}
|
|
|
- if (null == freightTemplateDto.getFreightRuleList()) {
|
|
|
+ if (StringUtils.isBlank(freightTemplateDto.getFreightRuleList())) {
|
|
|
+ return ResponseJson.error(-1, "运费模板对应规则不能为空", null);
|
|
|
+ }
|
|
|
+ List<FreightRuleDto> freightRuleDtos = JSONArray.parseArray(freightTemplateDto.getFreightRuleList(), FreightRuleDto.class);
|
|
|
+ if (null != freightRuleDtos && freightRuleDtos.size() > 0) {
|
|
|
+ freightRuleDtos.forEach(r -> {
|
|
|
+ Assert.notNull(r.getFreeType(), "是否指定条件包邮不能为空!");
|
|
|
+ Assert.notNull(r.getRuleTax(), "运费规则名称不能为空!");
|
|
|
+ Assert.notNull(r.getAreaTax(), "运费地区不能为空!");
|
|
|
+ Assert.notNull(r.getFreightAreaList(), "运费规则对应地区集合不能为空!");
|
|
|
+ });
|
|
|
+ } else {
|
|
|
return ResponseJson.error(-1, "运费模板对应规则不能为空", null);
|
|
|
}
|
|
|
|
|
|
if (null == freightTemplateDto.getId()) {
|
|
|
// 新增运费模板
|
|
|
-
|
|
|
shopMapper.insertTemplate(freightTemplateDto);
|
|
|
+ log.info("freightTemplateDto.getId()======"+freightTemplateDto.getId());
|
|
|
// 添加运费模板规则
|
|
|
- for (FreightRuleDto ruleDto : freightTemplateDto.getFreightRuleList()) {
|
|
|
+ for (FreightRuleDto ruleDto : freightRuleDtos) {
|
|
|
ruleDto.setFreightId(freightTemplateDto.getId());
|
|
|
shopMapper.insertRule(ruleDto);
|
|
|
+ log.info("ruleDto.getId()======="+ruleDto.getId());
|
|
|
// 添加运费模板规则地区
|
|
|
- if (null == ruleDto.getFreightAreaList()) {
|
|
|
- // 设置手动回滚
|
|
|
+ List<FreightAreaDto> freightAreaDtos = JSONArray.parseArray(ruleDto.getFreightAreaList(), FreightAreaDto.class);
|
|
|
+ if (null != freightAreaDtos && freightAreaDtos.size() > 0) {
|
|
|
+ freightAreaDtos.forEach(a -> {
|
|
|
+ Assert.notNull(a.getType(), "归属的运费规则不能为空!");
|
|
|
+ Assert.notNull(a.getCityId(), "市Id不能为空!");
|
|
|
+ });
|
|
|
+ } else {
|
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- return ResponseJson.error(-1, "运费模板规则锁执行地区不能为空", null);
|
|
|
+ return ResponseJson.error(-1, "运费模板对应规则不能为空", null);
|
|
|
}
|
|
|
- for (FreightAreaDto areaDto : ruleDto.getFreightAreaList()) {
|
|
|
+ for (FreightAreaDto areaDto : freightAreaDtos) {
|
|
|
areaDto.setRuleId(ruleDto.getId());
|
|
|
shopMapper.insertArea(areaDto);
|
|
|
}
|
|
@@ -371,15 +403,21 @@ public class ShopServiceImpl implements ShopService {
|
|
|
} else {
|
|
|
// 修改
|
|
|
shopMapper.updateTemplate(freightTemplateDto);
|
|
|
- for (FreightRuleDto ruleDto : freightTemplateDto.getFreightRuleList()) {
|
|
|
+ for (FreightRuleDto ruleDto : freightRuleDtos) {
|
|
|
shopMapper.updateRule(ruleDto);
|
|
|
- if (null == ruleDto.getFreightAreaList()) {
|
|
|
+ List<FreightAreaDto> freightAreaDtos = JSONArray.parseArray(ruleDto.getFreightAreaList(), FreightAreaDto.class);
|
|
|
+ if (null != freightAreaDtos && freightAreaDtos.size() > 0) {
|
|
|
+ freightAreaDtos.forEach(a -> {
|
|
|
+ Assert.notNull(a.getType(), "归属的运费规则不能为空!");
|
|
|
+ Assert.notNull(a.getCityId(), "市Id不能为空!");
|
|
|
+ });
|
|
|
+ } else {
|
|
|
// 设置手动回滚
|
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- return ResponseJson.error(-1, "运费模板规则锁执行地区不能为空", null);
|
|
|
+ return ResponseJson.error(-1, "运费模板对应规则不能为空", null);
|
|
|
}
|
|
|
List<Integer> ids = new ArrayList<>();
|
|
|
- for (FreightAreaDto areaDto : ruleDto.getFreightAreaList()) {
|
|
|
+ for (FreightAreaDto areaDto : freightAreaDtos) {
|
|
|
areaDto.setRuleId(ruleDto.getId());
|
|
|
if (null == areaDto.getId()) {
|
|
|
shopMapper.insertArea(areaDto);
|
|
@@ -485,12 +523,12 @@ public class ShopServiceImpl implements ShopService {
|
|
|
}
|
|
|
List<Sku> skus = JSON.parseArray(productDto.getSkus(), Sku.class);
|
|
|
if (null != skus && skus.size() > 0) {
|
|
|
- skus.forEach(s -> {
|
|
|
- Assert.notNull(s.getNormalPrice(), "市场价不能为空!");
|
|
|
- Assert.notNull(s.getPrice(), "售价不能为空!");
|
|
|
- Assert.notNull(s.getUnit(), "规格不能为空!");
|
|
|
- Assert.notNull(s.getMinBuyNumber(), "起订量不能为空!");
|
|
|
- });
|
|
|
+ skus.forEach(s -> {
|
|
|
+ Assert.notNull(s.getNormalPrice(), "市场价不能为空!");
|
|
|
+ Assert.notNull(s.getPrice(), "售价不能为空!");
|
|
|
+ Assert.notNull(s.getUnit(), "规格不能为空!");
|
|
|
+ Assert.notNull(s.getMinBuyNumber(), "起订量不能为空!");
|
|
|
+ });
|
|
|
}
|
|
|
List<Sku> mallSkus = JSON.parseArray(productDto.getMallSkus(), Sku.class);
|
|
|
if (null != mallSkus && mallSkus.size() > 0) {
|
|
@@ -975,24 +1013,23 @@ public class ShopServiceImpl implements ShopService {
|
|
|
if (null != templateVos) {
|
|
|
List<Integer> templateIds = templateVos.stream().map(FreightTemplateVo::getId).collect(Collectors.toList());
|
|
|
List<FreightRuleVo> rule = shopMapper.getRule(templateIds);
|
|
|
- if (null == rule) {
|
|
|
- return null;
|
|
|
- }
|
|
|
- List<Integer> ruleIds = rule.stream().map(FreightRuleVo::getId).collect(Collectors.toList());
|
|
|
- List<FreightAreaVo> area = shopMapper.getArea(ruleIds);
|
|
|
- if (null == area) {
|
|
|
- return null;
|
|
|
- }
|
|
|
- // 将地区与运费规则关联
|
|
|
- for (FreightRuleVo ruleVo : rule) {
|
|
|
- List<FreightAreaVo> areaVoList = area.stream().filter(a -> a.getRuleId().equals(ruleVo.getId())).collect(Collectors.toList());
|
|
|
- ruleVo.setFreightAreaList(areaVoList);
|
|
|
- }
|
|
|
- // 将运费规则与运费模板关联
|
|
|
- for (FreightTemplateVo templateVo : templateVos) {
|
|
|
- List<FreightRuleVo> ruleVoList = rule.stream().filter(r -> r.getFreightId().equals(templateVo.getId())).collect(Collectors.toList());
|
|
|
- templateVo.setFreightRuleList(ruleVoList);
|
|
|
+ if (null != rule) {
|
|
|
+ List<Integer> ruleIds = rule.stream().map(FreightRuleVo::getId).collect(Collectors.toList());
|
|
|
+ List<FreightAreaVo> area = shopMapper.getArea(ruleIds);
|
|
|
+ if (null != area) {
|
|
|
+ // 将地区与运费规则关联
|
|
|
+ for (FreightRuleVo ruleVo : rule) {
|
|
|
+ List<FreightAreaVo> areaVoList = area.stream().filter(a -> a.getRuleId().equals(ruleVo.getId())).collect(Collectors.toList());
|
|
|
+ ruleVo.setFreightAreaList(areaVoList);
|
|
|
+ }
|
|
|
+ // 将运费规则与运费模板关联
|
|
|
+ for (FreightTemplateVo templateVo : templateVos) {
|
|
|
+ List<FreightRuleVo> ruleVoList = rule.stream().filter(r -> r.getFreightId().equals(templateVo.getId())).collect(Collectors.toList());
|
|
|
+ templateVo.setFreightRuleList(ruleVoList);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
return templateVos;
|
|
|
}
|
|
@@ -1008,18 +1045,27 @@ public class ShopServiceImpl implements ShopService {
|
|
|
// 省选中
|
|
|
List<String> provinceName = new ArrayList<>();
|
|
|
for (ProvinceVo provinceVo : regionVo.getProvinceList()) {
|
|
|
+ // 区域、省type 和区域 type 一直
|
|
|
+ if (null != provinceVo.getCityList() && provinceVo.getCityList().size() > 0) {
|
|
|
+ regionVo.setType(provinceVo.getCityList().get(0).getType());
|
|
|
+ provinceVo.setType(provinceVo.getCityList().get(0).getType());
|
|
|
+ } else {
|
|
|
+ regionVo.setType(0);
|
|
|
+ provinceVo.setType(0);
|
|
|
+ }
|
|
|
List<String> cityName = new ArrayList<>();
|
|
|
// 市选中状态
|
|
|
for (CityVo cityVo : provinceVo.getCityList()) {
|
|
|
- if ( null != cityVo.getType()) {
|
|
|
+
|
|
|
+ if ( null != cityVo.getType() && 0 != cityVo.getType()) {
|
|
|
cityVo.setChecked(true);
|
|
|
+
|
|
|
cityName.add(cityVo.getName());
|
|
|
} else {
|
|
|
cityVo.setChecked(false);
|
|
|
}
|
|
|
}
|
|
|
- String[] splitCity = StringUtils.strip(cityName.toString(),"[]").split(",");
|
|
|
- provinceVo.setCheckedCities(splitCity);
|
|
|
+ provinceVo.setCheckedCities(cityName.toArray(new String[]{}));
|
|
|
/**
|
|
|
* Checked、当省份下的市全被勾选中的话为 true 部分市被勾选中 为false
|
|
|
* IsIndeterminate、当省份下的市全被勾选中的话为 false 部分市被勾选中 为true
|
|
@@ -1031,7 +1077,7 @@ public class ShopServiceImpl implements ShopService {
|
|
|
provinceName.add(provinceVo.getName());
|
|
|
} else if (provinceVo.getCityList().stream().noneMatch(CityVo::getChecked)) {
|
|
|
// 市全部未选中 省设置未全选
|
|
|
- provinceVo.setIsIndeterminate(true);
|
|
|
+ provinceVo.setIsIndeterminate(false);
|
|
|
provinceVo.setChecked(false);
|
|
|
} else {
|
|
|
// 市部分选中 省设置未全选
|
|
@@ -1039,8 +1085,7 @@ public class ShopServiceImpl implements ShopService {
|
|
|
provinceVo.setChecked(false);
|
|
|
}
|
|
|
}
|
|
|
- String[] spiltProvince = StringUtils.strip(provinceName.toString(),"[]").split(",");
|
|
|
- regionVo.setCheckedCities(spiltProvince);
|
|
|
+ regionVo.setCheckedCities(provinceName.toArray(new String[]{}));
|
|
|
// 区域选中
|
|
|
if (regionVo.getProvinceList().stream().allMatch(ProvinceVo::getChecked)) {
|
|
|
// 省全部选中
|
|
@@ -1048,7 +1093,7 @@ public class ShopServiceImpl implements ShopService {
|
|
|
regionVo.setChecked(true);
|
|
|
} else if (regionVo.getProvinceList().stream().noneMatch(ProvinceVo::getChecked)){
|
|
|
// 省全部未选中
|
|
|
- regionVo.setIsIndeterminate(true);
|
|
|
+ regionVo.setIsIndeterminate(false);
|
|
|
regionVo.setChecked(false);
|
|
|
} else {
|
|
|
// 省部分选中
|