修改部分逻辑代码

master
bynt 3 years ago
parent b2ffa5e35c
commit 9f7ec11fb6

@ -46,14 +46,8 @@ public class TopTradeController {
private final TopTradeService topTradeService; private final TopTradeService topTradeService;
private final JdpTradeService jdpTradeService;
private final CacheManagerUtil cacheManagerUtil; private final CacheManagerUtil cacheManagerUtil;
private final TaoBaoTradeService taoBaoTradeService;
private final TaoBaoRdsPushService taoBaoRdsPushService;
private final SellerAccountService sellerAccountService; private final SellerAccountService sellerAccountService;

@ -3,7 +3,7 @@ server:
spring: spring:
profiles: profiles:
active: prod active: dev
servlet: servlet:
multipart: multipart:
max-file-size: 200MB #单个文件上传大小 max-file-size: 200MB #单个文件上传大小

@ -146,12 +146,12 @@ public class SlaverTest {
@Test @Test
public void findUser() { public void findUser() {
taoBaoShopService.getShopSellerGetResponse("50008201210o0rZnf2HiSh1c1feb01Stc7jcqeNvtlndOm2HtXkEYDwToRpsJ4Oh05"); taoBaoShopService.getShopSellerGetResponse("50008201b04rk9pR1abbfc5aWbcshoRviodPGVfvxljy8SwCMOavMnZavJE1eDXh9w");
} }
@Test @Test
public void findUserList() { public void findUserList() {
taoBaoRdsPushService.turnOnPushService("50008501339rkqzU1HKxcsSCZgfw9kvVEFHtLWmTvAj5BrpAWqq11d46634A7sUO8u",2L); taoBaoRdsPushService.turnOnPushService("50008301b31rk9pRecixBK0WlkFRHzfvTjjwFOTePoX17adf61appvZWSIB0F8x8sx",15L);
} }
@Test @Test

@ -83,4 +83,12 @@ public interface TopTradeRepository extends JpaRepository<TopTrade, Long>, JpaSp
* @return * @return
*/ */
List<TopTrade> findBySellerNick(String sellerNick); List<TopTrade> findBySellerNick(String sellerNick);
/**
*
* @param nickname
* @return
*/
@Query(value = "select count(t) from TopTrade t where t.sellerNick = ?1")
Integer countSizeBySellerNick(String nickname);
} }

@ -2,6 +2,8 @@ package com.hchbox.repository.slaver;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import com.hchbox.entity.slaver.JdpTrade; import com.hchbox.entity.slaver.JdpTrade;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
@ -53,4 +55,14 @@ public interface JdpTradeRepository extends JpaRepository<JdpTrade, Integer>, Jp
*/ */
@Query(value = "select count(j) from JdpTrade j where j.sellerNick = ?1 and j.created > ?2") @Query(value = "select count(j) from JdpTrade j where j.sellerNick = ?1 and j.created > ?2")
Integer countSizeBySellerNickAndTime(String nickname,Date created); Integer countSizeBySellerNickAndTime(String nickname,Date created);
/**
*
* @param beginTime
* @param endTime
* @param pageable
* @return
*/
@Query(value = "select j from JdpTrade j where j.jdpModified between ?1 and ?2")
Slice<JdpTrade> queryJdpTradeByTime(Date beginTime, Date endTime, Pageable pageable);
} }

@ -2,6 +2,8 @@ package com.hchbox.service;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import com.hchbox.entity.slaver.JdpTrade; import com.hchbox.entity.slaver.JdpTrade;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -43,4 +45,13 @@ public interface JdpTradeService {
* @return * @return
*/ */
Integer numberQueriesBySellerNick(String nickname, DateTime parse); Integer numberQueriesBySellerNick(String nickname, DateTime parse);
/**
*
* @param beginTime
* @param endTime
* @param pageable
* @return
*/
Slice<JdpTrade> findJdpOrderByTime(Date beginTime, Date endTime, Pageable pageable);
} }

@ -155,4 +155,12 @@ public interface TopTradeService {
* @return * @return
*/ */
CommonResult<String> synchronizeMember(SellerAccountDTO accountByNick); CommonResult<String> synchronizeMember(SellerAccountDTO accountByNick);
/**
* id
* @param nickname
* @return
*/
Integer numberQueriesBySellerNick(String nickname);
} }

