gongfuzhu il y a 1 an
Parent
commit
ed76c3ace9

+ 15 - 0
SpringBatchServiceClient/src/main/java/com/zswl/cloud/springBatch/client/model/dfy/Hotel/request/AddOrderRequest.java

@@ -1,10 +1,13 @@
 package com.zswl.cloud.springBatch.client.model.dfy.Hotel.request;
 
+import com.zhongshu.payment.client.type.Channel;
 import com.zswl.cloud.springBatch.client.model.dfy.DfyBaseData;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
 import java.util.List;
 
 @Data
@@ -12,9 +15,13 @@ import java.util.List;
 @AllArgsConstructor
 public class AddOrderRequest extends DfyBaseData {
 
+    @NotNull
+    private Channel channel;
     private String sourceOrderId; // 分销商订单号
     private String acctId; // 账号Id
+    @NotNull
     private Long hotelId; // 酒店ID
+    @NotNull
     private String ratePlanId; // 价格计划Id
 
     // 0	无要求
@@ -27,16 +34,24 @@ public class AddOrderRequest extends DfyBaseData {
     //16	尽量安排安静房间
     //18	尽量安排相近房间
     private String specialRemarks;
+    @NotNull
     private Integer numberofRooms; // 预定的房间数
     private Integer manNum; // 成人数
     private Integer childNum; // 儿童数
     private List<Integer> childAges; // 儿童年龄
+    @NotNull
     private String checkin; // 入住日期
+    @NotNull
     private String checkout; // 离店日期
     private Integer totalPrice; // 下单总价
     private String contactName; // 分销商业务联系人姓名
     private String contactPhone; // 分销商业务联系人手机号码
     private String contactEmail; // 分销商业务联系人邮箱
+    @NotNull
     private String customerArriveTime; // 客人到店时间
+    @NotNull
+    private String roomPic;
+    @NotNull
+    private String hotelIdPic;
     private List<String> customerInfo; // 入住人信息
 }

+ 1 - 1
SpringBatchServiceClient/src/main/java/com/zswl/cloud/springBatch/client/model/dfy/Hotel/request/OrderDetailRequest.java

@@ -11,5 +11,5 @@ import lombok.NoArgsConstructor;
 public class OrderDetailRequest extends DfyBaseData {
 
     private Integer orderId; // 订单ID
-    private Integer Integer; // 账号Id
+    private String acctId; // 账号Id
 }

+ 1 - 1
SpringBatchServiceClient/src/main/java/com/zswl/cloud/springBatch/client/model/dfy/Hotel/response/RatePlanInfoResponse.java

@@ -21,7 +21,7 @@ public class RatePlanInfoResponse extends DfyResponseBase {
     @AllArgsConstructor
     class Datas {
 
-        private String roomInfo;
+        private List<RoomInfo> roomInfo;
 
     }
 

+ 2 - 1
SpringBatchServiceClient/src/main/java/com/zswl/cloud/springBatch/client/service/DfyHotelService.java

@@ -1,6 +1,7 @@
 package com.zswl.cloud.springBatch.client.service;
 
 import com.github.microservice.auth.client.content.ResultContent;
+import com.zhongshu.payment.client.model.order.v2.CreatOrderResultModel;
 import com.zswl.cloud.springBatch.client.model.dfy.Hotel.request.*;
 import com.zswl.cloud.springBatch.client.model.dfy.Hotel.response.*;
 import io.swagger.annotations.ApiOperation;
@@ -35,7 +36,7 @@ public interface DfyHotelService {
 
     @ApiOperation(" 创建订单接口")
     @RequestMapping(value = "addOrder", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
-    ResultContent<AddOrderResponse> addOrder(@RequestBody AddOrderRequest addOrderRequest);
+    ResultContent<CreatOrderResultModel> addOrder(@RequestBody AddOrderRequest addOrderRequest);
 
     @ApiOperation(" 订单详情接口")
     @RequestMapping(value = "orderDetail", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)

+ 1 - 1
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/api/dfy/DomesticHotelApi.java

@@ -77,7 +77,7 @@ public class DomesticHotelApi {
     }
 
     public OrderDetailResponse orderDetail(OrderDetailRequest orderDetailRequest) {
-
+        orderDetailRequest.setAcctId(acctId);
         String post = post(orderDetailRequest, "/DomesticHotel/query/orderDetail");
         return JSONUtil.toBean(post, OrderDetailResponse.class);
 

+ 4 - 1
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/controller/DfyHotelController.java

@@ -2,6 +2,7 @@ package com.zswl.cloud.springBtach.server.core.controller;
 
 
 import com.github.microservice.auth.client.content.ResultContent;
+import com.zhongshu.payment.client.model.order.v2.CreatOrderResultModel;
 import com.zswl.cloud.springBatch.client.model.dfy.Hotel.request.*;
 import com.zswl.cloud.springBatch.client.model.dfy.Hotel.response.*;
 import com.zswl.cloud.springBatch.client.service.DfyHotelService;
@@ -14,6 +15,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.validation.Valid;
+
 @Log4j2
 @RestController
 @RequestMapping("dfy/hotel")
@@ -59,7 +62,7 @@ public class DfyHotelController {
 
     @ApiOperation(" 创建订单接口")
     @RequestMapping(value = "addOrder", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
-    ResultContent<AddOrderResponse> addOrder(@RequestBody AddOrderRequest addOrderRequest) {
+    ResultContent<CreatOrderResultModel> addOrder(@RequestBody @Valid AddOrderRequest addOrderRequest) {
         return dfyHotelService.addOrder(addOrderRequest);
     }
 

+ 100 - 3
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/service/impl/DfyHotelServiceImpl.java

@@ -1,18 +1,44 @@
 package com.zswl.cloud.springBtach.server.core.service.impl;
 
+import cn.hutool.core.lang.Snowflake;
+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.service.v2.OrderService2;
+import com.zhongshu.payment.client.type.JobFlowMap;
+import com.zhongshu.payment.client.type.TransferOwner;
+import com.zhongshu.payment.client.type.TransferType;
 import com.zswl.cloud.springBatch.client.model.dfy.Hotel.request.*;
 import com.zswl.cloud.springBatch.client.model.dfy.Hotel.response.*;
 import com.zswl.cloud.springBatch.client.service.DfyHotelService;
 import com.zswl.cloud.springBtach.server.core.api.dfy.DomesticHotelApi;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
 @Service
 public class DfyHotelServiceImpl implements DfyHotelService {
 
     @Autowired
-    DomesticHotelApi domesticHotelApi;
+    private DomesticHotelApi domesticHotelApi;
+
+    @Autowired
+    private Snowflake snowflake;
+
+    @Autowired
+    private OrderService2 orderService2;
+
+    @Autowired
+    private AuthHelper authHelper;
+
 
     public ResultContent<QueryNewResponse> queryNew(QueryNewRequest queryNewRequest) {
         return ResultContent.buildContent(domesticHotelApi.queryNew(queryNewRequest));
@@ -34,8 +60,79 @@ public class DfyHotelServiceImpl implements DfyHotelService {
         return ResultContent.buildContent(domesticHotelApi.ratePlan(ratePlanRequest));
     }
 
-    public ResultContent<AddOrderResponse> addOrder(AddOrderRequest addOrderRequest) {
-        return ResultContent.buildContent(domesticHotelApi.addOrder(addOrderRequest));
+    public ResultContent<CreatOrderResultModel> addOrder(AddOrderRequest addOrderRequest) {
+        String orderNo = snowflake.nextIdStr();
+        addOrderRequest.setSourceOrderId(orderNo);
+        HotelDetailRequest hotelDetailRequest = new HotelDetailRequest();
+        hotelDetailRequest.setHotelId(addOrderRequest.getHotelId());
+        HotelDetailResponse hotelDetailResponse = domesticHotelApi.hotelDetail(hotelDetailRequest);
+
+        RatePlanRequest ratePlanRequest = new RatePlanRequest();
+        ratePlanRequest.setRoomId(addOrderRequest.getRatePlanId());
+        ratePlanRequest.setHotelId(addOrderRequest.getHotelId());
+        ratePlanRequest.setCheckin(addOrderRequest.getCheckin());
+        ratePlanRequest.setCheckout(addOrderRequest.getCheckout());
+        ratePlanRequest.setRoomNum(addOrderRequest.getNumberofRooms());
+        ratePlanRequest.setChildNum(addOrderRequest.getChildNum());
+        ratePlanRequest.setChildAges(addOrderRequest.getChildAges());
+
+        RatePlanResponse ratePlanResponse = domesticHotelApi.ratePlan(ratePlanRequest);
+        BigDecimal totalPrice = ratePlanResponse.getData().getTotalPrice();
+        addOrderRequest.setTotalPrice(totalPrice.intValue());
+
+
+        AddOrderResponse addOrderResponse = domesticHotelApi.addOrder(addOrderRequest);
+        if (!addOrderResponse.getSuccess()) {
+            return ResultContent.build(ResultState.Fail, addOrderResponse.getData());
+        }
+// 平台订单
+
+        String shopId="6645c05f32e63427d1a45b34";
+
+        // 平台订单
+        CreateOrder2Model createOrder2Model = new CreateOrder2Model();
+        createOrder2Model.setOrderNo(orderNo);
+        createOrder2Model.setUserId(authHelper.getCurrentUser().getUserId());
+        createOrder2Model.setShopId(shopId);
+        JSONObject shopInfo = JSONUtil.parseObj(hotelDetailResponse);
+        shopInfo.set("hotelIdPic",addOrderRequest.getHotelIdPic());
+        createOrder2Model.setShopInfo(shopInfo);
+        createOrder2Model.setTotalAmount(totalPrice);
+        createOrder2Model.setDiscountAmount(BigDecimal.ZERO);
+        createOrder2Model.setPayAmount(totalPrice);
+        createOrder2Model.setAccesserUserId("648b55efff875512b518c28c");
+        createOrder2Model.setChannel(addOrderRequest.getChannel());
+        JSONObject goodsInfo = JSONUtil.parseObj(addOrderRequest);
+        goodsInfo.set("HotlOrderId", addOrderResponse.getData().getOrderId());
+        goodsInfo.set("goodsName", hotelDetailResponse.getData().getChineseName());
+        goodsInfo.set("goodsPath", addOrderRequest.getRoomPic());
+
+        CreateOrder2Model.Goods goods = new CreateOrder2Model.Goods();
+        goods.setGoodsId(addOrderRequest.getRatePlanId());
+        goods.setJobFlowMap(JobFlowMap.Hotel);
+        goods.setGoodsInfo(goodsInfo);
+        goods.setPayAmount(totalPrice);
+        goods.setValidDay(90);
+        goods.setTransferType(TransferType.RATIO);
+
+        List<CreateOrder2Model.Owner> ownerList = new ArrayList<>();
+
+        CreateOrder2Model.Owner platfor = new CreateOrder2Model.Owner();
+        platfor.setOwner(TransferOwner.PLATFORM);
+        platfor.setValue(BigDecimal.ZERO);
+
+        CreateOrder2Model.Owner buy = new CreateOrder2Model.Owner();
+        buy.setOwner(TransferOwner.BUY_SHOP);
+        buy.setValue(BigDecimal.valueOf(100));
+        buy.setShopId(shopId);
+
+        ownerList.add(platfor);
+        ownerList.add(buy);
+        goods.setTransferRrule(ownerList);
+        goods.setExtend(JSONUtil.toJsonStr(addOrderResponse.getData()));
+        createOrder2Model.setGoodsList(List.of(goods));
+        return orderService2.creat(createOrder2Model);
+
     }
 
     public ResultContent<OrderDetailResponse> orderDetail(OrderDetailRequest orderDetailRequest) {