diff --git a/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/OrderMapper.java b/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/OrderMapper.java index 0907820400c6041b34e292888baaf90b534c02d8..4069235044630c7685b7e12e66bfc232714a57ff 100644 --- a/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/OrderMapper.java +++ b/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/OrderMapper.java @@ -18,4 +18,17 @@ public interface OrderMapper extends BaseMapper<OrderInfo> { * @return 订å•åˆ—表 */ List<OrderInfo> getByRebateStatus(@Param("rebateStatus") Integer rebateStatus); + + /** + * 有赞订å•æ•°æ®æ’å…¥ + */ + void insertYouZanOrders(OrderInfo orderInfo); + + /** + * æ ¹æ®tid获å–订å•æ•°æ® + * @param tid 有赞生æˆçš„订å•id + * @return 一æ¡è®¢å•æ•°æ® + */ + OrderInfo getByTid(@Param("tid")String tid); + } diff --git a/wisenergy-mapper/src/main/resources/mapper/OrderMapper.xml b/wisenergy-mapper/src/main/resources/mapper/OrderMapper.xml index 5004851e4ced45c6f7002ce7f7249bad46de3ccc..5275052b7652cf6e36416bbbfc2c8c3536816908 100644 --- a/wisenergy-mapper/src/main/resources/mapper/OrderMapper.xml +++ b/wisenergy-mapper/src/main/resources/mapper/OrderMapper.xml @@ -95,4 +95,22 @@ </where> </select> + <insert id="insertYouZanOrders" parameterType="cn.wisenergy.model.app.OrderInfo" keyProperty="id" useGeneratedKeys="true"> + insert into + <include refid="table"/> + (<include refid="cols_exclude_id"/>) + value + (<include refid="vals"/>) + </insert> + + <select id="getByTid" resultType="cn.wisenergy.model.app.OrderInfo"> + SELECT + <include refid="cols_all"/> + from + <include refid="table"/> + <where> + tid=#{tid} + </where> + </select> + </mapper> \ No newline at end of file diff --git a/wisenergy-model/src/main/java/cn/wisenergy/model/app/OrderInfo.java b/wisenergy-model/src/main/java/cn/wisenergy/model/app/OrderInfo.java index 710af0e230c279f7e1ac0bc081eb9fb8c261a60c..3d762d81875db625a062c2293044550ba61de5ff 100644 --- a/wisenergy-model/src/main/java/cn/wisenergy/model/app/OrderInfo.java +++ b/wisenergy-model/src/main/java/cn/wisenergy/model/app/OrderInfo.java @@ -85,13 +85,13 @@ public class OrderInfo { * 订å•å…³é—类型 */ @ApiModelProperty(name = "closeType", value = "订å•å…³é—类型") - private Date closeType; + private Integer closeType; /** * é€€æ¬¾çŠ¶æ€ */ @ApiModelProperty(name = "refundState ", value = "退款状æ€") - private Boolean refundState; + private Long refundState; /** * 交易完æˆæ—¶é—´ diff --git a/wisenergy-service/pom.xml b/wisenergy-service/pom.xml index 79b1ecdeab26bef450b1028f7901f93ac6c66bb8..3fc63d5fc1f2d8e26445a7862ccfc008a46f0efd 100644 --- a/wisenergy-service/pom.xml +++ b/wisenergy-service/pom.xml @@ -72,6 +72,28 @@ <artifactId>itext-asian</artifactId> <version>5.2.0</version> </dependency> + + <!--有赞SDK--> + <dependency> + <groupId>com.youzan.cloud</groupId> + <artifactId>open-sdk-core</artifactId> + <version>1.0.7-RELEASE</version> + </dependency> + <dependency> + <groupId>com.youzan.cloud</groupId> + <artifactId>open-sdk-gen</artifactId> + <version>1.0.7.78771202102051104-RELEASE</version> + </dependency> + <dependency> + <groupId>com.youzan.cloud</groupId> + <artifactId>open-sdk-api</artifactId> + <version>1.0.7-RELEASE</version> + </dependency> + <dependency> + <groupId>com.youzan.cloud</groupId> + <artifactId>open-sdk-common</artifactId> + <version>1.0.7-RELEASE</version> + </dependency> </dependencies> <!-- MAVEN构建 --> diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/OrderService.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/OrderService.java index 838c1d6a0e37bb625f22644efc879faaff9f9c11..c1d71a4c6901edcf23bd236ec885767061319617 100644 --- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/OrderService.java +++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/OrderService.java @@ -1,5 +1,8 @@ package cn.wisenergy.service.app; +import com.youzan.cloud.open.sdk.common.exception.SDKException; +import com.youzan.cloud.open.sdk.gen.v4_0_0.model.YouzanTradesSoldGetResult; + /** *@ Description: 订å•æŽ¥å£å®šä¹‰ *@ Author : 86187 @@ -7,4 +10,7 @@ package cn.wisenergy.service.app; * @author 86187 */ public interface OrderService { + void getYouZanOrdersForCreateTime() throws SDKException; + + void getYouZanOrdersForUpdateTime() throws SDKException; } diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/OrderServiceImpl.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/OrderServiceImpl.java index ce1a3bfa115c7def2f6e29d5866d6d9383198c01..3508b15d84e51a7c8acd8f42ab8cdf27397de136 100644 --- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/OrderServiceImpl.java +++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/OrderServiceImpl.java @@ -4,12 +4,216 @@ 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.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 86187 - * @ Description: 订å•æŽ¥å£ä¸šåŠ¡å®žçŽ° - * @ Author : 86187 + * @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 + */ + 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) 80*24*60*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 + */ + 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"); + startCreatedDate = sdf.parse(sdf.format(new Date(date.getTime()-(long) 80*24*60*60*1000))); + log.info("订å•ä¿®æ”¹å¼€å§‹æ—¶é—´"+sdf.format(startUpdateDate)); + startUpdateDate = 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(); + + log.info(youzanTradesSoldGetResultFullorderinfolist.toString()); + + //æ ¹æ®ä¿®æ”¹æ—¶é—´èŽ·å–到的有赞订å•æ•°æ®çš„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; + } + }