@ -6,6 +6,8 @@ import com.hchbox.entity.slaver.JdpTrade;
import com.hchbox.repository.slaver.JdpTradeRepository; import com.hchbox.repository.slaver.JdpTradeRepository;
import com.hchbox.service.JdpTradeService; import com.hchbox.service.JdpTradeService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date; import java.util.Date;
@ -42,4 +44,9 @@ public class JdpTradeServiceImpl implements JdpTradeService {
return jdpTradeRepository.countSizeBySellerNickAndTime(nickname, parse); return jdpTradeRepository.countSizeBySellerNickAndTime(nickname, parse);
} }
@Override
public Slice<JdpTrade> findJdpOrderByTime(Date beginTime, Date endTime, Pageable pageable) {
return jdpTradeRepository.queryJdpTradeByTime(beginTime, endTime, pageable);
}
} }

@ -148,7 +148,8 @@ public class MemberServiceImpl implements MemberService {
.append(" set "); .append(" set ");
if (member.getLastTradeTime() == null if (member.getLastTradeTime() == null
|| member.getLastTradeTime().before(topTrade.getCreated())) { || member.getLastTradeTime().before(topTrade.getCreated())) {
boolean checkEmail = topTrade.getAlipayNo().contains(DefaultNumberConstants.ATTR_DELIMITER); boolean checkEmail = StrUtil.isNotBlank(topTrade.getAlipayNo())
&& topTrade.getAlipayNo().contains(DefaultNumberConstants.ATTR_DELIMITER);
updateString.append(" last_trade_id = :lastTradeId,") updateString.append(" last_trade_id = :lastTradeId,")
.append(" last_trade_time = :lastTradeTime,") .append(" last_trade_time = :lastTradeTime,")
.append(" last_trade_amount = :lastTradeAmount,") .append(" last_trade_amount = :lastTradeAmount,")

@ -30,6 +30,7 @@ import com.hchbox.repository.master.TaskMessageInfoRepository;
import com.hchbox.repository.master.TopOrderRegistry; import com.hchbox.repository.master.TopOrderRegistry;
import com.hchbox.repository.master.TopTradeRepository; import com.hchbox.repository.master.TopTradeRepository;
import com.hchbox.service.*; import com.hchbox.service.*;
import com.hchbox.task.SyncTask;
import com.hchbox.uitl.RemindTemplates; import com.hchbox.uitl.RemindTemplates;
import com.hchbox.util.*; import com.hchbox.util.*;
import com.hchbox.vo.PageVo; import com.hchbox.vo.PageVo;
@ -45,6 +46,7 @@ import com.taobao.api.request.TradesSoldGetRequest;
import com.taobao.api.response.TopOaidDecryptResponse; import com.taobao.api.response.TopOaidDecryptResponse;
import com.taobao.api.response.TradeFullinfoGetResponse; import com.taobao.api.response.TradeFullinfoGetResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@ -136,7 +138,7 @@ public class TopTradeServiceImpl implements TopTradeService {
@Override @Override
@Transactional(rollbackFor = Exception.class) // @Transactional(rollbackFor = Exception.class)
@DS(DataSourceConfiguration.SHARDING_DATASOURCE_NAME) @DS(DataSourceConfiguration.SHARDING_DATASOURCE_NAME)
public Boolean createTrade(TopTrade topTrade, SellerAccountDTO sellerAccountDTO, List<TopOrder> topOrders) { public Boolean createTrade(TopTrade topTrade, SellerAccountDTO sellerAccountDTO, List<TopOrder> topOrders) {
if (topTrade.getTid() != null) { if (topTrade.getTid() != null) {
@ -508,7 +510,7 @@ public class TopTradeServiceImpl implements TopTradeService {
return Boolean.TRUE; return Boolean.TRUE;
} }
// 1 发送金额 限定范围 // 1 发送金额 限定范围
if (trade.getPayment() != null){ if (trade.getPayment() != null) {
double payment = Double.parseDouble(trade.getPayment()); double payment = Double.parseDouble(trade.getPayment());
if (payment > DefaultNumberConstants.ZERO_NUMBER) { if (payment > DefaultNumberConstants.ZERO_NUMBER) {
// 金额区间为空或者设置为0表示无限制 // 金额区间为空或者设置为0表示无限制
@ -530,10 +532,12 @@ public class TopTradeServiceImpl implements TopTradeService {
return Boolean.TRUE; return Boolean.TRUE;
} }
} }
// 3 按按宝贝id过滤 // 3 按按宝贝id过滤
List<Long> ids = trade.getOrders().stream(). if (!CollectionUtils.isEmpty(trade.getOrders())) {
distinct().map(TopOrder::getNumIid). List<Long> ids = trade.getOrders()
collect(Collectors.toList()); .stream().distinct().map
(TopOrder::getNumIid).collect(Collectors.toList());
if (StringUtils.isNotBlank(setting.getNotSendMerchandise())) { if (StringUtils.isNotBlank(setting.getNotSendMerchandise())) {
// 获取不可发送 // 获取不可发送
@ -560,6 +564,7 @@ public class TopTradeServiceImpl implements TopTradeService {
} }
} }
} }
}
return Boolean.FALSE; return Boolean.FALSE;
} }
@ -714,5 +719,10 @@ public class TopTradeServiceImpl implements TopTradeService {
} }
@Override
@DS(DataSourceConfiguration.SHARDING_DATASOURCE_NAME)
public Integer numberQueriesBySellerNick(String nickname) {
return topTradeRepository.countSizeBySellerNick(nickname);
}
} }

