diff --git a/service/trade-service-source/trade-service-source-core/src/main/java/com/hchbox/controller/TopTradeController.java b/service/trade-service-source/trade-service-source-core/src/main/java/com/hchbox/controller/TopTradeController.java index f2b5cd3..7fbf28a 100644 --- a/service/trade-service-source/trade-service-source-core/src/main/java/com/hchbox/controller/TopTradeController.java +++ b/service/trade-service-source/trade-service-source-core/src/main/java/com/hchbox/controller/TopTradeController.java @@ -46,14 +46,8 @@ public class TopTradeController { private final TopTradeService topTradeService; - private final JdpTradeService jdpTradeService; - private final CacheManagerUtil cacheManagerUtil; - private final TaoBaoTradeService taoBaoTradeService; - - private final TaoBaoRdsPushService taoBaoRdsPushService; - private final SellerAccountService sellerAccountService; diff --git a/service/trade-service-source/trade-service-source-core/src/main/resources/application.yml b/service/trade-service-source/trade-service-source-core/src/main/resources/application.yml index 05b888b..768eba6 100644 --- a/service/trade-service-source/trade-service-source-core/src/main/resources/application.yml +++ b/service/trade-service-source/trade-service-source-core/src/main/resources/application.yml @@ -3,7 +3,7 @@ server: spring: profiles: - active: prod + active: dev servlet: multipart: max-file-size: 200MB #单个文件上传大小 diff --git a/service/trade-service-source/trade-service-source-core/src/test/java/com/hchbox/SlaverTest.java b/service/trade-service-source/trade-service-source-core/src/test/java/com/hchbox/SlaverTest.java index e91db47..522d182 100644 --- a/service/trade-service-source/trade-service-source-core/src/test/java/com/hchbox/SlaverTest.java +++ b/service/trade-service-source/trade-service-source-core/src/test/java/com/hchbox/SlaverTest.java @@ -146,12 +146,12 @@ public class SlaverTest { @Test public void findUser() { - taoBaoShopService.getShopSellerGetResponse("50008201210o0rZnf2HiSh1c1feb01Stc7jcqeNvtlndOm2HtXkEYDwToRpsJ4Oh05"); + taoBaoShopService.getShopSellerGetResponse("50008201b04rk9pR1abbfc5aWbcshoRviodPGVfvxljy8SwCMOavMnZavJE1eDXh9w"); } @Test public void findUserList() { - taoBaoRdsPushService.turnOnPushService("50008501339rkqzU1HKxcsSCZgfw9kvVEFHtLWmTvAj5BrpAWqq11d46634A7sUO8u",2L); + taoBaoRdsPushService.turnOnPushService("50008301b31rk9pRecixBK0WlkFRHzfvTjjwFOTePoX17adf61appvZWSIB0F8x8sx",15L); } @Test diff --git a/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/repository/master/TopTradeRepository.java b/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/repository/master/TopTradeRepository.java index ce524a3..57ac82a 100644 --- a/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/repository/master/TopTradeRepository.java +++ b/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/repository/master/TopTradeRepository.java @@ -83,4 +83,12 @@ public interface TopTradeRepository extends JpaRepository, JpaSp * @return */ List findBySellerNick(String sellerNick); + + /** + * 昵称查找数量 + * @param nickname + * @return + */ + @Query(value = "select count(t) from TopTrade t where t.sellerNick = ?1") + Integer countSizeBySellerNick(String nickname); } diff --git a/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/repository/slaver/JdpTradeRepository.java b/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/repository/slaver/JdpTradeRepository.java index a6abb4c..cdc8f8e 100644 --- a/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/repository/slaver/JdpTradeRepository.java +++ b/service/trade-service-source/trade-service-source-dao/src/main/java/com/hchbox/repository/slaver/JdpTradeRepository.java @@ -2,6 +2,8 @@ package com.hchbox.repository.slaver; import cn.hutool.core.date.DateTime; 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.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; @@ -53,4 +55,14 @@ public interface JdpTradeRepository extends JpaRepository, Jp */ @Query(value = "select count(j) from JdpTrade j where j.sellerNick = ?1 and j.created > ?2") 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 queryJdpTradeByTime(Date beginTime, Date endTime, Pageable pageable); } diff --git a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/JdpTradeService.java b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/JdpTradeService.java index 52e31e8..1264d6b 100644 --- a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/JdpTradeService.java +++ b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/JdpTradeService.java @@ -2,6 +2,8 @@ package com.hchbox.service; import cn.hutool.core.date.DateTime; 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.List; @@ -43,4 +45,13 @@ public interface JdpTradeService { * @return */ Integer numberQueriesBySellerNick(String nickname, DateTime parse); + + /** + * 时间分页查询 + * @param beginTime + * @param endTime + * @param pageable + * @return + */ + Slice findJdpOrderByTime(Date beginTime, Date endTime, Pageable pageable); } diff --git a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/TopTradeService.java b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/TopTradeService.java index e5d0386..8259e07 100644 --- a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/TopTradeService.java +++ b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/TopTradeService.java @@ -155,4 +155,12 @@ public interface TopTradeService { * @return */ CommonResult synchronizeMember(SellerAccountDTO accountByNick); + + /** + * 昵称查找id + * @param nickname + * @return + */ + Integer numberQueriesBySellerNick(String nickname); + } diff --git a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/JdpTradeServiceImpl.java b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/JdpTradeServiceImpl.java index 5f6d71c..caff0b6 100644 --- a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/JdpTradeServiceImpl.java +++ b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/JdpTradeServiceImpl.java @@ -6,6 +6,8 @@ import com.hchbox.entity.slaver.JdpTrade; import com.hchbox.repository.slaver.JdpTradeRepository; import com.hchbox.service.JdpTradeService; import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Slice; import org.springframework.stereotype.Service; import java.util.Date; @@ -42,4 +44,9 @@ public class JdpTradeServiceImpl implements JdpTradeService { return jdpTradeRepository.countSizeBySellerNickAndTime(nickname, parse); } + @Override + public Slice findJdpOrderByTime(Date beginTime, Date endTime, Pageable pageable) { + return jdpTradeRepository.queryJdpTradeByTime(beginTime, endTime, pageable); + } + } diff --git a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/MemberServiceImpl.java b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/MemberServiceImpl.java index 778e7da..5844f6d 100644 --- a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/MemberServiceImpl.java +++ b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/MemberServiceImpl.java @@ -148,7 +148,8 @@ public class MemberServiceImpl implements MemberService { .append(" set "); if (member.getLastTradeTime() == null || 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,") .append(" last_trade_time = :lastTradeTime,") .append(" last_trade_amount = :lastTradeAmount,") diff --git a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/TopTradeServiceImpl.java b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/TopTradeServiceImpl.java index 095df4f..c09e7a1 100644 --- a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/TopTradeServiceImpl.java +++ b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/service/impl/TopTradeServiceImpl.java @@ -30,6 +30,7 @@ import com.hchbox.repository.master.TaskMessageInfoRepository; import com.hchbox.repository.master.TopOrderRegistry; import com.hchbox.repository.master.TopTradeRepository; import com.hchbox.service.*; +import com.hchbox.task.SyncTask; import com.hchbox.uitl.RemindTemplates; import com.hchbox.util.*; 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.TradeFullinfoGetResponse; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; @@ -136,7 +138,7 @@ public class TopTradeServiceImpl implements TopTradeService { @Override - @Transactional(rollbackFor = Exception.class) + // @Transactional(rollbackFor = Exception.class) @DS(DataSourceConfiguration.SHARDING_DATASOURCE_NAME) public Boolean createTrade(TopTrade topTrade, SellerAccountDTO sellerAccountDTO, List topOrders) { if (topTrade.getTid() != null) { @@ -508,7 +510,7 @@ public class TopTradeServiceImpl implements TopTradeService { return Boolean.TRUE; } // 1 发送金额 限定范围 - if (trade.getPayment() != null){ + if (trade.getPayment() != null) { double payment = Double.parseDouble(trade.getPayment()); if (payment > DefaultNumberConstants.ZERO_NUMBER) { // 金额区间为空或者设置为0表示无限制 @@ -530,35 +532,38 @@ public class TopTradeServiceImpl implements TopTradeService { return Boolean.TRUE; } } - // 3 按按宝贝id过滤 - List ids = trade.getOrders().stream(). - distinct().map(TopOrder::getNumIid). - collect(Collectors.toList()); - - if (StringUtils.isNotBlank(setting.getNotSendMerchandise())) { - // 获取不可发送 - List notSendList = - Stream.of(setting.getNotSendMerchandise(). - split(StrUtil.COMMA)).mapToLong(Long::parseLong). - boxed().collect(Collectors.toList()); - // 判断不发送交集是否为空且全部包含不发送内容 - if (!CollectionUtils.isEmpty(notSendList) && ids.containsAll(notSendList)) { - return Boolean.TRUE; - } - } - if (StringUtils.isNotBlank(setting.getSendMerchandise())) { - List sendList = - Stream.of(setting.getSendMerchandise(). - split(StrUtil.COMMA)).mapToLong(Long::parseLong). - boxed().collect(Collectors.toList()); - // 发送内容为 所有的都没有则不发送 - if (!CollectionUtils.isEmpty(sendList)) { - sendList.retainAll(ids); - if (CollectionUtils.isEmpty(sendList)) { + // 3 按按宝贝id过滤 + if (!CollectionUtils.isEmpty(trade.getOrders())) { + List ids = trade.getOrders() + .stream().distinct().map + (TopOrder::getNumIid).collect(Collectors.toList()); + + if (StringUtils.isNotBlank(setting.getNotSendMerchandise())) { + // 获取不可发送 + List notSendList = + Stream.of(setting.getNotSendMerchandise(). + split(StrUtil.COMMA)).mapToLong(Long::parseLong). + boxed().collect(Collectors.toList()); + // 判断不发送交集是否为空且全部包含不发送内容 + if (!CollectionUtils.isEmpty(notSendList) && ids.containsAll(notSendList)) { return Boolean.TRUE; } } + if (StringUtils.isNotBlank(setting.getSendMerchandise())) { + List sendList = + Stream.of(setting.getSendMerchandise(). + split(StrUtil.COMMA)).mapToLong(Long::parseLong). + boxed().collect(Collectors.toList()); + + // 发送内容为 所有的都没有则不发送 + if (!CollectionUtils.isEmpty(sendList)) { + sendList.retainAll(ids); + if (CollectionUtils.isEmpty(sendList)) { + return Boolean.TRUE; + } + } + } } 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); + } } diff --git a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/task/AccountTask.java b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/task/AccountTask.java index eabe10b..c1c926b 100644 --- a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/task/AccountTask.java +++ b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/task/AccountTask.java @@ -8,6 +8,7 @@ import com.hchbox.repository.master.SellerAccountRepository; import com.hchbox.service.JdpTradeService; import com.hchbox.service.SellerAccountService; import com.hchbox.service.TaoBaoRdsPushService; +import com.hchbox.service.TopTradeService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; @@ -34,6 +35,9 @@ public class AccountTask { private final JdpTradeService jdpTradeService; + private final TopTradeService topTradeService; + + /** * 定时检测授权时间 @@ -74,7 +78,7 @@ public class AccountTask { sellerAccountRepository.findAllByParentId((long) DefaultNumberConstants.ZERO_NUMBER); for (SellerAccount account : sellerAccounts) { // TODO 数据量过大情况 查询top表 - Integer countNum = jdpTradeService.numberQueriesBySellerNick(account.getNickname()); + Integer countNum = topTradeService.numberQueriesBySellerNick(account.getNickname()); if (account.getId().equals(DefaultNumberConstants.COLORFUL_PUZZLE_NUMBER)) { countNum = jdpTradeService.numberQueriesBySellerNick(account.getNickname(), DateUtil.parse(TimeConstants.COLORFUL_PUZZLE_DATE)); diff --git a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/task/SyncTask.java b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/task/SyncTask.java index 4afedc0..8ec14fd 100644 --- a/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/task/SyncTask.java +++ b/service/trade-service-source/trade-service-source-taobao/src/main/java/com/hchbox/task/SyncTask.java @@ -3,7 +3,9 @@ package com.hchbox.task; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Lists; +import com.google.common.collect.Multimap; import com.hchbox.config.MiProperties; import com.hchbox.constant.DefaultNumberConstants; import com.hchbox.constant.TaoBaoDataMethodConstants; @@ -31,9 +33,11 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; 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.stream.Collectors; /** @@ -77,7 +81,7 @@ public class SyncTask { */ @Async("pullOrderTaskExecutor") @Scheduled(cron = "0 0/10 * * * *") - // @Scheduled(cron = "0 0/1 * * * *") + //@Scheduled(cron = "0 0/1 * * * *") public void pullOrdersRegularly() throws ApiException, SecretException, NoSuchFieldException, IllegalAccessException { if (flag != null && flag) { long startTime = System.currentTimeMillis(); @@ -94,16 +98,16 @@ public class SyncTask { } syncOrder(date); long endTime = System.currentTimeMillis(); - log.info("====== [ the pull order end time consuming as {} ] ======", endTime - startTime); + log.info("====== [ the pull order end time consuming as {} ] ======", endTime - startTime); } } public void syncOrder(Date date) throws ApiException, SecretException, NoSuchFieldException, IllegalAccessException { count.incrementAndGet(); - List list = new ArrayList<>(); Date startTime; Date endTime = new Date(); + Multimap multimap = ArrayListMultimap.create(); // 第一次任务往前10分钟 startTime = lastUpdateTime == null ? DateUtil.offsetMinute(date, -DefaultNumberConstants.TEN_NUMBER) : lastUpdateTime; lastUpdateTime = endTime; @@ -115,13 +119,13 @@ public class SyncTask { // 淘宝用此方式转换为trade TradeFullinfoGetResponse rsp = TaobaoUtils.parseResponse(jdpTrade.getJdpResponse(), TradeFullinfoGetResponse.class); - list.add(rsp.getTrade()); + Trade trade = rsp.getTrade(); + multimap.put(trade.getSellerNick(), trade); } } } // 卖家昵称分组 - Map> tradeListMap = list.stream(). - collect(Collectors.groupingBy(Trade::getSellerNick)); + Map> tradeListMap = multimap.asMap(); List fieldName = Lists.newArrayList( TaoBaoDataMethodConstants.BUYER_NICK, TaoBaoDataMethodConstants.BUYER_EMAIL, @@ -131,12 +135,12 @@ public class SyncTask { TaoBaoDataMethodConstants.RECEIVER_ADDRESS, TaoBaoDataMethodConstants.ENCRYPT_ALI_PAY_ID); TopTrade syncTask; - for (Map.Entry> stringListEntry : tradeListMap.entrySet()) { + for (Map.Entry> stringListEntry : tradeListMap.entrySet()) { String sellerNick = stringListEntry.getKey(); SellerAccountDTO sellerAccount = sellerAccountService.getAccountByNick(sellerNick); // 判断账号 if (sellerAccount != null && sellerAccount.getStatus() == DefaultNumberConstants.ONE_NUMBER) { - List trades = stringListEntry.getValue(); + List trades = Lists.newArrayList(stringListEntry.getValue()); log.info(" ========== the analyze the order quantity size as {} ========== ", trades.size()); if (!CollectionUtils.isEmpty(trades)) { TaoBaoEncryption.decrypt(miProperties, sellerAccount.getSessionKey(), trades, fieldName); @@ -157,4 +161,5 @@ public class SyncTask { } count.decrementAndGet(); } + } diff --git a/trade-common/src/main/java/com/hchbox/constant/DefaultNumberConstants.java b/trade-common/src/main/java/com/hchbox/constant/DefaultNumberConstants.java index 7a68729..b4436a7 100644 --- a/trade-common/src/main/java/com/hchbox/constant/DefaultNumberConstants.java +++ b/trade-common/src/main/java/com/hchbox/constant/DefaultNumberConstants.java @@ -50,7 +50,7 @@ public class DefaultNumberConstants { /** * 9 */ - public static final int NiNE_NUMBER = 9; + public static final int NINE_NUMBER = 9; /** * 10 */