From 665ba949a6e8be9847bcd68528b894d32ebc2964 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=93=E7=84=B1?= Date: Wed, 6 Jan 2021 23:38:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A0=E7=89=A9=E7=AC=BC=E8=AE=BE=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ifish/action/AdminAction.java | 69 ++++++---- .../java/com/ifish/dao/DevicePetUserDao.java | 15 +++ .../ifish/daoImpl/DevicePetUserDaoImpl.java | 24 ++++ .../java/com/ifish/entity/DevicePetUser.java | 89 +++++++++++++ .../ifish/entity/hbm/DevicePetUser.hbm.xml | 17 +++ .../java/com/ifish/service/AdminService.java | 34 +---- .../ifish/serviceImpl/AdminServiceImpl.java | 82 +++++++----- .../WEB-INF/view/roleAdmin/userDetail.jsp | 122 +++++++++++++++++- 8 files changed, 362 insertions(+), 90 deletions(-) create mode 100644 src/main/java/com/ifish/dao/DevicePetUserDao.java create mode 100644 src/main/java/com/ifish/daoImpl/DevicePetUserDaoImpl.java create mode 100644 src/main/java/com/ifish/entity/DevicePetUser.java create mode 100644 src/main/java/com/ifish/entity/hbm/DevicePetUser.hbm.xml diff --git a/src/main/java/com/ifish/action/AdminAction.java b/src/main/java/com/ifish/action/AdminAction.java index a3ddd19..66eefeb 100644 --- a/src/main/java/com/ifish/action/AdminAction.java +++ b/src/main/java/com/ifish/action/AdminAction.java @@ -7,6 +7,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import com.ifish.entity.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -20,34 +21,6 @@ import org.springframework.web.servlet.ModelAndView; import com.alibaba.fastjson.JSONObject; import com.ifish.domain.JsonResult; -import com.ifish.entity.Camera; -import com.ifish.entity.CameraActive; -import com.ifish.entity.CameraUser; -import com.ifish.entity.Device; -import com.ifish.entity.DeviceUser; -import com.ifish.entity.FactoryList; -import com.ifish.entity.Grade; -import com.ifish.entity.HardwareType; -import com.ifish.entity.IfishDoctor; -import com.ifish.entity.LiveBanner; -import com.ifish.entity.LiveRoom; -import com.ifish.entity.LoginRecord; -import com.ifish.entity.Menu; -import com.ifish.entity.NeteaseUser; -import com.ifish.entity.OperateRecord; -import com.ifish.entity.PayBill; -import com.ifish.entity.PayeeInfo; -import com.ifish.entity.PushList; -import com.ifish.entity.QuestionsFeedback; -import com.ifish.entity.Role; -import com.ifish.entity.SecurityUser; -import com.ifish.entity.TmpPushRemind; -import com.ifish.entity.Ueditor; -import com.ifish.entity.UpgradeNotes; -import com.ifish.entity.User; -import com.ifish.entity.UserAsset; -import com.ifish.entity.VenderList; -import com.ifish.entity.Version; import com.ifish.enums.BooleanEnum; import com.ifish.enums.MenuTypeEnum; import com.ifish.enums.RoleEnum; @@ -191,6 +164,7 @@ public class AdminAction { map.put("status", status); return new ModelAndView("roleAdmin/userDetail", map); } catch (Exception e) { + e.printStackTrace(); log.error("get userDetail information:error message:{}", e.toString()); } return new ModelAndView("roleAdmin/userDetail"); @@ -311,6 +285,25 @@ public class AdminAction { return null; } + /** + * 绑定设备 + * + * @param macAddress + * @param userId + * @return + */ + @RequestMapping("/bindPetDevice.do") + @ResponseBody + public Object bindPetDevice(String macAddress, Integer userId) { + try { + return this.adminService.bindPetDevice(macAddress, userId); + } catch (Exception e) { + e.printStackTrace(); + log.error("bindDevice:error message:{}", e.toString()); + } + return null; + } + /** * 解除绑定 * @@ -331,6 +324,26 @@ public class AdminAction { return new ModelAndView("redirect:/page/admin/userDetail.do", map); } + /** + * 解除绑定 + * + * @param deviceUser + * @return + */ + @RequestMapping("/unbindPet.do") + public ModelAndView unbindPet(DevicePetUser deviceUser) { + Map map = new HashMap(); + map.put("userId", deviceUser.getPriId().getUserId()); + try { + this.adminService.unbindPet(deviceUser); + map.put("status", SysUserEnum.success100.getKey()); + } catch (Exception e) { + map.put("status", SysUserEnum.failed101.getKey()); + log.error("unbind faild,userId:{},:error message:{}", deviceUser.getPriId().getUserId(), e.toString()); + } + return new ModelAndView("redirect:/page/admin/userDetail.do", map); + } + /** * 授权 * diff --git a/src/main/java/com/ifish/dao/DevicePetUserDao.java b/src/main/java/com/ifish/dao/DevicePetUserDao.java new file mode 100644 index 0000000..c2971bd --- /dev/null +++ b/src/main/java/com/ifish/dao/DevicePetUserDao.java @@ -0,0 +1,15 @@ +package com.ifish.dao; + +import com.ifish.entity.DevicePetUser; +import com.ifish.entity.DeviceUser; +import com.ifish.entity.id.PriId; + +/** + * @ClassName: DeviceUserDao + * @Description: TODO + * @author ggw + * + */ +public interface DevicePetUserDao extends BaseDao{ + +} diff --git a/src/main/java/com/ifish/daoImpl/DevicePetUserDaoImpl.java b/src/main/java/com/ifish/daoImpl/DevicePetUserDaoImpl.java new file mode 100644 index 0000000..98096a7 --- /dev/null +++ b/src/main/java/com/ifish/daoImpl/DevicePetUserDaoImpl.java @@ -0,0 +1,24 @@ +package com.ifish.daoImpl; + +import com.ifish.dao.DevicePetUserDao; +import com.ifish.entity.DevicePetUser; +import com.ifish.entity.id.PriId; +import com.ifish.hibernate.HibernateBaseDao; +import org.springframework.stereotype.Repository; + +/** + * @ClassName: DeviceUserDaoImpl + * @Description: TODO + * @author ggw + * + */ + +@Repository("devicePetUserDao") +public class DevicePetUserDaoImpl extends HibernateBaseDao implements DevicePetUserDao { + + @Override + protected Class getEntityClass() { + return DevicePetUser.class; + } + +} diff --git a/src/main/java/com/ifish/entity/DevicePetUser.java b/src/main/java/com/ifish/entity/DevicePetUser.java new file mode 100644 index 0000000..0215af6 --- /dev/null +++ b/src/main/java/com/ifish/entity/DevicePetUser.java @@ -0,0 +1,89 @@ +package com.ifish.entity; + +import com.ifish.entity.id.PriId; + +import java.io.Serializable; +import java.util.Date; + +/** + * @ClassName: tbl_device_user + * @date 2015年7月2日 下午16:40:00 + * + */ +public class DevicePetUser implements Serializable{ + + private static final long serialVersionUID = -6056043883433438749L; + //ID + private PriId priId = new PriId(); + //显示名称 + private String showName; + private String storeName; + private Integer isMaster; + //创建时间 + private Date createTime; + + //用户 + private User user = new User(); + //设备 + private Device device = new Device(); + public DevicePetUser() {} + + public DevicePetUser(PriId priId, String showName, String storeName) { + this.priId = priId; + this.showName = showName; + this.storeName = storeName; + } + + public PriId getPriId() { + return priId; + } + public void setPriId(PriId priId) { + this.priId = priId; + } + public String getShowName() { + return showName; + } + public void setShowName(String showName) { + this.showName = showName; + } + + public String getStoreName() { + return storeName; + } + + public void setStoreName(String storeName) { + this.storeName = storeName; + } + + public Integer getIsMaster() { + return isMaster; + } + + public void setIsMaster(Integer isMaster) { + this.isMaster = isMaster; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + public Device getDevice() { + return device; + } + + public void setDevice(Device device) { + this.device = device; + } + + 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 new file mode 100644 index 0000000..067cfd2 --- /dev/null +++ b/src/main/java/com/ifish/entity/hbm/DevicePetUser.hbm.xml @@ -0,0 +1,17 @@ + + + + + false + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/ifish/service/AdminService.java b/src/main/java/com/ifish/service/AdminService.java index 9d46d83..c12bdc7 100644 --- a/src/main/java/com/ifish/service/AdminService.java +++ b/src/main/java/com/ifish/service/AdminService.java @@ -3,36 +3,10 @@ package com.ifish.service; import java.util.List; import java.util.Map; +import com.ifish.entity.*; import org.springframework.web.multipart.MultipartFile; import com.ifish.domain.JsonResult; -import com.ifish.entity.Camera; -import com.ifish.entity.CameraActive; -import com.ifish.entity.CameraUser; -import com.ifish.entity.Device; -import com.ifish.entity.DeviceUser; -import com.ifish.entity.FactoryList; -import com.ifish.entity.HardwareType; -import com.ifish.entity.IfishDoctor; -import com.ifish.entity.LiveBanner; -import com.ifish.entity.LiveRoom; -import com.ifish.entity.LoginRecord; -import com.ifish.entity.Menu; -import com.ifish.entity.NeteaseUser; -import com.ifish.entity.OperateRecord; -import com.ifish.entity.PayBill; -import com.ifish.entity.PayeeInfo; -import com.ifish.entity.PushList; -import com.ifish.entity.QuestionsFeedback; -import com.ifish.entity.Role; -import com.ifish.entity.SecurityUser; -import com.ifish.entity.TmpPushRemind; -import com.ifish.entity.Ueditor; -import com.ifish.entity.UpgradeNotes; -import com.ifish.entity.User; -import com.ifish.entity.UserAsset; -import com.ifish.entity.VenderList; -import com.ifish.entity.Version; import com.ifish.enums.RoleEnum; import com.ifish.hibernate.Pagination; import com.ifish.search.SearchFilter; @@ -103,10 +77,12 @@ public interface AdminService { //绑定设备 public boolean bindDevice(String macAddress,Integer userId); - + public boolean bindPetDevice(String macAddress,Integer userId); + //解除绑定 public void unbind(DeviceUser deviceUser); - + public void unbindPet(DevicePetUser deviceUser); + //设备授权 public boolean deviceLicense(Integer deviceId,String isBlacklist); diff --git a/src/main/java/com/ifish/serviceImpl/AdminServiceImpl.java b/src/main/java/com/ifish/serviceImpl/AdminServiceImpl.java index c4ec8ad..9faa22e 100644 --- a/src/main/java/com/ifish/serviceImpl/AdminServiceImpl.java +++ b/src/main/java/com/ifish/serviceImpl/AdminServiceImpl.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.Map; import java.util.Set; -import com.alibaba.fastjson.JSON; +import com.ifish.dao.*; import com.ifish.entity.*; import com.ifish.entity.event.QueueEventBody; import com.ifish.entity.event.QueueEventEntity; @@ -30,36 +30,6 @@ import org.springframework.web.multipart.MultipartFile; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.ifish.dao.CameraActiveDao; -import com.ifish.dao.CameraDao; -import com.ifish.dao.CameraUserDao; -import com.ifish.dao.DeviceCameraDao; -import com.ifish.dao.DeviceDao; -import com.ifish.dao.DeviceUserDao; -import com.ifish.dao.FactoryListDao; -import com.ifish.dao.GradeDao; -import com.ifish.dao.HardwareTypeDao; -import com.ifish.dao.IfishDoctorDao; -import com.ifish.dao.InformationDao; -import com.ifish.dao.LiveBannerDao; -import com.ifish.dao.LiveRoomDao; -import com.ifish.dao.LoginRecordDao; -import com.ifish.dao.MenuDao; -import com.ifish.dao.NeteaseUserDao; -import com.ifish.dao.OperateRecordDao; -import com.ifish.dao.PayBillDao; -import com.ifish.dao.PayeeInfoDao; -import com.ifish.dao.PushListDao; -import com.ifish.dao.QuestionsFeedbackDao; -import com.ifish.dao.RoleDao; -import com.ifish.dao.SecurityUserDao; -import com.ifish.dao.ShopsInfoDao; -import com.ifish.dao.TmpPushRemindDao; -import com.ifish.dao.UeditorDao; -import com.ifish.dao.UpgradeNotesDao; -import com.ifish.dao.UserDao; -import com.ifish.dao.VenderListDao; -import com.ifish.dao.VersionDao; import com.ifish.domain.FactoryData; import com.ifish.domain.FactoryRecordData; import com.ifish.domain.HardwareTypeData; @@ -108,6 +78,8 @@ public class AdminServiceImpl implements AdminService { @Autowired private DeviceDao deviceDao; @Autowired + private DevicePetUserDao devicePetUserDao; + @Autowired private CameraDao cameraDao; @Autowired private VersionDao versionDao; @@ -485,6 +457,8 @@ public class AdminServiceImpl implements AdminService { map.put("user", user); List deviceUserList = this.deviceUserDao.findByProperty(Restrictions.eq("priId.userId", user.getUserId())); map.put("deviceUserList", deviceUserList); + List devicePetUserList = this.devicePetUserDao.findByProperty(Restrictions.eq("priId.userId", user.getUserId())); + map.put("devicePetUserList", devicePetUserList); List cameraUserList = this.cameraUserDao.findByProperty(Restrictions.eq("cameraUserId.userId", user.getUserId())); map.put("cameraUserList", cameraUserList); List cameraIds = new ArrayList(); @@ -649,6 +623,36 @@ public class AdminServiceImpl implements AdminService { return false; } + @Override + public boolean bindPetDevice(String macAddress, Integer userId) { + if (userId != null && macAddress != null && macAddress.length() > 0) { + User user = this.userDao.get(userId); + Device device = this.deviceDao.findUniqueByProperty(Restrictions.eq("macAddress", macAddress)); + if (user != null && device != null) { + Integer deviceId = device.getDeviceId(); + DevicePetUser devicePetUser = new DevicePetUser(); + devicePetUser.getPriId().setDeviceId(deviceId); + devicePetUser.getPriId().setUserId(userId); + DevicePetUser tmpDeviceUser = this.devicePetUserDao.get(devicePetUser.getPriId()); + if (tmpDeviceUser == null) { + List DeviceUserList = this.devicePetUserDao.findByProperty(Restrictions.eq("priId.deviceId", deviceId)); + if (DeviceUserList.size() > 0) { + devicePetUser.setIsMaster(1); + } else { + devicePetUser.setIsMaster(0); + } + devicePetUser.setStoreName("宠物店" + (int) (Math.random() * 9000 + 1000)); + devicePetUser.setShowName("宠物笼" + (int) (Math.random() * 9000 + 1000)); + devicePetUser.setUser(user); + devicePetUser.setDevice(device); + this.devicePetUserDao.save(devicePetUser); + } + return true; + } + } + return false; + } + @Override public void unbind(DeviceUser deviceUser) { deviceUser = this.deviceUserDao.get(deviceUser.getPriId()); @@ -665,6 +669,22 @@ public class AdminServiceImpl implements AdminService { } } + @Override + public void unbindPet(DevicePetUser devicePetUser) { + devicePetUser = this.devicePetUserDao.get(devicePetUser.getPriId()); + if (devicePetUser != null) { + //是主控,解除所有的绑定 + if (devicePetUser.getIsMaster().equals(BooleanEnum.YES.getKey())) { + List list = this.devicePetUserDao.findByProperty(Restrictions.eq("priId.deviceId", devicePetUser.getPriId().getDeviceId())); + for (DevicePetUser curDeviceUser : list) { + devicePetUserDao.delete(curDeviceUser); + } + } else { + devicePetUserDao.delete(devicePetUser); + } + } + } + @Override public boolean deviceLicense(Integer deviceId, String isBlacklist) { Device device = this.deviceDao.get(deviceId); diff --git a/src/main/webapp/WEB-INF/view/roleAdmin/userDetail.jsp b/src/main/webapp/WEB-INF/view/roleAdmin/userDetail.jsp index 0cfaaa3..6a41caf 100644 --- a/src/main/webapp/WEB-INF/view/roleAdmin/userDetail.jsp +++ b/src/main/webapp/WEB-INF/view/roleAdmin/userDetail.jsp @@ -73,6 +73,28 @@ jAlert('绑定失败或出错啦!', '提示'); } $("#bindDeviceModalBtn").attr("disabled",false); + }); + //绑定设备 + $("#bindPetDeviceBtn").click(function(){ + $("#bindPetDeviceModal").modal("show"); + }); + $("#bindPetDeviceModalBtn").click(function(){ + if($("#petMacAddress").val()==""){ + jAlert("设备Mac不能为空", '提示'); + return false; + } + $("#bindPetDeviceModalBtn").attr("disabled",true); + $('#form-bindPetDevice').submit(); + }); + $('#form-bindPetDevice').ajaxForm(function(data){ + if(data==true){ + location.reload(); + jAlert('绑定成功', '提示'); + } + else{ + jAlert('绑定失败或出错啦!', '提示'); + } + $("#bindPetDeviceModalBtn").attr("disabled",false); }); //绑定摄像头 $("#bindCameraBtn").click(function(){ @@ -125,10 +147,14 @@ dataTable.fnPageChange(--pageNum,true); } //解除绑定 - function unbind(userId,deviceId){ + function unbind(userId,deviceId,isdevice){ var r = confirm("确定要解除绑定吗?"); if (r == true) { - location.href="<%=basePath%>page/admin/unbind.do?priId.userId="+userId+"&priId.deviceId="+deviceId; + if (isdevice) { + location.href="<%=basePath%>page/admin/unbind.do?priId.userId="+userId+"&priId.deviceId="+deviceId; + } else { + location.href="<%=basePath%>page/admin/unbindPet.do?priId.userId="+userId+"&priId.deviceId="+deviceId; + } } } //授权 @@ -284,6 +310,64 @@ +

拥有宠物笼    

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ID硬件mac方案名称厂家名称连接次数最后一次登陆时间显示名称是否主控绑定时间首次激活时间出厂时间授权操作
${deviceUser.priId.deviceId}${deviceUser.device.macAddress}

...

${deviceUser.device.hardwareType.hardwareName}${deviceUser.device.venderList.brandName}${deviceUser.device.loginCount}${deviceUser.device.loginTime}${deviceUser.storeName}
${deviceUser.showName}
${deviceUser.isMaster==0?"":""}${deviceUser.createTime}${deviceUser.device.firstActivate}${deviceUser.device.createTime}${deviceUser.device.isBlacklist==1?"NO":"OK"} + 解除绑定 + + 授予权限 + + + + 取消授权 + + + 取消授权 + + +

拥有摄像头    

@@ -380,6 +464,40 @@ + + +