From 10626d44aeb8d2e249c01b66e9b2ca999b2b2975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=93=E7=84=B1?= Date: Tue, 7 Jul 2020 23:05:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A0=E7=89=A9=E7=AC=BC=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ifish/serviceImpl/BaseServiceImpl.java | 95 +++++++++++++++---- 1 file changed, 75 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/ifish/serviceImpl/BaseServiceImpl.java b/src/main/java/com/ifish/serviceImpl/BaseServiceImpl.java index ef8cec4..84ec052 100644 --- a/src/main/java/com/ifish/serviceImpl/BaseServiceImpl.java +++ b/src/main/java/com/ifish/serviceImpl/BaseServiceImpl.java @@ -566,6 +566,9 @@ public class BaseServiceImpl implements BaseService { } //需要新增 if (bln) { + if (device.getHardwareType() != null && device.getHardwareType().equals("3f")) { + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "设备类型不匹配,请重新选择入口绑定"); + } //新增关联关系 if (device.getHardwareType() != null && device.getHardwareType().equals("3a")) { deviceUser.setShowName("加热器" + (int) (Math.random() * 9000 + 1000)); @@ -593,8 +596,7 @@ public class BaseServiceImpl implements BaseService { public Object bindPetDevice(User user, String macAddress, String storeName) { System.out.println("bindPetDevice --- userId : " + user.getUserId() + ", mac : " + macAddress + ", storeName : " + storeName); User tmpUser = userDao.get(user.getUserId()); - //新增用户拥有设备 - DevicePetUser devicePetUser = new DevicePetUser(); + Device device = this.deviceDao.findUniqueByProperty(Restrictions.eq("macAddress", macAddress)); if (device == null) { //新增设备信息 @@ -607,30 +609,83 @@ public class BaseServiceImpl implements BaseService { device.setCreateDate(date); device.setCreateTime(date); device = this.deviceDao.save(device); - } else if (!device.getHardwareType().equals("3f")) { + } + if (device.getHardwareType() != null && !device.getHardwareType().equals("3f")) { return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "设备类型不匹配,请重新选择入口绑定"); + } + //新增用户拥有设备 + DevicePetUser devicePetUser = devicePetUserDao.getDevicePetUserByUseridAndDeviceId(String.valueOf(user.getUserId()), String.valueOf(device.getDeviceId())); + List devicePetUsers = devicePetUserDao.findByDeviceId(device.getDeviceId() == null ? 0 : device.getDeviceId()); + if (devicePetUser != null) { + if (devicePetUser.getIsMaster() != 0) { + for (DevicePetUser petUser : devicePetUsers) { + Integer userId = petUser.getPriId().getUserId(); + Integer deviceId = petUser.getPriId().getDeviceId(); + User tu = this.userDao.get(userId); + if (tu != null && tu.getUserId().intValue() != user.getUserId().intValue()) { + String timestamp = IfishUtil.format(new Date()); + //基本参数 + Map baseMap = new HashMap(); + baseMap.put("title", PushTypeEnum.remove_device.getValue()); + baseMap.put("content", "你已于" + timestamp + "失去对“" + petUser.getShowName() + "”设备的控制权"); + baseMap.put("user_id", userId.toString()); + baseMap.put("loginType", tu.getLoginType()); + //推送参数 + Map pushMap = new HashMap(); + pushMap.put("device_id", deviceId.toString()); + pushMap.put("device_name", petUser.getShowName()); + pushMap.put("timestamp", timestamp); + pushMap.put("msg_type", PushTypeEnum.remove_device.getKey()); + //推送消息 + jPushNotifcation(baseMap, pushMap); + } + devicePetUserDao.delete(petUser); + //删除设备和摄像头关系 + DeviceCamera deviceCamera = this.deviceCameraDao.findUniqueByProperty(Restrictions.eq("deviceCameraId.deviceId", petUser.getPriId().getDeviceId())); + if (deviceCamera != null) { + this.deviceCameraDao.delete(deviceCamera); + } + } + devicePetUser.setIsMaster(0); + devicePetUserDao.update(devicePetUser); + } } else { - List devicePetUsers = devicePetUserDao.findByDeviceId(device.getDeviceId()); for (DevicePetUser petUser : devicePetUsers) { - if (petUser.getPriId().getUserId().intValue() == user.getUserId().intValue() && petUser.getIsMaster() == 0) { - devicePetUser.getPriId().setUserId(tmpUser.getUserId()); - devicePetUser.getPriId().setDeviceId(device.getDeviceId()); - devicePetUser.setShowName("宠物笼" + (int) (Math.random() * 9000 + 1000)); - devicePetUser.setStoreName(storeName); - devicePetUser.setIsMaster(0); - this.devicePetUserDao.update(devicePetUser); + Integer userId = petUser.getPriId().getUserId(); + Integer deviceId = petUser.getPriId().getDeviceId(); + User tu = this.userDao.get(userId); + if (tu != null && tu.getUserId().intValue() != user.getUserId().intValue()) { + String timestamp = IfishUtil.format(new Date()); + //基本参数 + Map baseMap = new HashMap(); + baseMap.put("title", PushTypeEnum.remove_device.getValue()); + baseMap.put("content", "你已于" + timestamp + "失去对“" + petUser.getShowName() + "”设备的控制权"); + baseMap.put("user_id", userId.toString()); + baseMap.put("loginType", tu.getLoginType()); + //推送参数 + Map pushMap = new HashMap(); + pushMap.put("device_id", deviceId.toString()); + pushMap.put("device_name", petUser.getShowName()); + pushMap.put("timestamp", timestamp); + pushMap.put("msg_type", PushTypeEnum.remove_device.getKey()); + //推送消息 + jPushNotifcation(baseMap, pushMap); + } + devicePetUserDao.delete(petUser); + //删除设备和摄像头关系 + DeviceCamera deviceCamera = this.deviceCameraDao.findUniqueByProperty(Restrictions.eq("deviceCameraId.deviceId", petUser.getPriId().getDeviceId())); + if (deviceCamera != null) { + this.deviceCameraDao.delete(deviceCamera); } } + devicePetUser = new DevicePetUser(); + devicePetUser.getPriId().setUserId(tmpUser.getUserId()); + devicePetUser.getPriId().setDeviceId(device.getDeviceId()); + devicePetUser.setShowName("宠物笼" + (int) (Math.random() * 9000 + 1000)); + devicePetUser.setStoreName(storeName); + devicePetUser.setIsMaster(0); + this.devicePetUserDao.save(devicePetUser); } - - devicePetUser.getPriId().setUserId(tmpUser.getUserId()); - devicePetUser.getPriId().setDeviceId(device.getDeviceId()); - devicePetUser.setShowName("宠物笼" + (int) (Math.random() * 9000 + 1000)); - devicePetUser.setStoreName(storeName); - devicePetUser.setIsMaster(0); - - this.devicePetUserDao.save(devicePetUser); - //封装设备返回信息 return IfishUtil.returnJson(ResultEnum.success.getKey(), getDeviceInfo(device, devicePetUser)); }