增加解密消息

master
bynt 3 years ago
parent 9690a7c122
commit c6deea021e

@ -1,20 +1,16 @@
package com.hchbox.controller; package com.hchbox.controller;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.convert.Convert;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.hchbox.annotaion.SellerUser; import com.hchbox.annotaion.SellerUser;
import com.hchbox.config.DataSourceConfiguration;
import com.hchbox.constant.DefaultNumberConstants; import com.hchbox.constant.DefaultNumberConstants;
import com.hchbox.dto.SellerAccountDTO; import com.hchbox.dto.SellerAccountDTO;
import com.hchbox.entity.master.TopOrder; import com.hchbox.entity.master.TopOrder;
import com.hchbox.entity.master.TopTrade; import com.hchbox.entity.master.TopTrade;
import com.hchbox.entity.slaver.JdpTrade;
import com.hchbox.enums.TradeEnum; import com.hchbox.enums.TradeEnum;
import com.hchbox.model.param.CommonResult; import com.hchbox.model.param.CommonResult;
import com.hchbox.service.*; import com.hchbox.service.*;
import com.hchbox.util.CommConverter; import com.hchbox.util.CacheManagerUtil;
import com.hchbox.vo.PageVo; import com.hchbox.vo.PageVo;
import com.hchbox.vo.taobao.TaoBaoOrderResponseVO; import com.hchbox.vo.taobao.TaoBaoOrderResponseVO;
import com.hchbox.vo.taobao.TaoBaoOrderSearchVO; 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.ApiException;
import com.taobao.api.SecretException; import com.taobao.api.SecretException;
import com.taobao.api.domain.Trade; import com.taobao.api.domain.Trade;
import com.taobao.api.internal.util.TaobaoUtils;
import com.taobao.api.request.TradesSoldGetRequest; 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 io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -55,6 +48,8 @@ public class TopTradeController {
private final JdpTradeService jdpTradeService; private final JdpTradeService jdpTradeService;
private final CacheManagerUtil cacheManagerUtil;
private final TaoBaoTradeService taoBaoTradeService; private final TaoBaoTradeService taoBaoTradeService;
private final TaoBaoRdsPushService taoBaoRdsPushService; private final TaoBaoRdsPushService taoBaoRdsPushService;
@ -112,59 +107,43 @@ public class TopTradeController {
return topTradeService.decryptList(sellerAccountDTO, decryptVoList); return topTradeService.decryptList(sellerAccountDTO, decryptVoList);
} }
@GetMapping("/synchronizeOrders") @GetMapping("/queryTrade")
@DS(DataSourceConfiguration.SHARDING_DATASOURCE_NAME) public CommonResult<String> queryTrade(@RequestParam("nickname") String nickname,
public CommonResult<String> synchronizeOrders(@RequestParam("nickname") String nickname, @RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date date)
@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date date)
throws ApiException, SecretException, NoSuchFieldException, IllegalAccessException { throws ApiException, SecretException, NoSuchFieldException, IllegalAccessException {
SellerAccountDTO accountByNick = sellerAccountService.getAccountByNick(nickname); SellerAccountDTO accountByNick =
sellerAccountService.getAccountByNick(nickname);
if (accountByNick == null) { if (accountByNick == null) {
return new CommonResult<String>().accountException(); return new CommonResult<String>().accountException();
} }
DynamicDataSourceContextHolder.push("slave"); return topTradeService.queryTrade(accountByNick, date);
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());
if (CollectionUtils.isNotEmpty(list)) { @GetMapping("/synchronizeTrade")
DynamicDataSourceContextHolder.push(DataSourceConfiguration.SHARDING_DATASOURCE_NAME); public CommonResult<String> synchronizeTrade(@RequestParam("nickname") String nickname) {
for (Trade trade : list) { 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) { if (accountByNick.getStatus() == DefaultNumberConstants.ONE_NUMBER) {
TopTrade topTrade = new TopTrade(); TopTrade syncTask = new TopTrade();
BeanUtil.copyProperties(trade, topTrade); BeanUtil.copyProperties(trade, syncTask);
List<TopOrder> topOrders = CommConverter.CommConverter(trade.getOrders(), TopOrder.class); List<TopOrder> topOrders = Convert.toList(TopOrder.class, trade.getOrders());
boolean createResult = topTradeService.createTrade(topTrade, accountByNick, topOrders); boolean createResult = topTradeService.createTrade(syncTask, accountByNick, topOrders);
if (createResult && Boolean.TRUE.equals(TradeEnum.checkStatus(trade.getStatus()))) { 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());
} }
} }

@ -1,6 +1,7 @@
package com.hchbox.service; package com.hchbox.service;
import com.hchbox.dto.SellerAccountDTO; import com.hchbox.dto.SellerAccountDTO;
import com.hchbox.entity.master.TopTrade;
import com.taobao.api.SecretException; import com.taobao.api.SecretException;
import com.taobao.api.domain.Trade; import com.taobao.api.domain.Trade;
import com.taobao.api.request.TradesSoldGetRequest; import com.taobao.api.request.TradesSoldGetRequest;
@ -30,10 +31,13 @@ public interface TaoBaoTradeService {
Trade getFullInfoByTid(Long tid, String sessionKey); Trade getFullInfoByTid(Long tid, String sessionKey);
/** /**
* *
* @param list * @param list
* @param sessionKey * @param sessionKey
* @return * @return
* @throws SecretException
* @throws NoSuchFieldException
* @throws IllegalAccessException
*/ */
List<Trade> decryptInformation(List<Trade> list, String sessionKey) throws SecretException, NoSuchFieldException, IllegalAccessException; List<Trade> decryptInformation(List<Trade> list, String sessionKey) throws SecretException, NoSuchFieldException, IllegalAccessException;
} }

