Prechádzať zdrojové kódy

秋香代驾订单同步

gongfuzhu 10 mesiacov pred
rodič
commit
15a56ab5df

+ 53 - 0
SpringBatchServiceClient/src/main/java/com/zswl/cloud/springBatch/client/model/qiuxiang/OrderDelitResponse.java

@@ -0,0 +1,53 @@
+package com.zswl.cloud.springBatch.client.model.qiuxiang;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class OrderDelitResponse {
+    private String orderId;
+    private int orderStatus;
+    private String uid;
+    private String phone;
+    private String adcode;
+    private String originName;
+    private double originLongitude;
+    private double originLatitude;
+    private String originLocation;
+    private String destinationName;
+    private double destinationLongitude;
+    private double destinationLatitude;
+    private String destinationLocation;
+    private int distance;
+    private double totalPrice;
+    private double payPrice;
+    private String startTime;
+    private String endTime;
+    private String cancelTime;
+    private String cancelReason;
+    private String createTime;
+    private List<PriceItem> priceItems;
+    private String driverId;
+    private String driverName;
+    private String driverPhone;
+    private String driverAvatar;
+    private String driverStatus;
+    private String driverReceivedTime;
+    private String driverArrivedTime;
+    private String driverStartTime;
+    private String driverEndTime;
+    private String driverCancelTime;
+
+    @Data
+    @AllArgsConstructor
+    @NoArgsConstructor
+    public static class PriceItem {
+        private String title;
+        private double value;
+    }
+}

+ 5 - 0
SpringBatchServiceClient/src/main/java/com/zswl/cloud/springBatch/client/model/qiuxiang/OrderRequest.java

@@ -1,13 +1,18 @@
 package com.zswl.cloud.springBatch.client.model.qiuxiang;
 
