feat:广播
This commit is contained in:
1 parent
081dacce4e
commit
07466a7c90
6 files changed
+104
-75
No files matched your search
+1
-2
@@ -44,8 +44,7 @@ public class HardBroadcastController {
|
||||
|
||||
@Operation(summary = "android查询今日的广播", description = "android查询今日的广播")
|
||||
@GetMapping("/ad/today")
|
||||
public R<Page<HardBroadcastVo>> androidToday(@ParameterObject Page page) {
|
||||
HardBroadcastDto dto = new HardBroadcastDto();
|
||||
public R<Page<HardBroadcastVo>> androidToday(@ParameterObject Page page, @RequestBody HardBroadcastDto dto) {
|
||||
DataScope dataScope = null;
|
||||
LocalDate today = LocalDate.now();
|
||||
dto.setIsDone(YesNoEnum.NO.getCode());
|
||||
|
||||
+1
-1
@@ -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();
|
||||
|
||||
+83
-59
@@ -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<HardBroadcastMapper, H
|
||||
}
|
||||
if (ObjectUtil.notEqual(hardOrderType, HardOrderTypeEnum.RESERVE)) return;
|
||||
// 是否重复
|
||||
HardBroadcastEntity broadcastDetail = baseMapper.selectOne(new LambdaQueryWrapper<HardBroadcastEntity>()
|
||||
Long broadcastCount = baseMapper.selectCount(new LambdaQueryWrapper<HardBroadcastEntity>()
|
||||
.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<HardManagerEntity>()
|
||||
List<HardManagerEntity> hardList = hardManagerMapper.selectList(new LambdaQueryWrapper<HardManagerEntity>()
|
||||
.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<HardBroadcastMapper, H
|
||||
log.error("|{}|发送线下订餐mq消息失败,生成发送消息错误|{}|", TAG, orderdetail.getId());
|
||||
return;
|
||||
}
|
||||
HardBroadcastEntity saveObj = HardBroadcastEntity.builder()
|
||||
.userId(orderdetail.getUserId())
|
||||
.hardId(hardDetail.getId())
|
||||
.topic(hardDetail.getMainTopic())
|
||||
.bizType(HardBroadcastEnum.OFFLINE_CANTEEN_RESERVE.getType())
|
||||
.bizId(String.valueOf(orderdetail.getId()))
|
||||
.title(HardBroadcastEnum.OFFLINE_CANTEEN_RESERVE.getDescription())
|
||||
.content(content)
|
||||
.broadcastCount(0)
|
||||
.broadcastMaxCount(20)
|
||||
.isBroadcast(YesNoEnum.YES.getCode())
|
||||
.isDone(YesNoEnum.NO.getCode())
|
||||
.build();
|
||||
baseMapper.insert(saveObj);
|
||||
String topic = saveObj.getTopic().replaceAll("/#", "");
|
||||
// 发送mq
|
||||
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(saveObj.getId()));
|
||||
msg.setTitle(saveObj.getTitle());
|
||||
msg.setContent(saveObj.getContent());
|
||||
msg.setBroadcastMaxCount(saveObj.getBroadcastMaxCount());
|
||||
msg.setProductDesc(orderdetail.getProductDesc());
|
||||
msg.setPayPrice(orderdetail.getPayPrice());
|
||||
msg.setHourType(orderdetail.getHourType());
|
||||
msg.setIsDone(saveObj.getIsDone());
|
||||
remoteMqttEventService.sendTakeFoodBroadcast(msg);
|
||||
for (HardManagerEntity v : hardList) {
|
||||
HardBroadcastEntity saveObj = HardBroadcastEntity.builder()
|
||||
.userId(orderdetail.getUserId())
|
||||
.hardId(v.getId())
|
||||
.topic(v.getMainTopic())
|
||||
.bizType(HardBroadcastEnum.OFFLINE_CANTEEN_RESERVE.getType())
|
||||
.bizId(String.valueOf(orderdetail.getId()))
|
||||
.title(HardBroadcastEnum.OFFLINE_CANTEEN_RESERVE.getDescription())
|
||||
.content(content)
|
||||
.broadcastCount(0)
|
||||
.broadcastMaxCount(20)
|
||||
.isBroadcast(YesNoEnum.YES.getCode())
|
||||
.isDone(YesNoEnum.NO.getCode())
|
||||
.build();
|
||||
baseMapper.insert(saveObj);
|
||||
String topic = saveObj.getTopic().replaceAll("/#", "");
|
||||
// 发送mq
|
||||
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(saveObj.getId()));
|
||||
msg.setOrderId(String.valueOf(orderdetail.getId()));
|
||||
msg.setTitle(saveObj.getTitle());
|
||||
msg.setContent(saveObj.getContent());
|
||||
msg.setBroadcastMaxCount(saveObj.getBroadcastMaxCount());
|
||||
msg.setProductDesc(orderdetail.getProductDesc());
|
||||
msg.setPayPrice(orderdetail.getPayPrice());
|
||||
msg.setHourType(orderdetail.getHourType());
|
||||
msg.setIsDone(saveObj.getIsDone());
|
||||
remoteMqttEventService.sendTakeFoodBroadcast(msg);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -157,35 +163,53 @@ public class HardBroadcastServiceImpl extends ServiceImpl<HardBroadcastMapper, H
|
||||
return;
|
||||
}
|
||||
if (ObjectUtil.notEqual(hardOrderType, HardOrderTypeEnum.RESERVE)) return;
|
||||
HardBroadcastEntity broadcastDetail = baseMapper.selectOne(new LambdaQueryWrapper<HardBroadcastEntity>().eq(HardBroadcastEntity::getBizId, orderdetail.getId()));
|
||||
HardBroadcastEntity broadcastDetail = baseMapper.selectOne(new LambdaQueryWrapper<HardBroadcastEntity>()
|
||||
.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<HardManagerEntity> hardList = hardManagerMapper.selectList(new LambdaQueryWrapper<HardManagerEntity>()
|
||||
.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<HardBroadcastEntity>().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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
-12
@@ -7,18 +7,6 @@
|
||||
<result property="parentCarId" column="parent_car_id"/>
|
||||
<result property="productId" column="product_id"/>
|
||||
<result property="productName" column="product_name"/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<result property="productPic" column="product_pic"/>
|
||||
<result property="productPrice" column="product_price"/>
|
||||
<result property="productCount" column="product_count"/>
|
||||
|
||||
+15
@@ -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;
|
||||
|
||||
/**
|
||||
* 预定标题
|
||||
*/
|
||||
|
||||
+4
-1
@@ -141,8 +141,11 @@ public class MqttEventController {
|
||||
@PostMapping("/send-take-food-broadcast")
|
||||
public R<Boolean> 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()));
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user