|
|
|
@ -1,20 +1,16 @@
|
|
|
|
|
package com.hchbox.controller;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
|
|
|
|
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
|
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
|
|
import com.hchbox.annotaion.SellerUser;
|
|
|
|
|
import com.hchbox.config.DataSourceConfiguration;
|
|
|
|
|
import com.hchbox.constant.DefaultNumberConstants;
|
|
|
|
|
import com.hchbox.dto.SellerAccountDTO;
|
|
|
|
|
import com.hchbox.entity.master.TopOrder;
|
|
|
|
|
import com.hchbox.entity.master.TopTrade;
|
|
|
|
|
import com.hchbox.entity.slaver.JdpTrade;
|
|
|
|
|
import com.hchbox.enums.TradeEnum;
|
|
|
|
|
import com.hchbox.model.param.CommonResult;
|
|
|
|
|
import com.hchbox.service.*;
|
|
|
|
|
import com.hchbox.util.CommConverter;
|
|
|
|
|
import com.hchbox.util.CacheManagerUtil;
|
|
|
|
|
import com.hchbox.vo.PageVo;
|
|
|
|
|
import com.hchbox.vo.taobao.TaoBaoOrderResponseVO;
|
|
|
|
|
import com.hchbox.vo.taobao.TaoBaoOrderSearchVO;
|
|
|
|
@ -22,19 +18,16 @@ import com.hchbox.vo.taobao.TradeDecryptVo;
|
|
|
|
|
import com.taobao.api.ApiException;
|
|
|
|
|
import com.taobao.api.SecretException;
|
|
|
|
|
import com.taobao.api.domain.Trade;
|
|
|
|
|
import com.taobao.api.internal.util.TaobaoUtils;
|
|
|
|
|
import com.taobao.api.request.TradesSoldGetRequest;
|
|
|
|
|
import com.taobao.api.response.TopOaidDecryptResponse;
|
|
|
|
|
import com.taobao.api.response.TradeFullinfoGetResponse;
|
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
|
|
import org.springframework.format.annotation.DateTimeFormat;
|
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
@ -55,6 +48,8 @@ public class TopTradeController {
|
|
|
|
|
|
|
|
|
|
private final JdpTradeService jdpTradeService;
|
|
|
|
|
|
|
|
|
|
private final CacheManagerUtil cacheManagerUtil;
|
|
|
|
|
|
|
|
|
|
private final TaoBaoTradeService taoBaoTradeService;
|
|
|
|
|
|
|
|
|
|
private final TaoBaoRdsPushService taoBaoRdsPushService;
|
|
|
|
@ -112,59 +107,43 @@ public class TopTradeController {
|
|
|
|
|
return topTradeService.decryptList(sellerAccountDTO, decryptVoList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@GetMapping("/synchronizeOrders")
|
|
|
|
|
@DS(DataSourceConfiguration.SHARDING_DATASOURCE_NAME)
|
|
|
|
|
public CommonResult<String> synchronizeOrders(@RequestParam("nickname") String nickname,
|
|
|
|
|
@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date date)
|
|
|
|
|
@GetMapping("/queryTrade")
|
|
|
|
|
public CommonResult<String> queryTrade(@RequestParam("nickname") String nickname,
|
|
|
|
|
@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date date)
|
|
|
|
|
throws ApiException, SecretException, NoSuchFieldException, IllegalAccessException {
|
|
|
|
|
|
|
|
|
|
SellerAccountDTO accountByNick = sellerAccountService.getAccountByNick(nickname);
|
|
|
|
|
SellerAccountDTO accountByNick =
|
|
|
|
|
sellerAccountService.getAccountByNick(nickname);
|
|
|
|
|
if (accountByNick == null) {
|
|
|
|
|
return new CommonResult<String>().accountException();
|
|
|
|
|
}
|
|
|
|
|
DynamicDataSourceContextHolder.push("slave");
|
|
|
|
|
List<JdpTrade> jdpOrderList = jdpTradeService.findJdpOrderByTime(date, DateUtil.date());
|
|
|
|
|
List<Trade> list = new ArrayList<>();
|
|
|
|
|
for (JdpTrade jdpTrade : jdpOrderList) {
|
|
|
|
|
if (jdpTrade != null && jdpTrade.getJdpResponse() != null) {
|
|
|
|
|
// 淘宝用此方式转换为trade
|
|
|
|
|
TradeFullinfoGetResponse rsp = TaobaoUtils.parseResponse(jdpTrade.getJdpResponse(),
|
|
|
|
|
TradeFullinfoGetResponse.class);
|
|
|
|
|
list.add(rsp.getTrade());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
list = taoBaoTradeService.decryptInformation(list, accountByNick.getSessionKey());
|
|
|
|
|
return topTradeService.queryTrade(accountByNick, date);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(list)) {
|
|
|
|
|
DynamicDataSourceContextHolder.push(DataSourceConfiguration.SHARDING_DATASOURCE_NAME);
|
|
|
|
|
for (Trade trade : list) {
|
|
|
|
|
@GetMapping("/synchronizeTrade")
|
|
|
|
|
public CommonResult<String> synchronizeTrade(@RequestParam("nickname") String nickname) {
|
|
|
|
|
SellerAccountDTO accountByNick =
|
|
|
|
|
sellerAccountService.getAccountByNick(nickname);
|
|
|
|
|
if (accountByNick == null) {
|
|
|
|
|
return new CommonResult<String>().accountException();
|
|
|
|
|
}
|
|
|
|
|
List<Trade> tradeCache = cacheManagerUtil.getCache
|
|
|
|
|
("TradeCache", accountByNick.getId());
|
|
|
|
|
if (!CollectionUtils.isEmpty(tradeCache)) {
|
|
|
|
|
for (Trade trade : tradeCache) {
|
|
|
|
|
// 判断账号
|
|
|
|
|
if (accountByNick.getStatus() == DefaultNumberConstants.ONE_NUMBER) {
|
|
|
|
|
TopTrade topTrade = new TopTrade();
|
|
|
|
|
BeanUtil.copyProperties(trade, topTrade);
|
|
|
|
|
List<TopOrder> topOrders = CommConverter.CommConverter(trade.getOrders(), TopOrder.class);
|
|
|
|
|
boolean createResult = topTradeService.createTrade(topTrade, accountByNick, topOrders);
|
|
|
|
|
TopTrade syncTask = new TopTrade();
|
|
|
|
|
BeanUtil.copyProperties(trade, syncTask);
|
|
|
|
|
List<TopOrder> topOrders = Convert.toList(TopOrder.class, trade.getOrders());
|
|
|
|
|
boolean createResult = topTradeService.createTrade(syncTask, accountByNick, topOrders);
|
|
|
|
|
if (createResult && Boolean.TRUE.equals(TradeEnum.checkStatus(trade.getStatus()))) {
|
|
|
|
|
memberService.synMemberByTrade(topTrade);
|
|
|
|
|
memberService.synMemberByTrade(syncTask);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 修改同步数量
|
|
|
|
|
int messageCount = accountByNick.getMessageCount() != null ?
|
|
|
|
|
accountByNick.getMessageCount() : DefaultNumberConstants.ZERO_NUMBER;
|
|
|
|
|
int totalAmount = messageCount + list.size();
|
|
|
|
|
sellerAccountService.updateMessageCount(accountByNick.getId(), totalAmount);
|
|
|
|
|
if (accountByNick.getMassNum() != null
|
|
|
|
|
&& accountByNick.getMassNum() > DefaultNumberConstants.ZERO_NUMBER
|
|
|
|
|
&& totalAmount > accountByNick.getMassNum()) {
|
|
|
|
|
// 删除数据推送
|
|
|
|
|
taoBaoRdsPushService.deletePushUser(nickname);
|
|
|
|
|
// 修改账号状态
|
|
|
|
|
sellerAccountService.updateAccountStatusAndExpiration
|
|
|
|
|
(accountByNick.getId(), DefaultNumberConstants.MINUS_ONE_NUMBER, DateUtil.date());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return CommonResult.successfulOperation();
|
|
|
|
|
return topTradeService.synchronizeOrders(accountByNick, tradeCache.size());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|