use of com.hccake.ballcat.i18n.model.dto.I18nDataDTO in project ballcat by ballcat-projects.
the class I18nDataServiceImpl method saveOrUpdate.
@Override
@CacheDel(key = I18nRedisKeyConstants.I18N_DATA_PREFIX, multiDel = true, keyJoint = "#p0.![#this.code + ':' + #this.languageTag]")
public void saveOrUpdate(List<I18nData> list) {
// 查询已存在的数据
List<I18nData> existsI18nData = baseMapper.exists(list);
HashSet<I18nData> existsSet = new HashSet<>(existsI18nData);
// 获取对应插入和更新的列表
List<I18nDataDTO> updateList = new ArrayList<>();
List<I18nData> insertList = new ArrayList<>();
for (I18nData i18nData : list) {
if (existsSet.contains(i18nData)) {
updateList.add(I18nDataConverter.INSTANCE.poToDto(i18nData));
} else {
insertList.add(i18nData);
}
}
// 小范围事务处理,另外不影响缓存更新
i18NDataTxSupport.saveAndUpdate(insertList, updateList);
// 缓存更新
for (I18nDataDTO i18nDataDTO : updateList) {
String code = i18nDataDTO.getCode();
String languageTag = i18nDataDTO.getLanguageTag();
this.pushUpdateMessage(code, languageTag);
}
}
Aggregations