package com.xcong.farmer.cms.core.handler; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.xcong.farmer.cms.core.node.AttrNode; import com.xcong.farmer.cms.core.tag.data.AdData; import com.xcong.farmer.cms.core.tag.model.Ad; import com.xcong.farmer.cms.core.tag.model.Column; import com.xcong.farmer.cms.modules.system.entity.CmsAdInfoEntity; import com.xcong.farmer.cms.modules.system.mapper.CmsAdInfoMapper; import com.xcong.farmer.cms.utils.SpringContextHolder; import java.util.ArrayList; import java.util.List; /** * @author wzy * @date 2022-08-30 **/ public class AdDataParserHandler implements DataParserHandler{ private final CmsAdInfoMapper adInfoMapper = SpringContextHolder.getBean(CmsAdInfoMapper.class); @Override public void dataParser(AttrNode attrNode) { Long companyId = (Long) attrNode.getSystemDataValue("companyId"); Ad param = (Ad) attrNode.getParam(); if (StrUtil.isNotBlank(param.getGroupId())) { List ads = adInfoMapper.selectByGroupIdAndCompanyId(Long.parseLong(param.getGroupId()), companyId); if (CollUtil.isEmpty(ads)) { attrNode.setData(new AdData()); } else { int i = 1; List adDataList = new ArrayList<>(); for (CmsAdInfoEntity ad : ads) { adDataList.add(entityToData(ad, i)); } attrNode.setData(adDataList); } } else { CmsAdInfoEntity ad = adInfoMapper.selectById(param.getId()); attrNode.setData(entityToData(ad, 1)); } } private AdData entityToData(CmsAdInfoEntity entity, int index) { AdData adData = new AdData(); adData.setIndex(index); if (entity.getType() == 1) { adData.setChildren(StrUtil.split(entity.getValue(), ',')); } else { adData.setData(entity.getValue()); } return adData; } }