gongfuzhu hai 1 ano
pai
achega
54c982de94

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

@@ -15,7 +15,7 @@ public class SubmitOrderRequest extends DfyBaseData {
     private String acctId;
 
     @ApiModelProperty(value = "订单ID")
-    private int orderId;
+    private String orderId;
 
     @ApiModelProperty(value = "支付方式", allowableValues = "1, 3")
     private int payType;

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

@@ -1,7 +1,10 @@
 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.type.AuthType;
 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.*;
@@ -27,6 +30,7 @@ public class DfyHotelController {
 
     @ApiOperation(" 目的地搜索")
     @RequestMapping(value = "queryNew", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
+    @ResourceAuth(value = AuthConstant.User, type = AuthType.User)
     ResultContent<QueryNewResponse> queryNew(@RequestBody QueryNewRequest queryNewRequest) {
         return dfyHotelService.queryNew(queryNewRequest);
     }
@@ -34,6 +38,7 @@ public class DfyHotelController {
 
     @ApiOperation(" 酒店搜索接口")
     @RequestMapping(value = "hotelList", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
+    @ResourceAuth(value = AuthConstant.User, type = AuthType.User)
     ResultContent<HotelListResponse> hotelList(@RequestBody HotelListRequest hotelListRequest) {
         return dfyHotelService.hotelList(hotelListRequest);
     }
@@ -41,6 +46,7 @@ public class DfyHotelController {
 
     @ApiOperation(" 酒店详情接口")
     @RequestMapping(value = "hotelDetail", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
+    @ResourceAuth(value = AuthConstant.User, type = AuthType.User)
     ResultContent<HotelDetailResponse> hotelDetail(@RequestBody HotelDetailRequest hotelDetailRequest) {
         return dfyHotelService.hotelDetail(hotelDetailRequest);
     }
@@ -48,6 +54,7 @@ public class DfyHotelController {
 
     @ApiOperation(" 房型及报价查询接口")
     @RequestMapping(value = "ratePlanInfo", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
+    @ResourceAuth(value = AuthConstant.User, type = AuthType.User)
     ResultContent<RatePlanInfoResponse> ratePlanInfo(@RequestBody RatePlanInfoRequest ratePlanInfoRequest) {
         return dfyHotelService.ratePlanInfo(ratePlanInfoRequest);
     }
@@ -55,6 +62,7 @@ public class DfyHotelController {
 
     @ApiOperation(" 实时询价接口")
     @RequestMapping(value = "ratePlan", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
+    @ResourceAuth(value = AuthConstant.User, type = AuthType.User)
     ResultContent<RatePlanResponse> ratePlan(@RequestBody RatePlanRequest ratePlanRequest) {
         return dfyHotelService.ratePlan(ratePlanRequest);
     }
@@ -62,12 +70,14 @@ public class DfyHotelController {
 
     @ApiOperation(" 创建订单接口")
     @RequestMapping(value = "addOrder", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
+    @ResourceAuth(value = AuthConstant.User, type = AuthType.User)
     ResultContent<CreatOrderResultModel> addOrder(@RequestBody @Valid AddOrderRequest addOrderRequest) {
         return dfyHotelService.addOrder(addOrderRequest);
     }
 
     @ApiOperation(" 订单详情接口")
     @RequestMapping(value = "orderDetail", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
+    @ResourceAuth(value = AuthConstant.User, type = AuthType.User)
     ResultContent<OrderDetailResponse> orderDetail(@RequestBody OrderDetailRequest orderDetailRequest) {
         return dfyHotelService.orderDetail(orderDetailRequest);
     }
@@ -75,6 +85,7 @@ public class DfyHotelController {
 
     @ApiOperation(" 付款(代扣)接口")
     @RequestMapping(value = "submitOrder", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
+    @ResourceAuth(value = AuthConstant.SuperAdmin, type = AuthType.Enterprise)
     ResultContent<SubmitOrderResponse> submitOrder(@RequestBody SubmitOrderRequest submitOrderRequest) {
         return dfyHotelService.submitOrder(submitOrderRequest);
     }
@@ -82,6 +93,7 @@ public class DfyHotelController {
 
     @ApiOperation(" 取消订单接口")
     @RequestMapping(value = "cancelOrder", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
+    @ResourceAuth(value = AuthConstant.User, type = AuthType.User)
     ResultContent<CancelOrderResponse> cancelOrder(CancelOrderRequest cancelOrderRequest) {
         return dfyHotelService.cancelOrder(cancelOrderRequest);
     }

+ 115 - 0
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/job/dfy/HotelDeliveryJob.java

@@ -0,0 +1,115 @@
+package com.zswl.cloud.springBtach.server.core.job.dfy;
+
+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.zhongshu.payment.client.model.order.v2.GoodsResultModel;
+import com.zhongshu.payment.client.model.order.v2.UpdateGoodsModel;
+import com.zhongshu.payment.client.model.payment.SubOrdersConfirmResponseModel;
+import com.zhongshu.payment.client.service.v2.OrderService2;
+import com.zhongshu.payment.client.service.v2.PaymentService2;
+import com.zhongshu.payment.client.type.OrderType;
+import com.zswl.cloud.springBatch.client.model.dfy.Hotel.request.SubmitOrderRequest;
+import com.zswl.cloud.springBatch.client.model.dfy.Hotel.response.SubmitOrderResponse;
+import com.zswl.cloud.springBtach.server.core.api.dfy.DomesticHotelApi;
+import com.zswl.cloud.springBtach.server.core.job.standard.StandarDeliveryJob;
+import lombok.Data;
+import lombok.experimental.Delegate;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.batch.core.Job;
+import org.springframework.batch.core.Step;
+import org.springframework.batch.core.launch.support.RunIdIncrementer;
+import org.springframework.batch.repeat.RepeatStatus;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.math.BigDecimal;
+
+@Data
+@Log4j2
+@Configuration
+public class HotelDeliveryJob {
+
+    @Autowired
+    @Delegate
+    StandarDeliveryJob standarDeliveryJob;
+
+
+    @Autowired
+    OrderService2 orderService2;
+
+    @Autowired
+    PaymentService2 paymentService2;
+
+    @Autowired
+    DomesticHotelApi domesticHotelApi;
+
+    @Value("${dfy.payType}")
+    private Integer payType;
+
+
+    public Step hotelDeliveryStep() {
+        return getStepBuilderFactory().get("hotelDeliveryStep")
+                .tasklet((contribution, chunkContext) -> {
+                    GoodsResultModel goodsResultModel = getParameter().get();
+                    ResultContent<GoodsResultModel> goodsResultModelResultContent = orderService2.orderInfo(goodsResultModel.getOrderNo());
+                    BigDecimal payAmount = goodsResultModelResultContent.getContent().getPayAmount();
+
+
+                    JSONObject entries = JSONUtil.parseObj(goodsResultModel.getExtend());
+                    String orderId = (String) entries.get("hotlOrderId");
+
+                    SubmitOrderRequest submitOrderRequest = new SubmitOrderRequest();
+                    submitOrderRequest.setOrderId(orderId);
+                    submitOrderRequest.setPayType(payType);
+                    submitOrderRequest.setPlatform(payAmount.toString());
+
+                    SubmitOrderResponse submitOrderResponse = domesticHotelApi.submitOrder(submitOrderRequest);
+
+
+                    String extend = goodsResultModel.getExtend();
+                    JSONObject entries1 = JSONUtil.parseObj(extend);
+                    entries1.set("response", submitOrderResponse);
+                    if (!submitOrderResponse.getSuccess()) {
+                        UpdateGoodsModel updateGoodsModel = new UpdateGoodsModel();
+                        updateGoodsModel.setId(goodsResultModel.getId());
+                        updateGoodsModel.setVerifyModel(entries1);
+                        orderService2.updateGoods(updateGoodsModel);
+                        return RepeatStatus.FINISHED;
+                    }
+
+                    // 分账
+                    ResultContent<SubOrdersConfirmResponseModel> subOrdersConfirmResponseModelResultContent = paymentService2.subOrdersConfirm(goodsResultModel.getId(), goodsResultModel.getShopId());
+                    if (!subOrdersConfirmResponseModelResultContent.getState().equals(ResultState.Success)) {
+                        log.info("分账失败:{}", JSONUtil.toJsonStr(goodsResultModel));
+                        getResultContent().set(ResultContent.build(ResultState.Fail));
+                    }
+
+
+                    UpdateGoodsModel updateGoodsModel = new UpdateGoodsModel();
+                    updateGoodsModel.setId(goodsResultModel.getId());
+                    updateGoodsModel.setDelivery(true);
+                    updateGoodsModel.setGoodsState(OrderType.WAIT_USE);
+                    orderService2.updateGoods(updateGoodsModel);
+
+                    getResultContent().set(ResultContent.build(ResultState.Success));
+                    return RepeatStatus.FINISHED;
+
+                })
+                .build();
+    }
+
+    @Bean
+    public Job hotelDelivery() {
+        return getJobBuilderFactory()
+                .get("hotelDelivery")
+                .start(hotelDeliveryStep())
+                .incrementer(new RunIdIncrementer())
+                .build();
+    }
+
+}
+

+ 2 - 2
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/job/dfy/TicketDeliveryJob.java

@@ -52,7 +52,7 @@ public class TicketDeliveryJob {
     private Integer payType;
 
 
-    public Step videoDeliveryStep() {
+    public Step ticketDeliveryStep() {
         return getStepBuilderFactory().get("ticketDeliveryStep")
                 .tasklet((contribution, chunkContext) -> {
                     GoodsResultModel goodsResultModel = getParameter().get();
@@ -107,7 +107,7 @@ public class TicketDeliveryJob {
     public Job ticketDelivery() {
         return getJobBuilderFactory()
                 .get("ticketDelivery")
-                .start(videoDeliveryStep())
+                .start(ticketDeliveryStep())
                 .incrementer(new RunIdIncrementer())
                 .build();
     }

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

@@ -12,11 +12,13 @@ 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.shop.client.service.ShopService;
+import com.zswl.cloud.shop.client.vo.life.AccountDetailVo;
+import com.zswl.cloud.shop.client.vo.life.SharePlatformVo;
 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;
 
@@ -39,6 +41,9 @@ public class DfyHotelServiceImpl implements DfyHotelService {
     @Autowired
     private AuthHelper authHelper;
 
+    @Autowired
+    private ShopService shopService;
+
 
     public ResultContent<QueryNewResponse> queryNew(QueryNewRequest queryNewRequest) {
         return ResultContent.buildContent(domesticHotelApi.queryNew(queryNewRequest));
@@ -61,6 +66,14 @@ public class DfyHotelServiceImpl implements DfyHotelService {
     }
 
     public ResultContent<CreatOrderResultModel> addOrder(AddOrderRequest addOrderRequest) {
+
+        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 accountDetailVo = shopSetting.getContent();
+
+
         String orderNo = snowflake.nextIdStr();
         addOrderRequest.setSourceOrderId(orderNo);
         HotelDetailRequest hotelDetailRequest = new HotelDetailRequest();
@@ -77,17 +90,23 @@ public class DfyHotelServiceImpl implements DfyHotelService {
         ratePlanRequest.setChildAges(addOrderRequest.getChildAges());
 
         RatePlanResponse ratePlanResponse = domesticHotelApi.ratePlan(ratePlanRequest);
+        if (!ratePlanResponse.getSuccess()) {
+            return ResultContent.build(ResultState.Fail, ratePlanResponse.getMsg());
+        }
         BigDecimal totalPrice = ratePlanResponse.getData().getTotalPrice();
         addOrderRequest.setTotalPrice(totalPrice.intValue());
 
 
         AddOrderResponse addOrderResponse = domesticHotelApi.addOrder(addOrderRequest);
         if (!addOrderResponse.getSuccess()) {
-            return ResultContent.build(ResultState.Fail, addOrderResponse.getData());
+            return ResultContent.build(ResultState.Fail, addOrderResponse.getMsg());
         }
 // 平台订单
 
-        String shopId="6645c05f32e63427d1a45b34";
+
+        String shopId = accountDetailVo.getAccountId();
+        String authAccount = accountDetailVo.getAuthAccount();
+        SharePlatformVo sharePlatformVo = accountDetailVo.getSharePlatformVo();
 
         // 平台订单
         CreateOrder2Model createOrder2Model = new CreateOrder2Model();
@@ -95,12 +114,12 @@ public class DfyHotelServiceImpl implements DfyHotelService {
         createOrder2Model.setUserId(authHelper.getCurrentUser().getUserId());
         createOrder2Model.setShopId(shopId);
         JSONObject shopInfo = JSONUtil.parseObj(hotelDetailResponse);
-        shopInfo.set("hotelIdPic",addOrderRequest.getHotelIdPic());
+        shopInfo.set("hotelIdPic", addOrderRequest.getHotelIdPic());
         createOrder2Model.setShopInfo(shopInfo);
         createOrder2Model.setTotalAmount(totalPrice);
         createOrder2Model.setDiscountAmount(BigDecimal.ZERO);
         createOrder2Model.setPayAmount(totalPrice);
-        createOrder2Model.setAccesserUserId("648b55efff875512b518c28c");
+        createOrder2Model.setAccesserUserId(authAccount);
         createOrder2Model.setChannel(addOrderRequest.getChannel());
         JSONObject goodsInfo = JSONUtil.parseObj(addOrderRequest);
         goodsInfo.set("HotlOrderId", addOrderResponse.getData().getOrderId());
@@ -113,21 +132,26 @@ public class DfyHotelServiceImpl implements DfyHotelService {
         goods.setGoodsInfo(goodsInfo);
         goods.setPayAmount(totalPrice);
         goods.setValidDay(90);
-        goods.setTransferType(TransferType.RATIO);
+        goods.setTransferType(sharePlatformVo.getShareType().equals(1) ? TransferType.RATIO : TransferType.FIXED);
 
         List<CreateOrder2Model.Owner> ownerList = new ArrayList<>();
 
         CreateOrder2Model.Owner platfor = new CreateOrder2Model.Owner();
         platfor.setOwner(TransferOwner.PLATFORM);
-        platfor.setValue(BigDecimal.ZERO);
+        platfor.setValue(sharePlatformVo.getPlatformRate());
 
         CreateOrder2Model.Owner buy = new CreateOrder2Model.Owner();
         buy.setOwner(TransferOwner.BUY_SHOP);
-        buy.setValue(BigDecimal.valueOf(100));
+        buy.setValue(sharePlatformVo.getBuyShopRate());
         buy.setShopId(shopId);
 
+        CreateOrder2Model.Owner use = new CreateOrder2Model.Owner();
+        use.setOwner(TransferOwner.USE_SHOP);
+        use.setValue(sharePlatformVo.getCheckShopRate());
+
         ownerList.add(platfor);
         ownerList.add(buy);
+        ownerList.add(use);
         goods.setTransferRrule(ownerList);
         goods.setExtend(JSONUtil.toJsonStr(addOrderResponse.getData()));
         createOrder2Model.setGoodsList(List.of(goods));