+import com.zhongshu.payment.client.type.Channel;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import javax.validation.constraints.NotNull;
+
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
 public class OrderRequest {
+    @NotNull
+    private Channel channel;
     private String adcode;
     private String originName;
     private String originLocation;

+ 25 - 0
SpringBatchServiceClient/src/main/java/com/zswl/cloud/springBatch/client/service/QiuXiangService.java

@@ -0,0 +1,25 @@
+package com.zswl.cloud.springBatch.client.service;
+
+import cn.hutool.json.JSONObject;
+import com.github.microservice.auth.client.content.ResultContent;
+import com.zswl.cloud.springBatch.client.model.qiuxiang.OrderDelitResponse;
+import com.zswl.cloud.springBatch.client.model.qiuxiang.OrderRequest;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+@FeignClient(name = "springbatchservice/manager/qiuxiang")
+public interface QiuXiangService {
+
+
+    @ApiOperation("创建订单")
+    @RequestMapping(value = "placeOrder", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
+    ResultContent<JSONObject> placeOrder(@RequestBody OrderRequest orderRequest);
+
+    @ApiOperation("订单详情")
+    @RequestMapping(value = "orderDelit", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
+    ResultContent<OrderDelitResponse> orderDelit(String orderId);
+}

+ 9 - 5
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/controller/QiuXiangController.java

@@ -6,6 +6,7 @@ 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.zswl.cloud.springBatch.client.model.qiuxiang.OrderRequest;
+import com.zswl.cloud.springBatch.client.service.QiuXiangService;
 import com.zswl.cloud.springBtach.server.core.api.qiuxiang.QiuXiangApi;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.log4j.Log4j2;
@@ -23,12 +24,14 @@ public class QiuXiangController {
     @Autowired
     QiuXiangApi qiuXiangApi;
 
+    @Autowired
+    QiuXiangService qiuXiangService;
+
     @ApiOperation("下单")
     @ResourceAuth(value = "user", type = AuthType.User)
     @RequestMapping(value = "addOrder", method = RequestMethod.POST)
     public ResultContent placeOrder(@RequestBody OrderRequest orderRequest) {
-        JSONObject entries = qiuXiangApi.placeOrder(orderRequest);
-        return ResultContent.buildContent(entries);
+        return qiuXiangService.placeOrder(orderRequest);
     }
 
     @ApiOperation("获取订单列表")
@@ -42,10 +45,10 @@ public class QiuXiangController {
 
     @ApiOperation("订单详情")
     @ResourceAuth(value = "user", type = AuthType.User)
-    @RequestMapping(value = "orderDelit", method = RequestMethod.POST, consumes = {MediaType.APPLICATION_JSON_VALUE})
-    public ResultContent orderDelit(@RequestBody Map<String, String> orderRequest) {
+    @RequestMapping(value = "orderDelit/{orderId}", method = RequestMethod.GET)
+    public ResultContent orderDelit(@PathVariable("orderId") String orderId) {
 
-        return ResultContent.buildContent(qiuXiangApi.orderDelit(orderRequest.get("orderId")));
+        return qiuXiangService.orderDelit(orderId);
     }
 
     @ApiOperation("取消订单")
@@ -62,6 +65,7 @@ public class QiuXiangController {
     public ResultContent driverLocation(@RequestBody Map<String, String> orderRequest) {
         return ResultContent.buildContent(qiuXiangApi.driverLocation(orderRequest.get("orderId")));
     }
+
     @ApiOperation("获取司机行驶轨迹")
     @ResourceAuth(value = "user", type = AuthType.User)
     @RequestMapping(value = "driverLocationLog", method = RequestMethod.POST, consumes = {MediaType.APPLICATION_JSON_VALUE})

+ 117 - 0
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/service/impl/QiuXiangServiceImpl.java

@@ -0,0 +1,117 @@
+package com.zswl.cloud.springBtach.server.core.service.impl;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.github.microservice.auth.client.content.ResultContent;
+import com.github.microservice.auth.client.content.ResultState;
+import com.github.microservice.auth.security.helper.AuthHelper;
+import com.zhongshu.payment.client.model.order.v2.CreatOrderResultModel;
+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.UpdateGoodsModel;
+import com.zhongshu.payment.client.service.v2.OrderService2;
+import com.zhongshu.payment.client.type.JobFlowMap;
+import com.zhongshu.payment.client.type.OrderType;
+import com.zhongshu.payment.client.type.TransferOwner;
+import com.zhongshu.payment.client.type.TransferType;
+import com.zswl.cloud.shop.client.service.ShopService;
+import com.zswl.cloud.shop.client.vo.life.AccountDetailVo;
+import com.zswl.cloud.springBatch.client.model.qiuxiang.OrderDelitResponse;
+import com.zswl.cloud.springBatch.client.model.qiuxiang.OrderRequest;
+import com.zswl.cloud.springBatch.client.service.QiuXiangService;
+import com.zswl.cloud.springBtach.server.core.api.qiuxiang.QiuXiangApi;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+
+@Service
+@Log4j2
+public class QiuXiangServiceImpl implements QiuXiangService {
+
+    @Autowired
+    OrderService2 orderService2;
+
+    @Autowired
+    QiuXiangApi qiuXiangApi;
+
+    @Autowired
+    AuthHelper authHelper;
+
+    @Autowired
+    ShopService shopService;
+
+
+    @Override
+    public ResultContent<JSONObject> placeOrder(OrderRequest orderRequest) {
+        JSONObject entries = qiuXiangApi.placeOrder(orderRequest);
+
+
+        String orderId = (String) entries.get("orderId");
+
+        JSONObject orderExtend = qiuXiangApi.orderDelit(orderId);
+        OrderDelitResponse orderDelitResponse = entries.toBean(OrderDelitResponse.class);
+        com.zswl.cloud.shop.client.ret.ResultContent<AccountDetailVo> shopSetting = shopService.shopSetting("秋香");
+        if (!shopSetting.getState().equals(com.zswl.cloud.shop.client.ret.ResultState.Success)) {
+            return ResultContent.build(ResultState.Fail, "秋香信息未配置");
+        }
+        AccountDetailVo content = shopSetting.getContent();
+        CreateOrder2Model createOrder2Model = new CreateOrder2Model();
+        createOrder2Model.setUserId(authHelper.getCurrentUser().getUserId());
+        createOrder2Model.setShopId(content.getAccountId());
+        createOrder2Model.setShopInfo(JSONUtil.parseObj(content));
+        createOrder2Model.setTotalAmount(BigDecimal.ZERO);
+        createOrder2Model.setDiscountAmount(BigDecimal.ZERO);
+        createOrder2Model.setPayAmount(BigDecimal.ZERO);
+        createOrder2Model.setAccesserUserId(content.getAuthAccount());
+        CreateOrder2Model.Goods goods = new CreateOrder2Model.Goods();
+        goods.setGoodsId(authHelper.getUserToken());
+        goods.setJobFlowMap(JobFlowMap.QiuXiang);
+        JSONObject goodsInfo = JSONUtil.parseObj(orderRequest);
+        goodsInfo.set("channelOrderId", orderId);
+        goods.setGoodsInfo(goodsInfo);
+        goods.setExtend(orderExtend.toString());
+        goods.setPayAmount(BigDecimal.ZERO);
+        goods.setTransferType(TransferType.FIXED);
+        CreateOrder2Model.Owner owner = new CreateOrder2Model.Owner();
+        owner.setOwner(TransferOwner.PLATFORM);
+        owner.setValue(BigDecimal.ZERO);
+        goods.setTransferRrule(List.of(owner));
+
+
+        ResultContent<CreatOrderResultModel> creat = orderService2.creat(createOrder2Model);
+        log.info("秋香创建订单结果:{}", creat);
+
+
+        return ResultContent.build(ResultState.Success, entries);
+    }
+
+    @Override
+    public ResultContent<OrderDelitResponse> orderDelit(String orderId) {
+        ResultContent<GoodsResultModel> goodsResultModelResultContent = orderService2.qrGoods(orderId);
+        GoodsResultModel content = goodsResultModelResultContent.getContent();
+        JSONObject goodsInfo = content.getGoodsInfo();
+        String goodsId = goodsInfo.get("channelOrderId").toString();
+
+        JSONObject entries = qiuXiangApi.orderDelit(goodsId);
+        OrderDelitResponse orderDelitResponse = entries.toBean(OrderDelitResponse.class);
+        UpdateGoodsModel updateGoodsModel = new UpdateGoodsModel();
+        updateGoodsModel.setId(orderId);
+        updateGoodsModel.setExtend(JSONUtil.toJsonStr(orderDelitResponse));
+        int orderStatus = orderDelitResponse.getOrderStatus();
+        if (orderStatus == 2) {
+            updateGoodsModel.setGoodsState(OrderType.USED);
+        } else if (orderStatus == -1) {
+            updateGoodsModel.setGoodsState(OrderType.CLOSE);
+        }
+
+
+        orderService2.updateGoods(updateGoodsModel);
+
+
+        return ResultContent.build(ResultState.Success, orderDelitResponse);
+    }
+}