@ -2,7 +2,6 @@
package com.hchbox.service; package com.hchbox.service;
import cn.hutool.core.date.DateTime;
import com.hchbox.dto.SellerAccountDTO; import com.hchbox.dto.SellerAccountDTO;
import com.hchbox.entity.master.TopOrder; import com.hchbox.entity.master.TopOrder;
import com.hchbox.entity.master.TopTrade; import com.hchbox.entity.master.TopTrade;
@ -15,6 +14,8 @@ import com.hchbox.vo.PageVo;
import com.hchbox.vo.taobao.TaoBaoOrderResponseVO; import com.hchbox.vo.taobao.TaoBaoOrderResponseVO;
import com.hchbox.vo.taobao.TaoBaoOrderSearchVO; import com.hchbox.vo.taobao.TaoBaoOrderSearchVO;
import com.hchbox.vo.taobao.TradeDecryptVo; import com.hchbox.vo.taobao.TradeDecryptVo;
import com.taobao.api.ApiException;
import com.taobao.api.SecretException;
import com.taobao.api.request.TradesSoldGetRequest; import com.taobao.api.request.TradesSoldGetRequest;
import com.taobao.api.response.TopOaidDecryptResponse; import com.taobao.api.response.TopOaidDecryptResponse;
@ -118,15 +119,25 @@ public interface TopTradeService {
*/ */
TopTrade findByTid(Long tid); TopTrade findByTid(Long tid);
/** /**
* *
* * @param accountByNick
* @param sellerAccount * @param synchronizeSize
* @param nickname
* @param date
* @param date1
* @return * @return
*/ */
CommonResult<String> synchronizeOrdersByNickname(SellerAccountDTO sellerAccount, String nickname, Date date, DateTime date1); CommonResult<String> synchronizeOrders(SellerAccountDTO accountByNick, int synchronizeSize);
/**
*
* @param accountDTO
* @param startTime
* @return
* @throws ApiException
* @throws SecretException
* @throws NoSuchFieldException
* @throws IllegalAccessException
*/
CommonResult<String> queryTrade(SellerAccountDTO accountDTO, Date startTime) throws ApiException, SecretException, NoSuchFieldException, IllegalAccessException;
} }

