package com.mzl.flower.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mzl.flower.config.exception.ValidationException;
import com.mzl.flower.dto.request.configParam.QueryConfigParamDTO;
import com.mzl.flower.dto.request.configParam.UpdateConfigParamDTO;
import com.mzl.flower.entity.configParam.ConfigParamDO;
import com.mzl.flower.enums.ConfigParamEnum;
import com.mzl.flower.mapper.configParam.ConfigParamMapper;
import com.mzl.flower.mapper.configParam.ConfigParamMapperCustom;
import com.mzl.flower.service.ConfigParamService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
/**
*
* 服务实现类
*
*
* @author @TaoJie
* @since 2024-12-02
*/
@Service
public class ConfigParamServiceImpl extends ServiceImpl implements ConfigParamService {
@Autowired
private ConfigParamMapperCustom configParamMapperCustom;
@Override
public List getList(QueryConfigParamDTO dto) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(ConfigParamDO::getDeleted,false)
.eq(Objects.nonNull(dto.getParamGroupId()),ConfigParamDO::getParamGroupId,dto.getParamGroupId())
.eq(StringUtils.isNotBlank(dto.getParamKey()),ConfigParamDO::getParamKey,dto.getParamKey())
.eq(StringUtils.isNotBlank(dto.getParamGroup()),ConfigParamDO::getParamGroup,dto.getParamGroup())
.eq(StringUtils.isNotBlank(dto.getParamGroupName()),ConfigParamDO::getParamGroupName,dto.getParamGroupName())
.eq(StringUtils.isNotBlank(dto.getParamName()),ConfigParamDO::getParamName,dto.getParamName())
;
return list(queryWrapper);
}
@Transactional
@Override
public boolean updateConfigParamBatch(UpdateConfigParamDTO dto) {
if(CollectionUtils.isNotEmpty(dto.getParamList())){
// 遍历循环查找是否存在
List configParamUpdateList = dto.getParamList().stream().map(configParamDO -> {
final ConfigParamDO configParamForUpdate = configParamMapperCustom.selectById(configParamDO.getId());
if (null == configParamForUpdate) {
throw new ValidationException(String.format("ID:{}不存在!", configParamDO.getId()));
}
configParamForUpdate.setParamValue(configParamDO.getParamValue());
return configParamForUpdate;
}).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(configParamUpdateList)){
return saveOrUpdateBatch(configParamUpdateList);
}
}
return false;
}
@Override
public Map getBaseInfo() {
QueryConfigParamDTO dto=new QueryConfigParamDTO();
dto.setParamGroup(ConfigParamEnum.BASE.getName());
final List list = getList(dto);
// 把数据转换成map ,只需要获取list中单个item的paramKey ,paramValue
Map resultMap=new HashMap<>();
list.stream().forEach(item -> {
resultMap.put(item.getParamKey(),item.getParamValue());
});
return resultMap;
}
}