@ -8,6 +8,7 @@ import com.hchbox.repository.master.SellerAccountRepository;
import com.hchbox.service.JdpTradeService; import com.hchbox.service.JdpTradeService;
import com.hchbox.service.SellerAccountService; import com.hchbox.service.SellerAccountService;
import com.hchbox.service.TaoBaoRdsPushService; import com.hchbox.service.TaoBaoRdsPushService;
import com.hchbox.service.TopTradeService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
@ -34,6 +35,9 @@ public class AccountTask {
private final JdpTradeService jdpTradeService; private final JdpTradeService jdpTradeService;
private final TopTradeService topTradeService;
/** /**
* *
@ -74,7 +78,7 @@ public class AccountTask {
sellerAccountRepository.findAllByParentId((long) DefaultNumberConstants.ZERO_NUMBER); sellerAccountRepository.findAllByParentId((long) DefaultNumberConstants.ZERO_NUMBER);
for (SellerAccount account : sellerAccounts) { for (SellerAccount account : sellerAccounts) {
// TODO 数据量过大情况 查询top表 // TODO 数据量过大情况 查询top表
Integer countNum = jdpTradeService.numberQueriesBySellerNick(account.getNickname()); Integer countNum = topTradeService.numberQueriesBySellerNick(account.getNickname());
if (account.getId().equals(DefaultNumberConstants.COLORFUL_PUZZLE_NUMBER)) { if (account.getId().equals(DefaultNumberConstants.COLORFUL_PUZZLE_NUMBER)) {
countNum = jdpTradeService.numberQueriesBySellerNick(account.getNickname(), countNum = jdpTradeService.numberQueriesBySellerNick(account.getNickname(),
DateUtil.parse(TimeConstants.COLORFUL_PUZZLE_DATE)); DateUtil.parse(TimeConstants.COLORFUL_PUZZLE_DATE));

@ -3,7 +3,9 @@ package com.hchbox.task;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
import com.hchbox.config.MiProperties; import com.hchbox.config.MiProperties;
import com.hchbox.constant.DefaultNumberConstants; import com.hchbox.constant.DefaultNumberConstants;
import com.hchbox.constant.TaoBaoDataMethodConstants; import com.hchbox.constant.TaoBaoDataMethodConstants;
@ -31,9 +33,11 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.*; import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
/** /**
@ -77,7 +81,7 @@ public class SyncTask {
*/ */
@Async("pullOrderTaskExecutor") @Async("pullOrderTaskExecutor")
@Scheduled(cron = "0 0/10 * * * *") @Scheduled(cron = "0 0/10 * * * *")
// @Scheduled(cron = "0 0/1 * * * *") //@Scheduled(cron = "0 0/1 * * * *")
public void pullOrdersRegularly() throws ApiException, SecretException, NoSuchFieldException, IllegalAccessException { public void pullOrdersRegularly() throws ApiException, SecretException, NoSuchFieldException, IllegalAccessException {
if (flag != null && flag) { if (flag != null && flag) {
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
@ -101,9 +105,9 @@ public class SyncTask {
public void syncOrder(Date date) throws ApiException, SecretException, NoSuchFieldException, IllegalAccessException { public void syncOrder(Date date) throws ApiException, SecretException, NoSuchFieldException, IllegalAccessException {
count.incrementAndGet(); count.incrementAndGet();
List<Trade> list = new ArrayList<>();
Date startTime; Date startTime;
Date endTime = new Date(); Date endTime = new Date();
Multimap<String, Trade> multimap = ArrayListMultimap.create();
// 第一次任务往前10分钟 // 第一次任务往前10分钟
startTime = lastUpdateTime == null ? DateUtil.offsetMinute(date, -DefaultNumberConstants.TEN_NUMBER) : lastUpdateTime; startTime = lastUpdateTime == null ? DateUtil.offsetMinute(date, -DefaultNumberConstants.TEN_NUMBER) : lastUpdateTime;
lastUpdateTime = endTime; lastUpdateTime = endTime;
@ -115,13 +119,13 @@ public class SyncTask {
// 淘宝用此方式转换为trade // 淘宝用此方式转换为trade
TradeFullinfoGetResponse rsp = TaobaoUtils.parseResponse(jdpTrade.getJdpResponse(), TradeFullinfoGetResponse rsp = TaobaoUtils.parseResponse(jdpTrade.getJdpResponse(),
TradeFullinfoGetResponse.class); TradeFullinfoGetResponse.class);
list.add(rsp.getTrade()); Trade trade = rsp.getTrade();
multimap.put(trade.getSellerNick(), trade);
} }
} }
} }
// 卖家昵称分组 // 卖家昵称分组
Map<String, List<Trade>> tradeListMap = list.stream(). Map<String, Collection<Trade>> tradeListMap = multimap.asMap();
collect(Collectors.groupingBy(Trade::getSellerNick));
List<String> fieldName = Lists.newArrayList( List<String> fieldName = Lists.newArrayList(
TaoBaoDataMethodConstants.BUYER_NICK, TaoBaoDataMethodConstants.BUYER_NICK,
TaoBaoDataMethodConstants.BUYER_EMAIL, TaoBaoDataMethodConstants.BUYER_EMAIL,
@ -131,12 +135,12 @@ public class SyncTask {
TaoBaoDataMethodConstants.RECEIVER_ADDRESS, TaoBaoDataMethodConstants.RECEIVER_ADDRESS,
TaoBaoDataMethodConstants.ENCRYPT_ALI_PAY_ID); TaoBaoDataMethodConstants.ENCRYPT_ALI_PAY_ID);
TopTrade syncTask; TopTrade syncTask;
for (Map.Entry<String, List<Trade>> stringListEntry : tradeListMap.entrySet()) { for (Map.Entry<String, Collection<Trade>> stringListEntry : tradeListMap.entrySet()) {
String sellerNick = stringListEntry.getKey(); String sellerNick = stringListEntry.getKey();
SellerAccountDTO sellerAccount = sellerAccountService.getAccountByNick(sellerNick); SellerAccountDTO sellerAccount = sellerAccountService.getAccountByNick(sellerNick);
// 判断账号 // 判断账号
if (sellerAccount != null && sellerAccount.getStatus() == DefaultNumberConstants.ONE_NUMBER) { if (sellerAccount != null && sellerAccount.getStatus() == DefaultNumberConstants.ONE_NUMBER) {
List<Trade> trades = stringListEntry.getValue(); List<Trade> trades = Lists.newArrayList(stringListEntry.getValue());
log.info(" ========== the analyze the order quantity size as {} ========== ", trades.size()); log.info(" ========== the analyze the order quantity size as {} ========== ", trades.size());
if (!CollectionUtils.isEmpty(trades)) { if (!CollectionUtils.isEmpty(trades)) {
TaoBaoEncryption.decrypt(miProperties, sellerAccount.getSessionKey(), trades, fieldName); TaoBaoEncryption.decrypt(miProperties, sellerAccount.getSessionKey(), trades, fieldName);
@ -157,4 +161,5 @@ public class SyncTask {
} }
count.decrementAndGet(); count.decrementAndGet();
} }
} }

@ -50,7 +50,7 @@ public class DefaultNumberConstants {
/** /**
* 9 * 9
*/ */
public static final int NiNE_NUMBER = 9; public static final int NINE_NUMBER = 9;
/** /**
* 10 * 10
*/ */

Loading…
Cancel
Save