package com.yeshi.fanli.service.impl.lable; import java.util.ArrayList; import java.util.Date; import java.util.HashSet; import java.util.List; import javax.annotation.Resource; import javax.transaction.Transactional; import org.springframework.stereotype.Service; import com.yeshi.fanli.dao.mybatis.lable.LabelGoodsMapper; import com.yeshi.fanli.dao.mybatis.lable.QualityFactoryMapper; import com.yeshi.fanli.entity.bus.lable.Label; import com.yeshi.fanli.entity.bus.lable.LabelGoods; import com.yeshi.fanli.entity.common.AdminUser; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.exception.LabelClassException; import com.yeshi.fanli.exception.LabelGoodsException; import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService; import com.yeshi.fanli.service.inter.lable.LabelGoodsService; import com.yeshi.fanli.service.inter.lable.LabelService; import com.yeshi.fanli.util.RedisManager; @Service public class LabelGoodsServiceImpl implements LabelGoodsService { @Resource private RedisManager redisManager; @Resource private LabelGoodsMapper labelGoodsMapper; @Resource private QualityFactoryMapper selectionGoodsMapper; @Resource private LabelService labelService; @Resource private LabelGoodsService LabelGoodsService; @Resource private TaoBaoGoodsBriefService taoBaoGoodsBriefService; @Override public int insertSelective(LabelGoods record) throws LabelGoodsException{ return labelGoodsMapper.insertSelective(record); } @Override public int deleteByPrimaryKey(Long id) throws LabelGoodsException{ return labelGoodsMapper.deleteByPrimaryKey(id); } @Override @Transactional public int deleteBatchById(long[] ids) throws LabelGoodsException{ return labelGoodsMapper.deleteBatchByPrimaryKey(ids); } @Override @Transactional public void deleteByGoodsId(List ids) throws LabelGoodsException { if (ids != null && ids.size() > 0) { for (String gid: ids) { Long goodsId = Long.parseLong(gid); labelGoodsMapper.deleteByGoodsId(goodsId); } } } /** * 删除该商品的对应标签 * @param goodsId * @param labId * @return */ @Override public int deleteByGoodsIdAndLabId(Long goodsId, Long labId){ return labelGoodsMapper.deleteByGoodsIdAndLabId(goodsId, labId); } @Override public LabelGoods selectByPrimaryKey(Long id) throws LabelGoodsException{ return labelGoodsMapper.selectByPrimaryKey(id); } @Override public Long getRelationNum(Long labelId) throws LabelGoodsException{ return labelGoodsMapper.getRelationNum(labelId); } @Override public List queryByGoodsId(int start, int count, Long goodsId) throws LabelClassException { // TODO Auto-generated method stub return labelGoodsMapper.queryByGoodsId(start, count, goodsId); } @Override public int getCountQueryByGoodsId(Long goodsId){ return labelGoodsMapper.getCountQueryByGoodsId(goodsId); } @Override public int getCountByGoodsId(Long goodsId){ return labelGoodsMapper.getCountByGoodsId(goodsId); } /** * 判断 此商品已已贴此标签 * @param goodsId * @param labId * @return */ @Override public Long isExistence(Long goodsId, Long labId){ return labelGoodsMapper.isExistence(goodsId, labId); } @Override @Transactional public void addBatchByLabId(TaoBaoGoodsBrief taoBaoGoodsBrief, List labIdList, AdminUser admin) throws Exception { List addList = new ArrayList(); for (String labId: labIdList) { Label label = labelService.selectByPrimaryKey(Long.parseLong(labId)); if (label == null) { continue; } LabelGoods labelGoods = new LabelGoods(); labelGoods.setLabel(label); labelGoods.setCreateUser(admin); labelGoods.setCreatetime(new Date()); labelGoods.setTaoBaoGoodsBrief(taoBaoGoodsBrief); addList.add(labelGoods); } if (addList.size() > 0) { labelGoodsMapper.insertBatch(addList); } } @Override @Transactional public void batchGoodsAddLables(List goodsIdList, List labIdList, AdminUser admin) throws Exception { /* 商品id 为空 不处理 */ if (goodsIdList == null || goodsIdList.size() == 0) { return; } /* 标签id为空 不处理 */ if (labIdList == null || labIdList.size() == 0) { return; } /* for (Long goodsId: goodsIdList) { // 全部清空 labelGoodsMapper.deleteByGoodsId(goodsId); }*/ /* 去掉重复标签 */ HashSet h = new HashSet(labIdList); labIdList.clear(); labIdList.addAll(h); /* 标签id不为空 开始对每个商品贴上标签 */ for (Long labId: labIdList) { Label label = labelService.selectByPrimaryKey(labId); if (label == null) { continue; } for (Long goodsId: goodsIdList) { TaoBaoGoodsBrief goodsBrief = taoBaoGoodsBriefService.selectByPrimaryKey(goodsId); if (goodsBrief != null) { /* 贴上标签 : 已贴不处理则 */ Long existence = labelGoodsMapper.isExistence(goodsId, labId); // 该商品不存在此标签则添加, 反之不做处理 if (existence == null || existence == 0l) { // 贴上新标签 LabelGoods lg = new LabelGoods(); lg.setLabel(label); lg.setCreateUser(admin); lg.setCreatetime(new Date()); lg.setTaoBaoGoodsBrief(goodsBrief); labelGoodsMapper.insertSelective(lg); } } } } } @Override @Transactional public void singleGoodsAddLables(Long goodsId, List labIdList, AdminUser admin) throws Exception { /* 商品id 为空 不处理 */ if (goodsId == null) { return; } // 全部清空 labelGoodsMapper.deleteByGoodsId(goodsId); /* 标签id为空 不处理 */ if (labIdList == null || labIdList.size() == 0) { return; } TaoBaoGoodsBrief goodsBrief = taoBaoGoodsBriefService.selectByPrimaryKey(goodsId); if (goodsBrief == null) { return; } /* 去掉重复标签 */ HashSet h = new HashSet(labIdList); labIdList.clear(); labIdList.addAll(h); /* 标签id不为空 开始对每个商品贴上标签 */ for (Long labId: labIdList) { Label label = labelService.selectByPrimaryKey(labId); if (label == null) { continue; } // 贴上新标签 LabelGoods lg = new LabelGoods(); lg.setLabel(label); lg.setCreateUser(admin); lg.setCreatetime(new Date()); lg.setTaoBaoGoodsBrief(goodsBrief); labelGoodsMapper.insertSelective(lg); } } }