| | |
| | | package com.vincent.rsf.server.system.service.impl; |
| | | |
| | | import com.vincent.rsf.server.system.mapper.DictDataMapper; |
| | | import com.vincent.rsf.server.system.entity.DictData; |
| | | import com.vincent.rsf.server.system.service.DictDataService; |
| | | 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<DictDataMapper, DictData> 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<? extends Serializable> list) { |
| | | if (list == null || list.isEmpty()) { |
| | | return true; |
| | | } |
| | | List<DictData> 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; |
| | | } |
| | | } |