|
|
|
|
@ -19,6 +19,7 @@ import com.zbkj.common.model.product.StoreProductAttrValue; |
|
|
|
|
import com.zbkj.common.model.product.StoreProductReply; |
|
|
|
|
import com.zbkj.common.model.user.User; |
|
|
|
|
import com.zbkj.common.model.user.UserAddress; |
|
|
|
|
import com.zbkj.common.model.wechat.WechatPayInfo; |
|
|
|
|
import com.zbkj.common.model.wechat.video.PayComponentOrder; |
|
|
|
|
import com.zbkj.common.utils.CrmebDateUtil; |
|
|
|
|
import com.zbkj.common.utils.RedisUtil; |
|
|
|
|
@ -27,6 +28,7 @@ import com.zbkj.common.vo.StoreOrderInfoOldVo; |
|
|
|
|
import com.zbkj.service.dao.StoreOrderDao; |
|
|
|
|
import com.zbkj.service.dao.StoreProductAttrValueDao; |
|
|
|
|
import com.zbkj.service.dao.UserAddressDao; |
|
|
|
|
import com.zbkj.service.dao.WechatPayInfoDao; |
|
|
|
|
import com.zbkj.service.pojo.TradeOrderItemCreateReqDTO; |
|
|
|
|
import com.zbkj.service.service.*; |
|
|
|
|
import com.zbkj.service.util.RedisLockUtil; |
|
|
|
|
@ -108,6 +110,8 @@ public class OrderTaskServiceImpl implements OrderTaskService { |
|
|
|
|
@Autowired |
|
|
|
|
private SystemConfigService systemConfigService; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private WechatPayInfoDao wechatPayInfoDao; |
|
|
|
|
/** |
|
|
|
|
* 用户取消订单 |
|
|
|
|
* @author Mr.Zhang |
|
|
|
|
@ -452,42 +456,42 @@ public class OrderTaskServiceImpl implements OrderTaskService { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void autoSync() { |
|
|
|
|
// // 查询未同步的订单;
|
|
|
|
|
// List<StoreOrder> list = storeOrderDao.selectList(new LambdaQueryWrapper<StoreOrder>()
|
|
|
|
|
// .eq(StoreOrder::getIsSystemDel, 0)
|
|
|
|
|
// .eq(StoreOrder::getPaid, 1)
|
|
|
|
|
// .eq(StoreOrder::getIsDel, 0)
|
|
|
|
|
// .eq(StoreOrder::getHasSync, 0)
|
|
|
|
|
// .eq(StoreOrder::getRefundStatus, 0));
|
|
|
|
|
// if (CollUtil.isEmpty(list)){
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// for (StoreOrder order : list) {
|
|
|
|
|
// boolean lock =
|
|
|
|
|
// redisLock.lock(Constants.ORDER_LOCK + order.getOrderId(),5);
|
|
|
|
|
// if (!lock) {
|
|
|
|
|
// logger.error("订单未获取到锁orderNo = " + order.getOrderId());
|
|
|
|
|
// continue;
|
|
|
|
|
// }
|
|
|
|
|
// try {
|
|
|
|
|
// QueryWrapper<MdbPayResultPO> queryWrapper=new QueryWrapper<>();
|
|
|
|
|
// queryWrapper.eq("platform_code",order.getOrderId());
|
|
|
|
|
// MdbPayResultPO mdbPayResultPO=mdbPayResultDao.selectOne(queryWrapper);
|
|
|
|
|
// List<StoreOrderInfo> skuList = storeOrderInfoService.getListByOrderNo(order.getOrderId());
|
|
|
|
|
// List<Integer> skuIds = skuList.stream().map(StoreOrderInfo::getAttrValueId).collect(Collectors.toList());
|
|
|
|
|
// List<StoreProductAttrValue> attrValues = storeProductAttrValueDao.selectList(new LambdaQueryWrapper<StoreProductAttrValue>().in(StoreProductAttrValue::getId, skuIds).eq(StoreProductAttrValue::getIsDel,0));
|
|
|
|
|
// List<TradeOrderItemCreateReqDTO> detailList = new ArrayList<>();
|
|
|
|
|
// BigDecimal hbdkje=BigDecimal.ZERO;
|
|
|
|
|
// BigDecimal hdyhje=BigDecimal.ZERO;
|
|
|
|
|
// BigDecimal jfdkje=BigDecimal.ZERO;
|
|
|
|
|
// if(StringUtils.isNotEmpty(mdbPayResultPO.getRpktRducAmt())){
|
|
|
|
|
// try {
|
|
|
|
|
// hbdkje=BigDecimal.valueOf(Double.parseDouble(mdbPayResultPO.getRpktRducAmt()));
|
|
|
|
|
// }catch (Exception e){
|
|
|
|
|
// logger.info("红包抵扣金额不是数字格式");
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// 查询未同步的订单;
|
|
|
|
|
List<StoreOrder> list = storeOrderDao.selectList(new LambdaQueryWrapper<StoreOrder>() |
|
|
|
|
.eq(StoreOrder::getIsSystemDel, 0) |
|
|
|
|
.eq(StoreOrder::getPaid, 1) |
|
|
|
|
.eq(StoreOrder::getIsDel, 0) |
|
|
|
|
.eq(StoreOrder::getHasSync, 0) |
|
|
|
|
.eq(StoreOrder::getRefundStatus, 0)); |
|
|
|
|
if (CollUtil.isEmpty(list)){ |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for (StoreOrder order : list) { |
|
|
|
|
boolean lock = |
|
|
|
|
redisLock.lock(Constants.ORDER_LOCK + order.getOrderId(),5); |
|
|
|
|
if (!lock) { |
|
|
|
|
logger.error("订单未获取到锁orderNo = " + order.getOrderId()); |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
try { |
|
|
|
|
QueryWrapper<WechatPayInfo> queryWrapper=new QueryWrapper<>(); |
|
|
|
|
queryWrapper.eq("out_trade_no",order.getOutTradeNo()); |
|
|
|
|
WechatPayInfo mdbPayResultPO=wechatPayInfoDao.selectOne(queryWrapper); |
|
|
|
|
List<StoreOrderInfo> skuList = storeOrderInfoService.getListByOrderNo(order.getOrderId()); |
|
|
|
|
List<Integer> skuIds = skuList.stream().map(StoreOrderInfo::getAttrValueId).collect(Collectors.toList()); |
|
|
|
|
List<StoreProductAttrValue> attrValues = storeProductAttrValueDao.selectList(new LambdaQueryWrapper<StoreProductAttrValue>().in(StoreProductAttrValue::getId, skuIds).eq(StoreProductAttrValue::getIsDel,0)); |
|
|
|
|
List<TradeOrderItemCreateReqDTO> detailList = new ArrayList<>(); |
|
|
|
|
BigDecimal hbdkje=BigDecimal.ZERO; |
|
|
|
|
BigDecimal hdyhje=BigDecimal.ZERO; |
|
|
|
|
BigDecimal jfdkje=BigDecimal.ZERO; |
|
|
|
|
if(mdbPayResultPO.getCouponFee()!=null){ |
|
|
|
|
try { |
|
|
|
|
hbdkje=BigDecimal.valueOf(mdbPayResultPO.getCouponFee()*0.01); |
|
|
|
|
}catch (Exception e){ |
|
|
|
|
logger.info("红包抵扣金额不是数字格式"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// if(StringUtils.isNotEmpty(mdbPayResultPO.getActDsctAmt())){
|
|
|
|
|
// try {
|
|
|
|
|
// hdyhje=BigDecimal.valueOf(Double.parseDouble(mdbPayResultPO.getActDsctAmt()));
|
|
|
|
|
@ -502,44 +506,44 @@ public class OrderTaskServiceImpl implements OrderTaskService { |
|
|
|
|
// logger.info("积分抵扣金额不是数字格式");
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// for (StoreProductAttrValue attrValue : attrValues) {
|
|
|
|
|
// TradeOrderItemCreateReqDTO item = new TradeOrderItemCreateReqDTO();
|
|
|
|
|
// item.setSkuNo(attrValue.getBarCode());
|
|
|
|
|
// item.setSkuName(skuList.get(0).getProductName());
|
|
|
|
|
// StoreOrderInfo storeOrderInfo = skuList.stream().filter(o -> o.getAttrValueId().equals(attrValue.getId())).collect(Collectors.toList()).get(0);
|
|
|
|
|
// item.setSellQty(storeOrderInfo.getPayNum());
|
|
|
|
|
// item.setSellPrice(attrValue.getPrice());
|
|
|
|
|
// String productName = trim(skuList.get(0).getProductName());
|
|
|
|
|
// String sku = trim(skuList.get(0).getSku());
|
|
|
|
|
// String note = productName+sku;
|
|
|
|
|
// if (note.length()>40){
|
|
|
|
|
// productName= productName.length()>20?productName.substring(0,20):productName;
|
|
|
|
|
// note= productName+" "+sku;
|
|
|
|
|
// }
|
|
|
|
|
// item.setNote(note);
|
|
|
|
|
// item.setTotalPrice(order.getPayPrice());
|
|
|
|
|
// item.setPayPrice(order.getPayPrice().subtract(hdyhje).subtract(hbdkje).subtract(jfdkje));
|
|
|
|
|
// item.setOrderPrice(order.getPayPrice());
|
|
|
|
|
// item.setOid(order.getOrderId()+"_1");
|
|
|
|
|
// //价格随意全渠道会自动更新
|
|
|
|
|
// item.setCost(BigDecimal.ZERO);
|
|
|
|
|
// item.setBrandType(" ");
|
|
|
|
|
// item.setRebate(BigDecimal.ZERO);
|
|
|
|
|
// item.setPriceNote(" ");
|
|
|
|
|
// detailList.add(item);
|
|
|
|
|
// }
|
|
|
|
|
// UserAddress userAddress = userAddressDao.selectDistinct(order);
|
|
|
|
|
// retryService.createOrder(order, userAddress, detailList);
|
|
|
|
|
// order.setHasSync(1);
|
|
|
|
|
// storeOrderDao.updateById(order);
|
|
|
|
|
// }catch (Exception e){
|
|
|
|
|
// logger.error("订单同步失败:订单号:{},异常信息={}", order.getOrderId(), e);
|
|
|
|
|
// retryService.systemErrNc("订单同步失败:订单号:"+order.getOrderId());
|
|
|
|
|
// }finally {
|
|
|
|
|
// redisLock.unLock(Constants.ORDER_LOCK + order.getOrderId());
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
for (StoreProductAttrValue attrValue : attrValues) { |
|
|
|
|
TradeOrderItemCreateReqDTO item = new TradeOrderItemCreateReqDTO(); |
|
|
|
|
item.setSkuNo(attrValue.getBarCode()); |
|
|
|
|
item.setSkuName(skuList.get(0).getProductName()); |
|
|
|
|
StoreOrderInfo storeOrderInfo = skuList.stream().filter(o -> o.getAttrValueId().equals(attrValue.getId())).collect(Collectors.toList()).get(0); |
|
|
|
|
item.setSellQty(storeOrderInfo.getPayNum()); |
|
|
|
|
item.setSellPrice(attrValue.getPrice()); |
|
|
|
|
String productName = trim(skuList.get(0).getProductName()); |
|
|
|
|
String sku = trim(skuList.get(0).getSku()); |
|
|
|
|
String note = productName+sku; |
|
|
|
|
if (note.length()>40){ |
|
|
|
|
productName= productName.length()>20?productName.substring(0,20):productName; |
|
|
|
|
note= productName+" "+sku; |
|
|
|
|
} |
|
|
|
|
item.setNote(note); |
|
|
|
|
item.setTotalPrice(order.getPayPrice()); |
|
|
|
|
item.setPayPrice(order.getPayPrice().subtract(hdyhje).subtract(hbdkje).subtract(jfdkje)); |
|
|
|
|
item.setOrderPrice(order.getPayPrice()); |
|
|
|
|
item.setOid(order.getOrderId()+"_1"); |
|
|
|
|
//价格随意全渠道会自动更新
|
|
|
|
|
item.setCost(BigDecimal.ZERO); |
|
|
|
|
item.setBrandType(" "); |
|
|
|
|
item.setRebate(BigDecimal.ZERO); |
|
|
|
|
item.setPriceNote(" "); |
|
|
|
|
detailList.add(item); |
|
|
|
|
} |
|
|
|
|
UserAddress userAddress = userAddressDao.selectDistinct(order); |
|
|
|
|
retryService.createOrder(order, userAddress, detailList); |
|
|
|
|
order.setHasSync(1); |
|
|
|
|
storeOrderDao.updateById(order); |
|
|
|
|
}catch (Exception e){ |
|
|
|
|
logger.error("订单同步失败:订单号:{},异常信息={}", order.getOrderId(), e); |
|
|
|
|
retryService.systemErrNc("订单同步失败:订单号:"+order.getOrderId()); |
|
|
|
|
}finally { |
|
|
|
|
redisLock.unLock(Constants.ORDER_LOCK + order.getOrderId()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|