diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardBroadcastController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardBroadcastController.java index 788a365a2..990dc108b 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardBroadcastController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardBroadcastController.java @@ -44,8 +44,7 @@ public class HardBroadcastController { @Operation(summary = "android查询今日的广播", description = "android查询今日的广播") @GetMapping("/ad/today") - public R> androidToday(@ParameterObject Page page) { - HardBroadcastDto dto = new HardBroadcastDto(); + public R> androidToday(@ParameterObject Page page, @RequestBody HardBroadcastDto dto) { DataScope dataScope = null; LocalDate today = LocalDate.now(); dto.setIsDone(YesNoEnum.NO.getCode()); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java index f7d1f2e97..9bd6ad1e3 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java @@ -163,7 +163,7 @@ public class HardOrderController { @Operation(summary = "app创建订单", description = "app创建订单") @GetMapping("/app/create-order") - @Idempotent(expireTime = 10, info = "正在创建订单中,请勿重复操作") + @Idempotent(expireTime = 3, info = "正在创建订单中,请勿重复操作") public R appCreateOrder(@RequestParam Long carParentId, @RequestParam Long apptId, @RequestParam HardTypeEnum hardType) { PjcloudUser user = SecurityUtils.getUser(); HardAppCreateOrderDto dto = HardAppCreateOrderDto.builder().carParentId(carParentId).walletType(WalletTypeEnum.EAT).hardType(hardType).userId(user.getId()).orderType(HardOrderTypeEnum.RESERVE).payType(HardPayTypeEnum.WALLET_DEFAULT).apptId(apptId).build(); 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 c28dda934..1c1008282 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 @@ -3,6 +3,7 @@ package com.bsd.pjcloud.hard.service.impl; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.admin.api.dto.UserInfo; @@ -81,19 +82,19 @@ public class HardBroadcastServiceImpl extends ServiceImpl() + Long broadcastCount = baseMapper.selectCount(new LambdaQueryWrapper() .eq(HardBroadcastEntity::getBizId, orderdetail.getId()) ); - if (ObjectUtil.isNotEmpty(broadcastDetail)) { + if (broadcastCount >= 1) { log.error("|{}|发送线下订餐mq消息失败,广播已存在|{}|", TAG, orderdetail.getId()); return; } // 查询设备 - HardManagerEntity hardDetail = hardManagerMapper.selectOne(new LambdaQueryWrapper() + List hardList = hardManagerMapper.selectList(new LambdaQueryWrapper() .eq(HardManagerEntity::getMerchantId, orderdetail.getMerchantId()) .eq(HardManagerEntity::getIsTakeFood, YesNoEnum.YES.getCode()) ); - if (ObjectUtil.isEmpty(hardDetail)) { + if (ObjectUtil.isEmpty(hardList)) { log.error("|{}|发送线下订餐mq消息失败,默认订餐设备不存在|{}|", TAG, orderdetail.getId()); return; } @@ -106,37 +107,42 @@ public class HardBroadcastServiceImpl extends ServiceImpl().eq(HardBroadcastEntity::getBizId, orderdetail.getId())); + HardBroadcastEntity broadcastDetail = baseMapper.selectOne(new LambdaQueryWrapper() + .eq(HardBroadcastEntity::getBizId, orderdetail.getId()) + .orderByDesc(HardBroadcastEntity::getCreateTime) + .orderByDesc(HardBroadcastEntity::getId) + .last("limit 1") + ); if (ObjectUtil.isEmpty(broadcastDetail)) { log.error("|{}|doneBroadcast发送mq消息失败,广播不存在|{}|", TAG, orderdetail.getId()); return; } - HardBroadcastEntity updateObj = HardBroadcastEntity.builder() - .id(broadcastDetail.getId()) - .isBroadcast(YesNoEnum.NO.getCode()) - .isDone(YesNoEnum.YES.getCode()) - .isDoneTime(orderdetail.getCreateTime()) - .build(); - baseMapper.updateById(updateObj); + // 查询设备 + List hardList = hardManagerMapper.selectList(new LambdaQueryWrapper() + .eq(HardManagerEntity::getMerchantId, orderdetail.getMerchantId()) + .eq(HardManagerEntity::getIsTakeFood, YesNoEnum.YES.getCode()) + ); + if (ObjectUtil.isEmpty(hardList)) { + log.error("|{}|发送线下订餐完成mq消息失败,默认订餐设备不存在|{}|", TAG, orderdetail.getId()); + return; + } + baseMapper.update(new LambdaUpdateWrapper().set(HardBroadcastEntity::getIsBroadcast, YesNoEnum.NO.getCode()) + .set(HardBroadcastEntity::getIsDone, YesNoEnum.YES.getCode()) + .set(HardBroadcastEntity::getIsDoneTime, orderdetail.getCreateTime()) + .eq(HardBroadcastEntity::getBizId, orderdetail.getId()) + .eq(HardBroadcastEntity::getIsDone, YesNoEnum.NO.getCode()) + ); // 发送mq - String topic = broadcastDetail.getTopic().replaceAll("/#", ""); - HardTakeFoodBroadcastMsg msg = new HardTakeFoodBroadcastMsg(); - msg.setTopic(topic); - msg.setAction(MqttActionEnum.TAKE_FOOD_BROADCAST); - msg.setUserId(String.valueOf(userInfo.getSysUser().getUserId())); - msg.setUsername(userInfo.getSysUser().getName()); - msg.setUserMobile(userInfo.getSysUser().getPhone()); - msg.setId(String.valueOf(broadcastDetail.getId())); - msg.setTitle(broadcastDetail.getTitle()); - msg.setContent(broadcastDetail.getContent()); - msg.setBroadcastMaxCount(broadcastDetail.getBroadcastMaxCount()); - msg.setProductDesc(orderdetail.getProductDesc()); - msg.setPayPrice(orderdetail.getPayPrice()); - msg.setHourType(orderdetail.getHourType()); - msg.setIsDone(updateObj.getIsDone()); - remoteMqttEventService.sendTakeFoodBroadcast(msg); + for (HardManagerEntity v : hardList) { + String topic = v.getMainTopic().replaceAll("/#", ""); + HardTakeFoodBroadcastMsg msg = new HardTakeFoodBroadcastMsg(); + msg.setTopic(topic); + msg.setMchDeptId(v.getDeptId()); + msg.setHardwareId(v.getId()); + msg.setAction(MqttActionEnum.TAKE_FOOD_BROADCAST); + msg.setUserId(String.valueOf(userInfo.getSysUser().getUserId())); + msg.setUsername(userInfo.getSysUser().getName()); + msg.setUserMobile(userInfo.getSysUser().getPhone()); + msg.setId(String.valueOf(v.getId())); + msg.setOrderId(String.valueOf(orderdetail.getId())); + msg.setTitle(broadcastDetail.getTitle()); + msg.setContent(broadcastDetail.getContent()); + msg.setBroadcastMaxCount(broadcastDetail.getBroadcastMaxCount()); + msg.setProductDesc(orderdetail.getProductDesc()); + msg.setPayPrice(orderdetail.getPayPrice()); + msg.setHourType(orderdetail.getHourType()); + msg.setIsDone(YesNoEnum.YES.getCode()); + remoteMqttEventService.sendTakeFoodBroadcast(msg); + } } /** diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml index 86f1e9144..73cb2ddab 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml @@ -7,18 +7,6 @@ - - - - - - - - - - - - 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 b00de7aac..07621f7c9 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 @@ -6,6 +6,16 @@ import lombok.Data; @Data public class HardTakeFoodBroadcastMsg extends MqttHardBaseMsg { + /** + * 商户部门id + */ + private Long mchDeptId; + + /** + * 硬件id + */ + private Long hardwareId; + /** * 发送硬件的topic */ @@ -31,6 +41,11 @@ public class HardTakeFoodBroadcastMsg extends MqttHardBaseMsg { */ private String id; + /** + * 订单id + */ + private String orderId; + /** * 预定标题 */ diff --git a/pjcloud-mqtt/pjcloud-mqtt-biz/src/main/java/com/bsd/pjcloud/mqtt/controller/MqttEventController.java b/pjcloud-mqtt/pjcloud-mqtt-biz/src/main/java/com/bsd/pjcloud/mqtt/controller/MqttEventController.java index 358e6a5d7..0b3d298e5 100644 --- a/pjcloud-mqtt/pjcloud-mqtt-biz/src/main/java/com/bsd/pjcloud/mqtt/controller/MqttEventController.java +++ b/pjcloud-mqtt/pjcloud-mqtt-biz/src/main/java/com/bsd/pjcloud/mqtt/controller/MqttEventController.java @@ -141,8 +141,11 @@ public class MqttEventController { @PostMapping("/send-take-food-broadcast") public R sendTakeFoodBroadcast(@RequestBody HardTakeFoodBroadcastMsg dto) { MqttBaseDto mqttBaseDto = new MqttBaseDto(); + mqttEventService.getTopicParamsByUserDeptId(mqttBaseDto, dto.getMchDeptId()); + mqttBaseDto.setMerchantDeptId(dto.getMchDeptId()); + mqttBaseDto.setHardwareId(dto.getHardwareId()); mqttBaseDto.setAction(dto.getAction()); mqttBaseDto.setData(dto); - return R.ok(mqttEventService.sendTakeFoodBroadcast(mqttBaseDto, dto.getTopic())); + return R.ok(mqttEventService.sendTakeFoodBroadcast(mqttBaseDto, mqttBaseDto.getTopic())); } }