gongfuzhu 1 год назад
Родитель
Сommit
6f8a94bc20

+ 0 - 15
SpringBatchServiceClient/src/main/java/com/zswl/cloud/springBatch/client/model/CreateOrderModel.java

@@ -1,15 +0,0 @@
-package com.zswl.cloud.springBatch.client.model;
-
-import com.zhongshu.payment.client.model.order.v2.CreateOrder2Model;
-import com.zswl.cloud.springBatch.client.type.JobFlowMap;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class CreateOrderModel extends CreateOrder2Model {
-
-    private JobFlowMap jobFlowMap;
-}

+ 7 - 2
SpringBatchServiceClient/src/main/java/com/zswl/cloud/springBatch/client/service/OrderService.java

@@ -1,11 +1,13 @@
 package com.zswl.cloud.springBatch.client.service;
 
 import com.github.microservice.auth.client.content.ResultContent;
+import com.github.microservice.auth.security.annotations.ResourceAuth;
+import com.github.microservice.auth.security.type.AuthType;
 import com.zhongshu.payment.client.model.order.v2.CreateOrder2Model;
-import com.zswl.cloud.springBatch.client.model.CreateOrderModel;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -14,7 +16,10 @@ import org.springframework.web.bind.annotation.RequestMethod;
 public interface OrderService {
     @ApiOperation("创建订单")
     @RequestMapping(value = "creat", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
-    ResultContent creat(@RequestBody CreateOrderModel createOrderModel);
+    ResultContent creat(@RequestBody CreateOrder2Model createOrder2Model);
+
+
+
 
 
 }

+ 20 - 0
SpringBatchServiceClient/src/main/java/com/zswl/cloud/springBatch/client/service/PaymentService.java

@@ -0,0 +1,20 @@
+package com.zswl.cloud.springBatch.client.service;
+
+import com.github.microservice.auth.client.content.ResultContent;
+import com.zhongshu.payment.client.model.payment.CreateResponseModel;
+import com.zhongshu.payment.client.model.payment.zswl.CreatePaymentModel2;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+@FeignClient(name = "springbatchservice/manager/pay")
+public interface PaymentService {
+
+
+
+    @ApiOperation("创建订单")
+    @RequestMapping(value = "creatPayOrder", method = RequestMethod.POST, consumes = {MediaType.ALL_VALUE})
+    ResultContent<CreateResponseModel> creatPayOrder(CreatePaymentModel2 createPaymentModel2);
+}

+ 0 - 25
SpringBatchServiceClient/src/main/java/com/zswl/cloud/springBatch/client/type/JobFlowMap.java

@@ -1,25 +0,0 @@
-package com.zswl.cloud.springBatch.client.type;
-
-import lombok.Data;
-
-import java.util.Map;
-
-public enum JobFlowMap {
-
-    P81(Map.of(JobFlowType.CrateOrder, "standardCreatOrder",JobFlowType.CratePlayOrder,"CratePlayOrder_81")),
-
-    ;
-
-    JobFlowMap(Map<JobFlowType, String> jobMapping) {
-        this.jobMapping = jobMapping;
-    }
-
-    private Map<JobFlowType, String> jobMapping;
-
-    public Map<JobFlowType, String> getJobMapping(){
-
-        return jobMapping;
-    }
-
-
-}

+ 0 - 7
SpringBatchServiceClient/src/main/java/com/zswl/cloud/springBatch/client/type/JobFlowType.java

@@ -1,7 +0,0 @@
-package com.zswl.cloud.springBatch.client.type;
-
-public enum JobFlowType {
-    CrateOrder,
-    CratePlayOrder;
-
-}

+ 118 - 0
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/controller/OrderController.java

@@ -0,0 +1,118 @@
+package com.zswl.cloud.springBtach.server.core.controller;
+
+import com.github.microservice.auth.client.constant.AuthConstant;
+import com.github.microservice.auth.client.content.ResultContent;
+import com.github.microservice.auth.security.annotations.ResourceAuth;
+import com.github.microservice.auth.security.helper.AuthHelper;
+import com.github.microservice.auth.security.type.AuthType;
+import com.zhongshu.payment.client.model.Pages;
+import com.zhongshu.payment.client.model.order.AdminSeachOrderModel;
+import com.zhongshu.payment.client.model.order.OrderResultModel;
+import com.zhongshu.payment.client.model.order.ScanModel;
+import com.zhongshu.payment.client.model.order.UserSeachOrderModel;
+import com.zhongshu.payment.client.model.order.v2.OrderResult2Model;
+import com.zhongshu.payment.client.model.order.v2.UserSeachOrder2Model;
+import com.zhongshu.payment.client.model.payment.CreateResponseModel;
+import com.zhongshu.payment.client.service.v2.OrderService2;
+import com.zswl.cloud.springBtach.server.core.service.OrderServiceImp;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.http.MediaType;
+import org.springframework.util.Assert;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+@Log4j2
+@RestController
+@RequestMapping("order")
+public class OrderController {
+
+
+    @Autowired
+    AuthHelper authHelper;
+
+    @Autowired
+    OrderServiceImp orderServiceImp;
+
+
+    @ApiOperation("生成二维码")
+    @ResourceAuth(value = AuthConstant.User, type = AuthType.User)
+    @RequestMapping(value = "qrCode/{id}", method = RequestMethod.GET, consumes = {MediaType.ALL_VALUE})
+    public ResultContent<String> qrCode(@PathVariable("id") String id) {
+        Assert.hasText(id, "id不能为空");
+        return orderServiceImp.qrCode(id);
+    }
+
+
+    @ApiOperation("商家验券")
+    @ResourceAuth(value = "checkCoupon", type = AuthType.Enterprise)
+    @ResourceAuth(value = "checkCoupon", type = AuthType.Project)
+    @RequestMapping(value = "shop/verification/{token}", method = RequestMethod.GET, consumes = {MediaType.ALL_VALUE})
+    public ResultContent verification(@PathVariable("token") String token) {
+
+        Assert.hasText(token, "token不能为空");
+        return orderServiceImp.verification(token);
+    }
+
+
+    @ApiOperation("app订单查询")
+    @RequestMapping(value = "user/search", method = RequestMethod.POST)
+    @ResourceAuth(value = AuthConstant.User, type = AuthType.User)
+    public ResultContent<Page<OrderResultModel>> userSearch(@RequestBody UserSeachOrder2Model userSeachOrderModel) {
+
+        return orderServiceImp.userSearch(userSeachOrderModel, page(userSeachOrderModel));
+    }
+
+    @ApiOperation("app订单详情")
+    @RequestMapping(value = "user/userDetails/{id}", method = RequestMethod.GET)
+    @ResourceAuth(value = AuthConstant.User, type = AuthType.User)
+    public ResultContent<OrderResultModel> userDetails(@PathVariable("id") String id) {
+
+        return orderServiceImp.userDetails(id);
+    }
+
+
+
+    /*                                                 商家接口                                                 */
+
+
+    @ApiOperation("商家_订单查询列表")
+    @RequestMapping(value = "shop/search", method = RequestMethod.POST)
+    @ResourceAuth(value = "admin", type = AuthType.Enterprise)
+    @ResourceAuth(value = "admin", type = AuthType.Project)
+    public ResultContent<Page<OrderResult2Model>> shopSearch(@RequestBody AdminSeachOrderModel seachOrderModel) {
+        return orderServiceImp.shopSearch(seachOrderModel, page(seachOrderModel));
+    }
+
+
+    // 平台接口
+
+    @ApiOperation("平台_订单查询")
+    @RequestMapping(value = "platform/search", method = RequestMethod.POST)
+    @ResourceAuth(value = AuthConstant.SuperAdmin, type = AuthType.Platform)
+    public ResultContent<Page<OrderResult2Model>> platformSearch(@RequestBody AdminSeachOrderModel seachOrderModel) {
+
+        return orderServiceImp.adminSearch(seachOrderModel, page(seachOrderModel));
+    }
+
+    private Pageable page(Pages page) {
+        try {
+
+            return PageRequest.of(page.getPage(), page.getSize());
+        } catch (Exception e) {
+
+            log.info("PageUtile.page异常:{}", e.getMessage());
+
+        }
+        return PageRequest.of(0, 20);
+
+
+    }
+
+
+}

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

@@ -0,0 +1,56 @@
+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.VerificationModel;
+import com.zhongshu.payment.client.service.v2.OrderService2;
+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 StandarVerificationJob {
+
+    ThreadLocal<ResultContent> resultContent = new ThreadLocal<>();
+
+    ThreadLocal<VerificationModel> parameter = new ThreadLocal<>();
+    @Resource
+    private StepBuilderFactory stepBuilderFactory;
+
+    @Resource
+    private JobBuilderFactory jobBuilderFactory;
+
+    @Autowired
+    OrderService2 orderService2;
+
+
+    public Step standardVerificationStep() {
+        return stepBuilderFactory.get("standardVerificationStep")
+                .tasklet((contribution, chunkContext) -> {
+                    getResultContent().set(orderService2.verification(getParameter().get()));
+                    return RepeatStatus.FINISHED;
+                })
+                .build();
+    }
+
+    @Bean
+    public Job standardVerificationJob() {
+        return getJobBuilderFactory()
+                .get("standardVerificationJob")
+                .start(standardVerificationStep())
+                .incrementer(new RunIdIncrementer())
+                .build();
+    }
+}

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

@@ -1,11 +1,21 @@
 package com.zswl.cloud.springBtach.server.core.service;
 
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONObject;
 import com.github.microservice.auth.client.content.ResultContent;
-import com.zhongshu.payment.client.model.order.v2.CreateOrder2Model;
-import com.zswl.cloud.springBatch.client.model.CreateOrderModel;
+import com.github.microservice.auth.client.content.ResultState;
+import com.github.microservice.auth.security.helper.AuthHelper;
+import com.zhongshu.payment.client.model.order.AdminSeachOrderModel;
+import com.zhongshu.payment.client.model.order.UserSeachOrderModel;
+import com.zhongshu.payment.client.model.order.v2.*;
+import com.zhongshu.payment.client.service.v2.OrderService2;
+import com.zhongshu.payment.client.type.ErrorCode;
+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.springBatch.client.service.OrderService;
-import com.zswl.cloud.springBatch.client.type.JobFlowMap;
-import com.zswl.cloud.springBatch.client.type.JobFlowType;
+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 lombok.SneakyThrows;
 import org.springframework.batch.core.Job;
@@ -13,8 +23,11 @@ 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.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -25,6 +38,9 @@ public class OrderServiceImp implements OrderService {
     @Autowired
     private StandardOrderJob standardOrderJob;
 
+    @Autowired
+    private StandarVerificationJob standarVerificationJob;
+
     @Resource
     private JobLauncher jobLauncher;
 
@@ -35,11 +51,26 @@ public class OrderServiceImp implements OrderService {
     @Autowired
     private ApplicationContext applicationContext;
 
+    @Autowired
+    OrderService2 orderService2;
+
+
+    @Autowired
+    RedisHelper redisHelper;
+
+    @Autowired
+    AuthHelper authHelper;
+
+    private final String redisKey = "use_";
+
 
     @Override
     @SneakyThrows
-    public ResultContent creat(CreateOrderModel createOrderModel) {
-        JobFlowMap jobFlowMap = createOrderModel.getJobFlowMap();
+    public ResultContent creat(CreateOrder2Model createOrderModel) {
+
+        CreateOrder2Model.Goods goods = createOrderModel.getGoodsList().get(0);
+
+        JobFlowMap jobFlowMap = goods.getJobFlowMap();
         String jobName = jobFlowMap.getJobMapping().get(JobFlowType.CrateOrder);
         ThreadLocal<CreateOrder2Model> parameter = standardOrderJob.getParameter();
         parameter.set(createOrderModel);
@@ -50,4 +81,97 @@ public class OrderServiceImp implements OrderService {
         jobLauncher.run(job, parameters).getExitStatus();
         return standardOrderJob.getResultContent().get();
     }
+
+
+    public ResultContent qrCode(String id) {
+        String userId = authHelper.getCurrentUser().getUserId();
+        ResultContent<GoodsResultModel> resultContent = orderService2.goodsDetail(userId, id);
+        if (resultContent.getState().equals(ResultState.Success)) {
+            OrderType goodsState = resultContent.getContent().getGoodsState();
+            switch (goodsState) {
+                case WAIT_USE:
+                    String removeKey = redisKey + id;
+                    redisHelper.removeKeys(removeKey);
+                    long timeMillis = System.currentTimeMillis();
+                    String token = String.valueOf(id) + timeMillis;
+                    String cache = redisKey + token;
+                    redisHelper.cacheValue(cache, id, 60);
+                    return ResultContent.buildContent(token);
+                case USED:
+                    return ResultContent.build(ResultState.Fail, ErrorCode.ORDER_USED.getMess());
+
+            }
+            return ResultContent.build(ResultState.Fail, ErrorCode.ORDER_UNUSABLE.getMess());
+
+        }
+
+        return resultContent;
+    }
+
+    @SneakyThrows
+    public ResultContent verification(String token) {
+        String userId = authHelper.getCurrentUser().getUserId();
+        String enterPriseId = authHelper.getEnterPriseId();
+
+        Object id = redisHelper.getValue(redisKey + token);
+        if (ObjectUtil.isEmpty(id)) {
+            return ResultContent.build(ResultState.Fail, ErrorCode.CQ_TIME_OUTE.getMess());
+        }
+
+        VerificationModel verificationModel = new VerificationModel();
+
+        // todo 构建核销的商家信息
+        JSONObject entries = new JSONObject();
+
+        verificationModel.setVerification(entries);
+        verificationModel.setId((String) id);
+
+        ResultContent<GoodsResultModel> goodsResultModelResultContent = orderService2.qrGoods((String) id);
+        if (!goodsResultModelResultContent.getState().equals(ResultState.Success)) {
+
+            return goodsResultModelResultContent;
+
+        }
+        GoodsResultModel content = goodsResultModelResultContent.getContent();
+
+        JobFlowMap jobFlowMap = content.getJobFlowMap();
+        String jobName = jobFlowMap.getJobMapping().get(JobFlowType.CrateOrder);
+        ThreadLocal<VerificationModel> parameter = standarVerificationJob.getParameter();
+        parameter.set(verificationModel);
+        Job job = (Job) applicationContext.getBean(jobName);
+        JobParameters parameters = new JobParametersBuilder(jobExplorer)
+                .getNextJobParameters(job)
+                .toJobParameters();
+        jobLauncher.run(job, parameters).getExitStatus();
+        return standardOrderJob.getResultContent().get();
+
+
+    }
+
+
+    public ResultContent userSearch(UserSeachOrderModel userSeachOrderModel, Pageable pageable) {
+        String userId = authHelper.getCurrentUser().getUserId();
+        UserSeachOrder2Model userSeachOrder2Model = new UserSeachOrder2Model();
+        BeanUtils.copyProperties(userSeachOrderModel, userSeachOrder2Model);
+        userSeachOrder2Model.setUserId(userId);
+
+        return orderService2.userSearch(userSeachOrder2Model, pageable);
+    }
+
+    public ResultContent userDetails(String id) {
+        String userId = authHelper.getCurrentUser().getUserId();
+
+        return orderService2.goodsDetail(userId, id);
+    }
+
+    public ResultContent<Page<OrderResult2Model>> shopSearch(AdminSeachOrderModel adminSeachOrderModel, Pageable pageable) {
+        adminSeachOrderModel.setShopId(authHelper.getEnterPriseId());
+        return orderService2.adminSearch(adminSeachOrderModel, pageable);
+    }
+
+    public ResultContent<Page<OrderResult2Model>> adminSearch(AdminSeachOrderModel adminSeachOrderModel, Pageable pageable) {
+        return orderService2.adminSearch(adminSeachOrderModel, pageable);
+    }
+
+
 }

+ 16 - 0
SpringBatchServiceServer/src/test/java/com/zswl/cloud/springBtach/server/boot/ServerApplicationTests.java

@@ -8,11 +8,13 @@ import com.zhongshu.payment.client.service.OrderService;
 import com.zswl.cloud.springBtach.server.core.api.ypp.YppApi;
 import com.zswl.cloud.springBtach.server.core.controller.TestSpringBatch;
 import com.zswl.cloud.springBtach.server.core.service.OrderServiceImp;
+import lombok.extern.log4j.Log4j2;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
 @SpringBootTest
+@Log4j2
 public class ServerApplicationTests {
     @Autowired
     YppApi piaoPiaoApi;
@@ -26,8 +28,10 @@ public class ServerApplicationTests {
     @Autowired
     OrderService orderService1;
 
+    @Autowired
     EnterpriseService enterpriseService;
 
+
     @Test
     public void test1() {
 
@@ -48,5 +52,17 @@ public class ServerApplicationTests {
         ResultContent<Integer> number = orderService1.number("1111", "111");
         System.out.println(number.getContent());
 
+
+    }
+
+    @Test
+    public void test3(){
+
+//        CreateOrderModel createOrderModel = new CreateOrderModel();
+//        createOrderModel.setJobFlowMap(JobFlowMap.P81);
+//        ResultContent creat = orderService.creat(createOrderModel);
+//
+//        log.info("执行结果:{}",JSONUtil.toJsonStr(creat));
+
     }
 }