|
@@ -9,18 +9,27 @@ import com.zswl.dataservicestarter.domain.DataServicePaymentInfo;
|
|
|
import com.zswl.dataservicestarter.model.DataServiceGoodsModel;
|
|
|
import com.zswl.dataservicestarter.model.DataServiceOrderInfoModel;
|
|
|
import com.zswl.dataservicestarter.model.DataServicePaymentInfoModel;
|
|
|
+import com.zswl.dataservicestarter.model.SyncDataModel;
|
|
|
import com.zswl.dataservicestarter.type.DataServiceOrderType;
|
|
|
+import com.zswl.dataservicestarter.type.PlatFormNewDataEvent;
|
|
|
+import com.zswl.dataservicestarter.type.ShopNewDataEvent;
|
|
|
import com.zswl.dataservicestarter.utils.CommonUtil;
|
|
|
import com.zswl.dataservicestarter.utils.result.ResultContent;
|
|
|
+import lombok.SneakyThrows;
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.context.ApplicationContext;
|
|
|
+import org.springframework.context.event.EventListener;
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 订单信息 管理
|
|
@@ -40,6 +49,9 @@ public class DataServiceOrderInfoService {
|
|
|
@Autowired
|
|
|
DataServicePaymentInfoDao paymentInfoDao;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ ApplicationContext applicationContext;
|
|
|
+
|
|
|
/**
|
|
|
* 从平台同步订单信息到 数据服务
|
|
|
*
|
|
@@ -119,9 +131,69 @@ public class DataServiceOrderInfoService {
|
|
|
|
|
|
orderInfoDao.save(orderInfo);
|
|
|
|
|
|
+ // 发送需要商铺同步数据的事件
|
|
|
+ this.sendShopEventData();
|
|
|
return ResultContent.buildSuccess(hasCode);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 得到未同步到平台的数据 同步成功后调用 markSynced2Platform
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public ResultContent<SyncDataModel> getTop100NotSyncPlatformDatas() {
|
|
|
+ SyncDataModel model = new SyncDataModel();
|
|
|
+ // 查询来源是商铺的数据 未同步
|
|
|
+ List<DataServiceOrderInfo> orderInfos = orderInfoDao.findTop100ByOrderTypeAndIsSync2ShopOrderByCreateTimeAsc(DataServiceOrderType.Shop, Boolean.FALSE);
|
|
|
+ long totalElements = orderInfoDao.countByOrderTypeAndIsSync2Shop(DataServiceOrderType.Shop, Boolean.FALSE);
|
|
|
+ List<DataServiceOrderInfoModel> list = new ArrayList<>();
|
|
|
+ if (ObjectUtils.isNotEmpty(orderInfos)) {
|
|
|
+ list = orderInfos.stream().map(this::toModel).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ model.setList(list);
|
|
|
+ model.setTotalElements(totalElements);
|
|
|
+ return ResultContent.buildSuccess(model);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询未同步到渠道/商铺的数据 同步后要调用 markSynced2Shop
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public ResultContent<SyncDataModel> getTop100NotSyncShopDatas() {
|
|
|
+ SyncDataModel model = new SyncDataModel();
|
|
|
+ // 查询来源是平台的数据 未同步到商铺
|
|
|
+ List<DataServiceOrderInfo> orderInfos = orderInfoDao.findTop100ByOrderTypeAndIsSync2PlatformOrderByCreateTimeAsc(DataServiceOrderType.Platform, Boolean.FALSE);
|
|
|
+ long totalElements = orderInfoDao.countByOrderTypeAndIsSync2Platform(DataServiceOrderType.Platform, Boolean.FALSE);
|
|
|
+ List<DataServiceOrderInfoModel> list = new ArrayList<>();
|
|
|
+ if (ObjectUtils.isNotEmpty(orderInfos)) {
|
|
|
+ list = orderInfos.stream().map(this::toModel).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ model.setList(list);
|
|
|
+ model.setTotalElements(totalElements);
|
|
|
+ return ResultContent.buildSuccess(model);
|
|
|
+ }
|
|
|
+
|
|
|
+ public ResultContent sendPlatformEventData() {
|
|
|
+ PlatFormNewDataEvent testEvent = new PlatFormNewDataEvent(this);
|
|
|
+ applicationContext.publishEvent(testEvent);
|
|
|
+ return ResultContent.buildSuccess();
|
|
|
+ }
|
|
|
+
|
|
|
+ public ResultContent sendShopEventData() {
|
|
|
+ ShopNewDataEvent testEvent = new ShopNewDataEvent(this);
|
|
|
+ applicationContext.publishEvent(testEvent);
|
|
|
+ return ResultContent.buildSuccess();
|
|
|
+ }
|
|
|
+
|
|
|
+ @EventListener(classes = PlatFormNewDataEvent.class)
|
|
|
+ @Async
|
|
|
+ @SneakyThrows
|
|
|
+ public void test(PlatFormNewDataEvent testEvent) {
|
|
|
+ TimeUnit.SECONDS.sleep(10);
|
|
|
+ System.out.println("消息来了");
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 根据订单号查询订单信息
|
|
|
*
|
|
@@ -137,6 +209,7 @@ public class DataServiceOrderInfoService {
|
|
|
return ResultContent.buildSuccess(orderInfo);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 更加HashCode验证支付信息是否存在
|
|
|
*
|
|
@@ -152,14 +225,71 @@ public class DataServiceOrderInfoService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 编辑信息是否同步到平台
|
|
|
+ * 编辑已同步到 商铺
|
|
|
*
|
|
|
- * @param dataId
|
|
|
+ * @param orderNos
|
|
|
* @return
|
|
|
*/
|
|
|
- public ResultContent markSyncPlatform(String dataId) {
|
|
|
- int a = 100;
|
|
|
- return ResultContent.buildSuccess();
|
|
|
+ public ResultContent<List<String>> markSynced2Shop(List<String> orderNos) {
|
|
|
+ List<String> syncedOrderNos = new ArrayList<>();
|
|
|
+ if (ObjectUtils.isNotEmpty(orderNos)) {
|
|
|
+ List<DataServiceOrderInfo> saveList = new ArrayList<>();
|
|
|
+ List<DataServiceOrderInfo> list = orderInfoDao.findByOrderNoIn(orderNos);
|
|
|
+ for (DataServiceOrderInfo orderInfo : list) {
|
|
|
+ // 未同步的
|
|
|
+ Boolean isSync2Shop = orderInfo.getIsSync2Shop();
|
|
|
+ if (isSync2Shop == null || !isSync2Shop) {
|
|
|
+ orderInfo.setIsSync2Shop(Boolean.TRUE);
|
|
|
+ orderInfo.setSyncTime(System.currentTimeMillis());
|
|
|
+ saveList.add(orderInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotEmpty(saveList)) {
|
|
|
+ syncedOrderNos = saveList.stream().map(it -> it.getOrderNo()).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return ResultContent.buildSuccess(syncedOrderNos);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 编辑已同步到 商铺
|
|
|
+ *
|
|
|
+ * @param orderNos
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public ResultContent<List<String>> markSynced2Platform(List<String> orderNos) {
|
|
|
+ List<String> syncedOrderNos = new ArrayList<>();
|
|
|
+ if (ObjectUtils.isNotEmpty(orderNos)) {
|
|
|
+ List<DataServiceOrderInfo> saveList = new ArrayList<>();
|
|
|
+ List<DataServiceOrderInfo> list = orderInfoDao.findByOrderNoIn(orderNos);
|
|
|
+ for (DataServiceOrderInfo orderInfo : list) {
|
|
|
+ // 未同步的
|
|
|
+ Boolean isSync2Platform = orderInfo.getIsSync2Platform();
|
|
|
+ if (isSync2Platform == null || !isSync2Platform) {
|
|
|
+ orderInfo.setIsSync2Platform(Boolean.TRUE);
|
|
|
+ orderInfo.setSyncTime(System.currentTimeMillis());
|
|
|
+ saveList.add(orderInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotEmpty(saveList)) {
|
|
|
+ syncedOrderNos = saveList.stream().map(it -> it.getOrderNo()).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return ResultContent.buildSuccess(syncedOrderNos);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 订单信息 转Model
|
|
|
+ *
|
|
|
+ * @param orderInfo
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public DataServiceOrderInfoModel toModel(DataServiceOrderInfo orderInfo) {
|
|
|
+ DataServiceOrderInfoModel model = new DataServiceOrderInfoModel();
|
|
|
+ if (ObjectUtils.isNotEmpty(orderInfo)) {
|
|
|
+ com.zswl.dataservicestarter.utils.BeanUtils.copyProperties(orderInfo, model);
|
|
|
+ }
|
|
|
+ return model;
|
|
|
}
|
|
|
|
|
|
}
|