diff --git a/src/main/java/com/sczx/order/controller/ClientOrderController.java b/src/main/java/com/sczx/order/controller/ClientOrderController.java index 818b9db..bf13fd6 100644 --- a/src/main/java/com/sczx/order/controller/ClientOrderController.java +++ b/src/main/java/com/sczx/order/controller/ClientOrderController.java @@ -65,12 +65,6 @@ public class ClientOrderController { return Result.ok(orderService.depositFreePayRentCarOrder(rentCarOrderReq)); } - @ApiOperation(value = "第三方订单") - @PostMapping("/thirdPlatformRentCarOrder") - public Result thirdPlatformRentCarOrder(@Valid @RequestBody RentCarThirdPlatformOrderReq rentCarOrderReq){ - return Result.ok(orderService.thirdPlatformRentCarOrder(rentCarOrderReq)); - } - @ApiOperation(value = "续租车") @PostMapping("/reRentalCarOrder") public Result reRentalCarOrder(@Valid @RequestBody ReRentCarReq rentCarOrderReq){ diff --git a/src/main/java/com/sczx/order/controller/PubOrderController.java b/src/main/java/com/sczx/order/controller/PubOrderController.java index 0beca7e..3d14e26 100644 --- a/src/main/java/com/sczx/order/controller/PubOrderController.java +++ b/src/main/java/com/sczx/order/controller/PubOrderController.java @@ -2,10 +2,7 @@ package com.sczx.order.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.sczx.order.common.Result; -import com.sczx.order.dto.VerifyGroupBuyCouponsReq; -import com.sczx.order.dto.OrderDetailDTO; -import com.sczx.order.dto.OrderDistribDTO; -import com.sczx.order.dto.OrderDistribQueryReq; +import com.sczx.order.dto.*; import com.sczx.order.service.OrderDistribService; import com.sczx.order.service.OrderService; import io.swagger.annotations.Api; @@ -55,7 +52,7 @@ public class PubOrderController { @ApiOperation(value = "团购券核销") @PostMapping("/verifyGroupBuyCoupons") - public Result verifyGroupBuyCoupons(@Valid @RequestBody VerifyGroupBuyCouponsReq req){ + public Result verifyGroupBuyCoupons(@Valid @RequestBody VerifyGroupBuyCouponsReq req){ return Result.ok(orderService.verifyGroupBuyCoupons( req)); } } diff --git a/src/main/java/com/sczx/order/dto/RentCarThirdPlatformOrderReq.java b/src/main/java/com/sczx/order/dto/RentCarThirdPlatformOrderReq.java index 469214a..a25bb33 100644 --- a/src/main/java/com/sczx/order/dto/RentCarThirdPlatformOrderReq.java +++ b/src/main/java/com/sczx/order/dto/RentCarThirdPlatformOrderReq.java @@ -38,6 +38,9 @@ public class RentCarThirdPlatformOrderReq { @ApiModelProperty(value = "第三方订单号") private String thirdOrderNo; + @ApiModelProperty(value = "第三方团购码") + private String couponCode; + @ApiModelProperty(value = "订单来源") private String orderSource; diff --git a/src/main/java/com/sczx/order/service/GroupBuyCouponService.java b/src/main/java/com/sczx/order/service/GroupBuyCouponService.java index 04ac4cf..77985d3 100644 --- a/src/main/java/com/sczx/order/service/GroupBuyCouponService.java +++ b/src/main/java/com/sczx/order/service/GroupBuyCouponService.java @@ -1,6 +1,7 @@ package com.sczx.order.service; import com.sczx.order.dto.GroupBuyOrderInfoDto; +import com.sczx.order.dto.SimpleUserInfoDTO; /** 团购券服务 * @Author: 张黎 @@ -10,12 +11,10 @@ import com.sczx.order.dto.GroupBuyOrderInfoDto; public interface GroupBuyCouponService { /** * 获取团购券下单信息 - * @param couponCode 团购券码 - * @param couponType 团购券类型 * @param mobile 手机号 * @return */ - GroupBuyOrderInfoDto getGroupBuyOrderInfoDto(String couponCode, String couponType, String mobile); + SimpleUserInfoDTO getGroupBuyOrderInfoDto(String mobile); /** * 校验团购券码 diff --git a/src/main/java/com/sczx/order/service/MeiTuanService.java b/src/main/java/com/sczx/order/service/MeiTuanService.java index 61e94f3..8b0287d 100644 --- a/src/main/java/com/sczx/order/service/MeiTuanService.java +++ b/src/main/java/com/sczx/order/service/MeiTuanService.java @@ -3,15 +3,18 @@ package com.sczx.order.service; import com.meituan.sdk.MeituanResponse; import com.meituan.sdk.auth.MeituanTokenResponse; import com.meituan.sdk.model.ddzh.tuangou.tuangouReceiptConsume.TuangouReceiptConsumeResponse; +import com.meituan.sdk.model.ddzh.tuangou.tuangouReceiptPrepare.TuangouReceiptPrepareResponse; +import com.meituan.sdk.model.ddzh.tuangou.tuangouReceiptReverseconsume.TuangouReceiptReverseconsumeResponse; +import com.sczx.order.dto.VerifyGroupBuyCouponsReq; public interface MeiTuanService { MeituanTokenResponse getAccessToken(String code , String state); - MeituanTokenResponse prepare(String code); + MeituanResponse prepare(VerifyGroupBuyCouponsReq req); - MeituanResponse consume(String code); + MeituanResponse consume(VerifyGroupBuyCouponsReq req); - MeituanTokenResponse refreshAccessToken(String refreshToken); + MeituanResponse reverseconsume(VerifyGroupBuyCouponsReq req, String dealId); } diff --git a/src/main/java/com/sczx/order/service/OrderService.java b/src/main/java/com/sczx/order/service/OrderService.java index e9879ef..a4531ad 100644 --- a/src/main/java/com/sczx/order/service/OrderService.java +++ b/src/main/java/com/sczx/order/service/OrderService.java @@ -20,7 +20,7 @@ public interface OrderService { * @param req * @return */ - OrderDetailDTO verifyGroupBuyCoupons(VerifyGroupBuyCouponsReq req) ; + RentCarOrderResultDTO verifyGroupBuyCoupons(VerifyGroupBuyCouponsReq req) ; /** * 提交租车订单 diff --git a/src/main/java/com/sczx/order/service/impl/GroupBuyCouponServiceImpl.java b/src/main/java/com/sczx/order/service/impl/GroupBuyCouponServiceImpl.java index 32b3f16..b31a860 100644 --- a/src/main/java/com/sczx/order/service/impl/GroupBuyCouponServiceImpl.java +++ b/src/main/java/com/sczx/order/service/impl/GroupBuyCouponServiceImpl.java @@ -28,7 +28,7 @@ public class GroupBuyCouponServiceImpl implements GroupBuyCouponService { private MeiTuanService meiTuanService; @Override - public GroupBuyOrderInfoDto getGroupBuyOrderInfoDto(String couponCode, String couponType, String mobile) { + public SimpleUserInfoDTO getGroupBuyOrderInfoDto(String mobile) { SimpleUserInfoDTO userInfoDTO = userInteg.getUInfoByMobile(mobile); if(userInfoDTO==null){ throw new BizException("用户不存在"); diff --git a/src/main/java/com/sczx/order/service/impl/MeiTuanServiceImpl.java b/src/main/java/com/sczx/order/service/impl/MeiTuanServiceImpl.java index 6a01b24..696aff1 100644 --- a/src/main/java/com/sczx/order/service/impl/MeiTuanServiceImpl.java +++ b/src/main/java/com/sczx/order/service/impl/MeiTuanServiceImpl.java @@ -11,25 +11,31 @@ import com.meituan.sdk.model.ddzh.tuangou.tuangouReceiptConsume.TuangouReceiptCo import com.meituan.sdk.model.ddzh.tuangou.tuangouReceiptConsume.TuangouReceiptConsumeResponse; import com.meituan.sdk.model.ddzh.tuangou.tuangouReceiptPrepare.TuangouReceiptPrepareRequest; import com.meituan.sdk.model.ddzh.tuangou.tuangouReceiptPrepare.TuangouReceiptPrepareResponse; +import com.meituan.sdk.model.ddzh.tuangou.tuangouReceiptReverseconsume.TuangouReceiptReverseconsumeRequest; +import com.meituan.sdk.model.ddzh.tuangou.tuangouReceiptReverseconsume.TuangouReceiptReverseconsumeResponse; +import com.sczx.order.dto.VerifyGroupBuyCouponsReq; import com.sczx.order.exception.BizException; import com.sczx.order.service.MeiTuanService; +import com.sczx.order.thirdpart.dto.CompanyStoreDTO; import com.sczx.order.thirdpart.integration.StoreInteg; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.UUID; + @Slf4j @Service public class MeiTuanServiceImpl implements MeiTuanService { + @Value("${coupon.meituan.developer_id}") + private Long DeveloperId; - private Long DeveloperId = 116997L; - - private String Signkey = "n8xlhtshk7t1luvi"; - - //private String accessToken = "V2-26b8d231854d3fdf6a5c06273377a65e441e4c9f1c8cea4959c510bf0dd19ed7657e34bebe4b74aa455b80d3c757cd8a66e3ece9148e6d6838778db5f9600cf383dbf89c0cc27f07f777c98649bd94fe"; - - private String accessToken = "V2-549da132ffebe5ce5731a17ae166cb899e13c579900d6cbc4163b60e4d40440ccbe8e56d25c3341cd1003c5529c407085c06af2eb41d2d091353b4d2be6f887582d9d4bf247cf9a511581ad46ade47e8"; + @Value("${coupon.meituan.sign_key}") + private String Signkey; @Autowired private StoreInteg storeInteg; @@ -59,75 +65,101 @@ public class MeiTuanServiceImpl implements MeiTuanService { } @Override - public MeituanTokenResponse prepare(String code) { + public MeituanResponse prepare(VerifyGroupBuyCouponsReq req) { try { MeituanClient meituanClient = DefaultMeituanClient.builder(DeveloperId, Signkey).build(); TuangouReceiptPrepareRequest tuangouReceiptPrepareRequest = new TuangouReceiptPrepareRequest(); - tuangouReceiptPrepareRequest.setReceiptCode("0106972239359"); + tuangouReceiptPrepareRequest.setReceiptCode(req.getCouponCode()); + + String appAuthToken = getAppAuthToken(req.getStoreId().intValue()).getMtToken(); - String appAuthToken = accessToken; MeituanResponse response = meituanClient.invokeApi(tuangouReceiptPrepareRequest, appAuthToken); - log.info("获取access_token响应结果: {}", JSONObject.toJSONString(response)); - if (response.isSuccess()) { - TuangouReceiptPrepareResponse resp = response.getData(); - System.out.println(resp); + log.info("美团验券响应结果: {}", JSONObject.toJSONString(response)); } else { - System.out.println("调用失败"); + log.error("美团验券异常: {}", JSONObject.toJSONString(response)); + throw new BizException("美团验券异常:"+response.getMsg()); } return null; } catch (Exception e) { - log.error("获取access_token异常", e); - return null; + throw new RuntimeException("券验证失败"); } } @Override - public MeituanTokenResponse refreshAccessToken(String refreshToken) { + public MeituanResponse consume (VerifyGroupBuyCouponsReq req) { try { MeituanClient meituanClient = DefaultMeituanClient.builder(DeveloperId, Signkey).build(); + CompanyStoreDTO companyStoreDTO = getAppAuthToken(req.getStoreId().intValue()); - MeituanTokenResponse response = meituanClient.refreshToken(58, refreshToken); + String timestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); + String uuidSuffix = UUID.randomUUID().toString().replace("-", "").substring(0, 6).toUpperCase(); - return response; - - } catch (Exception e) { - log.error("获取access_token异常", e); - return null; - } - } - - @Override - public MeituanResponse consume (String code) { - try { - MeituanClient meituanClient = DefaultMeituanClient.builder(DeveloperId, Signkey).build(); TuangouReceiptConsumeRequest tuangouReceiptConsumeRequest = new TuangouReceiptConsumeRequest(); - tuangouReceiptConsumeRequest.setReceiptCode("0106972239359"); + tuangouReceiptConsumeRequest.setReceiptCode(req.getCouponCode()); tuangouReceiptConsumeRequest.setCount(1); - tuangouReceiptConsumeRequest.setRequestId("fdae143414"); - tuangouReceiptConsumeRequest.setAppShopAccountName("customer"); - tuangouReceiptConsumeRequest.setAppShopAccount("customer"); + tuangouReceiptConsumeRequest.setRequestId(timestamp+uuidSuffix); + tuangouReceiptConsumeRequest.setAppShopAccountName(companyStoreDTO.getName()); + tuangouReceiptConsumeRequest.setAppShopAccount(companyStoreDTO.getStoreNumber()); + MeituanResponse response = meituanClient.invokeApi(tuangouReceiptConsumeRequest, companyStoreDTO.getMtToken()); - String appAuthToken = accessToken; - MeituanResponse response = meituanClient.invokeApi(tuangouReceiptConsumeRequest, appAuthToken); - - log.info("获取access_token响应结果: {}", JSONObject.toJSONString(response)); + log.info("美团核销响应结果: {}", JSONObject.toJSONString(response)); + if (response.isSuccess()) { + log.info("美团核销响应结果: {}", JSONObject.toJSONString(response)); + } else { + log.error("美团核销异常: {}", JSONObject.toJSONString(response)); + throw new BizException("美团验券异常:"+response.getMsg()); + } return response; } catch (MtSdkException e) { - e.printStackTrace(); - return null; + throw new RuntimeException("美团核销失败"); + } + } + + @Override + public MeituanResponse reverseconsume(VerifyGroupBuyCouponsReq req, String dealId) { + try { + MeituanClient meituanClient = DefaultMeituanClient.builder(DeveloperId, Signkey).build(); + CompanyStoreDTO companyStoreDTO = getAppAuthToken(req.getStoreId().intValue()); + + TuangouReceiptReverseconsumeRequest tuangouReceiptReverseconsumeRequest = new TuangouReceiptReverseconsumeRequest(); + + tuangouReceiptReverseconsumeRequest.setAppShopAccount(companyStoreDTO.getStoreNumber()); + tuangouReceiptReverseconsumeRequest.setAppShopAccountName(companyStoreDTO.getName()); + tuangouReceiptReverseconsumeRequest.setReceiptCode(req.getCouponCode()); + tuangouReceiptReverseconsumeRequest.setDealId(dealId); + + + MeituanResponse response = meituanClient.invokeApi(tuangouReceiptReverseconsumeRequest, companyStoreDTO.getMtToken()); + + if (response.isSuccess()) { + TuangouReceiptReverseconsumeResponse resp = response.getData(); + log.info("美团撤销验券响应结果: {}", JSONObject.toJSONString(response)); + } else { + log.error("美团撤销验券异常: {}", JSONObject.toJSONString(response)); + throw new BizException("美团撤销验券异常:"+response.getMsg()); + } + + return response; + }catch (MtSdkException e) { + throw new RuntimeException("美团美团撤销验券失败"); } } + private CompanyStoreDTO getAppAuthToken(Integer storeId) { + CompanyStoreDTO companyStoreDTO = storeInteg.getStoreById(storeId); + return companyStoreDTO; + } + } diff --git a/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java b/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java index a21b125..5fa27db 100644 --- a/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java @@ -7,6 +7,9 @@ import com.douyin.openapi.client.models.CertificatePrepareRequest; import com.douyin.openapi.client.models.CertificatePrepareResponse; import com.douyin.openapi.client.models.CertificateVerifyRequest; import com.douyin.openapi.client.models.CertificateVerifyResponse; +import com.meituan.sdk.MeituanResponse; +import com.meituan.sdk.model.ddzh.tuangou.tuangouReceiptConsume.TuangouReceiptConsumeResponse; +import com.meituan.sdk.model.ddzh.tuangou.tuangouReceiptPrepare.TuangouReceiptPrepareResponse; import com.sczx.order.common.constant.RedisKeyConstants; import com.sczx.order.common.enums.*; import com.sczx.order.convert.OrderCarImgConvert; @@ -102,11 +105,50 @@ public class OrderServiceImpl implements OrderService { } @Override - public OrderDetailDTO verifyGroupBuyCoupons(VerifyGroupBuyCouponsReq req){ + public RentCarOrderResultDTO verifyGroupBuyCoupons(VerifyGroupBuyCouponsReq req){ + //校验用户是否存在,是否实名认证 + SimpleUserInfoDTO userInfoDTO = groupBuyCouponService.getGroupBuyOrderInfoDto(req.getMobile()); + RentCarThirdPlatformOrderReq thirdRentCarOrder = new RentCarThirdPlatformOrderReq(); + Map productIdMap = new HashMap<>(); if (req.getCouponType() == CouponTypeEnum.MT.getCode()){ //TODO 调用美团验券接口 + //美团验券 + MeituanResponse prepareResponse =meiTuanService.prepare( req); + String phone = prepareResponse.getData().getMobile(); + if (phone != null && !phone.isEmpty()){ + if (!comparePhoneNumbers(phone, req.getMobile())){ + throw new BizException("所提供的手机号码与团购手机号不一致"); + } + } + //使用输入的手机号进行后续操作 + //核销团购券 + MeituanResponse consumeResponse =meiTuanService.consume( req); + consumeResponse.getData().getResult().forEach(result -> { + productIdMap.put("mtOrderId",String.valueOf(result.getDealId())); + productIdMap.put("mtProductId", String.valueOf(result.getDealGroupId())); + }); + + + //生成第三方订单 + CarModelPackageDTO carModelPackageDTO = carInteg.getCarModelPackageByThireId(productIdMap.get("mtProductId"),null); + if (carModelPackageDTO == null){ + throw new BizException("无此对应团购套餐"); + } + + thirdRentCarOrder.setCarModelId(carModelPackageDTO.getCarModelId()); + thirdRentCarOrder.setRentCarRuleId(carModelPackageDTO.getCarRuleId()); + thirdRentCarOrder.setCustomerId(userInfoDTO.getUserId().longValue()); + thirdRentCarOrder.setStoreId(req.getStoreId()); + thirdRentCarOrder.setOrderSource(CouponTypeEnum.MT.getCode()); + thirdRentCarOrder.setCustomerName(userInfoDTO.getUserName()); + thirdRentCarOrder.setCustomerPhone(userInfoDTO.getPhoneNumber()); + thirdRentCarOrder.setThirdOrderNo(productIdMap.get("mtOrderId")); + thirdRentCarOrder.setCouponCode(req.getCouponCode()); + + RentCarOrderResultDTO rentCarOrderResultDTO = thirdPlatformRentCarOrder(thirdRentCarOrder); + return rentCarOrderResultDTO; }else if (req.getCouponType() == CouponTypeEnum.DY.getCode()){ @@ -125,25 +167,19 @@ public class OrderServiceImpl implements OrderService { String verifyToken = response.getData().getVerifyToken(); AtomicReference phone = new AtomicReference<>(""); response.getData().getCertificates().forEach(certificate -> { - Long certificateId = certificate.getCertificateId(); - String skuId = certificate.getSku().getSkuId(); + productIdMap.put("dyOrderId",String.valueOf(certificate.getCertificateId())); + productIdMap.put("dyProductId", String.valueOf(certificate.getSku().getSkuId())); certificate.getReserveInfo().getOrderReserveUserInfoList().forEach(orderReserveUserInfo -> { phone.set(orderReserveUserInfo.getPhone()); - System.out.println(orderReserveUserInfo.getPhone()); }); }); String finalPhone = phone.get(); - //校验用户是否存在,是否实名认证 - GroupBuyOrderInfoDto groupBuyOrderInfoDTO = groupBuyCouponService.getGroupBuyOrderInfoDto(req.getCouponCode(), req.getCouponType(), req.getMobile()); - if (finalPhone != null && !finalPhone.isEmpty()) { - // 如果校验券没有返回手机号码,则使用前端所传手机号码 - log.info("您所团购的订单未填写手机号,将使用您提交给门店的手机号生成租车订单"); - - }else{ - // 如果校验券有返回手机号码,则使用前端所传手机号码与该脱敏手机号码比对 + if (!comparePhoneNumbers(finalPhone, req.getMobile())){ + throw new BizException("所提供的手机号码与团购手机号不一致"); + } } //核销抖音团购券 @@ -155,18 +191,52 @@ public class OrderServiceImpl implements OrderService { verifyResponse.getData().getVerifyResults().forEach(verifyResult -> { //撤销验券需要下面两个值 - verifyResult.getCertificateId(); - verifyResult.getVerifyId(); + productIdMap.put("dyCertificateId",verifyResult.getCertificateId()); + productIdMap.put("dyVerifyId",verifyResult.getVerifyId()); }); //TODO 生成订单 + //生成第三方订单 + CarModelPackageDTO carModelPackageDTO = carInteg.getCarModelPackageByThireId(null,productIdMap.get("dyProductId")); + if (carModelPackageDTO == null){ + throw new BizException("无此对应团购套餐"); + } + thirdRentCarOrder.setCarModelId(carModelPackageDTO.getCarModelId()); + thirdRentCarOrder.setRentCarRuleId(carModelPackageDTO.getCarRuleId()); + thirdRentCarOrder.setCustomerId(userInfoDTO.getUserId().longValue()); + thirdRentCarOrder.setStoreId(req.getStoreId()); + thirdRentCarOrder.setOrderSource(CouponTypeEnum.DY.getCode()); + thirdRentCarOrder.setCustomerName(userInfoDTO.getUserName()); + thirdRentCarOrder.setCustomerPhone(userInfoDTO.getPhoneNumber()); + thirdRentCarOrder.setThirdOrderNo(productIdMap.get("dyCertificateId")); + thirdRentCarOrder.setCouponCode(productIdMap.get("dyVerifyId")); + RentCarOrderResultDTO rentCarOrderResultDTO = thirdPlatformRentCarOrder(thirdRentCarOrder); + return rentCarOrderResultDTO; + } + throw new BizException("券码类型错误"); + } + + public boolean comparePhoneNumbers(String maskedPhone, String actualPhone) { + // 检查输入参数 + if (maskedPhone == null || actualPhone == null) { + return false; } - return null; + // 比较前3位 + String prefix1 = maskedPhone.substring(0, 3); + String prefix2 = actualPhone.substring(0, 3); + + // 比较后4位 + String suffix1 = maskedPhone.substring(maskedPhone.length() - 4); + String suffix2 = actualPhone.substring(actualPhone.length() - 4); + + // 返回比对结果 + return prefix1.equals(prefix2) && suffix1.equals(suffix2); } + @Transactional(rollbackFor = Exception.class) @Override public RentCarOrderResultDTO submitRentCarOrder(RentCarOrderReq rentCarOrderReq) { @@ -569,10 +639,10 @@ public class OrderServiceImpl implements OrderService { } //获取门店信息 -// CompanyStoreDTO companyStoreDTO = storeInteg.getStoreById(Integer.valueOf(rentCarOrderReq.getStoreId().toString())); -// if(Objects.isNull(companyStoreDTO)){ -// throw new BizException("运营商或门店已下架"); -// } + CompanyStoreDTO companyStoreDTO = storeInteg.getStoreById(Integer.valueOf(rentCarOrderReq.getStoreId().toString())); + if(Objects.isNull(companyStoreDTO)){ + throw new BizException("运营商或门店已下架"); + } CarModelSimpleDTO carModelSimpleDTO = carInteg.getCarModelByModelId(rentCarOrderReq.getCarModelId()); @@ -598,10 +668,11 @@ public class OrderServiceImpl implements OrderService { //TODO 这里保存订单要做事物处理 //生成订单主表 OrderMainPO orderMainPO = OrderConvert.INSTANCE.subOrderToPo(rentCarOrderReq, userInfoDTO, rentCarRuleDTO); - //orderMainPO.setOperatorId(Long.valueOf(companyStoreDTO.getOperatingCompanyId())); + orderMainPO.setOperatorId(Long.valueOf(companyStoreDTO.getOperatingCompanyId())); orderMainPO.setOrderNo(OrderUtil.generateOrderNo()); orderMainPO.setOrderStatus(OrderStatusEnum.WAIT_PICK.getCode()); orderMainPO.setFirstOrderTime(LocalDateTime.now()); + orderMainPO.setStoreId(rentCarOrderReq.getStoreId()); //设置预计还车时间 LocalDateTime endRentTime = OrderUtil.getEndRentTime(orderMainPO.getFirstOrderTime(),1,rentCarRuleDTO.getRentalDays(), rentCarRuleDTO.getRentalType()); @@ -652,13 +723,13 @@ public class OrderServiceImpl implements OrderService { BigDecimal orderAmount = orderSubPOList.stream().map(OrderSubPO::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); orderMainPO.setOrderAmount(orderAmount); - //发起支付返回预支付信息 - String paymentId = OrderUtil.generateSubOrderNo(OrderUtil.ZF_PREFIX); + //支付号为团购码 + String paymentId = rentCarOrderReq.getCouponCode(); for(OrderSubPO orderSubPO : orderSubPOList){ orderSubPO.setPaymentId(paymentId); - orderSubPO.setPayStatus(PayStatusEnum.USERPAYING.getCode()); + orderSubPO.setPayStatus(PayStatusEnum.SUCCESS.getCode()); } orderMainRepo.save(orderMainPO); @@ -671,7 +742,7 @@ public class OrderServiceImpl implements OrderService { //返回订单信息 OrderDTO orderDTO = OrderConvert.INSTANCE.poToDto(orderMainPO); - //orderDTO.setCompanyStoreDTO(companyStoreDTO); + orderDTO.setCompanyStoreDTO(companyStoreDTO); orderDTO.setCarModelSimpleDTO(carModelSimpleDTO); RentCarOrderResultDTO rentCarOrderResultDTO = new RentCarOrderResultDTO(); diff --git a/src/main/java/com/sczx/order/thirdpart/dto/CarModelPackageDTO.java b/src/main/java/com/sczx/order/thirdpart/dto/CarModelPackageDTO.java new file mode 100644 index 0000000..90a11c8 --- /dev/null +++ b/src/main/java/com/sczx/order/thirdpart/dto/CarModelPackageDTO.java @@ -0,0 +1,24 @@ +package com.sczx.order.thirdpart.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +@ApiModel(value = "车型套餐对象") +public class CarModelPackageDTO { + + @ApiModelProperty("车型ID") + private Long carModelId; + + @ApiModelProperty("套餐ID") + private Long carRuleId; + + @ApiModelProperty("美团商品ID") + private String mtProductId; + + @ApiModelProperty("抖音商品ID") + private String dyProductId; + +} diff --git a/src/main/java/com/sczx/order/thirdpart/facade/CarFacade.java b/src/main/java/com/sczx/order/thirdpart/facade/CarFacade.java index 793784e..836beb2 100644 --- a/src/main/java/com/sczx/order/thirdpart/facade/CarFacade.java +++ b/src/main/java/com/sczx/order/thirdpart/facade/CarFacade.java @@ -21,4 +21,6 @@ public interface CarFacade { @PostMapping("/car/getCarByCarCondition") Result getCarByCarCondition(@RequestBody CarQueryConditionReq req); + @RequestMapping("/carModel/getCarModelByThireId") + Result getCarModelByThireId(@RequestParam(name = "mtId") String mtId,@RequestParam(name = "dyId") String dyId); } \ No newline at end of file diff --git a/src/main/java/com/sczx/order/thirdpart/integration/CarInteg.java b/src/main/java/com/sczx/order/thirdpart/integration/CarInteg.java index e800108..fad827d 100644 --- a/src/main/java/com/sczx/order/thirdpart/integration/CarInteg.java +++ b/src/main/java/com/sczx/order/thirdpart/integration/CarInteg.java @@ -69,6 +69,16 @@ public class CarInteg { return null; } - - + public CarModelPackageDTO getCarModelPackageByThireId(String mtId,String dyId){ + try{ + Result result = carFacade.getCarModelByThireId(mtId,dyId); + if(result.isSuccess()){ + return result.getData(); + } + } catch (Exception e){ + log.error("根据美团/抖音商品id查询车型套餐信息失败",e); + throw new InnerException("根据美团/抖音商品id查询车型套餐信息失败"); + } + return null; + } }