yujian
2020-06-18 52bc8ff0de3c7538d1401423c1cba9615c0c2082
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
package com.yeshi.fanli.service.impl.user.cloud;
 
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
 
import javax.annotation.Resource;
 
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
 
import com.yeshi.fanli.dao.mybatis.user.cloud.UserCloudOrderMapper;
import com.yeshi.fanli.entity.bus.user.cloud.CloudOrderMenuEnum;
import com.yeshi.fanli.entity.bus.user.cloud.UserCloudOrder;
import com.yeshi.fanli.exception.user.cloud.UserCloudOrderException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.msg.UserOtherMsgNotificationService;
import com.yeshi.fanli.service.inter.user.cloud.UserCloudOrderService;
import com.yeshi.fanli.service.inter.user.cloud.UserCloudService;
 
 
@Service
public class UserCloudOrderServiceImpl implements UserCloudOrderService {
 
    @Resource
    private UserCloudOrderMapper userCloudOrderMapper;
 
    @Lazy
    @Resource
    private UserCloudService userCloudService;
    
    
    
    @Override
    public UserCloudOrder addCloudOrder(Long uid, String type) throws UserCloudOrderException{
        if (uid == null) 
            throw new UserCloudOrderException(1, "用户未登录");
    
        CloudOrderMenuEnum menuEnum = CloudOrderMenuEnum.getMenuEnum(type);
        if (menuEnum == null) 
            throw new UserCloudOrderException(1, "请选择正确套餐");
        
        UserCloudOrder cloudOrder = new UserCloudOrder();
        cloudOrder.setUid(uid);
        cloudOrder.setState(false);
        cloudOrder.setType(menuEnum);
        cloudOrder.setMoney(BigDecimal.valueOf(menuEnum.getMoney()));
        cloudOrder.setCreateTime(new Date());
        cloudOrder.setUpdateTime(new Date());
        userCloudOrderMapper.insertSelective(cloudOrder);
        return cloudOrder;
    }
    
    @Override
    public void updateByPrimaryKeySelective(UserCloudOrder cloudOrder) {
        userCloudOrderMapper.updateByPrimaryKeySelective(cloudOrder);
    }
    
    @Override
    public UserCloudOrder selectByPrimaryKey(Long id) {
        return userCloudOrderMapper.selectByPrimaryKey(id);
    }
    
    
    @Override
    public void cloudPayCloudSuccess(Long orderId) throws UserCloudOrderException{
        UserCloudOrder cloudOrder = userCloudOrderMapper.selectForUpdate(orderId);
        if (cloudOrder == null)
            throw new UserCloudOrderException(1, "订单信息不存在");
        
        if (cloudOrder.getState()) 
            return; // 已支付成功更新
        
        UserCloudOrder updateOrder = new UserCloudOrder();
        updateOrder.setState(true);
        updateOrder.setId(cloudOrder.getId());
        updateOrder.setDesc("成功开通" + cloudOrder.getType().getDescShow());
        updateOrder.setUpdateTime(new Date());
        userCloudOrderMapper.updateByPrimaryKeySelective(updateOrder);
        
        // 创建开通信息
        try {
            userCloudService.openCloud(cloudOrder.getUid(), cloudOrder.getId(), cloudOrder.getType());
        } catch (Exception e) {
            LogHelper.error(e);
        }
    }
    
    @Override
    public UserCloudOrder getLastOrderByUnpaid(Long uid, String type) {
        return userCloudOrderMapper.getLastOrderByUnpaid(uid, type);
    }
    
    @Override
    public UserCloudOrder getLastOrderByPayEnd(Long uid, String type) {
        return userCloudOrderMapper.getLastOrderByPayEnd(uid, type);
    }
    
    
    @Override
    public List<UserCloudOrder> getOrderRecord(int page, int count, Long uid, Integer state) {
        return userCloudOrderMapper.getOrderRecord((page-1)* count, count, uid, state);
    }
    
    @Override
    public long countOrderRecord(Long uid, Integer state) {
        Long count = userCloudOrderMapper.countOrderRecord(uid, state);
        if (count == null)
            count = 0L;
        return count;
    }
    
    
    @Override
    public List<UserCloudOrder> getLasthourByUnpaid() {
        return userCloudOrderMapper.getLasthourByUnpaid();
    }
    
    
    @Override
    public List<UserCloudOrder> query(int page, int count,String key, Integer state) {
        return userCloudOrderMapper.query((page-1)* count, count, key, state);
    }
    
    @Override
    public long count(String key, Integer state) {
        Long count = userCloudOrderMapper.count(key, state);
        if (count == null)
            count = 0L;
        return count;
    }
    
    
}