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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
package cn.wisenergy.service.app.impl;
import cn.wisenergy.mapper.OrderMapper;
import cn.wisenergy.model.app.OrderInfo;
import cn.wisenergy.service.app.OrderService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.youzan.cloud.open.sdk.common.exception.SDKException;
import com.youzan.cloud.open.sdk.core.client.auth.Token;
import com.youzan.cloud.open.sdk.core.client.core.DefaultYZClient;
import com.youzan.cloud.open.sdk.core.oauth.model.OAuthToken;
import com.youzan.cloud.open.sdk.core.oauth.token.TokenParameter;
import com.youzan.cloud.open.sdk.gen.v4_0_0.model.YouzanTradesSoldGetResult;
import com.youzan.cloud.open.sdk.gen.v4_0_1.api.YouzanTradesSoldGet;
import com.youzan.cloud.open.sdk.gen.v4_0_1.model.YouzanTradesSoldGetParams;
import javafx.scene.input.DataFormat;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author zw
* @ Description: 定期获取有赞订单数据及更新订单状态
* @ Author : zw
* @ Date : 2021/2/22 17:06
*/
@Service
@Slf4j
public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implements OrderService {
@Autowired
private OrderMapper orderMapper;
//有赞客户端
DefaultYZClient yzClient = new DefaultYZClient();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date startCreatedDate = null;
Date endCreatedDate = null;
Date startUpdateDate = null;
Date endUpdateDate = null;
Date date = new Date();
/**
* 根据订单的创建时间获取有赞的订单数据 插入本地数据库
*
* @return
* @throws SDKException
*/
@XxlJob(value = "YouZanOrdersjobhandler")
@Override
public void getYouZanOrdersForCreateTime() throws SDKException {
Token token = youzanToken();
YouzanTradesSoldGet youzanTradesSoldGet = new YouzanTradesSoldGet();
//创建参数对象,并设置参数
YouzanTradesSoldGetParams youzanTradesSoldGetParams = new YouzanTradesSoldGetParams();
OrderInfo orderInfo = new OrderInfo();
try {
// startCreatedDate = sdf.parse("2021-01-28 11:04:01");
// endCreatedDate = sdf.parse("2021-03-1 16:39:59");
//当前时间的前1分钟
startCreatedDate = sdf.parse(sdf.format(new Date(date.getTime()-(long) 60*1000)));
log.info("订单创建开始时间"+sdf.format(startCreatedDate));
endCreatedDate = sdf.parse(sdf.format(date));
log.info("订单创建结束时间"+sdf.format(endCreatedDate));
} catch (ParseException e) {
e.printStackTrace();
}
//设置查询条件 --> 根据订单创建时间获取
youzanTradesSoldGetParams.setStartCreated(startCreatedDate);
youzanTradesSoldGetParams.setEndCreated(endCreatedDate);
youzanTradesSoldGet.setAPIParams(youzanTradesSoldGetParams);
//执行查询
YouzanTradesSoldGetResult result = yzClient.invoke(youzanTradesSoldGet, token, YouzanTradesSoldGetResult.class);
List<YouzanTradesSoldGetResult.YouzanTradesSoldGetResultFullorderinfolist> fullOrderInfoList = result.getData().getFullOrderInfoList();
//遍历订单数据
for (YouzanTradesSoldGetResult.YouzanTradesSoldGetResultFullorderinfolist youzanTradesSoldGetResultFullorderinfolist : fullOrderInfoList) {
YouzanTradesSoldGetResult.YouzanTradesSoldGetResultBuyerinfo buyerInfo = youzanTradesSoldGetResultFullorderinfolist.getFullOrderInfo().getBuyerInfo();
List<YouzanTradesSoldGetResult.YouzanTradesSoldGetResultOrders> orders = youzanTradesSoldGetResultFullorderinfolist.getFullOrderInfo().getOrders();
YouzanTradesSoldGetResult.YouzanTradesSoldGetResultOrderinfo youzanOrderInfo = youzanTradesSoldGetResultFullorderinfolist.getFullOrderInfo().getOrderInfo();
YouzanTradesSoldGetResult.YouzanTradesSoldGetResultPayinfo payInfo = youzanTradesSoldGetResultFullorderinfolist.getFullOrderInfo().getPayInfo();
//item_id 字段 处理
List<String> itemList = new ArrayList<>();
for (YouzanTradesSoldGetResult.YouzanTradesSoldGetResultOrders order : orders) {
String itemId = order.getItemId().toString();
itemList.add(itemId);
}
orderInfo.setItemId(itemList.toString());
//有赞的outer_user_id
orderInfo.setBuyerId(buyerInfo.getOuterUserId());
//支付方式
orderInfo.setPayType(youzanOrderInfo.getPayType().toString());
//有赞update_time
orderInfo.setYouzanUpdateTime(youzanOrderInfo.getUpdateTime());
//tid
orderInfo.setTid(youzanOrderInfo.getTid());
//created 订单创建时间
orderInfo.setCreated(youzanOrderInfo.getCreated());
//team_type 店铺类型
orderInfo.setTeamType(youzanOrderInfo.getTeamType());
//pay_time
orderInfo.setPayTime(youzanOrderInfo.getPayTime());
//pay_type_str 支付渠道
orderInfo.setPayTypeStr(youzanOrderInfo.getPayTypeStr());
//close_type
orderInfo.setCloseType(youzanOrderInfo.getCloseType().intValue());
//refund_state 退款状态
orderInfo.setRefundState(youzanOrderInfo.getRefundState());
//success_time
orderInfo.setSuccessTime(youzanOrderInfo.getSuccessTime());
//payment
orderInfo.setPayment(new BigDecimal(payInfo.getPayment()));
//rebate_status 返佣状态
orderInfo.setRebateStatus(0);
//month_order_status //当月订单处理状态
orderInfo.setMonthOrderStatus(0);
//monthly_task_status //月度任务处理状态
orderInfo.setMonthlyTaskStatus(0);
log.info("根据创建时间获取有赞订单号:"+youzanOrderInfo.getTid());
orderMapper.insertYouZanOrders(orderInfo);
}
}
/**
* 根据订单的修改时间获取有赞的订单数据 修改本地数据库的相关订单数据
*
* @return
* @throws SDKException
*/
@XxlJob(value = "YouZanOrdersForUpdateTimejobhandler")
@Override
public void getYouZanOrdersForUpdateTime() throws SDKException {
Token token = youzanToken();
YouzanTradesSoldGet youzanTradesSoldGet = new YouzanTradesSoldGet();
//创建参数对象,并设置参数
YouzanTradesSoldGetParams youzanTradesSoldGetParams = new YouzanTradesSoldGetParams();
OrderInfo orderInfo = new OrderInfo();
try {
// startUpdateDate = sdf.parse("2021-02-28 11:04:01");
// endUpdateDate = sdf.parse("2021-03-2 16:39:59");
startUpdateDate = sdf.parse(sdf.format(new Date(date.getTime()-(long) 60*1000)));
log.info("订单修改开始时间"+sdf.format(startUpdateDate));
endUpdateDate = sdf.parse(sdf.format(date));
log.info("订单修改结束时间"+sdf.format(endUpdateDate));
} catch (ParseException e) {
e.printStackTrace();
}
//设置查询条件 --> 根据订单修改时间获取
youzanTradesSoldGetParams.setStartUpdate(startUpdateDate);
youzanTradesSoldGetParams.setEndUpdate(endUpdateDate);
youzanTradesSoldGet.setAPIParams(youzanTradesSoldGetParams);
//调用有赞客户端进行查询
YouzanTradesSoldGetResult result = yzClient.invoke(youzanTradesSoldGet, token, YouzanTradesSoldGetResult.class);
List<YouzanTradesSoldGetResult.YouzanTradesSoldGetResultFullorderinfolist> fullOrderInfoList = result.getData().getFullOrderInfoList();
//遍历订单数据
for (YouzanTradesSoldGetResult.YouzanTradesSoldGetResultFullorderinfolist youzanTradesSoldGetResultFullorderinfolist : fullOrderInfoList) {
YouzanTradesSoldGetResult.YouzanTradesSoldGetResultOrderinfo youzanOrderInfo = youzanTradesSoldGetResultFullorderinfolist.getFullOrderInfo().getOrderInfo();
YouzanTradesSoldGetResult.YouzanTradesSoldGetResultPayinfo payInfo = youzanTradesSoldGetResultFullorderinfolist.getFullOrderInfo().getPayInfo();
//根据修改时间获取到的有赞订单数据的Tid
String tid = youzanOrderInfo.getTid();
OrderInfo orderByTid = orderMapper.getByTid(tid);
//确保是同一笔订单且订单的success_time=null是进行订单success_time状态修改
if (orderByTid != null && orderByTid.getSuccessTime() == null){
//支付方式
orderInfo.setPayType(youzanOrderInfo.getPayType().toString());
//有赞update_time
orderInfo.setYouzanUpdateTime(youzanOrderInfo.getUpdateTime());
//tid
orderInfo.setTid(youzanOrderInfo.getTid());
//pay_time
orderInfo.setPayTime(youzanOrderInfo.getPayTime());
//pay_type_str 支付渠道
orderInfo.setPayTypeStr(youzanOrderInfo.getPayTypeStr());
//close_type
orderInfo.setCloseType(youzanOrderInfo.getCloseType().intValue());
//refund_state 退款状态
orderInfo.setRefundState(youzanOrderInfo.getRefundState());
//success_time
orderInfo.setSuccessTime(youzanOrderInfo.getSuccessTime());
//payment
orderInfo.setPayment(new BigDecimal(payInfo.getPayment()));
log.info("根据修改时间获取有赞订单号:"+youzanOrderInfo.getTid());
//修改订单数据
orderMapper.updateById(orderInfo);
}
}
}
/**
* 有赞token获取
*
* @return
* @throws SDKException
*/
public static Token youzanToken() throws SDKException {
DefaultYZClient yzClient = new DefaultYZClient();
TokenParameter tokenParameter = TokenParameter.self()
.clientId("92bc1c500ce7c248f3")
.clientSecret("3d65e88f5106e8ee78dbc5cf5ff45526")
.grantId("92488799")
.refresh(true)
.build();
OAuthToken oAuthToken = yzClient.getOAuthToken(tokenParameter);
String accessToken = oAuthToken.getAccessToken();
log.info(accessToken);
Token youzanToken = new Token(accessToken);
return youzanToken;
}
}