@ -15,8 +15,8 @@ import java.util.List;
* @author Enzo * @author Enzo
* @date : 2021/6/23 * @date : 2021/6/23
*/ */
@DS("slave")
@Service @Service
@DS("slave")
@RequiredArgsConstructor @RequiredArgsConstructor
public class JdpTradeServiceImpl implements JdpTradeService { public class JdpTradeServiceImpl implements JdpTradeService {

@ -6,6 +6,7 @@ import com.hchbox.config.MiProperties;
import com.hchbox.constant.FieldConstants; import com.hchbox.constant.FieldConstants;
import com.hchbox.constant.TaoBaoDataMethodConstants; import com.hchbox.constant.TaoBaoDataMethodConstants;
import com.hchbox.dto.SellerAccountDTO; import com.hchbox.dto.SellerAccountDTO;
import com.hchbox.entity.master.TopTrade;
import com.hchbox.service.TaoBaoTradeService; import com.hchbox.service.TaoBaoTradeService;
import com.hchbox.uitl.TaoBaoEncryption; import com.hchbox.uitl.TaoBaoEncryption;
import com.taobao.api.SecretException; import com.taobao.api.SecretException;

@ -16,6 +16,7 @@ import com.hchbox.config.MiProperties;
import com.hchbox.constant.*; import com.hchbox.constant.*;
import com.hchbox.dto.SellerAccountDTO; import com.hchbox.dto.SellerAccountDTO;
import com.hchbox.entity.master.*; import com.hchbox.entity.master.*;
import com.hchbox.entity.slaver.JdpTrade;
import com.hchbox.enums.AppSettingTypeEnum; import com.hchbox.enums.AppSettingTypeEnum;
import com.hchbox.enums.RefundStatusEnum; import com.hchbox.enums.RefundStatusEnum;
import com.hchbox.enums.ResponseCode; import com.hchbox.enums.ResponseCode;
@ -35,10 +36,14 @@ import com.hchbox.vo.PageVo;
import com.hchbox.vo.taobao.TaoBaoOrderResponseVO; import com.hchbox.vo.taobao.TaoBaoOrderResponseVO;
import com.hchbox.vo.taobao.TaoBaoOrderSearchVO; import com.hchbox.vo.taobao.TaoBaoOrderSearchVO;
import com.hchbox.vo.taobao.TradeDecryptVo; 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.domain.Trade;
import com.taobao.api.internal.util.TaobaoUtils;
import com.taobao.api.request.TopOaidDecryptRequest; import com.taobao.api.request.TopOaidDecryptRequest;
import com.taobao.api.request.TradesSoldGetRequest; 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 lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -86,9 +91,6 @@ public class TopTradeServiceImpl implements TopTradeService {
private final AppSettingService appSettingService; private final AppSettingService appSettingService;
/**
*
*/
private final TopTradeRepository topTradeRepository; private final TopTradeRepository topTradeRepository;
private final TaoBaoTradeService taoBaoTradeService; private final TaoBaoTradeService taoBaoTradeService;
@ -141,6 +143,7 @@ public class TopTradeServiceImpl implements TopTradeService {
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) {
Long tid = topTrade.getTid(); Long tid = topTrade.getTid();
Integer byTid = topTradeRepository.countByTid(tid); Integer byTid = topTradeRepository.countByTid(tid);
if (byTid == null || byTid == DefaultNumberConstants.ZERO_NUMBER) { if (byTid == null || byTid == DefaultNumberConstants.ZERO_NUMBER) {
// 设置账户 // 设置账户
@ -375,7 +378,6 @@ public class TopTradeServiceImpl implements TopTradeService {
private void sendMessageRemind(Integer type, String buyerNick, Long tid, String orderStatus, String template, AppSetting setting, List<String> sendNickList, SellerAccountDTO sellerAccountDTO) { private void sendMessageRemind(Integer type, String buyerNick, Long tid, String orderStatus, String template, AppSetting setting, List<String> sendNickList, SellerAccountDTO sellerAccountDTO) {
// TODO 使用本地数据
TopTrade trade = topTradeRepository.findByTid(tid); TopTrade trade = topTradeRepository.findByTid(tid);
if (trade != null) { if (trade != null) {
topTradeRepository.updateOrderStatus(orderStatus, tid, DateUtil.date()); topTradeRepository.updateOrderStatus(orderStatus, tid, DateUtil.date());
@ -604,36 +606,44 @@ public class TopTradeServiceImpl implements TopTradeService {
return topTradeRepository.findByTid(tid); return topTradeRepository.findByTid(tid);
} }
@Override
public CommonResult<String> synchronizeOrders(SellerAccountDTO sellerAccount, int synchronizeSize) {
// 修改同步数量
int messageCount = sellerAccount.getMessageCount() != null ?
sellerAccount.getMessageCount() : DefaultNumberConstants.ZERO_NUMBER;
int totalAmount = messageCount + synchronizeSize;
sellerAccountService.updateMessageCount(sellerAccount.getId(), totalAmount);
if (sellerAccount.getMassNum() != null
&& sellerAccount.getMassNum() > DefaultNumberConstants.ZERO_NUMBER
&& totalAmount > sellerAccount.getMassNum()) {
// 删除数据推送
taoBaoRdsPushService.deletePushUser(sellerAccount.getNickname());
// 修改账号状态
sellerAccountService.updateAccountStatusAndExpiration
(sellerAccount.getId(), DefaultNumberConstants.MINUS_ONE_NUMBER, DateUtil.date());
}
cacheManagerUtil.evictCache("TradeCache", sellerAccount.getId().toString());
return CommonResult.successfulOperation();
}
@Override @Override
@SneakyThrows public CommonResult<String> queryTrade(SellerAccountDTO accountDTO, Date startTime)
public CommonResult<String> synchronizeOrdersByNickname(SellerAccountDTO sellerAccount, String nickname, Date date, DateTime date1) { throws ApiException, SecretException, NoSuchFieldException, IllegalAccessException {
/*for (Trade trade : list) { List<JdpTrade> jdpOrderList =
// 判断账号 jdpTradeService.findJdpOrderByTime(startTime, DateUtil.date());
if (sellerAccount.getStatus() == DefaultNumberConstants.ONE_NUMBER) { List<Trade> list = new ArrayList<>();
syncTask = new TopTrade(); for (JdpTrade jdpTrade : jdpOrderList) {
BeanUtil.copyProperties(trade, syncTask); if (jdpTrade != null && jdpTrade.getJdpResponse() != null) {
List<TopOrder> topOrders = CommConverter.CommConverter(trade.getOrders(), TopOrder.class); // 淘宝用此方式转换为trade
boolean createResult = createTrade(syncTask, sellerAccount, topOrders); TradeFullinfoGetResponse rsp = TaobaoUtils.parseResponse
if (createResult && Boolean.TRUE.equals(TradeEnum.checkStatus(trade.getStatus()))) { (jdpTrade.getJdpResponse(), TradeFullinfoGetResponse.class);
memberService.synMemberByTrade(syncTask); list.add(rsp.getTrade());
}
} }
// 修改同步数量 }
int messageCount = sellerAccount.getMessageCount() != null ? // 订单解密
sellerAccount.getMessageCount() : DefaultNumberConstants.ZERO_NUMBER; list = taoBaoTradeService.decryptInformation(list, accountDTO.getSessionKey());
int totalAmount = messageCount + list.size(); cacheManagerUtil.putCache("TradeCache", accountDTO.getId(), list);
sellerAccountService.updateMessageCount(sellerAccount.getId(), totalAmount);
if (sellerAccount.getMassNum() != null
&& sellerAccount.getMassNum() > DefaultNumberConstants.ZERO_NUMBER
&& totalAmount > sellerAccount.getMassNum()) {
// 删除数据推送
// taoBaoRdsPushService.deletePushUser(sellerNick);
// 修改账号状态
sellerAccountService.updateAccountStatusAndExpiration
(sellerAccount.getId(), DefaultNumberConstants.MINUS_ONE_NUMBER, DateUtil.date());
}
}*/
return CommonResult.successfulOperation(); return CommonResult.successfulOperation();
} }

Loading…
Cancel
Save