diff --git a/db/800pjcloudx_hardware.sql b/db/800pjcloudx_hardware.sql index d644e1e13..e5f62a7c3 100644 --- a/db/800pjcloudx_hardware.sql +++ b/db/800pjcloudx_hardware.sql @@ -111,31 +111,31 @@ CREATE TABLE hard_door_flow order_id bigint DEFAULT NULL COMMENT '订单编号', auth_id bigint DEFAULT NULL COMMENT '授权编号', # 请求开门 - request_open_dto varchar(512) DEFAULT NULL COMMENT '请求开门参数', - request_open_vo varchar(512) DEFAULT NULL COMMENT '请求开门返回', + request_open_dto text DEFAULT NULL COMMENT '请求开门参数', + request_open_vo text DEFAULT NULL COMMENT '请求开门返回', request_open_time datetime DEFAULT NULL COMMENT '请求开门时间', # 请求开门回调 is_open varchar(32) DEFAULT NULL COMMENT '是否开门', open_callback_time datetime DEFAULT NULL COMMENT '开门回调时间', - open_callback_vo varchar(512) DEFAULT NULL COMMENT '开门回调结果', + open_callback_vo text DEFAULT NULL COMMENT '开门回调结果', # 视频回调 - video_callback_vo varchar(512) DEFAULT NULL COMMENT '视频回调结果', + video_callback_vo text DEFAULT NULL COMMENT '视频回调结果', video_callback_time datetime DEFAULT NULL COMMENT '视频回调时间', # sku识别 - sku_submit_dto varchar(512) DEFAULT NULL COMMENT 'sku识别提交参数', - sku_submit_vo varchar(512) DEFAULT NULL COMMENT 'sku识别提交结果', + sku_submit_dto text DEFAULT NULL COMMENT 'sku识别提交参数', + sku_submit_vo text DEFAULT NULL COMMENT 'sku识别提交结果', sku_submit_recog_id varchar(32) DEFAULT NULL COMMENT 'sku识别提交id(用于查询)', sku_submit_time datetime DEFAULT NULL COMMENT 'sku识别提交时间', # sku识别回调 - sku_callback_vo varchar(512) DEFAULT NULL COMMENT 'sku识别回调结果', + sku_callback_vo text DEFAULT NULL COMMENT 'sku识别回调结果', sku_callback_time datetime DEFAULT NULL COMMENT 'sku识别回调时间', # sku主动获取 - sku_driving_dto varchar(512) DEFAULT NULL COMMENT 'sku识别主动获取参数', - sku_driving_vo varchar(512) DEFAULT NULL COMMENT 'sku识别主动获取结果', + sku_driving_dto text DEFAULT NULL COMMENT 'sku识别主动获取参数', + sku_driving_vo text DEFAULT NULL COMMENT 'sku识别主动获取结果', sku_driving_time datetime DEFAULT NULL COMMENT 'sku识别主动获取时间', # 流程相关 flow_status varchar(32) DEFAULT NULL COMMENT '流程状态', - error varchar(512) DEFAULT NULL COMMENT '流程错误信息', + error text DEFAULT NULL COMMENT '流程错误信息', error_desc varchar(64) DEFAULT NULL COMMENT '流程错误描述(展示)', # 购买成功 pay_time datetime DEFAULT NULL COMMENT '购买成功时间', diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardBroadcastServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardBroadcastServiceImpl.java index ea55921eb..6c5eb19ab 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardBroadcastServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardBroadcastServiceImpl.java @@ -106,7 +106,7 @@ public class HardBroadcastServiceImpl extends ServiceImpl() + .eq(HardDoorFlowEntity::getUserId, dto.getUserId()) + .eq(HardDoorFlowEntity::getIsOpen, YesNoEnum.NO.getCode()) + .eq(HardDoorFlowEntity::getBizType, HardDoorFlowBizEnum.PAY_OPEN.getType()) + .between(HardDoorFlowEntity::getCreateTime, LocalDateTime.now().minus(1, ChronoUnit.HOURS), LocalDateTime.now()) + ); + if (isHaveFlowCount > 0) throw new RuntimeException("正在购买中请勿重复操作,请稍后再试"); // 查询货柜是否配置spu信息 List spuList = hardSpuJoinService.getSpuList(hardDoorDetail.getId(), dto.getCabinetNo()); if (ObjectUtil.isEmpty(spuList) || spuList.isEmpty()) throw new RuntimeException("货柜商品信息为空,请上架"); @@ -221,25 +231,19 @@ public class HardDoorFlowServiceImpl extends ServiceImpl videoList = dto.getVideoList().stream().map(DoorVideoCallbackDto.Video::getVideoUrl).toList(); // 提交柜子商品信息 @@ -293,8 +300,6 @@ public class HardDoorFlowServiceImpl extends ServiceImpl { - updateObj.setRequestOpenDto(JSONUtil.toJsonStr(dto)); - updateObj.setRequestOpenVo(JSONUtil.toJsonStr(vo)); - updateObj.setRequestOpenTime(LocalDateTime.now()); - if (ObjectUtil.isNotEmpty(flow.getAuthId())) { - updateObj.setAuthId(flow.getAuthId()); - } - if (ObjectUtil.isNotEmpty(flow.getHardId())) { - updateObj.setHardId(flow.getHardId()); - } - if (ObjectUtil.isNotEmpty(flow.getHardDoorId())) { - updateObj.setHardDoorId(flow.getHardDoorId()); - } - if (ObjectUtil.isNotEmpty(flow.getCabinetNo())) { - updateObj.setCabinetNo(flow.getCabinetNo()); - } - if (ObjectUtil.isNotEmpty(error)) { - updateObj.setErrorDesc("智能柜申请开门错误"); - } - break; - } - // 智能柜开门响应 - case FLOW_CALLBACK_OPEN -> { - updateObj.setOpenCallbackVo(JSONUtil.toJsonStr(vo)); - updateObj.setOpenCallbackTime(LocalDateTime.now()); - if (ObjectUtil.isNotEmpty(flow.getIsOpen())) { - updateObj.setIsOpen(flow.getIsOpen()); - } - if (ObjectUtil.isNotEmpty(flow.getOrderId())) { - updateObj.setOrderId(flow.getOrderId()); - } - if (ObjectUtil.isNotEmpty(error)) { - updateObj.setErrorDesc("智能柜开门响应错误"); - } - break; - } - // 智能柜视频回调 - case FLOW_CALLBACK_VIDEO -> { - updateObj.setVideoCallbackVo(JSONUtil.toJsonStr(vo)); - updateObj.setVideoCallbackTime(LocalDateTime.now()); - if (ObjectUtil.isNotEmpty(error)) { - updateObj.setErrorDesc("智能柜视频回调错误"); - } - break; - } - // 商品提交识别提交 - case FLOW_SUBMIT_RECOGNITION -> { - updateObj.setSkuSubmitDto(JSONUtil.toJsonStr(dto)); - updateObj.setSkuSubmitVo(JSONUtil.toJsonStr(vo)); - updateObj.setSkuSubmitTime(LocalDateTime.now()); - if (ObjectUtil.isNotEmpty(flow.getSkuSubmitRecogId())) { - updateObj.setSkuSubmitRecogId(flow.getSkuSubmitRecogId()); - } - if (ObjectUtil.isNotEmpty(error)) { - updateObj.setErrorDesc("商品提交识别提交错误"); - } - break; - } - // 商品识别响应 - case FLOW_CALLBACK_RECOGNITION -> { - updateObj.setSkuCallbackVo(JSONUtil.toJsonStr(vo)); - updateObj.setSkuCallbackTime(LocalDateTime.now()); - if (ObjectUtil.isNotEmpty(error)) { - updateObj.setErrorDesc("商品识别响应错误"); - } - break; - } - case FLOW_PAY_ORDER -> { - updateObj.setPayTime(LocalDateTime.now()); - if (ObjectUtil.isNotEmpty(error)) { - updateObj.setErrorDesc("商品识别响应错误"); - } - break; - } - } - baseMapper.updateById(updateObj); - } - private void disposeList(List list, HardDoorFlowDto dto) { if (ObjectUtil.isEmpty(list)) return; // 设备 diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/hard/HardThirdSelfZyServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/hard/HardThirdSelfZyServiceImpl.java index 51683b92e..6ef26efcb 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/hard/HardThirdSelfZyServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/hard/HardThirdSelfZyServiceImpl.java @@ -97,7 +97,6 @@ public class HardThirdSelfZyServiceImpl implements HardThirdSelfZyService { .parentCarId(null) .sysType(null) .orderStatus(HardOrderStatusEnum.CREATE.getType()) - .merchantId(null) .orderType(HardOrderTypeEnum.ZY.getType()) .payType(HardPayTypeEnum.WALLET_CARD.getType()) .orderSourceTypeId(null) @@ -108,6 +107,7 @@ public class HardThirdSelfZyServiceImpl implements HardThirdSelfZyService { .productDesc(subject) .walletId(wallet.getId()) .build(); + log.info("|{}| 正元支付创建订单参数|{}", TAG, JSONUtil.toJsonStr(orderObj)); boolean isCreateOrder = hardOrderService.save(orderObj); if (!isCreateOrder) throw new RuntimeException("创建订单失败"); hardOrderService.fastReduceBalance(orderObj); 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 70c4c54d5..869c1be6f 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 @@ -15,6 +15,7 @@ import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.admin.api.utils.DataUtil; import com.bsd.pjcloud.canteen.api.feign.RemoteOnlineCanteenSpuService; import com.bsd.pjcloud.canteen.dto.CanteenSpuUpdateStockReqDTO; +import com.bsd.pjcloud.common.core.constant.enums.MerchantTypeEnum; import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum; import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.core.util.CollectionUtils; @@ -303,7 +304,7 @@ public class HardOrderServiceImpl extends ServiceImpl 0) throw new RuntimeException("您有" + reserveCount + "笔未核销的预约订单,请先核销"); + if (reserveCount > 100) throw new RuntimeException("您有" + reserveCount + "笔未核销的预约订单,请先核销"); // 钱包 WalletManageEntity wallet = remoteWalletService.getWallet(dto.getUserId(), dto.getWalletType()).getData(); if (ObjectUtil.isEmpty(wallet)) throw new RuntimeException("用户钱包不存在"); @@ -831,9 +832,10 @@ public class HardOrderServiceImpl extends ServiceImpl() .eq(HardOrderEntity::getUserId, userId) + .eq(HardOrderEntity::getMerchantType, MerchantTypeEnum.CANTEEN.getType()) .eq(HardOrderEntity::getSysType, HardTypeEnum.CANTEEN.getType()) .eq(HardOrderEntity::getOrderType, HardOrderTypeEnum.RESERVE.getType()) - .ne(HardOrderEntity::getOrderStatus, HardOrderStatusEnum.CANCEL.getType()) + .eq(HardOrderEntity::getOrderStatus, HardOrderStatusEnum.PAY.getType()) ); } diff --git a/pjcloud-mqtt/pjcloud-mqtt-api/src/main/java/com/bsd/pjcloud/mqtt/dto/hard/HardTakeFoodBroadcastMsg.java b/pjcloud-mqtt/pjcloud-mqtt-api/src/main/java/com/bsd/pjcloud/mqtt/dto/hard/HardTakeFoodBroadcastMsg.java index 4f79a1f62..ade86a1a9 100644 --- a/pjcloud-mqtt/pjcloud-mqtt-api/src/main/java/com/bsd/pjcloud/mqtt/dto/hard/HardTakeFoodBroadcastMsg.java +++ b/pjcloud-mqtt/pjcloud-mqtt-api/src/main/java/com/bsd/pjcloud/mqtt/dto/hard/HardTakeFoodBroadcastMsg.java @@ -19,7 +19,7 @@ public class HardTakeFoodBroadcastMsg extends MqttHardBaseMsg { /** * 预定用户名 */ - private String userName; + private String username; /** * 预定用户手机号 @@ -56,4 +56,9 @@ public class HardTakeFoodBroadcastMsg extends MqttHardBaseMsg { */ private Integer payPrice; + /** + * 预定时间类型 + */ + private String hourType; + } diff --git a/pjcloud-mqtt/pjcloud-mqtt-biz/src/main/java/com/bsd/pjcloud/mqtt/service/MqttService.java b/pjcloud-mqtt/pjcloud-mqtt-biz/src/main/java/com/bsd/pjcloud/mqtt/service/MqttService.java index 9f71cb93a..5195d6570 100644 --- a/pjcloud-mqtt/pjcloud-mqtt-biz/src/main/java/com/bsd/pjcloud/mqtt/service/MqttService.java +++ b/pjcloud-mqtt/pjcloud-mqtt-biz/src/main/java/com/bsd/pjcloud/mqtt/service/MqttService.java @@ -10,6 +10,7 @@ import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; import org.springframework.stereotype.Component; import org.springframework.validation.annotation.Validated; +import java.nio.charset.StandardCharsets; import java.util.Objects; @Validated @@ -96,7 +97,7 @@ public class MqttService { MqttMessage message = new MqttMessage(); message.setQos(qos); message.setRetained(retained); - message.setPayload(pushMessage.getBytes()); + message.setPayload(pushMessage.getBytes(StandardCharsets.UTF_8)); MqttTopic mTopic = MqttService.getClient().getTopic(topic); MqttDeliveryToken token; try { diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/pom.xml b/pjcloud-thirdparty/pjcloud-thirdparty-biz/pom.xml index c0e8c3e3e..34dfa75ed 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/pom.xml +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/pom.xml @@ -42,10 +42,6 @@ com.bsd pjcloud-common-data - - com.bsd - - com.bsd diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorApiServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorApiServiceImpl.java index 19da90fe1..939723b06 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorApiServiceImpl.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorApiServiceImpl.java @@ -387,11 +387,14 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { log.error("|{}|apiParseSign 接口解签错误headers为空dto|{}|headers|{}|", TAG, json, JSONUtil.toJsonStr(headers)); return false; } - String appid = headers.get("appId"); - String noncestr = headers.get("nonceStr"); - String timestamp = headers.get("timestamp"); - String sign = headers.get("sign"); - + Map transitionHeader = new LinkedHashMap<>(); + for (Map.Entry entry : headers.entrySet()) { + transitionHeader.put(entry.getKey().toUpperCase(), entry.getValue()); + } + String appid = transitionHeader.get("APPID"); + String noncestr = transitionHeader.get("NONCESTR"); + String timestamp = transitionHeader.get("TIMESTAMP"); + String sign = transitionHeader.get("SIGN"); if (ObjectUtil.notEqual(doorConfig.getAppId(), appid)) { log.error("|{}|apiParseSign 接口解签错误appId错误dto|{}|headers|{}|appid|{}|nonceStr|{}|timestamp|{}|sign|{}|", TAG, json, JSONUtil.toJsonStr(headers), appid, noncestr, timestamp, sign); return false; diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java index 69574be28..6a48a2c5b 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/recharge/WalletRechargeApplyController.java @@ -43,7 +43,7 @@ public class WalletRechargeApplyController { /* ************************************* start callback start ************************************* */ @Inner(value = false) @PostMapping("/apply-callback") - public void applyCallback(@RequestBody ProcessNodeRecordAssignUserParamDto dto, @RequestParam Long tenantId) { + public void applyCallback(@RequestBody ProcessNodeRecordAssignUserParamDto dto, @RequestParam(required = false) Long tenantId) { walletRechargeApplyService.applyCallback(dto, tenantId); } /* ************************************* start callback start ************************************* */