Commit b2fc693d by 吕明尚

增加房间语音播报

parent e387b1f9
......@@ -37,7 +37,10 @@ public enum VoiceEnum {
}
public String getValue(String name) {
return name + value;
StringBuilder sb = new StringBuilder();
sb.append(name);
sb.append(value);
return sb.toString();
}
public String getValue() {
......
......@@ -4,17 +4,8 @@ import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.dianping.openapi.sdk.api.oauth.entity.CustomerRefreshTokenResponse;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
......@@ -26,8 +17,6 @@ import share.system.domain.Device;
import share.system.domain.SOrder;
import share.system.domain.SRoom;
import share.system.service.*;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Set;
......@@ -109,54 +98,22 @@ public class RedisTask {
//获取key对应的value
String value = redisUtil.get(String.valueOf(o));
JSONObject jsonObject = new JSONObject(value);
long expire = redisUtil.getExpire(o);
Date expirationTime = jsonObject.getDate("expirationTime");
//判断时间是否在15分钟到14分钟
long expire = (expirationTime.getTime() - new Date().getTime()) / 1000;
if (expire < 60 * 15 && expire > 60 * 14) {
//语音
String orderNo = jsonObject.getStr("orderNo");
SOrder sOrder = isOrderService.selectSOrderByOrderNo(orderNo);
//判断订单单是否存在
if (ObjectUtils.isEmpty(sOrder)) {
redisUtil.delete(o);
throw new BaseException("订单不存在!");
}
LambdaQueryWrapper<Device> deviceLambdaQueryWrapper = new LambdaQueryWrapper<>();
deviceLambdaQueryWrapper.eq(Device::getRoomId, sOrder.getRoomId());
deviceLambdaQueryWrapper.eq(Device::getDevType, DeviceType.DEVICE_0001.getCode());
Device device = deviceService.getOne(deviceLambdaQueryWrapper);
if (ObjectUtils.isEmpty(device)) {
throw new BaseException("设备不存在!");
}
mqttxService.actionExecute(device.getDevId(), sOrder.getConsumerPhone(), VoiceEnum.RENEWAL_REMINDER1.getValue(),
DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN),
DateUtil.format(DateUtil.offsetMinute(new Date(), 1), DatePattern.NORM_DATETIME_PATTERN), "1");
getResult(o, jsonObject, VoiceEnum.RENEWAL_REMINDER1.getValue());
return;
}
//判断时间是否在5分钟到4分钟
if (expire < 60 * 5 && expire > 60 * 4) {
String orderNo = jsonObject.getStr("orderNo");
SOrder sOrder = isOrderService.selectSOrderByOrderNo(orderNo);
//判断订单单是否存在
if (ObjectUtils.isEmpty(sOrder)) {
redisUtil.delete(o);
throw new BaseException("订单不存在!");
}
LambdaQueryWrapper<Device> deviceLambdaQueryWrapper = new LambdaQueryWrapper<>();
deviceLambdaQueryWrapper.eq(Device::getRoomId, sOrder.getRoomId());
deviceLambdaQueryWrapper.eq(Device::getDevType, DeviceType.DEVICE_0001.getCode());
Device device = deviceService.getOne(deviceLambdaQueryWrapper);
if (ObjectUtils.isEmpty(device)) {
throw new BaseException("设备不存在!");
}
mqttxService.actionExecute(device.getDevId(), sOrder.getConsumerPhone(), VoiceEnum.RENEWAL_REMINDER2.getValue(),
DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN),
DateUtil.format(DateUtil.offsetMinute(new Date(), 1), DatePattern.NORM_DATETIME_PATTERN), "1");
getResult(o, jsonObject, VoiceEnum.RENEWAL_REMINDER2.getValue());
return;
}
Date expirationTime = jsonObject.getDate("expirationTime");
//判断是否过期
if (expirationTime.getTime() < new Date().getTime()) {
//获取redis中的订单编号
String orderNo = jsonObject.getStr("orderNo");
SOrder sOrder = isOrderService.selectSOrderByOrderNo(orderNo);
//判断订单单是否存在
......@@ -196,10 +153,51 @@ public class RedisTask {
if (b) {
//删除redis中的值
redisUtil.delete(o);
Device device = new Device();
device.setRoomId(sOrder.getRoomId());
device.setDevType(DeviceType.DEVICE_0001.getCode());
Device device1 = deviceService.selectDeviceList(device).get(0);
if (ObjectUtils.isEmpty(device1)) {
throw new BaseException("设备不存在!");
}
mqttxService.actionExecute(device.getDevId(), sOrder.getConsumerPhone(), VoiceEnum.SEND_CUSTOMER.getValue(),
DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN),
DateUtil.format(DateUtil.offsetMinute(new Date(), 1), DatePattern.NORM_DATETIME_PATTERN), "1");
}
}
});
}
private void getResult(String o, JSONObject jsonObject, String value) {
String orderNo = jsonObject.getStr("orderNo");
SOrder sOrder = isOrderService.selectSOrderByOrderNo(orderNo);
//判断订单单是否存在
if (ObjectUtils.isEmpty(sOrder)) {
redisUtil.delete(o);
throw new BaseException("订单不存在!");
}
Device device = new Device();
device.setRoomId(sOrder.getRoomId());
device.setDevType(DeviceType.DEVICE_0001.getCode());
Device device1 = deviceService.selectDeviceList(device).get(0);
if (ObjectUtils.isEmpty(device1)) {
throw new BaseException("设备不存在!");
}
mqttxService.actionExecute(device.getDevId(), sOrder.getConsumerPhone(), value,
DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN),
DateUtil.format(DateUtil.offsetMinute(new Date(), 1), DatePattern.NORM_DATETIME_PATTERN), "1");
}
private static class Result {
public final SOrder sOrder;
public final Device device;
public Result(SOrder sOrder, Device device) {
this.sOrder = sOrder;
this.device = device;
}
}
}
......@@ -4,6 +4,7 @@ import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONObject;
......@@ -16,6 +17,7 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.ObjectUtils;
import share.common.constant.Constants;
import share.common.core.redis.RedisUtil;
import share.common.enums.*;
......@@ -89,6 +91,9 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme
@Autowired
private ISConsumptionRecordsService sConsumptionRecordsService;
@Autowired
private MqttxService mqttxService;
/**
* 查询订单
*
......@@ -612,6 +617,25 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme
consumerCouponService.updateById(consumerCoupon);
}
}
//续费成功语音播报
if (sOrder.getOrderType().equals(OrderTypeEnum.RENEW.getCode())) {
SOrder sOrder1 = baseMapper.selectSOrderById(sOrder.getId());
//判断订单单是否存在
if (ObjectUtils.isEmpty(sOrder1)) {
redisUtil.delete(ReceiptRdeisEnum.ORDER_NO_KEY.getValue() + sOrder.getOrderNo());
throw new BaseException("订单不存在!");
}
Device device = new Device();
device.setRoomId(sOrder.getRoomId());
device.setDevType(DeviceType.DEVICE_0001.getCode());
Device device1 = deviceService.selectDeviceList(device).get(0);
if (ObjectUtils.isEmpty(device1)) {
throw new BaseException("设备不存在!");
}
mqttxService.actionExecute(device1.getDevId(), sOrder1.getConsumerPhone(), VoiceEnum.RENEWAL_SUCCESS.getValue(),
cn.hutool.core.date.DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN),
cn.hutool.core.date.DateUtil.format(cn.hutool.core.date.DateUtil.offsetMinute(new Date(), 1), DatePattern.NORM_DATETIME_PATTERN), "1");
}
SConsumptionRecords sConsumptionRecords = new SConsumptionRecords();
sConsumptionRecords.setConsumerId(sOrder.getConsumerId());
sConsumptionRecords.setOrderId(sOrder.getId());
......@@ -762,10 +786,10 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme
if (Objects.isNull(sRoomVo)) {
throw new BaseException("房间不存在!");
}
LambdaQueryWrapper<Device> deviceLambdaQueryWrapper = new LambdaQueryWrapper<>();
deviceLambdaQueryWrapper.eq(Device::getRoomId, sOrder.getRoomId());
deviceLambdaQueryWrapper.eq(Device::getDevType, DeviceType.DEVICE_CCEE.getCode());
Device one = deviceService.getOne(deviceLambdaQueryWrapper);
Device device = new Device();
device.setRoomId(sOrder.getRoomId());
device.setDevType(DeviceType.DEVICE_CCEE.getCode());
Device one = deviceService.selectDeviceList(device).get(0);
if (Objects.isNull(one)) {
throw new BaseException("设备不存在!");
}
......@@ -786,6 +810,25 @@ public class SOrderServiceImpl extends ServiceImpl<SOrderMapper, SOrder> impleme
JSONObject jsonObject = new JSONObject(map);
redisUtils.set(ReceiptRdeisEnum.ORDER_NO_KEY.getValue() + sOrder.getOrderNo(), jsonObject.toString());
baseMapper.updateById(sOrder);
Device device1 = new Device();
device1.setRoomId(sOrder.getRoomId());
device1.setDevType(DeviceType.DEVICE_0001.getCode());
Device device2 = deviceService.selectDeviceList(device1).get(0);
if (ObjectUtils.isEmpty(device2)) {
throw new BaseException("设备不存在!");
}
SStore sStore = storeService.getById(sOrder.getStoreId());
String value = "欢迎来到凑角共享棋牌" + sStore.getName();
//延时5秒
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
mqttxService.actionExecute(device2.getDevId(), sOrder.getConsumerPhone(), VoiceEnum.OPEN.getValue(value),
cn.hutool.core.date.DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN),
cn.hutool.core.date.DateUtil.format(cn.hutool.core.date.DateUtil.offsetMinute(new Date(), 1), DatePattern.NORM_DATETIME_PATTERN), "1");
//查询非当前用户,预约时间或使用时间为当前时间的订单,如果存在,房间不可开门
}
SConsumer user = FrontTokenComponent.getWxSConsumerEntry();
......
......@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.util.ObjectUtils;
import share.common.enums.DeviceType;
import share.common.enums.RoleTypeEnum;
import share.common.exception.base.BaseException;
......@@ -232,10 +233,10 @@ public class SRoomServiceImpl extends ServiceImpl<SRoomMapper, SRoom> implements
if (Objects.isNull(room)) {
throw new RuntimeException("房间不存在");
}
LambdaQueryWrapper<Device> deviceLambdaQueryWrapper = new LambdaQueryWrapper<>();
deviceLambdaQueryWrapper.eq(Device::getRoomId, id);
deviceLambdaQueryWrapper.eq(Device::getDevType, DeviceType.DEVICE_CCEE.getCode());
Device one = deviceService.getOne(deviceLambdaQueryWrapper);
Device device = new Device();
device.setRoomId(id);
device.setDevType(DeviceType.DEVICE_CCEE.getCode());
Device one = deviceService.selectDeviceList(device).get(0);
if (Objects.isNull(one)) {
throw new BaseException("设备不存在!");
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment