admin
2021-09-13 8ce7c720e4e7a604b0ff770349b5556f39d37759
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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
package com.yeshi.fanli.service.impl.order.msg;
 
import java.math.BigDecimal;
import java.util.Date;
 
import javax.annotation.Resource;
 
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import com.yeshi.fanli.dto.push.PushContentDTO;
import com.yeshi.fanli.entity.bus.msg.MsgOrderDetail;
import com.yeshi.fanli.entity.config.push.PushMsgFactory;
import com.yeshi.fanli.exception.msg.MsgOrderDetailException;
import com.yeshi.fanli.exception.push.PushException;
import com.yeshi.fanli.service.inter.order.msg.MsgOrderDetailService;
import com.yeshi.fanli.service.inter.order.msg.UserOrderMsgNotificationService;
import com.yeshi.fanli.service.inter.push.PushService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.factory.msg.MsgOrderDetailFactory;
 
@Service
public class UserOrderMsgNotificationServiceImpl implements UserOrderMsgNotificationService {
 
    @Resource
    private MsgOrderDetailService msgOrderDetailService;
 
    @Resource
    private PushService pushService;
 
    @Resource
    private UserInfoService userInfoService;
 
 
    @Override
    public void orderFanLiStatistic(Long uid, String orderId, int orderType, BigDecimal payMoney, BigDecimal money,
                                    int goodsCount, int orderState, Date downTime) {
        // 是否通知
        boolean needNotify = (payMoney != null && payMoney.compareTo(new BigDecimal(0)) > 0) ? true : false;
        // 保存消息明细消息
        addOrderStatistics(uid, orderId, orderType, Constant.TYPE_REBATE, goodsCount, payMoney, money, downTime, null, needNotify);
 
        SystemEnum system = userInfoService.getUserSystem(uid);
        if (needNotify) {
            PushContentDTO dto = PushMsgFactory.createFanLiOrderStatisticed(orderType, orderId, money);
            try {
                pushService.pushZNX(uid, dto.getTitle(), dto.getContent(), null, null, system);
            } catch (NumberFormatException e) {
                e.printStackTrace();
            } catch (PushException e) {
                e.printStackTrace();
            }
        }
 
    }
 
 
    @Override
    public void orderShareStatistic(Long uid, String orderId, int orderType, BigDecimal payMoney, BigDecimal money,
                                    int goodsCount, int orderState, Date downTime) {
        // 是否通知
        boolean needNotify = (payMoney != null && payMoney.compareTo(new BigDecimal(0)) > 0) ? true : false;
        // 保存消息明细消息
        addOrderStatistics(uid, orderId, orderType, Constant.TYPE_SHAER, goodsCount, payMoney, money, downTime, null, needNotify);
 
        SystemEnum system = userInfoService.getUserSystem(uid);
 
        PushContentDTO dto = PushMsgFactory.createShareOrderStatisticed(orderType, orderId, money);
        try {
            pushService.pushZNX(uid, dto.getTitle(), dto.getContent(), null, null, system);
        } catch (NumberFormatException e) {
            e.printStackTrace();
        } catch (PushException e) {
            e.printStackTrace();
        }
 
    }
 
 
    @Override
    public void orderInviteStatistic(Long uid, String orderId, int orderType, BigDecimal payMoney, BigDecimal money,
                                     BigDecimal subsidy, int goodsCount, int orderState, Date downTime) {
        BigDecimal totalMoney = new BigDecimal(0);
        if (money != null) {
            totalMoney = totalMoney.add(money);
        }
        if (subsidy != null) {
            totalMoney = totalMoney.add(subsidy);
        }
 
        if (totalMoney.compareTo(new BigDecimal(0)) <= 0) {
            return;
        }
 
        SystemEnum system = userInfoService.getUserSystem(uid);
 
        // 保存消息明细消息
        addOrderStatistics(uid, orderId, orderType, Constant.TYPE_INVITE, goodsCount, payMoney, totalMoney, downTime, null, true);
 
        PushContentDTO dto = PushMsgFactory.createInviteOrderStatisticed(orderType, orderId, money);
        try {
            pushService.pushZNX(uid, dto.getTitle(), dto.getContent(), null, null, system);
        } catch (NumberFormatException e) {
            e.printStackTrace();
        } catch (PushException e) {
            e.printStackTrace();
        }
    }
 
    /**
     * 创建订单被统计消息
     *
     * @param uid
     * @param orderId    订单号
     * @param source     订单来源:淘宝、京东、天猫
     * @param type       订单类型:自购、分享、团队
     * @param goodsCount 商品数量
     * @param payMoney   付款金额
     * @param money      返利金额
     * @param downTime   下单时间
     * @param beiZhu     备注信息 - 非必填
     * @return
     */
    private void addOrderStatistics(Long uid, String orderId, int source, int type, int goodsCount,
                                    BigDecimal payMoney, BigDecimal money, Date downTime, String beiZhu, boolean needNotify) {
        try {
            MsgOrderDetail detail = MsgOrderDetailFactory.createOrderStatistics(uid, orderId, source, type, goodsCount, payMoney, money, downTime, beiZhu);
            // 消息
            msgOrderDetailService.addMsgOrderDetail(detail, needNotify);
        } catch (MsgOrderDetailException e) {
            e.printStackTrace();
        }
    }
 
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void orderFoundSuccess(Long uid, String orderId, int orderSource, int type, BigDecimal payMoney, BigDecimal money, int goodsCount, Date submitTime) {
        try {
            MsgOrderDetail detail = MsgOrderDetailFactory.createOrderFoundSuccess(uid, orderId, orderSource, type, goodsCount, payMoney, money, submitTime, "");
            // 消息
            msgOrderDetailService.addMsgOrderDetail(detail, true);
        } catch (MsgOrderDetailException e) {
            e.printStackTrace();
        }
 
    }
 
    @Override
    public void orderFoundFail(Long uid, String orderId) {
        try {
            MsgOrderDetail detail = MsgOrderDetailFactory.createOrderFoundFail(uid, orderId, "");
            // 消息
            msgOrderDetailService.addMsgOrderDetail(detail, true);
        } catch (MsgOrderDetailException e) {
            e.printStackTrace();
        }
    }
 
 
    @Override
    public void orderInvalidToBusinessRunning(Long uid, String orderId, int orderSource, int type) {
        try {
            MsgOrderDetail detail = MsgOrderDetailFactory.orderInvalidToBusinessRunning(uid, orderId, orderSource, type);
            // 消息
            msgOrderDetailService.addMsgOrderDetail(detail, true);
        } catch (MsgOrderDetailException e) {
            e.printStackTrace();
        }
    }
}