package com.template.controller;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.template.api.UnlockingAdminControllerAPI;
import com.template.common.utils.PasswordChecker;
import com.template.model.dto.KeyCardDto;
import com.template.model.dto.KeyFingerprintDto;
import com.template.model.dto.KeyPassWordDto;
import com.template.model.dto.UpdateLockDto;
import com.template.model.pojo.*;
import com.template.model.result.CommonResult;
import com.template.services.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
/**
*
* 前端控制器
*
*
* @author ceshi
* @since 2024-03-22
*/
@RestController
public class UnlockingAdminController implements UnlockingAdminControllerAPI {
@Autowired
UnlockingAdminService unlockingAdminService;
@Autowired
PermissionSettingService permissionSettingService;
@Autowired
UsersService usersService;
@Autowired
PasswordIssController passwordIssController;
@Autowired
AdminService adminService;
@Autowired
HouseNumberService houseNumberService;
@Autowired
OperatingRecordService operatingRecordService;
@Override
public CommonResult getPassWord() {
String passWord = PasswordChecker.getPassWord();
HashMap map = new HashMap<>();
map.put("passWord",passWord);
return CommonResult.ok(map);
}
@Override
@Transactional(rollbackFor = Exception.class)
public CommonResult savePassWord(KeyPassWordDto keyPassWordDto) {
String permissionSettingId = keyPassWordDto.getPermissionSettingId();
PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
if (ObjectUtils.isEmpty(permissionSetting)) {
return CommonResult.fail("非法进入");
}
// 判断该用户是否拥有权限
String houseTypeManagement = permissionSetting.getDoorLockManagement();
if (!"0".equals(houseTypeManagement) && !houseTypeManagement.contains("11")) {
return CommonResult.fail("此账号暂无该权限");
}
// 监测密码是否符合要求
String passWord = keyPassWordDto.getPassWord();
if (!PasswordChecker.isValidPassword(passWord)) {
return CommonResult.fail("密码长度的一半不能是连续升序、倒序、一样的数字");
}
Admin admin = adminService.getById(keyPassWordDto.getAdminId());
if (ObjectUtils.isEmpty(admin)) {
return CommonResult.fail("该管理员不存在");
}
Admin byId = adminService.getById(keyPassWordDto.getUsersId());
if (ObjectUtils.isEmpty(admin)) {
return CommonResult.fail("添加的用户不存在");
}
HouseNumber houseNumber = houseNumberService.getById(keyPassWordDto.getHouseNumberId());
if (ObjectUtils.isEmpty(houseNumber)) {
return CommonResult.fail("该房间不存在");
}
// String usersId = keyPassWordDto.getUsersId();
// Users byId = usersService.getById(usersId);
// if (ObjectUtils.isEmpty(byId)) {
// return CommonResult.fail("无该用户");
// }
UnlockingAdmin unlockingAdmin = null;
/**
* 缺少人的名字和
*/
try {
unlockingAdmin = passwordIssController.savePassWord(keyPassWordDto);
if (ObjectUtils.isEmpty(unlockingAdmin)) {
return CommonResult.fail("参数异常");
}
unlockingAdmin.setName(byId.getName());
unlockingAdmin.setPhone(byId.getPhoneNumber());
// 添加操作记录
OperatingRecord operatingRecord = new OperatingRecord();
operatingRecord.setRoomNumber(houseNumber.getRoomNumber());
operatingRecord.setHouseNumberId(houseNumber.getId());
operatingRecord.setOperatorName(admin.getName());
DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
operatingRecord.setDataTime(LocalDateTime.now().format(dateTimeFormatter1));
operatingRecord.setContent("姓名:" + byId.getName());
operatingRecord.setType("添加密码钥匙");
unlockingAdminService.save(unlockingAdmin);
operatingRecordService.save(operatingRecord);
return CommonResult.ok();
}catch (Exception e){
e.printStackTrace();
// 删除锁
passwordIssController.deleteLockUser(unlockingAdmin.getLuid(),unlockingAdmin.getLockUserId());
return CommonResult.fail();
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public CommonResult saveCard(KeyCardDto keyCardDto) {
String permissionSettingId = keyCardDto.getPermissionSettingId();
PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
if (ObjectUtils.isEmpty(permissionSetting)) {
return CommonResult.fail("非法进入");
}
// 判断该用户是否拥有权限
String houseTypeManagement = permissionSetting.getDoorLockManagement();
if (!"0".equals(houseTypeManagement) && !houseTypeManagement.contains("11")) {
return CommonResult.fail("此账号暂无该权限");
}
Admin admin = adminService.getById(keyCardDto.getAdminId());
if (ObjectUtils.isEmpty(admin)) {
return CommonResult.fail("该管理员不存在");
}
Admin byId = adminService.getById(keyCardDto.getUsersId());
if (ObjectUtils.isEmpty(admin)) {
return CommonResult.fail("添加的用户不存在");
}
HouseNumber houseNumber = houseNumberService.getById(keyCardDto.getHouseNumberId());
if (ObjectUtils.isEmpty(houseNumber)) {
return CommonResult.fail("该房间不存在");
}
// String usersId = keyCardDto.getUsersId();
// Users byId = usersService.getById(usersId);
// if (ObjectUtils.isEmpty(byId)) {
// return CommonResult.fail("无该用户");
// }
UnlockingAdmin unlockingAdmin = null;
try {
unlockingAdmin = passwordIssController.addCard(keyCardDto);
unlockingAdmin.setName(byId.getName());
unlockingAdmin.setPhone(byId.getPhoneNumber());
// 添加操作记录
OperatingRecord operatingRecord = new OperatingRecord();
operatingRecord.setHouseNumberId(houseNumber.getId());
operatingRecord.setRoomNumber(houseNumber.getRoomNumber());
operatingRecord.setOperatorName(admin.getName());
DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
operatingRecord.setDataTime(LocalDateTime.now().format(dateTimeFormatter1));
operatingRecord.setContent("姓名:" + byId.getName());
operatingRecord.setType("添加卡片钥匙");
unlockingAdminService.save(unlockingAdmin);
operatingRecordService.save(operatingRecord);
return CommonResult.ok();
}catch (Exception e){
e.printStackTrace();
// 删除锁
passwordIssController.deleteLockUser(unlockingAdmin.getLuid(),unlockingAdmin.getLockUserId());
return CommonResult.fail();
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public CommonResult saveFingerprint(KeyFingerprintDto keyFingerprintDto) {
String permissionSettingId = keyFingerprintDto.getPermissionSettingId();
PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
if (ObjectUtils.isEmpty(permissionSetting)) {
return CommonResult.fail("非法进入");
}
// 判断该用户是否拥有权限
String houseTypeManagement = permissionSetting.getDoorLockManagement();
if (!"0".equals(houseTypeManagement) && !houseTypeManagement.contains("11")) {
return CommonResult.fail("此账号暂无该权限");
}
Admin admin = adminService.getById(keyFingerprintDto.getAdminId());
if (ObjectUtils.isEmpty(admin)) {
return CommonResult.fail("该管理员不存在");
}
Admin byId = adminService.getById(keyFingerprintDto.getUsersId());
if (ObjectUtils.isEmpty(admin)) {
return CommonResult.fail("添加的用户不存在");
}
HouseNumber houseNumber = houseNumberService.getById(keyFingerprintDto.getHouseNumberId());
if (ObjectUtils.isEmpty(houseNumber)) {
return CommonResult.fail("该房间不存在");
}
// String usersId = keyFingerprintDto.getUsersId();
// Users byId = usersService.getById(usersId);
// if (ObjectUtils.isEmpty(byId)) {
// return CommonResult.fail("无该用户");
// }
UnlockingAdmin unlockingAdmin = null;
try {
unlockingAdmin = passwordIssController.addFingerprintDto(keyFingerprintDto);
unlockingAdmin.setName(byId.getName());
unlockingAdmin.setPhone(byId.getPhoneNumber());
// 添加操作记录
OperatingRecord operatingRecord = new OperatingRecord();
operatingRecord.setHouseNumberId(houseNumber.getId());
operatingRecord.setRoomNumber(houseNumber.getRoomNumber());
operatingRecord.setOperatorName(admin.getName());
DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
operatingRecord.setDataTime(LocalDateTime.now().format(dateTimeFormatter1));
operatingRecord.setContent("姓名:" + byId.getName());
operatingRecord.setType("添加指纹钥匙");
unlockingAdminService.save(unlockingAdmin);
operatingRecordService.save(operatingRecord);
return CommonResult.ok();
}catch (Exception e){
e.printStackTrace();
// 删除锁
passwordIssController.deleteLockUser(unlockingAdmin.getLuid(),unlockingAdmin.getLockUserId());
return CommonResult.fail();
}
}
@Override
public CommonResult deleteLock(Integer unlockingAdminId) {
UnlockingAdmin byId = unlockingAdminService.getById(unlockingAdminId);
if (ObjectUtils.isEmpty(byId)) {
return CommonResult.fail("不存在该记录");
}
String lockUserId = byId.getLockUserId();
String luid = byId.getLuid();
passwordIssController.deleteLockUser(luid,lockUserId);
unlockingAdminService.removeById(unlockingAdminId);
return CommonResult.ok();
}
@Override
public CommonResult updateLock(UpdateLockDto updateLockDto) {
UnlockingAdmin byId = unlockingAdminService.getById(updateLockDto.getUnlockingAdminId());
if (ObjectUtils.isEmpty(byId)) {
return CommonResult.fail("不存在该记录");
}
String lockStatus = byId.getLockStatus();
if (!"1".equals(lockStatus)) {
return CommonResult.fail("只有密码用户才能修改时效");
}
String lockUserId = byId.getLockUserId();
String luid = byId.getLuid();
String startTime = updateLockDto.getStartTime();
String endTime = updateLockDto.getEndTime();
passwordIssController.updateLock(lockUserId,luid,startTime,endTime);
byId.setStartTime(startTime);
byId.setEndTime(endTime);
unlockingAdminService.updateById(byId);
return CommonResult.ok();
}
}