diff --git a/src/main/java/com/ifish/action/UserAction.java b/src/main/java/com/ifish/action/UserAction.java index b172bef..b744486 100644 --- a/src/main/java/com/ifish/action/UserAction.java +++ b/src/main/java/com/ifish/action/UserAction.java @@ -280,6 +280,18 @@ public class UserAction { return baseService.bindCamera(userId, cameraId); } /** + /** + * 分享摄像头 + * + * @param userId + * @param cameraId + * @return + */ + @RequestMapping("/shareCameraByQrCode.do") + public Object shareCameraByQrCode(Integer userId, String cameraId) { + return baseService.shareCameraByQrCode(userId, cameraId); + } /** + /** * 关联设备和摄像头 * @@ -306,9 +318,9 @@ public class UserAction { * @return */ @RequestMapping("/deviceBindCamera1.do") - public Object deviceBindCamera1(Integer userId, Integer deviceId, String cameraId) { + public Object deviceBindCamera1(Integer userId, Integer deviceId, String cameraId, String type) { try { - return baseService.deviceBindCamera1(userId, deviceId, cameraId); + return baseService.deviceBindCamera1(userId, deviceId, cameraId, type); } catch (Exception e) { log.error("DeviceBindCamera1:userId:{},cameraId:{},error message:{}", userId, deviceId, cameraId, e.toString()); } @@ -431,6 +443,21 @@ public class UserAction { return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); } + /** + * 删除绑定设备 + * @return + */ + @RequestMapping("/deletePetDeviceUser.do") + public Object deletePetDeviceUser(String userId, String deviceId) { + try { + return baseService.deletePetDeviceUser(userId, deviceId); + } catch (Exception e) { + e.printStackTrace(); + log.error("delete the binding device:userId:{},deviceId:{},error message:{}", userId, deviceId); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + /** * 删除绑定的摄像头 * @@ -481,6 +508,24 @@ public class UserAction { return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); } + /** + * 扫一扫分享设备 + * + * @param user + * @param device + * @return + */ + @Deprecated + @RequestMapping("/sharePetDeviceByQrCode.do") + public Object sharePetDeviceByQrCode(Integer userId, Integer deviceId) { + try { + return baseService.sharePetDeviceByQrCode(userId, deviceId); + } catch (Exception e) { + log.error("share device by qrCode:userId:{},deviceId:{},error message:{}", userId, deviceId, e.toString()); + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + /** * 获取最新版本信息 */ diff --git a/src/main/java/com/ifish/dao/DevicePetUserDao.java b/src/main/java/com/ifish/dao/DevicePetUserDao.java index e07995e..6cd103a 100644 --- a/src/main/java/com/ifish/dao/DevicePetUserDao.java +++ b/src/main/java/com/ifish/dao/DevicePetUserDao.java @@ -36,8 +36,12 @@ public interface DevicePetUserDao extends BaseDao{ /** * 根据deviceId查询设备和用户对应数据 - * @param deviceId + * @param userId * @return */ - List getUserIdByDeviceId(Integer deviceId); + List getUserIdByDeviceId(Integer userId); + + List findByDeviceId(Integer deviceId); + + DevicePetUser getDevicePetUserByUseridAndDeviceId(String userId, String deviceId); } diff --git a/src/main/java/com/ifish/daoImpl/DevicePeiUserDaoImpl.java b/src/main/java/com/ifish/daoImpl/DevicePeiUserDaoImpl.java index 8d4b9b2..7726536 100644 --- a/src/main/java/com/ifish/daoImpl/DevicePeiUserDaoImpl.java +++ b/src/main/java/com/ifish/daoImpl/DevicePeiUserDaoImpl.java @@ -84,4 +84,22 @@ public class DevicePeiUserDaoImpl extends HibernateBaseDao devicePetUsers = this.findByProperty(criterion); return devicePetUsers; } + + /** + * + * @param deviceId + * @return + */ + @Override + public List findByDeviceId(Integer deviceId) { + Criterion criterion = Restrictions.eq("priId.deviceId",deviceId); + List devicePetUsers = this.findByProperty(criterion); + return devicePetUsers; + } + + @Override + public DevicePetUser getDevicePetUserByUseridAndDeviceId(String userId, String deviceId) { + + return null; + } } diff --git a/src/main/java/com/ifish/entity/DevicePetUser.java b/src/main/java/com/ifish/entity/DevicePetUser.java index c6e915b..48fb025 100644 --- a/src/main/java/com/ifish/entity/DevicePetUser.java +++ b/src/main/java/com/ifish/entity/DevicePetUser.java @@ -16,6 +16,9 @@ public class DevicePetUser implements Serializable{ //显示名称 private String showName; private String storeName; + private Integer isMaster; + //创建时间 + private Date createTime; public DevicePetUser() {} @@ -45,4 +48,20 @@ public class DevicePetUser implements Serializable{ public void setStoreName(String storeName) { this.storeName = storeName; } + + public Integer getIsMaster() { + return isMaster; + } + + public void setIsMaster(Integer isMaster) { + this.isMaster = isMaster; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } } diff --git a/src/main/java/com/ifish/entity/hbm/DevicePetUser.hbm.xml b/src/main/java/com/ifish/entity/hbm/DevicePetUser.hbm.xml index 037929e..67e0fa9 100644 --- a/src/main/java/com/ifish/entity/hbm/DevicePetUser.hbm.xml +++ b/src/main/java/com/ifish/entity/hbm/DevicePetUser.hbm.xml @@ -7,7 +7,8 @@ - - + + + \ No newline at end of file diff --git a/src/main/java/com/ifish/helper/UserHelper.java b/src/main/java/com/ifish/helper/UserHelper.java index 7044aa4..240c0b2 100644 --- a/src/main/java/com/ifish/helper/UserHelper.java +++ b/src/main/java/com/ifish/helper/UserHelper.java @@ -472,7 +472,7 @@ public class UserHelper implements UserHelperI { DeviceUserBean deviceUser = new DeviceUserBean(); deviceUser.setDeviceId(devicePetUser.getPriId().getDeviceId()); deviceUser.setUserId(devicePetUser.getPriId().getUserId()); - deviceUser.setIsMaster("0"); + deviceUser.setIsMaster("1"); deviceUser.setShowName(devicePetUser.getShowName()); if (storeNamesList.containsKey(devicePetUser.getStoreName())) { diff --git a/src/main/java/com/ifish/service/BaseService.java b/src/main/java/com/ifish/service/BaseService.java index 363e481..1842d8b 100644 --- a/src/main/java/com/ifish/service/BaseService.java +++ b/src/main/java/com/ifish/service/BaseService.java @@ -66,7 +66,7 @@ public interface BaseService { public Object activeCamera(String activeCode,String cameraId); //设备和摄像头关联 - public Object deviceBindCamera1(Integer userId,Integer deviceId,String cameraId); + public Object deviceBindCamera1(Integer userId,Integer deviceId,String cameraId, String type); //设备和摄像头关联 public Object deviceBindCamera(Integer deviceId,String cameraId); @@ -86,7 +86,15 @@ public interface BaseService { //删除绑定的设备 public Object deleteDeviceUser(DeviceUser deviceUser); - + + /** + * 删除宠物笼设备 + * @param userId + * @param deviceId + * @return + */ + public Object deletePetDeviceUser(String userId, String deviceId); + //删除绑定的摄像头 public Object deleteCameraUser(Integer userId,String cameraId); @@ -94,9 +102,12 @@ public interface BaseService { public Object deleteDeviceCamera(Integer deviceId,String cameraId); //扫一扫分享设备 - @Deprecated public Object shareDeviceByQrCode(Integer userId,Integer deviceId); - + + public Object shareCameraByQrCode(Integer userId,String cameraId); + + public Object sharePetDeviceByQrCode(Integer userId,Integer deviceId); + //获取最新版本信息 public Object getNewestVersionInf(String phoneType); diff --git a/src/main/java/com/ifish/serviceImpl/BaseServiceImpl.java b/src/main/java/com/ifish/serviceImpl/BaseServiceImpl.java index 91eabcd..ed89a68 100644 --- a/src/main/java/com/ifish/serviceImpl/BaseServiceImpl.java +++ b/src/main/java/com/ifish/serviceImpl/BaseServiceImpl.java @@ -453,6 +453,9 @@ public class BaseServiceImpl implements BaseService { //新增用户拥有设备 DeviceUser deviceUser = new DeviceUser(); Device device = this.deviceDao.findUniqueByProperty(Restrictions.eq("macAddress", madAddress)); + if (device != null && device.getHardwareType().equals("3f")) { + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "设备类型不匹配,请重新选择入口绑定"); + } boolean bln = false; //设备存在 if (device != null) { @@ -573,7 +576,7 @@ public class BaseServiceImpl implements BaseService { Date date = new Date(); deviceUser.setUpdateTime(date); deviceUser.setCreateTime(date); - this.deviceUserDao.save(deviceUser); + deviceUserDao.save(deviceUser); } //封装设备返回信息 return IfishUtil.returnJson(ResultEnum.success.getKey(), getDeviceInfo(device, deviceUser)); @@ -587,25 +590,31 @@ public class BaseServiceImpl implements BaseService { * 绑定宠物笼设备 */ @Override - public Object bindPetDevice(User user, String madAddress, String storeName) { + public Object bindPetDevice(User user, String macAddress, String storeName) { User tmpUser = userDao.get(user.getUserId()); //新增用户拥有设备 DevicePetUser devicePetUser = new DevicePetUser(); - //新增设备信息 - Device device = new Device(); - device.setLoginCount(0); - device.setIsBlacklist(BooleanEnum.YES.getKey()); - device.setMacAddress(madAddress); - Date date = new Date(); - device.setFirstActivate(date); - device.setCreateDate(date); - device.setCreateTime(date); - device = this.deviceDao.save(device); + Device device = this.deviceDao.findUniqueByProperty(Restrictions.eq("macAddress", macAddress)); + if (device == null) { + //新增设备信息 + device = new Device(); + device.setLoginCount(0); + device.setIsBlacklist(BooleanEnum.YES.getKey()); + device.setMacAddress(macAddress); + Date date = new Date(); + device.setFirstActivate(date); + device.setCreateDate(date); + device.setCreateTime(date); + device = this.deviceDao.save(device); + } else if (!device.getHardwareType().equals("3f")) { + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), "设备类型不匹配,请重新选择入口绑定"); + } 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); @@ -687,6 +696,34 @@ public class BaseServiceImpl implements BaseService { return IfishUtil.returnJson(ResultEnum.success.getKey(),""); } + @Override + public Object shareCameraByQrCode(Integer userId, String cameraId) { + User user = userDao.get(userId); + Camera camera = this.cameraDao.get(cameraId); + //返回数据 + Map dataMap = new HashMap(); + if (user != null && camera != null) { + //建立关系 + CameraUser cameraUser = new CameraUser(); + CameraUserId cameraUserId = new CameraUserId(userId, String.valueOf(cameraId)); + cameraUser.setCameraUserId(cameraUserId); + cameraUser.setIsMaster(BooleanEnum.NO.getKey()); + cameraUser.setIsLook(BooleanEnum.NO.getKey()); + cameraUser.setIsLive(BooleanEnum.NO.getKey()); + cameraUser.setShowName("摄像头" + (int) (Math.random() * 900 + 100)); + cameraUser.setCreateTime(new Date()); + this.cameraUserDao.save(cameraUser); + //返回数据 + dataMap.put("cameraId", cameraId); + dataMap.put("showName", cameraUser.getShowName()); + dataMap.put("isMaster", cameraUser.getIsMaster()); + dataMap.put("isLook", cameraUser.getIsLook()); + dataMap.put("isLive", cameraUser.getIsLive()); + dataMap.put("isActive", camera.getActiveCode() != null && !camera.getActiveCode().equals("") ? "1" : "0"); + return IfishUtil.returnJson(ResultEnum.success.getKey(), dataMap); + } + return IfishUtil.returnJson(ResultEnum.warn202.getKey(), ""); + } /** @@ -879,7 +916,7 @@ public class BaseServiceImpl implements BaseService { Map deviceMap = new HashMap(); deviceMap.put("userId", devicePetUser.getPriId().getUserId()); deviceMap.put("deviceId", devicePetUser.getPriId().getDeviceId()); - deviceMap.put("isMaster", ""); + deviceMap.put("isMaster", devicePetUser.getIsMaster() == 0 ? "1" : "0"); deviceMap.put("showName", devicePetUser.getShowName()); deviceMap.put("macAddress", device.getMacAddress()); deviceMap.put("isBlacklist", device.getIsBlacklist()); @@ -1071,6 +1108,67 @@ public class BaseServiceImpl implements BaseService { return IfishUtil.returnJson(ResultEnum.success.getKey(), ""); } + @Override + public Object deletePetDeviceUser(String userId, String deviceId) { + DevicePetUser devicePetUser = devicePetUserDao.findUniqueByProperty(Restrictions.eq("priId.userId", Integer.parseInt(userId)), Restrictions.eq("priId.deviceId", Integer.parseInt(deviceId))); + if (devicePetUser != null && devicePetUser.getIsMaster().intValue() == 0) { + List userIdByDeviceId = devicePetUserDao.findByDeviceId(Integer.parseInt(deviceId)); + for (DevicePetUser petUser : userIdByDeviceId) { + Integer userId1 = petUser.getPriId().getUserId(); + Integer deviceId1 = petUser.getPriId().getDeviceId(); + //获取设备 + Device device = this.deviceDao.get(deviceId1); + //关闭换水提醒开关 + device.setWaterRemind("0"); + this.deviceDao.update(device); + //查询推送表中当前设备的所有数据 + List pushReminds = this.pushRemindDao.getPushRemindByDeviceId(deviceId1); + for (PushRemind pushRemind : pushReminds) { + this.pushRemindDao.delete(pushRemind); + } + User tu = this.userDao.get(userId1); + if (tu != null) { + 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", userId1.toString()); + baseMap.put("loginType", tu.getLoginType()); + //推送参数 + Map pushMap = new HashMap(); + pushMap.put("device_id", deviceId1.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", devicePetUser.getPriId().getDeviceId())); + if (deviceCamera != null) { + this.deviceCameraDao.delete(deviceCamera); + } + } else { + //获取设备 + Device device = this.deviceDao.get(devicePetUser.getPriId().getDeviceId()); + //关闭换水提醒开关 + device.setWaterRemind("0"); + this.deviceDao.update(device); + //查询用户和设备的绑定关系 之后删除 + List pushReminds = this.pushRemindDao.findByProperty(Restrictions.eq("id.deviceId", devicePetUser.getPriId().getDeviceId()), Restrictions.eq("id.userId", devicePetUser.getPriId().getUserId())); + for (PushRemind pushRemind : pushReminds) { + this.pushRemindDao.delete(pushRemind); + } + } + if (devicePetUser != null) { + devicePetUserDao.delete(devicePetUser); + } + return IfishUtil.returnJson(ResultEnum.success.getKey(), ""); + } + /** * 删除绑定的摄像头 */ @@ -1201,6 +1299,33 @@ public class BaseServiceImpl implements BaseService { return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); } + @Override + public Object sharePetDeviceByQrCode(Integer userId, Integer deviceId) { + User user = userDao.get(userId); + Device device = deviceDao.get(deviceId); + if (user != null && device != null) { + DevicePetUser devicePetUser = new DevicePetUser(); + devicePetUser.getPriId().setUserId(user.getUserId()); + devicePetUser.getPriId().setDeviceId(device.getDeviceId()); + DevicePetUser devicePetUser1 = devicePetUserDao.get(devicePetUser.getPriId()); + if (devicePetUser1 != null) { + //封装设备返回信息 + return IfishUtil.returnJson(ResultEnum.success.getKey(), getDeviceInfo(device, devicePetUser1)); + } else { + List byDeviceId = devicePetUserDao.findByDeviceId(device.getDeviceId()); + if (byDeviceId != null && byDeviceId.size() > 0) { + devicePetUser.setStoreName(byDeviceId.get(0).getStoreName()); + } + devicePetUser.setIsMaster(1); + devicePetUser.setShowName("宠物笼" + (int) (Math.random() * 9000 + 1000)); + this.devicePetUserDao.save(devicePetUser); + //封装设备返回信息 + return IfishUtil.returnJson(ResultEnum.success.getKey(), getDeviceInfo(device, devicePetUser)); + } + } + return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); + } + /** * 极光推送 * @@ -1433,15 +1558,24 @@ public class BaseServiceImpl implements BaseService { } @Override - public Object deviceBindCamera1(Integer userId, Integer deviceId, String cameraId) { + public Object deviceBindCamera1(Integer userId, Integer deviceId, String cameraId, String type) { //设备和用户关系 DeviceUserId priId = new DeviceUserId(); priId.setDeviceId(deviceId); priId.setUserId(userId); - DeviceUser deviceUser = this.deviceUserDao.get(priId); - if (deviceUser == null) { - return IfishUtil.returnJson(ResultEnum.warn207.getKey(), ""); + if (null == type || "".equals(type) || "null".equals(type)) { + DeviceUser deviceUser = this.deviceUserDao.get(priId); + if (deviceUser == null) { + return IfishUtil.returnJson(ResultEnum.warn207.getKey(), ""); + } + } else if ("1".equals(type)) { + //宠物笼设备 + DevicePetUser devicePetUser = this.devicePetUserDao.get(priId); + if (devicePetUser == null) { + return IfishUtil.returnJson(ResultEnum.warn207.getKey(), ""); + } } + //摄像头和用户关系 CameraUserId cuId = new CameraUserId(userId, cameraId); CameraUser cameraUser = this.cameraUserDao.get(cuId); diff --git a/src/main/java/com/ifish/serviceImpl/UserServiceImpl.java b/src/main/java/com/ifish/serviceImpl/UserServiceImpl.java index 0b74882..4701486 100644 --- a/src/main/java/com/ifish/serviceImpl/UserServiceImpl.java +++ b/src/main/java/com/ifish/serviceImpl/UserServiceImpl.java @@ -1040,7 +1040,7 @@ public class UserServiceImpl implements UserService { //json存储设备信息 json.put("userId", userId); json.put("deviceId", deviceId); - json.put("isMaster", "0"); + json.put("isMaster", "1"); //宠物店名称 json.put("storeName", devicePetUser.getStoreName()); json.put("showName", devicePetUser.getShowName()); @@ -1199,7 +1199,7 @@ public class UserServiceImpl implements UserService { public DeviceDto getDeviceDto(DevicePetUser deviceUser,Device device){ String type = device.getHardwareType(); //设备信息DTO - DeviceDto dto = new DeviceDto(device.getDeviceId(), device.getMacAddress(), deviceUser.getShowName(), "0", type, device.getIsBlacklist()); + DeviceDto dto = new DeviceDto(device.getDeviceId(), device.getMacAddress(), deviceUser.getShowName(), deviceUser.getIsMaster().intValue() == 0 ? "1" : "0", type, device.getIsBlacklist()); dto.setStoreName(deviceUser.getStoreName()); //用户ID dto.setUserId(deviceUser.getPriId().getUserId());