|
@@ -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);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|