package com.vincent.rsf.server.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vincent.rsf.server.common.event.DictDataChangedEvent; import com.vincent.rsf.server.system.entity.DictData; import com.vincent.rsf.server.system.mapper.DictDataMapper; import com.vincent.rsf.server.system.service.DictDataService; import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.Serializable; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; @Service("dictDataService") public class DictDataServiceImpl extends ServiceImpl implements DictDataService { @Resource private ApplicationEventPublisher applicationEventPublisher; @Override public boolean save(DictData entity) { boolean result = super.save(entity); if (result && entity.getDictTypeCode() != null) { applicationEventPublisher.publishEvent(new DictDataChangedEvent(this, entity.getDictTypeCode())); } return result; } @Override public boolean updateById(DictData entity) { boolean result = super.updateById(entity); if (result && entity.getDictTypeCode() != null) { applicationEventPublisher.publishEvent(new DictDataChangedEvent(this, entity.getDictTypeCode())); } return result; } @Override public boolean removeByIds(Collection list) { if (list == null || list.isEmpty()) { return true; } List before = listByIds(list); boolean result = super.removeByIds(list); if (result && before != null) { for (String dictTypeCode : before.stream().map(DictData::getDictTypeCode).filter(c -> c != null).distinct().collect(Collectors.toList())) { applicationEventPublisher.publishEvent(new DictDataChangedEvent(this, dictTypeCode)); } } return result; } }