|
@@ -6,28 +6,22 @@ import com.usky.common.core.bean.CommonPage;
|
|
|
import com.usky.common.core.exception.BusinessException;
|
|
import com.usky.common.core.exception.BusinessException;
|
|
|
import com.usky.common.security.utils.SecurityUtils;
|
|
import com.usky.common.security.utils.SecurityUtils;
|
|
|
import com.usky.vpp.domain.VppBiddingConfig;
|
|
import com.usky.vpp.domain.VppBiddingConfig;
|
|
|
-import com.usky.vpp.domain.VppSite;
|
|
|
|
|
import com.usky.vpp.mapper.VppBiddingConfigMapper;
|
|
import com.usky.vpp.mapper.VppBiddingConfigMapper;
|
|
|
-import com.usky.vpp.mapper.VppSiteMapper;
|
|
|
|
|
import com.usky.vpp.service.VppBiddingConfigService;
|
|
import com.usky.vpp.service.VppBiddingConfigService;
|
|
|
import com.usky.vpp.service.vo.BiddingConfigRequest;
|
|
import com.usky.vpp.service.vo.BiddingConfigRequest;
|
|
|
-import com.usky.vpp.service.vo.BiddingConfigSiteVO;
|
|
|
|
|
import com.usky.vpp.service.vo.BiddingConfigVO;
|
|
import com.usky.vpp.service.vo.BiddingConfigVO;
|
|
|
import com.usky.vpp.util.VppAuditHelper;
|
|
import com.usky.vpp.util.VppAuditHelper;
|
|
|
import com.usky.vpp.util.VppBiddingConfigHelper;
|
|
import com.usky.vpp.util.VppBiddingConfigHelper;
|
|
|
import com.usky.vpp.util.VppPageHelper;
|
|
import com.usky.vpp.util.VppPageHelper;
|
|
|
-import com.usky.vpp.util.VppReportHelper;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.StringUtils;
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.Collections;
|
|
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@Service
|
|
@Service
|
|
@@ -35,8 +29,6 @@ public class VppBiddingConfigServiceImpl implements VppBiddingConfigService {
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private VppBiddingConfigMapper biddingConfigMapper;
|
|
private VppBiddingConfigMapper biddingConfigMapper;
|
|
|
- @Autowired
|
|
|
|
|
- private VppSiteMapper siteMapper;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public CommonPage<BiddingConfigVO> page(String configName,
|
|
public CommonPage<BiddingConfigVO> page(String configName,
|
|
@@ -65,24 +57,23 @@ public class VppBiddingConfigServiceImpl implements VppBiddingConfigService {
|
|
|
|
|
|
|
|
Page<VppBiddingConfig> result = biddingConfigMapper.selectPage(page, wrapper);
|
|
Page<VppBiddingConfig> result = biddingConfigMapper.selectPage(page, wrapper);
|
|
|
List<BiddingConfigVO> records = result.getRecords().stream()
|
|
List<BiddingConfigVO> records = result.getRecords().stream()
|
|
|
- .map(config -> toVo(config, false))
|
|
|
|
|
|
|
+ .map(this::toVo)
|
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
|
return new CommonPage<>(records, result.getTotal(), result.getCurrent(), result.getSize());
|
|
return new CommonPage<>(records, result.getTotal(), result.getCurrent(), result.getSize());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public BiddingConfigVO get(Long id) {
|
|
public BiddingConfigVO get(Long id) {
|
|
|
- return toVo(requireConfig(id), true);
|
|
|
|
|
|
|
+ return toVo(requireConfig(id));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Long create(BiddingConfigRequest request) {
|
|
public Long create(BiddingConfigRequest request) {
|
|
|
validateRequest(request);
|
|
validateRequest(request);
|
|
|
- List<Long> siteIds = validateAndNormalizeSiteIds(request.getSiteIds(), resolveCurrentTenantId());
|
|
|
|
|
|
|
|
|
|
VppBiddingConfig config = new VppBiddingConfig();
|
|
VppBiddingConfig config = new VppBiddingConfig();
|
|
|
- fillConfigFromRequest(config, request, siteIds);
|
|
|
|
|
|
|
+ fillConfigFromRequest(config, request);
|
|
|
VppAuditHelper.fillCreate(config);
|
|
VppAuditHelper.fillCreate(config);
|
|
|
biddingConfigMapper.insert(config);
|
|
biddingConfigMapper.insert(config);
|
|
|
return config.getId();
|
|
return config.getId();
|
|
@@ -93,9 +84,8 @@ public class VppBiddingConfigServiceImpl implements VppBiddingConfigService {
|
|
|
public void update(Long id, BiddingConfigRequest request) {
|
|
public void update(Long id, BiddingConfigRequest request) {
|
|
|
VppBiddingConfig config = requireConfig(id);
|
|
VppBiddingConfig config = requireConfig(id);
|
|
|
validateRequest(request);
|
|
validateRequest(request);
|
|
|
- List<Long> siteIds = validateAndNormalizeSiteIds(request.getSiteIds(), resolveCurrentTenantId());
|
|
|
|
|
|
|
|
|
|
- fillConfigFromRequest(config, request, siteIds);
|
|
|
|
|
|
|
+ fillConfigFromRequest(config, request);
|
|
|
VppAuditHelper.fillUpdate(config);
|
|
VppAuditHelper.fillUpdate(config);
|
|
|
biddingConfigMapper.updateById(config);
|
|
biddingConfigMapper.updateById(config);
|
|
|
}
|
|
}
|
|
@@ -117,8 +107,7 @@ public class VppBiddingConfigServiceImpl implements VppBiddingConfigService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void fillConfigFromRequest(VppBiddingConfig config,
|
|
private void fillConfigFromRequest(VppBiddingConfig config,
|
|
|
- BiddingConfigRequest request,
|
|
|
|
|
- List<Long> siteIds) {
|
|
|
|
|
|
|
+ BiddingConfigRequest request) {
|
|
|
config.setConfigName(request.getConfigName().trim());
|
|
config.setConfigName(request.getConfigName().trim());
|
|
|
config.setEffectiveStart(request.getEffectiveStart());
|
|
config.setEffectiveStart(request.getEffectiveStart());
|
|
|
config.setEffectiveEnd(request.getEffectiveEnd());
|
|
config.setEffectiveEnd(request.getEffectiveEnd());
|
|
@@ -129,10 +118,9 @@ public class VppBiddingConfigServiceImpl implements VppBiddingConfigService {
|
|
|
config.setAdvanceCloseHours(request.getAdvanceCloseHours());
|
|
config.setAdvanceCloseHours(request.getAdvanceCloseHours());
|
|
|
config.setMaxPrice(request.getMaxPrice());
|
|
config.setMaxPrice(request.getMaxPrice());
|
|
|
config.setMinPrice(request.getMinPrice());
|
|
config.setMinPrice(request.getMinPrice());
|
|
|
- config.setSiteIds(VppReportHelper.toJson(siteIds));
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private BiddingConfigVO toVo(VppBiddingConfig config, boolean withSites) {
|
|
|
|
|
|
|
+ private BiddingConfigVO toVo(VppBiddingConfig config) {
|
|
|
BiddingConfigVO vo = new BiddingConfigVO();
|
|
BiddingConfigVO vo = new BiddingConfigVO();
|
|
|
vo.setId(config.getId());
|
|
vo.setId(config.getId());
|
|
|
vo.setConfigName(config.getConfigName());
|
|
vo.setConfigName(config.getConfigName());
|
|
@@ -150,30 +138,10 @@ public class VppBiddingConfigServiceImpl implements VppBiddingConfigService {
|
|
|
VppBiddingConfigHelper.resolveAdvanceCloseHoursLabel(config.getAdvanceCloseHours()));
|
|
VppBiddingConfigHelper.resolveAdvanceCloseHoursLabel(config.getAdvanceCloseHours()));
|
|
|
vo.setMaxPrice(config.getMaxPrice());
|
|
vo.setMaxPrice(config.getMaxPrice());
|
|
|
vo.setMinPrice(config.getMinPrice());
|
|
vo.setMinPrice(config.getMinPrice());
|
|
|
- List<Long> siteIds = VppReportHelper.parseSiteIds(config.getSiteIds());
|
|
|
|
|
- vo.setSiteIds(siteIds);
|
|
|
|
|
vo.setUpdateTime(config.getUpdateTime());
|
|
vo.setUpdateTime(config.getUpdateTime());
|
|
|
- if (withSites) {
|
|
|
|
|
- vo.setSites(loadSiteBriefs(siteIds));
|
|
|
|
|
- }
|
|
|
|
|
return vo;
|
|
return vo;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private List<BiddingConfigSiteVO> loadSiteBriefs(List<Long> siteIds) {
|
|
|
|
|
- if (siteIds == null || siteIds.isEmpty()) {
|
|
|
|
|
- return Collections.emptyList();
|
|
|
|
|
- }
|
|
|
|
|
- Map<Long, String> siteNameMap = siteMapper.selectBatchIds(siteIds).stream()
|
|
|
|
|
- .filter(site -> !VppAuditHelper.isDeleted(site.getDeleteFlag()))
|
|
|
|
|
- .collect(Collectors.toMap(VppSite::getId, VppSite::getSiteName, (left, right) -> left));
|
|
|
|
|
- return siteIds.stream().map(siteId -> {
|
|
|
|
|
- BiddingConfigSiteVO item = new BiddingConfigSiteVO();
|
|
|
|
|
- item.setSiteId(siteId);
|
|
|
|
|
- item.setSiteName(siteNameMap.get(siteId));
|
|
|
|
|
- return item;
|
|
|
|
|
- }).collect(Collectors.toList());
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
private void validateRequest(BiddingConfigRequest request) {
|
|
private void validateRequest(BiddingConfigRequest request) {
|
|
|
if (request == null) {
|
|
if (request == null) {
|
|
|
throw new BusinessException("请求体不能为空");
|
|
throw new BusinessException("请求体不能为空");
|
|
@@ -205,35 +173,6 @@ public class VppBiddingConfigServiceImpl implements VppBiddingConfigService {
|
|
|
throw new BusinessException("最低价格不能为空");
|
|
throw new BusinessException("最低价格不能为空");
|
|
|
}
|
|
}
|
|
|
VppBiddingConfigHelper.validatePriceRange(request.getMinPrice(), request.getMaxPrice());
|
|
VppBiddingConfigHelper.validatePriceRange(request.getMinPrice(), request.getMaxPrice());
|
|
|
- if (request.getSiteIds() == null || request.getSiteIds().isEmpty()) {
|
|
|
|
|
- throw new BusinessException("请至少选择一个关联站点");
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- private List<Long> validateAndNormalizeSiteIds(List<Long> siteIds, Integer tenantId) {
|
|
|
|
|
- if (siteIds == null || siteIds.isEmpty()) {
|
|
|
|
|
- throw new BusinessException("请至少选择一个关联站点");
|
|
|
|
|
- }
|
|
|
|
|
- List<Long> distinct = siteIds.stream()
|
|
|
|
|
- .filter(Objects::nonNull)
|
|
|
|
|
- .distinct()
|
|
|
|
|
- .collect(Collectors.toList());
|
|
|
|
|
- if (distinct.isEmpty()) {
|
|
|
|
|
- throw new BusinessException("请至少选择一个关联站点");
|
|
|
|
|
- }
|
|
|
|
|
- Map<Long, VppSite> siteMap = siteMapper.selectBatchIds(distinct).stream()
|
|
|
|
|
- .filter(site -> !VppAuditHelper.isDeleted(site.getDeleteFlag()))
|
|
|
|
|
- .collect(Collectors.toMap(VppSite::getId, site -> site, (left, right) -> left));
|
|
|
|
|
- for (Long siteId : distinct) {
|
|
|
|
|
- VppSite site = siteMap.get(siteId);
|
|
|
|
|
- if (site == null) {
|
|
|
|
|
- throw new BusinessException("站点不存在或已删除: " + siteId);
|
|
|
|
|
- }
|
|
|
|
|
- if (tenantId != null && site.getTenantId() != null && !tenantId.equals(site.getTenantId())) {
|
|
|
|
|
- throw new BusinessException("站点不属于当前租户: " + siteId);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- return distinct;
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private Integer resolveCurrentTenantId() {
|
|
private Integer resolveCurrentTenantId() {
|