insertOrdersToDatabase sql fix getOnSale

This commit is contained in:
Owen 2025-02-22 12:18:04 +08:00
parent 446abe8a69
commit eb1c8ca0a9
1 changed files with 154 additions and 139 deletions

View File

@ -84,6 +84,7 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
private OnSaleProductService onSaleProductService;
@Resource
private OrderSyncLogService orderSyncLogService;
@Override
public void syncOrder(AccessToken accessToken, long createTimeStart, long createTimeEnd) {
// 分页查询订单
@ -94,6 +95,7 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
/**
* 抖音消息推送订单抓取/更新 订单
*
* @param catchRepVO
*/
@Override
@ -108,22 +110,22 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
String msgId = message.getMsgId();
Object data = message.getData();
// 插入日志
if("200".equals(tag)){
if ("200".equals(tag)) {
// 200 doudian_refund_RefundCreated
// 买家发起售后申请消息
RefundRefundCreatedParam refundRefundCreatedParam = gson.fromJson(message.getData()+"", RefundRefundCreatedParam.class);
} else if("201".equals(tag)) {
RefundRefundCreatedParam refundRefundCreatedParam = gson.fromJson(message.getData() + "", RefundRefundCreatedParam.class);
} else if ("201".equals(tag)) {
// 201 doudian_refund_RefundAgreed
// 同意退款消息
RefundRefundAgreedParam refundRefundAgreedParam = gson.fromJson(message.getData()+"", RefundRefundAgreedParam.class);
} else if("202".equals(tag)) {
RefundRefundAgreedParam refundRefundAgreedParam = gson.fromJson(message.getData() + "", RefundRefundAgreedParam.class);
} else if ("202".equals(tag)) {
// 202 doudian_refund_ReturnApplyAgreed
// 同意退货申请消息
RefundReturnApplyAgreedParam refundReturnApplyAgreedParam = gson.fromJson(message.getData()+"", RefundReturnApplyAgreedParam.class);
} else if("101".equals(tag)) {
RefundReturnApplyAgreedParam refundReturnApplyAgreedParam = gson.fromJson(message.getData() + "", RefundReturnApplyAgreedParam.class);
} else if ("101".equals(tag)) {
// 101 doudian_trade_TradePaid
// 订单支付/确认消息 抓取订单
TradeTradePaidParam tradeTradePaidParam = gson.fromJson(message.getData()+"", TradeTradePaidParam.class);
TradeTradePaidParam tradeTradePaidParam = gson.fromJson(message.getData() + "", TradeTradePaidParam.class);
// 订单id
Long pId = tradeTradePaidParam.getPId();
// 根据订单id查询订单详情
@ -143,7 +145,9 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
* 2.1 需更新的数据 订单状态 退款状态
*/
// 所有在售商品
List<OnSaleProductDO> onSaleProductDOS = onSaleProductMapper.selectList(new QueryWrapper<OnSaleProductDO>().eq("deleted", 0).eq("onSale", true));
List<OnSaleProductDO> onSaleProductDOS = onSaleProductMapper.selectList(new LambdaQueryWrapperX<OnSaleProductDO>().eq(OnSaleProductDO::getDeleted, 0)
.eq(OnSaleProductDO::getOnSale, true));
// 所有在售商品sku
List<String> skuList = onSaleProductDOS.stream().map(OnSaleProductDO::getSku).toList();
// 买家备注
@ -185,9 +189,9 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
Long refundStatus = afterSaleInfo.getRefundStatus();
// 商品sku 判断是否抓单
String code = skuOrderListItem.getCode();
if(skuList.contains(code)){
if (skuList.contains(code)) {
for (OnSaleProductDO onSaleProductDO : onSaleProductDOS) {
if(onSaleProductDO.getSku().equals(code)){
if (onSaleProductDO.getSku().equals(code)) {
// 注入产品生产方式 记录初始产品+接口相关信息
OnSaleProductPreOrderRespVO onSaleProductPreOrder = onSaleProductService.getOnSaleProductPreOrder(onSaleProductDO.getId());
ordersDO.setAutoType(onSaleProductPreOrder.getParentProduct().getAutoType());
@ -204,24 +208,24 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
Long HaokaOrderStatus;// 号卡订单状态
Long HaokaOrderRefundStatus;// 号卡订单退款状态
// 解析订单状态
if(orderStatus == 105L){
if (orderStatus == 105L) {
HaokaOrderStatus = 100L;
ordersDO.setStatus(HaokaOrderStatus);
}else if(orderStatus == 101L || orderStatus == 3L){
} else if (orderStatus == 101L || orderStatus == 3L) {
HaokaOrderStatus = 500L;
ordersDO.setStatus(HaokaOrderStatus);
}else {
} else {
// 更新订单退款状态 订单状态不变
}
ordersDO.setStatusName(skuOrderListItem.getOrderStatusDesc());
// 解析售后状态
if(0L == afterSaleStatus){
if (0L == afterSaleStatus) {
// 未进入售后
HaokaOrderRefundStatus = 800L;
} else if(afterSaleStatus == 28L || refundStatus == 1L){
} else if (afterSaleStatus == 28L || refundStatus == 1L) {
// 未进入售后
HaokaOrderRefundStatus = 800L;
} else if(refundStatus == 3L){
} else if (refundStatus == 3L) {
// 进入售后
HaokaOrderRefundStatus = 300L;
} else {
@ -233,14 +237,14 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
for (com.doudian.open.api.order_orderDetail.data.LogisticsInfoItem logisticsInfoItem : logisticsInfo) {
for (com.doudian.open.api.order_orderDetail.data.ProductInfoItem productInfoItem : logisticsInfoItem.getProductInfo()) {
String skuOrderId = productInfoItem.getSkuOrderId();
if(skuOrderId.equals(orderId)){
if (skuOrderId.equals(orderId)) {
String productName = productInfoItem.getProductName();
ordersDO.setSupplierProductName(productName);
List<com.doudian.open.api.order_orderDetail.data.SkuSpecsItem> skuSpecs = productInfoItem.getSkuSpecs();
for (com.doudian.open.api.order_orderDetail.data.SkuSpecsItem skuSpec : skuSpecs) {
String name = skuSpec.getName();
String planMobile = getPlanMobile(name);
if(planMobile != null){
if (planMobile != null) {
ordersDO.setPlanMobile(planMobile);
}
}
@ -249,12 +253,12 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
}
// 查询订单是否存在 不存在则新增存在则更新
List<OrdersDO> ordersDOS = ordersMapper.selectList(new QueryWrapper<OrdersDO>().eq("real_source_id", orderId).eq("deleted", 0));
if(CollectionUtil.isNotEmpty(ordersDOS)){
if (CollectionUtil.isNotEmpty(ordersDOS)) {
// 更新订单
OrdersDO ordersDO1 = ordersDOS.get(0);
ordersDO1.setRefundStatus(String.valueOf(HaokaOrderRefundStatus));
ordersMapper.updateById(ordersDO1);
}else {
} else {
// 新增订单
ordersDO.setShopId(String.valueOf(shopId));
ordersDO.setShopName(shopName);
@ -299,14 +303,14 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
for (List<OrdersDO> ordersDOS : GroupListUtil.groupList(orderListAll, 50)) {
batchDecryptOrderAndUpdate(ordersDOS);
}
} else if("106".equals(tag)) {
} else if ("106".equals(tag)) {
// 106 doudian_trade_TradeCanceled
// 订单取消消息
TradeTradeCanceledParam tradeTradeCanceledParam = gson.fromJson(message.getData()+"", TradeTradeCanceledParam.class);
} else if("110".equals(tag)) {
TradeTradeCanceledParam tradeTradeCanceledParam = gson.fromJson(message.getData() + "", TradeTradeCanceledParam.class);
} else if ("110".equals(tag)) {
// 110 doudian_trade_TradePending
// 订单已支付待处理
TradeTradePendingParam tradeTradePendingParam = gson.fromJson(message.getData()+"", TradeTradePendingParam.class);
TradeTradePendingParam tradeTradePendingParam = gson.fromJson(message.getData() + "", TradeTradePendingParam.class);
// 订单id
Long pId = tradeTradePendingParam.getPId();
// 根据订单id查询订单详情
@ -326,7 +330,10 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
* 2.1 需更新的数据 订单状态 退款状态
*/
// 所有在售商品
List<OnSaleProductDO> onSaleProductDOS = onSaleProductMapper.selectList(new QueryWrapper<OnSaleProductDO>().eq("deleted", 0).eq("onSale", true));
// List<OnSaleProductDO> onSaleProductDOS = onSaleProductMapper.selectList(new QueryWrapper<OnSaleProductDO>().eq("deleted", 0).eq("onSale", true));
List<OnSaleProductDO> onSaleProductDOS = onSaleProductMapper.selectList(new LambdaQueryWrapperX<OnSaleProductDO>().eq(OnSaleProductDO::getDeleted, 0)
.eq(OnSaleProductDO::getOnSale, true));
// 所有在售商品sku
List<String> skuList = onSaleProductDOS.stream().map(OnSaleProductDO::getSku).toList();
// 买家备注
@ -368,9 +375,9 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
Long refundStatus = afterSaleInfo.getRefundStatus();
// 商品sku 判断是否抓单
String code = skuOrderListItem.getCode();
if(skuList.contains(code)){
if (skuList.contains(code)) {
for (OnSaleProductDO onSaleProductDO : onSaleProductDOS) {
if(onSaleProductDO.getSku().equals(code)){
if (onSaleProductDO.getSku().equals(code)) {
// 注入产品生产方式 记录初始产品+接口相关信息
OnSaleProductPreOrderRespVO onSaleProductPreOrder = onSaleProductService.getOnSaleProductPreOrder(onSaleProductDO.getId());
ordersDO.setAutoType(onSaleProductPreOrder.getParentProduct().getAutoType());
@ -387,24 +394,24 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
Long HaokaOrderStatus;// 号卡订单状态
Long HaokaOrderRefundStatus;// 号卡订单退款状态
// 解析订单状态
if(orderStatus == 105L){
if (orderStatus == 105L) {
HaokaOrderStatus = 100L;
ordersDO.setStatus(HaokaOrderStatus);
}else if(orderStatus == 101L || orderStatus == 3L){
} else if (orderStatus == 101L || orderStatus == 3L) {
HaokaOrderStatus = 500L;
ordersDO.setStatus(HaokaOrderStatus);
}else {
} else {
// 更新订单退款状态 订单状态不变
}
ordersDO.setStatusName(skuOrderListItem.getOrderStatusDesc());
// 解析售后状态
if(0L == afterSaleStatus){
if (0L == afterSaleStatus) {
// 未进入售后
HaokaOrderRefundStatus = 800L;
} else if(afterSaleStatus == 28L || refundStatus == 1L){
} else if (afterSaleStatus == 28L || refundStatus == 1L) {
// 未进入售后
HaokaOrderRefundStatus = 800L;
} else if(refundStatus == 3L){
} else if (refundStatus == 3L) {
// 进入售后
HaokaOrderRefundStatus = 300L;
} else {
@ -416,14 +423,14 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
for (com.doudian.open.api.order_orderDetail.data.LogisticsInfoItem logisticsInfoItem : logisticsInfo) {
for (com.doudian.open.api.order_orderDetail.data.ProductInfoItem productInfoItem : logisticsInfoItem.getProductInfo()) {
String skuOrderId = productInfoItem.getSkuOrderId();
if(skuOrderId.equals(orderId)){
if (skuOrderId.equals(orderId)) {
String productName = productInfoItem.getProductName();
ordersDO.setSupplierProductName(productName);
List<com.doudian.open.api.order_orderDetail.data.SkuSpecsItem> skuSpecs = productInfoItem.getSkuSpecs();
for (com.doudian.open.api.order_orderDetail.data.SkuSpecsItem skuSpec : skuSpecs) {
String name = skuSpec.getName();
String planMobile = getPlanMobile(name);
if(planMobile != null){
if (planMobile != null) {
ordersDO.setPlanMobile(planMobile);
}
}
@ -432,12 +439,12 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
}
// 查询订单是否存在 不存在则新增存在则更新
List<OrdersDO> ordersDOS = ordersMapper.selectList(new QueryWrapper<OrdersDO>().eq("real_source_id", orderId).eq("deleted", 0));
if(CollectionUtil.isNotEmpty(ordersDOS)){
if (CollectionUtil.isNotEmpty(ordersDOS)) {
// 更新订单
OrdersDO ordersDO1 = ordersDOS.get(0);
ordersDO1.setRefundStatus(String.valueOf(HaokaOrderRefundStatus));
ordersMapper.updateById(ordersDO1);
}else {
} else {
// 新增订单
ordersDO.setShopId(String.valueOf(shopId));
ordersDO.setShopName(shopName);
@ -487,8 +494,8 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
}
}
} catch (Exception e) {
log.error(e.getMessage(),e);
log.error("订单解析执行报错,错误原因:{}",e);
log.error(e.getMessage(), e);
log.error("订单解析执行报错,错误原因:{}", e);
}
}
@ -496,14 +503,15 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
/**
* 将订单数据插入到数据库
*
* @param orders 订单数据
*/
private void insertOrdersToDatabase(List<ShopOrderListItem> orders) {
// 所有在售商品
List<OnSaleProductDO> onSaleProductDOS = onSaleProductMapper
.selectList(new LambdaQueryWrapperX<OnSaleProductDO>()
.eq(OnSaleProductDO::getDeleted,0)
.eq(OnSaleProductDO::getOnSale,true));
.eq(OnSaleProductDO::getDeleted, 0)
.eq(OnSaleProductDO::getOnSale, true));
// 所有在售商品sku
List<String> skuList = onSaleProductDOS.stream().map(OnSaleProductDO::getSku).toList();
//数据分片处理 分片理由 每次最多徐解密50条数据一条订单解密5个数据10个订单解密50条
@ -560,9 +568,9 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
Long refundStatus = afterSaleInfo.getRefundStatus();
// 商品sku 判断是否抓单
String code = skuOrderListItem.getCode();
if(skuList.contains(code)){
if (skuList.contains(code)) {
for (OnSaleProductDO onSaleProductDO : onSaleProductDOS) {
if(onSaleProductDO.getSku().equals(code)){
if (onSaleProductDO.getSku().equals(code)) {
// 注入产品生产方式 记录初始产品+接口相关信息
OnSaleProductPreOrderRespVO onSaleProductPreOrder = onSaleProductService.getOnSaleProductPreOrder(onSaleProductDO.getId());
ordersDO.setAutoType(onSaleProductPreOrder.getParentProduct().getAutoType());
@ -579,23 +587,23 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
Long HaokaOrderStatus;// 号卡订单状态
Long HaokaOrderRefundStatus;// 号卡订单退款状态
// 解析订单状态
if(orderStatus == 105L){
if (orderStatus == 105L) {
HaokaOrderStatus = 100L;
ordersDO.setStatus(HaokaOrderStatus);
}else if(orderStatus == 101L || orderStatus == 3L){
} else if (orderStatus == 101L || orderStatus == 3L) {
HaokaOrderStatus = 500L;
ordersDO.setStatus(HaokaOrderStatus);
}else {
} else {
// 更新订单退款状态 订单状态不变
}
// 解析售后状态
if(0L == afterSaleStatus){
if (0L == afterSaleStatus) {
// 未进入售后
HaokaOrderRefundStatus = 800L;
} else if(afterSaleStatus == 28L || refundStatus == 1L){
} else if (afterSaleStatus == 28L || refundStatus == 1L) {
// 未进入售后
HaokaOrderRefundStatus = 800L;
} else if(refundStatus == 3L){
} else if (refundStatus == 3L) {
// 进入售后
HaokaOrderRefundStatus = 300L;
} else {
@ -608,14 +616,14 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
for (LogisticsInfoItem logisticsInfoItem : logisticsInfo) {
for (ProductInfoItem productInfoItem : logisticsInfoItem.getProductInfo()) {
String skuOrderId = productInfoItem.getSkuOrderId();
if(skuOrderId.equals(orderId)){
if (skuOrderId.equals(orderId)) {
String productName = productInfoItem.getProductName();
ordersDO.setSupplierProductName(productName);
List<SkuSpecsItem> skuSpecs = productInfoItem.getSkuSpecs();
for (SkuSpecsItem skuSpec : skuSpecs) {
String name = skuSpec.getName();
String planMobile = getPlanMobile(name);
if(planMobile != null){
if (planMobile != null) {
ordersDO.setPlanMobile(planMobile);
}
}
@ -624,12 +632,12 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
}
// 查询订单是否存在 不存在则新增存在则更新
List<OrdersDO> ordersDOS = ordersMapper.selectList(new QueryWrapper<OrdersDO>().eq("real_source_id", orderId).eq("deleted", 0));
if(CollectionUtil.isNotEmpty(ordersDOS)){
if (CollectionUtil.isNotEmpty(ordersDOS)) {
// 更新订单
OrdersDO ordersDO1 = ordersDOS.get(0);
ordersDO1.setRefundStatus(String.valueOf(HaokaOrderRefundStatus));
ordersMapper.updateById(ordersDO1);
}else {
} else {
// 新增订单
ordersDO.setShopId(String.valueOf(shopId));
ordersDO.setShopName(shopName);
@ -676,12 +684,14 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
batchDecryptOrderAndUpdate(ordersDOS);
}
}
private CipherInfosItem createCipherItem(String cipherText, String authId) {
CipherInfosItem item = new CipherInfosItem();
item.setCipherText(cipherText);
item.setAuthId(authId);
return item;
}
private void updateOrderFields(OrdersDO order, String cipherText, String decryptText) {
// 检查并更新每个加密字段
if (cipherText.equals(order.getEncryptAddress())) {
@ -696,6 +706,7 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
order.setEncryptAddressMobile(decryptText);
}
}
private void batchDecryptOrderAndUpdate(List<OrdersDO> orderList) {
List<CipherInfosItem> cipherInfos = new ArrayList<>();
for (OrdersDO ordersDO : orderList) {
@ -725,6 +736,7 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
/**
* 使用正则表达式获取手机号
*
* @param skuName
* @return
*/
@ -734,10 +746,10 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
String pattern = "(?<=\\/)\\d{11}";
Pattern compile = Pattern.compile(pattern);
Matcher matcher = compile.matcher(noSpace);
if(matcher.find()){
if (matcher.find()) {
// 找到匹配手机号
return matcher.group(1);
}else {
} else {
return null;
}
}
@ -745,6 +757,7 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
/**
* 分页查询订单
*
* @param accessToken 访问令牌
* @param createTimeStart 创建时间起始
* @param createTimeEnd 创建时间结束
@ -798,14 +811,15 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
/**
* 批量解密接口
*
* @param cipherInfos 待解密数据 一次性最多50条
* @return
*/
private List<DecryptInfosItem> batchDecrypt(List<CipherInfosItem> cipherInfos){
private List<DecryptInfosItem> batchDecrypt(List<CipherInfosItem> cipherInfos) {
GlobalConfig.initAppKey(SYNC_APP_KEY);
GlobalConfig.initAppSecret(SYNC_APP_SECRET);
//入参为code
AccessToken accessToken= AccessTokenBuilder.build(SYNC_SHOP_ID);
AccessToken accessToken = AccessTokenBuilder.build(SYNC_SHOP_ID);
OrderBatchDecryptRequest request = new OrderBatchDecryptRequest();
OrderBatchDecryptParam param = request.getParam();
param.setCipherInfos(cipherInfos);
@ -820,19 +834,20 @@ public class DouDianOrderCatchServiceImpl implements OrderCatchService {
GlobalConfig.initAppKey(SYNC_APP_KEY);
GlobalConfig.initAppSecret(SYNC_APP_SECRET);
//入参为code
AccessToken accessToken= AccessTokenBuilder.build(SYNC_SHOP_ID);
AccessToken accessToken = AccessTokenBuilder.build(SYNC_SHOP_ID);
OrderOrderDetailRequest request = new OrderOrderDetailRequest();
OrderOrderDetailParam param = request.getParam();
param.setShopOrderId(shopOrderId);
OrderOrderDetailResponse response = request.execute(accessToken);
return response.getData();
}
public void refreshToken() {
//设置appKey和appSecret全局设置一次
GlobalConfig.initAppKey("7381306825771091495");
GlobalConfig.initAppSecret("09c06553-b77c-4712-aed9-84cbfe16ca13");
//入参为code
AccessToken accessToken= AccessTokenBuilder.build(20811777L);
AccessToken accessToken = AccessTokenBuilder.build(20811777L);
String refreshToken = accessToken.getRefreshToken();//16dde1a3-2d6f-4946-aef2-afbd29d2eb92是code
TokenRefreshRequest request = new TokenRefreshRequest();
TokenRefreshParam param = request.getParam();