gongfuzhu 1 gadu atpakaļ
vecāks
revīzija
5a39d8c4fd

+ 43 - 0
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/job/standard/StandarPayJob.java

@@ -1,12 +1,55 @@
 package com.zswl.cloud.springBtach.server.core.job.standard;
 
+import com.github.microservice.auth.client.content.ResultContent;
+import com.zhongshu.payment.client.model.payment.zswl.CreatePayment2Model;
+import com.zhongshu.payment.client.service.v2.PaymentService2;
 import lombok.Data;
 import lombok.extern.log4j.Log4j2;
+import org.springframework.batch.core.Job;
+import org.springframework.batch.core.Step;
+import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
+import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
+import org.springframework.batch.core.launch.support.RunIdIncrementer;
+import org.springframework.batch.repeat.RepeatStatus;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
+import javax.annotation.Resource;
+
 @Data
 @Configuration
 @Log4j2
 public class StandarPayJob {
 
+    ThreadLocal<ResultContent> resultContent = new ThreadLocal<>();
+    ThreadLocal<CreatePayment2Model> parameter = new ThreadLocal<>();
+    @Resource
+    private JobBuilderFactory jobBuilderFactory;
+    @Resource
+    private StepBuilderFactory stepBuilderFactory;
+
+    @Autowired
+    PaymentService2 paymentService2;
+
+
+    public Step standardPaymentStep() {
+        return stepBuilderFactory.get("standardPaymentStep")
+                .tasklet((contribution, chunkContext) -> {
+                    resultContent.set(paymentService2.creatPayOrder(parameter.get()));
+                    return RepeatStatus.FINISHED;
+                })
+                .build();
+    }
+
+    @Bean
+    public Job standarPay() {
+        return getJobBuilderFactory()
+                .get("standarPayJob")
+                .start(standardPaymentStep())
+                .incrementer(new RunIdIncrementer())
+                .build();
+    }
+
+
 }

+ 40 - 3
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/service/PaymentService.java

@@ -4,6 +4,7 @@ import com.github.microservice.auth.client.content.ResultContent;
 import com.github.microservice.auth.security.helper.AuthHelper;
 import com.zhongshu.payment.client.model.order.AdminSeachOrderModel;
 import com.zhongshu.payment.client.model.order.v2.ApplicantRefundParam2Model;
+import com.zhongshu.payment.client.model.order.v2.GoodsResultModel;
 import com.zhongshu.payment.client.model.order.v2.RefundParam2Model;
 import com.zhongshu.payment.client.model.order.v2.WithdrawRequestModel;
 import com.zhongshu.payment.client.model.payment.QueryResponseModel;
@@ -11,13 +12,25 @@ import com.zhongshu.payment.client.model.payment.zswl.ApplyWithdrawalsModel;
 import com.zhongshu.payment.client.model.payment.zswl.CreatePayment2Model;
 import com.zhongshu.payment.client.model.payment.zswl.CreatePaymentModel;
 import com.zhongshu.payment.client.model.payment.zswl.SyncInformModel;
+import com.zhongshu.payment.client.service.v2.OrderService2;
 import com.zhongshu.payment.client.service.v2.PaymentService2;
 import com.zhongshu.payment.client.type.Channel;
-import com.zswl.cloud.shop.client.service.GoodsService;
+import com.zhongshu.payment.client.type.JobFlowMap;
+import com.zhongshu.payment.client.type.JobFlowType;
+import com.zswl.cloud.springBtach.server.core.job.standard.StandarPayJob;
+import lombok.SneakyThrows;
+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.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+
 @Service
 public class PaymentService {
 
@@ -29,14 +42,38 @@ public class PaymentService {
     AuthHelper authHelper;
 
     @Autowired
-    GoodsService goodsService;
+    OrderService2 orderService2;
+
+    @Autowired
+    private StandarPayJob standarPayJob;
+
+    @Autowired
+    private ApplicationContext applicationContext;
+
+    @Resource
+    private JobExplorer jobExplorer;
 
+    @Resource
+    private JobLauncher jobLauncher;
 
+
+    @SneakyThrows
     public ResultContent creatPayOrder(CreatePaymentModel createPaymentModel) {
         CreatePayment2Model createPayment2Model = new CreatePayment2Model();
         BeanUtils.copyProperties(createPaymentModel, createPayment2Model);
         createPayment2Model.setAuthUserId(authHelper.getCurrentUser().getUserId());
-        return paymentService2.creatPayOrder(createPayment2Model);
+
+        ResultContent<GoodsResultModel> goodsResultModelResultContent = orderService2.orderInfo(createPaymentModel.getOrderNo());
+        JobFlowMap jobFlowMap = goodsResultModelResultContent.getContent().getJobFlowMap();
+        String jobName = jobFlowMap.getJobMapping().get(JobFlowType.CratePlayOrder);
+        ThreadLocal<CreatePayment2Model> parameter = standarPayJob.getParameter();
+        parameter.set(createPayment2Model);
+        Job job = (Job) applicationContext.getBean(jobName);
+        JobParameters parameters = new JobParametersBuilder(jobExplorer)
+                .getNextJobParameters(job)
+                .addLong("time", System.currentTimeMillis()).toJobParameters();
+        jobLauncher.run(job, parameters).getExitStatus();
+        return standarPayJob.getResultContent().get();
     }
 
     public ResultContent query(String orderNo) {

+ 1 - 6
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/service/impl/DfyTicketServiceImpl.java

@@ -76,7 +76,7 @@ public class DfyTicketServiceImpl implements DfyTicketService {
         List<DetailResponse.PriceCalendar> priceCalendar = detailResponse.getData().getPriceCalendar();
         List<DetailResponse.PriceCalendar> collect = priceCalendar.stream().filter(it -> it.getDepartDate().equals(createOrderNewRequest.getStartTime())).collect(Collectors.toList());
         if (collect.isEmpty()) {
-            return ResultContent.build(ResultState.Fail,"未找到对应的价格日历!");
+            return ResultContent.build(ResultState.Fail, "未找到对应的价格日历!");
         }
         BigDecimal salePrice = collect.get(0).getSalePrice();
         BigDecimal payAmount = salePrice.subtract(BigDecimal.valueOf(createOrderNewRequest.getBookNumber()));
@@ -107,9 +107,6 @@ public class DfyTicketServiceImpl implements DfyTicketService {
         createOrder2Model.setAccesserUserId(authAccount);
         createOrder2Model.setChannel(createOrder2Model.getChannel());
 
-        // 商品信息
-//        ArrayList<CreateOrder2Model.Goods> goodsArrayList = new ArrayList<>();
-//        for (Integer i = 0; i < createOrderNewRequest.getBookNumber(); i++) {
 
         CreateOrder2Model.Goods goods = new CreateOrder2Model.Goods();
         goods.setGoodsId(String.valueOf(createOrderNewRequest.getProductId()));
@@ -134,8 +131,6 @@ public class DfyTicketServiceImpl implements DfyTicketService {
         ownerList.add(buy);
         goods.setTransferRrule(ownerList);
         goods.setExtend(JSONUtil.toJsonStr(createOrderNewResponse.getData()));
-//            goodsArrayList.add(goods);
-//        }
         createOrder2Model.setGoodsList(List.of(goods));
         return orderService2.creat(createOrder2Model);
     }