diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardAppThirdOpenDoorDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardAppThirdOpenDoorDto.java new file mode 100644 index 000000000..988fb6ea8 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardAppThirdOpenDoorDto.java @@ -0,0 +1,26 @@ +package com.bsd.pjcloud.hard.api.dto; + +import com.bsd.pjcloud.common.core.constant.enums.UserTypeEnum; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class HardAppThirdOpenDoorDto { + + /** + * 用户id + */ + private Long userId; + + /** + * 用户类型 + */ + private UserTypeEnum userType; + + /** + * 授权id + */ + @NotNull(message = "授权id不能为空") + private Long authId; + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardThirdMiPayDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardThirdMiPayDto.java new file mode 100644 index 000000000..25c4d03af --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardThirdMiPayDto.java @@ -0,0 +1,10 @@ +package com.bsd.pjcloud.hard.api.dto; + +import lombok.Data; + +@Data +public class HardThirdMiPayDto { + + private Long id; + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardThirdMiOrderEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardThirdMiOrderEntity.java index 6bdc1b901..088f26f7c 100755 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardThirdMiOrderEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardThirdMiOrderEntity.java @@ -117,6 +117,12 @@ public class HardThirdMiOrderEntity extends Model { @Schema(description = "支付金额") private int payPrice; + /** + * 原始 sign json 数据 + */ + @Schema(description = "原始 sign json 数据") + private String orgSignJson; + /** * 原始json数据 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardAuthController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardAuthController.java index 00e924d7a..81c768e2f 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardAuthController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardAuthController.java @@ -68,10 +68,19 @@ public class HardAuthController { public R appCreateThirdDoorOrder(@Valid @RequestBody HardAuthAppDto dto) { PjcloudUser user = SecurityUtils.getUser(); dto.setUserId(user.getId()); - dto.setUserType(UserTypeEnum.valueOfByStatus(user.getUserType())); + dto.setUserType(UserTypeEnum.TOC); return R.ok(hardAuthService.appCreateThirdDoorOrder(dto)); } + @Operation(summary = "app创建第三方免密开门", description = "app创建第三方免密开门") + @PostMapping("/app/third-door-open") + public R appThirdDoorOpen(@Valid @RequestBody HardAppThirdOpenDoorDto dto) { + PjcloudUser user = SecurityUtils.getUser(); + dto.setUserId(user.getId()); + dto.setUserType(UserTypeEnum.TOC); + return R.ok(hardAuthService.appThirdDoorOpen(dto)); + } + /* ************************************* end app end ************************************* */ @Operation(summary = "流程错误手动处理", description = "流程错误手动处理") diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardThirdMiOrderController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardThirdMiOrderController.java index 81f547d4e..8e71e9e24 100755 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardThirdMiOrderController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardThirdMiOrderController.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.log.annotation.SysLog; +import com.bsd.pjcloud.hard.api.dto.HardThirdMiPayDto; import com.bsd.pjcloud.hard.api.entity.HardThirdMiOrderEntity; import com.bsd.pjcloud.hard.service.HardThirdMiOrderService; import org.springframework.security.access.prepost.PreAuthorize; @@ -44,6 +45,17 @@ public class HardThirdMiOrderController { return R.ok(); } + /** + * 支付订单 + */ + @Operation(summary = "支付订单", description = "支付订单") + @PostMapping("/admin-pay") + public R adminPay(@RequestBody HardThirdMiPayDto dto) { + hardThirdMiOrderService.adminPay(dto); + return R.ok(); + } + + /** * 分页查询 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardThirdMiOrderMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardThirdMiOrderMapper.java index 0494c6a3a..4cc7c22ff 100755 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardThirdMiOrderMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardThirdMiOrderMapper.java @@ -1,5 +1,6 @@ package com.bsd.pjcloud.hard.mapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; import com.bsd.pjcloud.hard.api.entity.HardThirdMiOrderEntity; import org.apache.ibatis.annotations.Mapper; @@ -7,4 +8,15 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface HardThirdMiOrderMapper extends PjcloudBaseMapper { + default HardThirdMiOrderEntity getByAuthId(Long authId) { + return selectOne(new LambdaQueryWrapper() + .eq(HardThirdMiOrderEntity::getAuthId, authId) + ); + } + + default HardThirdMiOrderEntity getByOrderId(Long orderId) { + return selectOne(new LambdaQueryWrapper() + .eq(HardThirdMiOrderEntity::getOrderId, orderId) + ); + } } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAuthService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAuthService.java index e1ec1aaa3..7d45df5f9 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAuthService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAuthService.java @@ -3,10 +3,7 @@ package com.bsd.pjcloud.hard.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.bsd.pjcloud.common.data.datascope.DataScope; -import com.bsd.pjcloud.hard.api.dto.HardAuthAppDto; -import com.bsd.pjcloud.hard.api.dto.HardAuthDto; -import com.bsd.pjcloud.hard.api.dto.HardAuthErrorChangeDto; -import com.bsd.pjcloud.hard.api.dto.HardGetAuthAppDto; +import com.bsd.pjcloud.hard.api.dto.*; import com.bsd.pjcloud.hard.api.entity.HardAuthEntity; import com.bsd.pjcloud.hard.api.vo.HardAuthVo; import com.bsd.pjcloud.hard.api.vo.HardGetAuthAppVo; @@ -32,6 +29,11 @@ public interface HardAuthService extends IService { */ HardAppCreateThirdDoorOrderVo appCreateThirdDoorOrder(@Valid HardAuthAppDto dto); + /** + * app创建第三方免密开门 + */ + Long appThirdDoorOpen(@Valid HardAppThirdOpenDoorDto dto); + /** * 判断当前用户信誉 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardThirdMiOrderService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardThirdMiOrderService.java index 8ce921075..b09b04179 100755 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardThirdMiOrderService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardThirdMiOrderService.java @@ -1,7 +1,9 @@ package com.bsd.pjcloud.hard.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.hard.api.dto.HardThirdMiPayDto; import com.bsd.pjcloud.hard.api.entity.HardThirdMiOrderEntity; +import jakarta.validation.constraints.NotNull; public interface HardThirdMiOrderService extends IService { @@ -10,4 +12,13 @@ public interface HardThirdMiOrderService extends IService() + .eq(HardThirdMiOrderEntity::getAuthId, authId) + ); + } } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/ali/MiniAlipayServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/ali/MiniAlipayServiceImpl.java index 141fe2f66..7b6491e44 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/ali/MiniAlipayServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/ali/MiniAlipayServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.alipay.api.AlipayClient; import com.alipay.api.AlipayConfig; import com.alipay.api.DefaultAlipayClient; @@ -17,6 +18,7 @@ import com.bsd.pjcloud.hard.api.constant.HardThirdMiTypeEnum; import com.bsd.pjcloud.hard.api.entity.HardThirdMiOrderEntity; import com.bsd.pjcloud.hard.config.MiniAlipayConf; import com.bsd.pjcloud.hard.mapper.HardThirdMiOrderMapper; +import com.bsd.pjcloud.hard.service.HardThirdMiOrderService; import com.bsd.pjcloud.hard.service.MiniAlipayService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -25,6 +27,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDateTime; +import java.util.List; /** * 支付宝小程序支付 @@ -86,6 +89,168 @@ public class MiniAlipayServiceImpl implements MiniAlipayService { } } + /** + * 免密授权 + */ + @Override + public String miDynamicSign(Long userId, UserTypeEnum userType, Long authId) { + HardThirdMiOrderEntity thirdOrder = new HardThirdMiOrderEntity(); + thirdOrder.setBizType(HardThirdMiTypeEnum.MI_ALIPAY.getType()); + thirdOrder.setAuthId(authId); + thirdOrder.setUserId(userId); + thirdOrder.setUserType(userType.getStatus()); + thirdOrder.setCreateOrderTime(LocalDateTime.now()); + thirdOrder.setOrderStatus(HardThirdMiStatusEnum.CREATE_ORDER.getType()); + + ZhimaCreditPayafteruseCreditagreementSignRequest request = new ZhimaCreditPayafteruseCreditagreementSignRequest(); + ZhimaCreditPayafteruseCreditagreementSignModel model = new ZhimaCreditPayafteruseCreditagreementSignModel(); + // 设置芝麻信用服务ID + model.setZmServiceId(conf.getZmServiceId()); + // 设置芝麻外部类目 + model.setCategoryId("credit_pay_after_use"); + model.setOutAgreementNo(String.valueOf(authId)); + request.setBizModel(model); + try { + ZhimaCreditPayafteruseCreditagreementSignResponse response = getClient().sdkExecute(request); + if (!response.isSuccess()) { + log.error("|免密授权|失败,json|{}", response.getBody()); + return null; + } + return response.getBody(); + } catch (Exception e) { + e.printStackTrace(); + log.error("|免密授权|异常", e); + return null; + } finally { + hardThirdMiOrderMapper.insert(thirdOrder); + } + } + + /** + * 查询面密授权 + */ + @Override + public ZhimaCreditPayafteruseCreditagreementQueryResponse miDynamicQueySign(Long authId) { + HardThirdMiOrderEntity thirdMiOrder = hardThirdMiOrderMapper.getByAuthId(authId); + if (ObjectUtil.isEmpty(thirdMiOrder)) { + log.error("|查询面密授权|订单不存在,authId|{}", authId); + return null; + } + HardThirdMiOrderEntity updateObj = new HardThirdMiOrderEntity(); + updateObj.setId(thirdMiOrder.getId()); + + ZhimaCreditPayafteruseCreditagreementQueryRequest request = new ZhimaCreditPayafteruseCreditagreementQueryRequest(); + ZhimaCreditPayafteruseCreditagreementQueryModel model = new ZhimaCreditPayafteruseCreditagreementQueryModel(); + model.setOutAgreementNo(String.valueOf(authId)); + request.setBizModel(model); + try { + ZhimaCreditPayafteruseCreditagreementQueryResponse response = getClient().execute(request); + if (!response.isSuccess()) { + log.error("|查询面密授权|失败,json|{}", response.getBody()); + return null; + } + updateObj.setOrgSignJson(JSONUtil.toJsonStr(response)); + return response; + } catch (Exception e) { + e.printStackTrace(); + log.error("|查询面密授权|异常", e); + return null; + } finally { + if (ObjectUtil.isNotEmpty(updateObj.getOrgSignJson())) { + hardThirdMiOrderMapper.updateById(updateObj); + } + } + } + + /** + * 免密服务下单 + */ + @Override + public ZhimaCreditPayafteruseCreditbizorderOrderResponse miDynamicOrder(Long authId, Long orderId, Long flowId) { + HardThirdMiOrderEntity thirdMiOrder = hardThirdMiOrderMapper.getByAuthId(authId); + if (ObjectUtil.isEmpty(thirdMiOrder)) { + log.error("|免密服务下单|订单不存在,authId|{}", authId); + return null; + } + ZhimaCreditPayafteruseCreditagreementQueryResponse signObj = JSONUtil.toBean(thirdMiOrder.getOrgSignJson(), ZhimaCreditPayafteruseCreditagreementQueryResponse.class); + if (ObjectUtil.isEmpty(signObj)) { + log.error("|免密服务下单|signObj为空,授权错误,authId|{}", authId); + return null; + } + HardThirdMiOrderEntity updateObj = new HardThirdMiOrderEntity(); + updateObj.setId(thirdMiOrder.getId()); + updateObj.setOrderId(orderId); + updateObj.setFlowId(flowId); + updateObj.setOutOrderNo(String.valueOf(orderId)); + + ZhimaCreditPayafteruseCreditbizorderOrderRequest request = new ZhimaCreditPayafteruseCreditbizorderOrderRequest(); + ZhimaCreditPayafteruseCreditbizorderOrderModel model = new ZhimaCreditPayafteruseCreditbizorderOrderModel(); + // 设置商户外部订单号 + model.setOutOrderNo(String.valueOf(orderId)); + // 设置芝麻开通协议号 + model.setCreditAgreementId(signObj.getCreditAgreementId()); + // 设置芝麻外部类目 + model.setCategoryId("credit_pay_after_use"); + // 设置芝麻产品代码 + model.setProductCode("CREDIT_PAY_AFTER_USE"); + // 设置订单标题 + model.setSubject("浦江智能柜芝麻先享"); + // 设置订单描述 + model.setBody("浦江智能柜芝麻先享"); + request.setBizModel(model); + try { + ZhimaCreditPayafteruseCreditbizorderOrderResponse response = getClient().execute(request); + if (!response.isSuccess()) { + log.error("|免密服务下单|失败,json|{}", response.getBody()); + return null; + } + updateObj.setThirdOrderNo(response.getCreditBizOrderId()); + updateObj.setOrgOrderJson(JSONUtil.toJsonStr(response)); + + // 一般是芝麻信用评估不通过、未开通等 + if (List.of("ZHIMA_CHECK_NO_PASS", "ZHIMA_EVALUATE_NO_PASS", "CREDIT_AGREEMENT_INVALID").contains(response.getCode())) { + miDynamicCreate(authId, orderId); + } + + response.getCode(); + return response; + } catch (Exception e) { + e.printStackTrace(); + log.error("|免密服务下单|异常", e); + return null; + } finally { + hardThirdMiOrderMapper.updateById(updateObj); + } + } + + /** + * 创建免密服务订单(风险评估) + */ + private ZhimaCreditPayafteruseCreditbizorderCreateResponse miDynamicCreate(Long authId, Long orderId) { + ZhimaCreditPayafteruseCreditbizorderCreateRequest request = new ZhimaCreditPayafteruseCreditbizorderCreateRequest(); + ZhimaCreditPayafteruseCreditbizorderCreateModel model = new ZhimaCreditPayafteruseCreditbizorderCreateModel(); + // 设置商户外部订单号 + model.setOutOrderNo(String.valueOf(orderId)); + model.setZmServiceId(conf.getZmServiceId()); + model.setAmountType("RISK_AMOUNT"); + model.setCategoryId("credit_pay_after_use"); + model.setSubject("浦江智能柜芝麻先享"); + model.setBody("浦江智能柜芝麻先享"); + request.setBizModel(model); + try { + ZhimaCreditPayafteruseCreditbizorderCreateResponse response = getClient().sdkExecute(request); + if (!response.isSuccess()) { + log.error("|创建免密服务订单(风险评估)|失败,json|{}", response.getBody()); + return null; + } + return response; + } catch (Exception e) { + e.printStackTrace(); + log.error("|创建免密服务订单(风险评估)|异常", e); + return null; + } + } + /** * 创建支付宝免密订单 */ @@ -108,7 +273,7 @@ public class MiniAlipayServiceImpl implements MiniAlipayService { // 设置订单附加信息 bizContent.putOnce("body", "浦江智能柜芝麻先享"); // 设置订单金额 - bizContent.putOnce("total_amount", 5); + bizContent.putOnce("total_amount", 0.01); // 固定 bizContent.putOnce("product_code", "JSAPI_PAY"); // 用户登录id @@ -173,30 +338,40 @@ public class MiniAlipayServiceImpl implements MiniAlipayService { * 支付宝免密扣款 */ @Override - public AlipayTradeOrderPayResponse miPay(String authId, String alipayTradeNo, int price) { + public boolean miPay(HardThirdMiOrderEntity thirdOrder, int totalPrice) { + HardThirdMiOrderEntity updateObj = new HardThirdMiOrderEntity(); + updateObj.setId(thirdOrder.getId()); + updateObj.setPayOrderTime(LocalDateTime.now()); + updateObj.setOrderPrice(totalPrice); + updateObj.setPayPrice(totalPrice); + AlipayTradeOrderPayRequest request = new AlipayTradeOrderPayRequest(); - JSONObject bizContent = new JSONObject(); - // 商家外部协议号,自定义确保唯一 - bizContent.put("out_request_no", authId); - // 支付宝交易号 - bizContent.put("trade_no", alipayTradeNo); - // 信用服务订单本次扣款金额,目前只支持全额扣款(传入的是分四舍五入) - bizContent.put("fulfillment_amount", new BigDecimal(price).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP)); - // 固定值 - bizContent.put("order_pay_mode", "CREDIT_FULFILLMENT_ZM"); + AlipayTradeOrderPayModel model = new AlipayTradeOrderPayModel(); + model.setOutRequestNo(String.valueOf(thirdOrder.getOrderId())); + model.setTradeNo(thirdOrder.getOutOrderNo()); + model.setFulfillmentAmount(new BigDecimal(totalPrice).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP).toString()); + model.setOrderPayMode("CREDIT_FULFILLMENT_ZM"); try { - request.setBizContent(bizContent.toString()); + request.setBizModel(model); AlipayTradeOrderPayResponse response = getClient().execute(request); if (!response.isSuccess()) { log.error("|支付宝免密扣款|失败,json|{}", response.getBody()); - return null; + return false; } log.info("|支付宝免密扣款|成功,json|{}", response.getBody()); - return response; + if (ObjectUtil.equals(response.getCode(), "10000")) { + updateObj.setOrderStatus(HardThirdMiStatusEnum.PAY.getType()); + return true; + } + return false; } catch (Exception e) { e.printStackTrace(); log.error("|支付宝免密扣款|异常", e); - return null; + return false; + } finally { + if (ObjectUtil.isNotEmpty(updateObj.getOrderStatus())) { + hardThirdMiOrderMapper.updateById(updateObj); + } } } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java index 391f2f192..005de5e37 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java @@ -1,11 +1,10 @@ package com.bsd.pjcloud.hard.service.impl.order; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.extra.spring.SpringUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; +import com.alipay.api.response.AlipayTradeOrderPayResponse; import com.alipay.api.response.AlipayTradePayResponse; import com.baomidou.lock.annotation.Lock4j; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -19,7 +18,6 @@ import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.admin.api.utils.DataUtil; import com.bsd.pjcloud.admin.api.vo.UserVO; import com.bsd.pjcloud.canteen.api.feign.RemoteOnlineCanteenSpuService; -import com.bsd.pjcloud.canteen.constant.OrderTypeEnum; import com.bsd.pjcloud.canteen.dto.CanteenSpuUpdateStockReqDTO; import com.bsd.pjcloud.common.core.constant.CacheConstants; import com.bsd.pjcloud.common.core.constant.CommonConstants; @@ -33,6 +31,7 @@ import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.hard.api.constant.HardProductNatureEnum; +import com.bsd.pjcloud.hard.api.constant.HardThirdMiStatusEnum; import com.bsd.pjcloud.hard.api.constant.HardTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardOrderStatusEnum; import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum; @@ -52,6 +51,7 @@ import com.bsd.pjcloud.hard.api.dto.spu.DeductionSpuStockDto; import com.bsd.pjcloud.hard.api.dto.wechat.WechantReverseDto; import com.bsd.pjcloud.hard.api.dto.wechat.WechatMicropayDto; import com.bsd.pjcloud.hard.api.entity.HardApptEntity; +import com.bsd.pjcloud.hard.api.entity.HardThirdMiOrderEntity; import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity; import com.bsd.pjcloud.hard.api.entity.order.HardCarEntity; import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; @@ -62,21 +62,18 @@ import com.bsd.pjcloud.hard.api.vo.HardDoorFlowVo; import com.bsd.pjcloud.hard.api.vo.manager.HardManagerVo; import com.bsd.pjcloud.hard.api.vo.order.HardCarVo; import com.bsd.pjcloud.hard.api.vo.order.HardCreateHardQrCodeScanOrderVo; -import com.bsd.pjcloud.hard.api.vo.order.HardOrderPayTypeVo; import com.bsd.pjcloud.hard.api.vo.order.HardOrderVo; import com.bsd.pjcloud.hard.api.vo.wechat.WechatMicropayVo; +import com.bsd.pjcloud.hard.mapper.HardThirdMiOrderMapper; import com.bsd.pjcloud.hard.mapper.manager.HardManagerMapper; import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper; import com.bsd.pjcloud.hard.service.*; import com.bsd.pjcloud.supermarket.api.feign.RemoteMallProductService; import com.bsd.pjcloud.supermarket.api.feign.RemoteShopSkuService; -import com.bsd.pjcloud.supermarket.api.feign.RemoteShopSpuService; import com.bsd.pjcloud.supermarket.api.feign.RemoteSupermarketSpuService; import com.bsd.pjcloud.supermarket.dto.MallProductStockChangeDTO; import com.bsd.pjcloud.supermarket.dto.SkuStockChangeDTO; import com.bsd.pjcloud.supermarket.dto.SupermarketSpuUpdateStockReqDTO; -import com.bsd.pjcloud.supermarket.entity.ShopSkuEntity; -import com.bsd.pjcloud.supermarket.vo.app.ShopSpuDetailAppVo; import com.bsd.pjcloud.thirdparty.dto.ks.KsRecognitionCallbackDto; import com.bsd.pjcloud.wallet.api.constant.WalletBizEnum; import com.bsd.pjcloud.wallet.api.constant.WalletCodeBizEnum; @@ -89,7 +86,6 @@ import com.bsd.pjcloud.wallet.api.dto.act.ActCancelItemDto; import com.bsd.pjcloud.wallet.api.entity.WalletCodeUseEntity; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity; -import com.bsd.pjcloud.wallet.api.entity.act.ActCancelItemEntity; import com.bsd.pjcloud.wallet.api.feign.*; import com.bsd.pjcloud.wallet.api.utils.WalletDataUtil; import com.bsd.pjcloud.wallet.api.vo.MchManageVo; @@ -99,7 +95,6 @@ import com.bsd.pjcloud.wallet.api.vo.act.ActCancelItemVo; import com.bsd.pjcloud.wallet.api.vo.mch.MchPickUpVo; import com.bsd.pjcloud.wallet.api.vo.mch.MchRuleJoinDtoVo; import jakarta.validation.Valid; -import lombok.Locked; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Lazy; @@ -141,6 +136,7 @@ public class HardOrderServiceImpl extends ServiceImpl pagejoin(Page page, HardOrderDto dto) { @@ -889,7 +886,7 @@ public class HardOrderServiceImpl extends ServiceImpl