package com.jspxcms.core.service.impl; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.jspxcms.core.domain.Attribute; import com.jspxcms.core.domain.Info; import com.jspxcms.core.domain.InfoAttribute; import com.jspxcms.core.repository.InfoAttributeDao; import com.jspxcms.core.service.AttributeService; import com.jspxcms.core.service.InfoAttributeService; /** * InfoAttributeServiceImpl * * @author liufang * */ @Service @Transactional(readOnly = true) public class InfoAttributeServiceImpl implements InfoAttributeService { @Transactional public List<InfoAttribute> save(Info info, Integer[] attrIds, Map<String, String> attrImages) { List<InfoAttribute> infoAttrs = new ArrayList<InfoAttribute>(); if (ArrayUtils.isNotEmpty(attrIds)) { InfoAttribute infoAttr; Attribute attr; String image; for (Integer attrId : attrIds) { infoAttr = new InfoAttribute(); attr = attributeService.get(attrId); image = attrImages.get(attrId.toString()); infoAttr.setInfo(info); infoAttr.setAttribute(attr); if (StringUtils.isNotBlank(image)) { infoAttr.setImage(image); } infoAttr.applyDefaultValue(); dao.save(infoAttr); infoAttrs.add(infoAttr); } } info.setInfoAttrs(infoAttrs); return infoAttrs; } @Transactional public List<InfoAttribute> update(Info info, Integer[] attrIds, Map<String, String> attrImages) { dao.deleteByInfoId(info.getId()); List<InfoAttribute> infoAttrs = save(info, attrIds, attrImages); info.setInfoAttrs(infoAttrs); return infoAttrs; } public int deleteByInfoId(Integer infoId) { return dao.deleteByInfoId(infoId); } public int deleteByAttributeId(Integer attributeId) { return dao.deleteByAttributeId(attributeId); } private AttributeService attributeService; @Autowired public void setAttributeService(AttributeService attributeService) { this.attributeService = attributeService; } private InfoAttributeDao dao; @Autowired public void setDao(InfoAttributeDao dao) { this.dao = dao; } }