gongfuzhu 1 سال پیش
والد
کامیت
dd6f6306f3

+ 2 - 2
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/job/Ypp/YppOrderJob.java

@@ -5,7 +5,7 @@ import com.github.microservice.auth.security.helper.AuthHelper;
 import com.zhongshu.payment.client.service.v2.OrderService2;
 import com.zswl.cloud.shop.client.service.ShopService;
 import com.zswl.cloud.springBtach.server.core.helper.RedisHelper;
-import com.zswl.cloud.springBtach.server.core.job.standard.StandardOrderJob;
+import com.zswl.cloud.springBtach.server.core.job.standard.StandarOrderJob;
 import lombok.Data;
 import lombok.experimental.Delegate;
 import lombok.extern.log4j.Log4j2;
@@ -38,7 +38,7 @@ public class YppOrderJob {
 
     @Autowired
     @Delegate
-    StandardOrderJob standardOrderJob;
+    StandarOrderJob standardOrderJob;
 
     public Step chk() {
         return getStepBuilderFactory().get("chk").tasklet((it, ii) -> {

+ 28 - 18
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/job/standard/StandardDeliveryJob.java → SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/job/standard/StandarDeliveryJob.java

@@ -1,8 +1,10 @@
 package com.zswl.cloud.springBtach.server.core.job.standard;
 
 import com.github.microservice.auth.client.content.ResultContent;
-import com.zhongshu.payment.client.model.order.v2.CreateOrder2Model;
+import com.zhongshu.payment.client.model.order.v2.GoodsResultModel;
 import com.zhongshu.payment.client.model.order.v2.OrderResult2Model;
+import com.zhongshu.payment.client.model.order.v2.OrderStremModel;
+import com.zhongshu.payment.client.service.v2.OrderService2;
 import com.zswl.cloud.shop.client.dto.life.OperateStockDto;
 import com.zswl.cloud.shop.client.ret.ResultState;
 import com.zswl.cloud.shop.client.service.GoodsService;
@@ -19,15 +21,19 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 @Data
-@Configuration
 @Log4j2
-public class StandardDeliveryJob {
+@Configuration
+public class StandarDeliveryJob {
+
     ThreadLocal<ResultContent> resultContent = new ThreadLocal<>();
 
-    ThreadLocal<OrderResult2Model> parameter = new ThreadLocal<>();
+    ThreadLocal<GoodsResultModel> parameter = new ThreadLocal<>();
+
     ThreadLocal<Boolean> stop = new ThreadLocal<>();
+
     @Resource
     private StepBuilderFactory stepBuilderFactory;
 
@@ -37,36 +43,40 @@ public class StandardDeliveryJob {
     @Autowired
     GoodsService goodsService;
 
+    @Autowired
+    OrderService2 orderService2;
 
 
     public Step standardDeliveryStep() {
         return stepBuilderFactory.get("standardDeliveryStep")
                 .tasklet((contribution, chunkContext) -> {
-
-                    // todo 处理发货
-                    OrderResult2Model goods = parameter.get();
+                    GoodsResultModel goodsResultModel = parameter.get();
                     OperateStockDto operateStockDto = new OperateStockDto();
-//                    operateStockDto.setUserId(goods());
-                    operateStockDto.setOperate(3);// 暂用库存
-//                    operateStockDto.setShopId(goods.getShopId());
-//                    operateStockDto.setGoodsId(createOrder2Model.getGoodsList().get(0).getGoodsId());
-                    // 暂用库存
-                    com.zswl.cloud.shop.client.ret.ResultContent resultContent1 = goodsService.operateStock(operateStockDto);
-
-                    if (resultContent1.getState().equals(ResultState.Success)){
-                        getResultContent().set(ResultContent.buildContent(resultContent1.getContent()));
+                    operateStockDto.setUserId(goodsResultModel.getUserId());
+                    operateStockDto.setOperate(3);// 使用库存
+                    operateStockDto.setShopId(goodsResultModel.getShopId());
+                    operateStockDto.setGoodsId(goodsResultModel.getGoodsId());
+                    com.zswl.cloud.shop.client.ret.ResultContent operateStock = goodsService.operateStock(operateStockDto);
+                    if (!operateStock.getState().equals(ResultState.Success)) {
+                        resultContent.set(ResultContent.build(com.github.microservice.auth.client.content.ResultState.Fail));
+                        return RepeatStatus.FINISHED;
                     }
+
+                    resultContent.set(ResultContent.build(com.github.microservice.auth.client.content.ResultState.Success));
                     return RepeatStatus.FINISHED;
+
                 })
                 .build();
     }
 
     @Bean
-    public Job deliveryJob() {
+    public Job standardDeliveryJob() {
         return getJobBuilderFactory()
-                .get("deliveryJob")
+                .get("standardDeliveryJob")
                 .start(standardDeliveryStep())
                 .incrementer(new RunIdIncrementer())
                 .build();
     }
+
 }
+

+ 1 - 1
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/job/standard/StandardOrderJob.java → SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/job/standard/StandarOrderJob.java

@@ -35,7 +35,7 @@ import java.util.ArrayList;
 @Data
 @Configuration
 @Log4j2
-public class StandardOrderJob {
+public class StandarOrderJob {
 
     ThreadLocal<ResultContent> resultContent = new ThreadLocal<>();
 

+ 2 - 2
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/service/OrderServiceImp.java

@@ -19,7 +19,7 @@ import com.zswl.cloud.shop.client.vo.life.ShopDetailVo;
 import com.zswl.cloud.springBatch.client.service.OrderService;
 import com.zswl.cloud.springBtach.server.core.helper.RedisHelper;
 import com.zswl.cloud.springBtach.server.core.job.standard.StandarVerificationJob;
-import com.zswl.cloud.springBtach.server.core.job.standard.StandardOrderJob;
+import com.zswl.cloud.springBtach.server.core.job.standard.StandarOrderJob;
 import lombok.SneakyThrows;
 import org.springframework.batch.core.Job;
 import org.springframework.batch.core.JobParameters;
@@ -38,7 +38,7 @@ import javax.annotation.Resource;
 public class OrderServiceImp implements OrderService {
 
     @Autowired
-    private StandardOrderJob standardOrderJob;
+    private StandarOrderJob standardOrderJob;
 
     @Autowired
     private StandarVerificationJob standarVerificationJob;

+ 76 - 0
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/stream/OrderStream.java

@@ -0,0 +1,76 @@
+package com.zswl.cloud.springBtach.server.core.stream;
+
+import com.github.microservice.app.stream.StreamConsumer;
+import com.github.microservice.auth.client.content.ResultContent;
+import com.github.microservice.auth.client.content.ResultState;
+import com.zhongshu.payment.client.model.order.v2.GoodsResultModel;
+import com.zhongshu.payment.client.model.order.v2.OrderStremModel;
+import com.zhongshu.payment.client.service.v2.OrderService2;
+import com.zhongshu.payment.client.type.JobFlowMap;
+import com.zhongshu.payment.client.type.JobFlowType;
+import com.zhongshu.payment.client.type.OrderType;
+import com.zswl.cloud.springBtach.server.core.job.standard.StandarDeliveryJob;
+import lombok.SneakyThrows;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.batch.core.Job;
+import org.springframework.batch.core.JobParameters;
+import org.springframework.batch.core.JobParametersBuilder;
+import org.springframework.batch.core.explore.JobExplorer;
+import org.springframework.batch.core.launch.JobLauncher;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.stereotype.Component;
+import org.springframework.util.Assert;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Log4j2
+@Component("orderStreamConsumer")
+public class OrderStream extends StreamConsumer<OrderStremModel> {
+
+    @Autowired
+    OrderService2 orderService2;
+
+    @Autowired
+    StandarDeliveryJob standarDeliveryJob;
+
+    @Autowired
+    ApplicationContext applicationContext;
+
+    @Resource
+    private JobExplorer jobExplorer;
+
+    @Resource
+    private JobLauncher jobLauncher;
+
+    @SneakyThrows
+    @Override
+    public void accept(OrderStremModel orderStremModel) {
+        ResultContent<List<GoodsResultModel>> listResultContent = orderService2.goodsDetail(orderStremModel.getOrderNo());
+
+        for (GoodsResultModel goodsResultModel : listResultContent.getContent()) {
+
+            if (orderStremModel.getOrderType().equals(OrderType.HAVE_PAID)) {
+                ThreadLocal<GoodsResultModel> parameter = standarDeliveryJob.getParameter();
+                parameter.set(goodsResultModel);
+                JobFlowMap jobFlowMap = goodsResultModel.getJobFlowMap();
+                Job job = (Job) applicationContext.getBean(jobFlowMap.getJobMapping().get(JobFlowType.Delivery));
+                JobParameters parameters = new JobParametersBuilder(jobExplorer)
+                        .getNextJobParameters(job)
+                        .toJobParameters();
+                jobLauncher.run(job, parameters).getExitStatus();
+                ThreadLocal<ResultContent> resultContent = standarDeliveryJob.getResultContent();
+                Assert.isTrue(resultContent.get().getState().equals(ResultState.Success), "发货失败");
+
+                orderService2.delivery(goodsResultModel.getId());
+
+
+            }
+
+
+        }
+
+
+    }
+}

+ 5 - 1
SpringBatchServiceServer/src/main/resources/application.yml

@@ -24,11 +24,15 @@ spring:
           brokers: ${Kafka.brokers}
           replication-factor: 1
       function:
-        definition: userLogStreamConsumer
+        definition: userLogStreamConsumer;orderStreamConsumer
       bindings:
         userLogStreamConsumer-in-0:
           destination: UserLogStream
           group: ${project.artifactId}
+        orderStreamConsumer-in-0:
+          destination: OrderStream
+          group: ${project.artifactId}
+
     bus:
       enabled: true
   #配置zipkin链路追踪客户端