Search in sources :

Example 1 with I18nDataDTO

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);
    }
}
Also used : ArrayList(java.util.ArrayList) I18nDataDTO(com.hccake.ballcat.i18n.model.dto.I18nDataDTO) I18nData(com.hccake.ballcat.i18n.model.entity.I18nData) HashSet(java.util.HashSet) CacheDel(com.hccake.ballcat.common.redis.core.annotation.CacheDel)

Aggregations

CacheDel (com.hccake.ballcat.common.redis.core.annotation.CacheDel)1 I18nDataDTO (com.hccake.ballcat.i18n.model.dto.I18nDataDTO)1 I18nData (com.hccake.ballcat.i18n.model.entity.I18nData)1 ArrayList (java.util.ArrayList)1 HashSet (java.util.HashSet)1