yujian
2019-08-12 6d44a9cdd5b2549a392516b25f2d1068c9aaf984
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
package com.yeshi.fanli.service.impl.integral;
 
import java.util.List;
 
import javax.annotation.Resource;
 
import org.springframework.stereotype.Service;
 
import com.yeshi.fanli.dao.mybatis.integral.IntegralExchangeMapper;
import com.yeshi.fanli.entity.integral.IntegralExchange;
import com.yeshi.fanli.entity.integral.IntegralExchange.ExchangeTypeEnum;
import com.yeshi.fanli.exception.integral.IntegralExchangeException;
import com.yeshi.fanli.service.inter.integral.IntegralExchangeService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.vo.integral.ExchangeTipVO;
import com.yeshi.fanli.vo.user.UserInfoExtraVO;
 
@Service
public class IntegralExchangeServiceImpl implements IntegralExchangeService {
 
    @Resource
    private IntegralExchangeMapper integralExchangeMapper;
    
    @Resource
    private UserInfoExtraService userInfoExtraService;
    
 
    @Override
    public List<IntegralExchange> listValidCache(long start, int count){
        return integralExchangeMapper.listValid(start, count);
    }
    
    @Override
    public Long countValid(){
        return integralExchangeMapper.countValid();
    }
    
    
    @Override
    public ExchangeTipVO verifyExchange(Long uid, Long id) throws IntegralExchangeException{
        if (uid == null || uid <= 0) 
            throw new IntegralExchangeException(1, "用户未登录");
        
        if (id == null || id <= 0) 
            throw new IntegralExchangeException(1, "兑换id不正确");
        
        UserInfoExtraVO extraVO = userInfoExtraService.getInfoExtraVOByUid(uid);
        if (extraVO == null)
            throw new IntegralExchangeException(1, "用户相关信息不存在");
        
        IntegralExchange exchange = integralExchangeMapper.selectByPrimaryKey(id);
        if (exchange == null)
            throw new IntegralExchangeException(1, "兑换方式不存在");
        
        
        ExchangeTipVO exchangeTip = new ExchangeTipVO();
        Integer goldCoin = exchange.getGoldCoin();
        Integer goldCoinHas = extraVO.getGoldCoin();
        if (goldCoin.intValue() > goldCoinHas.intValue()) {
            exchangeTip.setType("notEnough");
            exchangeTip.setTip("当前账户中可用金币不足,无法兑换该奖品!");
            exchangeTip.setGoldCoin((goldCoin.intValue() - goldCoinHas.intValue()) + "金币");
            return exchangeTip;
        }
        
        ExchangeTypeEnum type = exchange.getType();
        if (ExchangeTypeEnum.freeCouponBuy == type) {
            exchangeTip.setTip("自购免单券仅能自己使用,且每个用户ID只能兑换一次。\r\n注:兑换成功后请到“我的-福利中心”中查看");
        } else if (ExchangeTypeEnum.freeCouponGive == type) {
            exchangeTip.setTip("赠送免单券兑换次数不限,赠送次数不限,受赠人若无“邀请人”成功领取后将成为你的一级队员。\r\n注:兑换成功后请到“我的-福利中心”中查看");
        } else if (ExchangeTypeEnum.rebateCoupon == type) {
            exchangeTip.setTip("返利奖励券兑换次数不限,赠送次数不限,受赠人若无“邀请人”成功领取后将成为你的一级队员。\r\n注:兑换成功后请到“我的-福利中心”中查看");
        } else if (ExchangeTypeEnum.inviteCodeActivate == type) {
            exchangeTip.setTip("注:兑换成功后请到“消息-系统消息”查看");
        } else if (ExchangeTypeEnum.inviteCodePublish == type) {
            exchangeTip.setInviteCode(extraVO.getInviteCode());
            exchangeTip.setTip("兑换成功后,将发布于“激活邀请码兑换功能中”,需激活邀请的用户可用金币兑换,本次展示有效期为3天。");
        } else if (ExchangeTypeEnum.taoLiJin == type) {
            exchangeTip.setName(exchange.getAmount() + "元推广红包");
            exchangeTip.setTip("注:兑换成功后请到“我的-推广红包”中查看");
        } else if (ExchangeTypeEnum.cash == type) {    
            exchangeTip.setName(exchange.getAmount() + "元现金红包");
            exchangeTip.setTip("注:兑换成功后请到“我的-账户余额”中查看");
        } else {
            throw new IntegralExchangeException(1, "兑换方式不存在");
        }
        
        exchangeTip.setGoldCoin(goldCoin + "金币");
        exchangeTip.setType(type.name());
        return exchangeTip;
    }
    
    
    @Override
    public void exchange(Long uid, Long id, Long inviteId) throws IntegralExchangeException{
        if (uid == null || uid <= 0) 
            throw new IntegralExchangeException(1, "用户未登录");
        
        if (id == null || id <= 0) 
            throw new IntegralExchangeException(1, "兑换id不正确");
        
        UserInfoExtraVO extraVO = userInfoExtraService.getInfoExtraVOByUid(uid);
        if (extraVO == null)
            throw new IntegralExchangeException(1, "用户相关信息不存在");
        
        IntegralExchange exchange = integralExchangeMapper.selectByPrimaryKey(id);
        if (exchange == null)
            throw new IntegralExchangeException(1, "兑换方式不存在");
        
        Integer goldCoin = exchange.getGoldCoin();
        Integer goldCoinHas = extraVO.getGoldCoin();
        if (goldCoin.intValue() > goldCoinHas.intValue()) {
            throw new IntegralExchangeException(1, "当前账户中可用金币不足,无法兑换该奖品!");
        }
        
        ExchangeTypeEnum type = exchange.getType();
        if (ExchangeTypeEnum.freeCouponBuy == type) {
            // 自购免单券
            
            
        } else if (ExchangeTypeEnum.freeCouponGive == type) {
            // 赠送免单券
            
            
        } else if (ExchangeTypeEnum.rebateCoupon == type) {
            // 奖励免单券
            
            
        } else if (ExchangeTypeEnum.inviteCodeActivate == type) {
            if (inviteId == null || inviteId <= 0) 
                throw new IntegralExchangeException(1, "传递参数不正确");
            
            // 激活邀请码
            UserInfoExtraVO inviteExtra = userInfoExtraService.getInfoExtraVOByUid(inviteId);
            if (inviteExtra == null || StringUtil.isNullOrEmpty(inviteExtra.getInviteCode()))
                throw new IntegralExchangeException(1, "兑换失败,该用户邀请码不存在");
            
        } else if (ExchangeTypeEnum.inviteCodePublish == type) {
            // 邀请码发布
            
        
        } else if (ExchangeTypeEnum.taoLiJin == type) {
            // 推广红包
            
        
        } else if (ExchangeTypeEnum.cash == type) {    
            // 现金红包
            
        } else {
            throw new IntegralExchangeException(1, "兑换方式不存在");
        }
    }
}