package com.ks.tool.bkz.service.impl.sdlj;
|
|
import com.ks.tool.bkz.dao.mybatis.sdlj.SDLJSimpleGoodsInfoMapper;
|
import com.ks.tool.bkz.dto.DaTaoKeDetailV2;
|
import com.ks.tool.bkz.entity.FirstOrderSubInfo;
|
import com.ks.tool.bkz.entity.TBGoodsInfo;
|
import com.ks.tool.bkz.entity.sdlj.SDLJSimpleGoodsInfo;
|
import com.ks.tool.bkz.entity.sdlj.SDLJUserGoods;
|
import com.ks.tool.bkz.service.TBGoodsService;
|
import com.ks.tool.bkz.service.manager.RedisManager;
|
import com.ks.tool.bkz.service.sdlj.FirstOrderSubInfoService;
|
import com.ks.tool.bkz.service.sdlj.SDLJGoodsService;
|
import com.ks.tool.bkz.service.sdlj.SDLJUserGoodsService;
|
import com.ks.tool.bkz.util.StringUtil;
|
import com.ks.tool.bkz.util.factory.TBGoodsInfoFactory;
|
import com.ks.tool.bkz.util.tb.DaTaoKeApiUtil;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.util.Date;
|
|
@Service
|
public class SDLJGoodsServiceImpl implements SDLJGoodsService {
|
|
@Resource
|
private RedisManager redisManager;
|
|
@Resource
|
private TBGoodsService tbGoodsService;
|
|
@Resource
|
private FirstOrderSubInfoService firstOrderSubInfoService;
|
|
@Resource
|
private SDLJSimpleGoodsInfoMapper sdljSimpleGoodsInfoMapper;
|
|
@Resource
|
private SDLJUserGoodsService sdljUserGoodsService;
|
|
private String getTBGoodsKey(String auctionId) {
|
return "tb-goods-" + auctionId;
|
}
|
|
@Transactional(rollbackFor = Exception.class)
|
@Override
|
public void addSDLJGoods(FirstOrderSubInfo subInfo, Long uid, String tbUid) {
|
//保存原始信息
|
firstOrderSubInfoService.add(subInfo);
|
addSimpleSDLJInfo(subInfo);
|
//保存用户商品信息
|
SDLJUserGoods userGoods = new SDLJUserGoods();
|
userGoods.setGoodsId(Long.parseLong(subInfo.getItemId()));
|
userGoods.setTbUid(tbUid);
|
userGoods.setUid(uid);
|
sdljUserGoodsService.addUserGoods(userGoods);
|
//更新淘宝商品信息
|
String key = getTBGoodsKey(subInfo.getItemId());
|
if (!StringUtil.isNullOrEmpty(redisManager.get(key)))//暂时不需要更新
|
return;
|
DaTaoKeDetailV2 v2 = DaTaoKeApiUtil.getGoodsDetailByGoodsId(Long.parseLong(subInfo.getItemId()));
|
if (v2 != null) {
|
TBGoodsInfo goods = TBGoodsInfoFactory.create(v2);
|
tbGoodsService.updateTBGoods(goods);
|
//更新
|
redisManager.save(key, "1", 60 * 10);
|
}
|
}
|
|
private void addSimpleSDLJInfo(FirstOrderSubInfo info) {
|
|
SDLJSimpleGoodsInfo sinfo = new SDLJSimpleGoodsInfo();
|
sinfo.setActivityPrice(info.getItemActPrice());
|
|
sinfo.setGoodsId(Long.parseLong(info.getItemId()));
|
sinfo.setPromotionAmount(new BigDecimal(info.getPromotionDisplayAmount()));
|
|
SDLJSimpleGoodsInfo old = sdljSimpleGoodsInfoMapper.selectByGoodsIdAndPromotionAmount(sinfo.getGoodsId(), sinfo.getPromotionAmount());
|
if(old==null){
|
sinfo.setCreateTime(new Date());
|
sinfo.setUpdateTime(new Date());
|
sinfo.setPromotionAmount(new BigDecimal(info.getPromotionDisplayAmount()));
|
sdljSimpleGoodsInfoMapper.insertSelective(sinfo);
|
}else{
|
if(System.currentTimeMillis()- old.getUpdateTime().getTime()>1000*60*10){//超过10分钟更新
|
sinfo.setId(old.getId());
|
sinfo.setUpdateTime(new Date());
|
sdljSimpleGoodsInfoMapper.updateByPrimaryKeySelective(sinfo);
|
}
|
}
|
}
|
}
|