admin
2020-06-19 31e20ddb1eafa5bf64a0824629fb8c7a05450318
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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);
           }
        }
    }
}