package com.genersoft.iot.vmp.service.impl; import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.service.IAdminService; import com.genersoft.iot.vmp.storager.dao.AdminMapper; import com.genersoft.iot.vmp.storager.dao.DeviceMapper; import com.genersoft.iot.vmp.storager.dao.dto.AdminAccount; import com.genersoft.iot.vmp.utils.DateUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.DigestUtils; import org.springframework.util.ObjectUtils; import java.util.List; @Service public class AdminServiceImpl implements IAdminService { private final static Logger logger = LoggerFactory.getLogger(AdminServiceImpl.class); @Autowired private AdminMapper adminMapper; @Autowired private DeviceMapper deviceMapper; @Override public AdminAccount getUser(String username, String password) { return adminMapper.select(username, password); } @Override public int getUserCount() { List adminAccounts = adminMapper.getAllAdmin(); return adminAccounts.size(); } public boolean registerAdmin(String username, String password) { AdminAccount adminAccount = new AdminAccount(); adminAccount.setUsername(username); adminAccount.setPassword(password); // adminAccount.setPassword(DigestUtils.md5DigestAsHex(password.getBytes())); //新增用户的pushKey的生成规则为md5(时间戳+用户名) adminAccount.setPushKey(DigestUtils.md5DigestAsHex((System.currentTimeMillis() + password).getBytes())); adminAccount.setCreateTime(DateUtil.getNow()); adminAccount.setUpdateTime(DateUtil.getNow()); return adminMapper.addAdmin(adminAccount) > 0; } @Override public boolean changePassword(String id, String password) { AdminAccount adminAccount = adminMapper.selectById(id); adminAccount.setPassword(password); return adminMapper.update(adminAccount) > 0; } @Override public AdminAccount getUserByUsername(String username) { return adminMapper.getUserByUsername(username); } @Override public AdminAccount getUserById(String adminId) { return adminMapper.getUserById(adminId); } @Override public int addUser(AdminAccount adminAccount) { AdminAccount adminAccountByUsername = adminMapper.getUserByUsername(adminAccount.getUsername()); if (adminAccountByUsername != null) { return 0; } return adminMapper.add(adminAccount); } @Override public int deleteUser(int id) { return adminMapper.delete(id); } @Override public List getAllUsers() { return adminMapper.selectAll(); } @Override public int updateUsers(AdminAccount adminAccount) { return adminMapper.update(adminAccount); } @Override public boolean checkPushAuthority(String callId, String sign) { if (ObjectUtils.isEmpty(callId)) { return adminMapper.checkPushAuthorityByCallId(sign).size() > 0; }else { return adminMapper.checkPushAuthorityByCallIdAndSign(callId, sign).size() > 0; } } @Override public PageInfo getUsers(int page, int count) { PageHelper.startPage(page, count); List adminAccounts = adminMapper.getUsers(); return new PageInfo<>(adminAccounts); } @Override public int changePushKey(String id, String pushKey) { return adminMapper.changePushKey(id, pushKey); } @Override public String getPushKey(String id) { List adminAccounts = adminMapper.getPushKey(id); if (!adminAccounts.isEmpty()) { return adminAccounts.get(0).getPushKey(); } return null; } // 获取当前管理员的设备 public Device getAdminDevice(String adminId, String devId) { return adminMapper.getDeviceByAdminIdAndDevId(adminId, devId); } // 获取某个管理员账户下的所有设备 public List getAdminDevices(String adminId) { return adminMapper.getDevicesByAdminId(adminId); } public PageInfo searchDevicesByAdminId( String adminId, String domain, Boolean online, int page, int count) { PageHelper.startPage(page, count); List all = adminMapper.searchDevice(adminId, domain, online); return new PageInfo<>(all); } // 获取某个管理员设备,根据设备国标id public Device getAdminDeviceBySipId(String adminId, String deviceSipId) { // logger.info("getAdminDeviceBySipId get admin:{} device:{}", adminId, deviceSipId); // 获取设备 Device device = adminMapper.getAdminDeviceBySipId(adminId, deviceSipId); if (device == null) { return null; } return device; } }