class ShopDetailCanalListener extends BaseCanalBinlogEventProcessor<ShopDetailBO> {

    private static final Logger log = LoggerFactory.getLogger(ShopDetailCanalListener.class);

    @Autowired
    private ProductUpdateManager productUpdateManager;
    @Autowired
    private ProductFeignClient productFeignClient;

    /**
     * 新增店铺
     */
    @Override
    protected void processInsertInternal(CanalBinLogResult<ShopDetailBO> shopDetailResult) {

    }

    /**
     * 更新店铺
     * @param result
     */
    @Override
    protected void processUpdateInternal(CanalBinLogResult<ShopDetailBO> result) {<FILL_FUNCTION_BODY>}
}

        ShopDetailBO beforeData = result.getBeforeData();
        if (Objects.isNull(beforeData.getShopName()) && StrUtil.isBlank(beforeData.getShopLogo()) && !Objects.equals(beforeData.getShopStatus(), StatusEnum.ENABLE.value())) {
            return;
        }
        ShopDetailBO afterData = result.getAfterData();
        EsProductBO esProductBO = new EsProductBO();
        if (StrUtil.isNotBlank(beforeData.getShopName())) {
            esProductBO.setShopName(afterData.getShopName());
        }
        if (Objects.nonNull(beforeData.getShopLogo())) {
            esProductBO.setShopImg(afterData.getShopLogo());
        }
        if (Objects.nonNull(beforeData.getShopStatus()) && Objects.equals(beforeData.getShopId(), StatusEnum.ENABLE.value())) {
            esProductBO.setSpuStatus(StatusEnum.DISABLE.value());
        }
        ServerResponseEntity<List<Long>> responseData = productFeignClient.getSpuIdsByShopId(afterData.getShopId());
        productUpdateManager.esUpdateSpuBySpuIds(responseData.getData(), esProductBO);
    
<no_super_class>