package com.yeshi.buwan.service.imp.search;
|
|
import com.yeshi.buwan.dao.search.SearchSpecialPositionMapDao;
|
import com.yeshi.buwan.domain.special.SearchSpecial;
|
import com.yeshi.buwan.domain.special.SearchSpecialPositionMap;
|
import com.yeshi.buwan.exception.ParamsException;
|
import com.yeshi.buwan.service.inter.search.SearchSpecialPositionMapService;
|
import com.yeshi.buwan.service.inter.search.SearchSpecialService;
|
import org.springframework.data.domain.Sort;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
|
@Service
|
public class SearchSpecialPositionMapServiceImpl implements SearchSpecialPositionMapService {
|
|
@Resource
|
private SearchSpecialPositionMapDao searchSpecialPositionMapDao;
|
|
@Resource
|
private SearchSpecialService searchSpecialService;
|
|
|
@Override
|
public SearchSpecialPositionMap add(SearchSpecialPositionMap positionMap) throws ParamsException, Exception {
|
if (positionMap == null || positionMap.getPositionId() == null || positionMap.getSpecialId() == null) {
|
throw new ParamsException("参数不完整");
|
}
|
|
if (positionMap.getWeight() == null)
|
positionMap.setWeight(1);
|
|
if (positionMap.getCreateTime() == null)
|
positionMap.setCreateTime(new Date());
|
|
if (positionMap.getId() == null) {
|
positionMap.setId(SearchSpecialPositionMap.createId(positionMap.getSpecialId(), positionMap.getPositionId()));
|
}
|
|
return searchSpecialPositionMapDao.save(positionMap);
|
}
|
|
@Override
|
public void updateSelective(SearchSpecialPositionMap positionMap) {
|
if (positionMap == null || positionMap.getId() == null) {
|
return;
|
}
|
if (positionMap.getUpdateTime() == null) {
|
positionMap.setUpdateTime(new Date());
|
}
|
searchSpecialPositionMapDao.updateSelective(positionMap);
|
}
|
|
@Override
|
public List<SearchSpecialPositionMap> listByPosition(String positionId, int page, int pageSize) {
|
SearchSpecialPositionMapDao.DaoQuery daoQuery = new SearchSpecialPositionMapDao.DaoQuery();
|
daoQuery.positionId = positionId;
|
daoQuery.start = (page - 1) * pageSize;
|
daoQuery.count = pageSize;
|
daoQuery.sortList = Arrays.asList(new Sort.Order[]{
|
new Sort.Order(Sort.Direction.DESC, "weight")
|
});
|
return searchSpecialPositionMapDao.list(daoQuery);
|
}
|
|
@Override
|
public List<SearchSpecialPositionMap> listDetailByPosition(String positionId, int page, int pageSize) {
|
List<SearchSpecialPositionMap> mapList = listByPosition(positionId, page, pageSize);
|
//批量查询ID
|
List<String> ids = new ArrayList<>();
|
for (SearchSpecialPositionMap map : mapList) {
|
ids.add(map.getSpecialId());
|
}
|
List<SearchSpecial> searchSpecials = searchSpecialService.listByIds(ids);
|
Map<String, SearchSpecial> maps = new HashMap<>();
|
for (SearchSpecial ss : searchSpecials) {
|
maps.put(ss.getId(), ss);
|
}
|
|
for (SearchSpecialPositionMap map : mapList) {
|
map.setSpecial(maps.get(map.getSpecialId()));
|
}
|
return mapList;
|
}
|
|
@Override
|
public long countByPosition(String positionId) {
|
SearchSpecialPositionMapDao.DaoQuery daoQuery = new SearchSpecialPositionMapDao.DaoQuery();
|
daoQuery.positionId = positionId;
|
return searchSpecialPositionMapDao.count(daoQuery);
|
}
|
|
@Override
|
public List<SearchSpecialPositionMap> listBySpecial(String specialId, int page, int pageSize) {
|
SearchSpecialPositionMapDao.DaoQuery daoQuery = new SearchSpecialPositionMapDao.DaoQuery();
|
daoQuery.specialId = specialId;
|
daoQuery.start = (page - 1) * pageSize;
|
daoQuery.count = pageSize;
|
daoQuery.sortList = Arrays.asList(new Sort.Order[]{
|
new Sort.Order(Sort.Direction.DESC, "weight")
|
});
|
return searchSpecialPositionMapDao.list(daoQuery);
|
}
|
|
@Override
|
public long countBySpecial(String specialId) {
|
SearchSpecialPositionMapDao.DaoQuery daoQuery = new SearchSpecialPositionMapDao.DaoQuery();
|
daoQuery.specialId = specialId;
|
return searchSpecialPositionMapDao.count(daoQuery);
|
}
|
|
@Override
|
public void delete(String id) {
|
searchSpecialPositionMapDao.delete(id);
|
}
|
}
|