UnlockingEmployeeController.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. package com.template.controller;
  2. import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
  3. import com.template.api.UnlockingEmployeeControllerAPI;
  4. import com.template.common.utils.PasswordChecker;
  5. import com.template.common.utils.TimeExchange;
  6. import com.template.model.dto.*;
  7. import com.template.model.pojo.*;
  8. import com.template.model.result.CommonResult;
  9. import com.template.services.*;
  10. import org.springframework.beans.BeanUtils;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.transaction.annotation.Transactional;
  13. import org.springframework.util.StringUtils;
  14. import org.springframework.web.bind.annotation.RequestMapping;
  15. import org.springframework.web.bind.annotation.RestController;
  16. import java.time.LocalDateTime;
  17. import java.time.format.DateTimeFormatter;
  18. /**
  19. * <p>
  20. * 员工添加钥匙 前端控制器
  21. * </p>
  22. *
  23. * @author ceshi
  24. * @since 2024-08-12
  25. */
  26. @RestController
  27. public class UnlockingEmployeeController implements UnlockingEmployeeControllerAPI {
  28. @Autowired
  29. UnlockingEmployeeService unlockingEmployeeService;
  30. @Autowired
  31. PermissionSettingService permissionSettingService;
  32. @Autowired
  33. AdminService adminService;
  34. @Autowired
  35. EmployeeUsersService employeeUsersService;
  36. @Autowired
  37. HouseNumberService houseNumberService;
  38. @Autowired
  39. OperatingRecordService operatingRecordService;
  40. @Autowired
  41. PasswordIssController passwordIssController;
  42. @Override
  43. @Transactional(rollbackFor = Exception.class)
  44. public CommonResult savePassWord(KeyPassWordDto keyPassWordDto) {
  45. String permissionSettingId = keyPassWordDto.getPermissionSettingId();
  46. PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
  47. if (ObjectUtils.isEmpty(permissionSetting)) {
  48. return CommonResult.fail("非法进入");
  49. }
  50. // 判断该用户是否拥有权限
  51. String houseTypeManagement = permissionSetting.getDoorLockManagement();
  52. if (!"0".equals(houseTypeManagement) && !houseTypeManagement.contains("11")) {
  53. return CommonResult.fail("此账号暂无该权限");
  54. }
  55. // 监测密码是否符合要求
  56. String passWord = keyPassWordDto.getPassWord();
  57. if (!PasswordChecker.isValidPassword(passWord)) {
  58. return CommonResult.fail("密码长度的一半不能是连续升序、倒序、一样的数字");
  59. }
  60. Admin admin = adminService.getById(keyPassWordDto.getAdminId());
  61. if (ObjectUtils.isEmpty(admin)) {
  62. return CommonResult.fail("该管理员不存在");
  63. }
  64. EmployeeUsers byId = employeeUsersService.getById(keyPassWordDto.getUsersId());
  65. if (ObjectUtils.isEmpty(admin)) {
  66. return CommonResult.fail("添加的用户不存在");
  67. }
  68. HouseNumber houseNumber = houseNumberService.getById(keyPassWordDto.getHouseNumberId());
  69. if (ObjectUtils.isEmpty(houseNumber)) {
  70. return CommonResult.fail("该房间不存在");
  71. }
  72. // String usersId = keyPassWordDto.getUsersId();
  73. // Users byId = usersService.getById(usersId);
  74. // if (ObjectUtils.isEmpty(byId)) {
  75. // return CommonResult.fail("无该用户");
  76. // }
  77. UnlockingAdmin unlockingAdmin = null;
  78. UnlockingEmployee unlockingEmployee = new UnlockingEmployee();
  79. /**
  80. * 缺少人的名字和
  81. */
  82. try {
  83. unlockingAdmin = passwordIssController.savePassWord(keyPassWordDto);
  84. if (ObjectUtils.isEmpty(unlockingAdmin)) {
  85. return CommonResult.fail("该密码已存在,请更换");
  86. }
  87. unlockingAdmin.setName(byId.getUserName());
  88. unlockingAdmin.setPhone(byId.getPhone());
  89. // 添加操作记录
  90. OperatingRecord operatingRecord = new OperatingRecord();
  91. operatingRecord.setRoomNumber(houseNumber.getRoomNumber());
  92. operatingRecord.setHouseNumberId(houseNumber.getId());
  93. operatingRecord.setOperatorName(admin.getName());
  94. DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  95. operatingRecord.setDataTime(LocalDateTime.now().format(dateTimeFormatter1));
  96. operatingRecord.setContent("姓名:" + byId.getUserName());
  97. operatingRecord.setType("添加员工密码钥匙");
  98. BeanUtils.copyProperties(unlockingAdmin,unlockingEmployee);
  99. unlockingEmployeeService.save(unlockingEmployee);
  100. operatingRecordService.save(operatingRecord);
  101. return CommonResult.ok();
  102. }catch (Exception e){
  103. e.printStackTrace();
  104. // 删除锁
  105. passwordIssController.deleteLockUser(unlockingAdmin.getLuid(),unlockingAdmin.getLockUserId());
  106. return CommonResult.fail();
  107. }
  108. }
  109. @Override
  110. @Transactional(rollbackFor = Exception.class)
  111. public CommonResult saveCard(KeyCardEmpDto keyCardDto) {
  112. String permissionSettingId = keyCardDto.getPermissionSettingId();
  113. PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
  114. if (ObjectUtils.isEmpty(permissionSetting)) {
  115. return CommonResult.fail("非法进入");
  116. }
  117. // 判断该用户是否拥有权限
  118. String houseTypeManagement = permissionSetting.getDoorLockManagement();
  119. if (!"0".equals(houseTypeManagement) && !houseTypeManagement.contains("11")) {
  120. return CommonResult.fail("此账号暂无该权限");
  121. }
  122. Admin admin = adminService.getById(keyCardDto.getAdminId());
  123. if (ObjectUtils.isEmpty(admin)) {
  124. return CommonResult.fail("该管理员不存在");
  125. }
  126. EmployeeUsers byId = employeeUsersService.getById(keyCardDto.getUsersId());
  127. if (ObjectUtils.isEmpty(admin)) {
  128. return CommonResult.fail("添加的员工不存在");
  129. }
  130. //没传卡片id则使用用户信息身份证
  131. if(!StringUtils.hasText(keyCardDto.getCard())){
  132. if (!StringUtils.hasText(byId.getIdCardInformation())){
  133. return CommonResult.fail("该员工没有卡片信息");
  134. }else{
  135. keyCardDto.setCard(byId.getIdCardInformation());
  136. keyCardDto.setCardType(1);
  137. }
  138. }
  139. HouseNumber houseNumber = houseNumberService.getById(keyCardDto.getHouseNumberId());
  140. if (ObjectUtils.isEmpty(houseNumber)) {
  141. return CommonResult.fail("该房间不存在");
  142. }
  143. // String usersId = keyCardDto.getUsersId();
  144. // Users byId = usersService.getById(usersId);
  145. // if (ObjectUtils.isEmpty(byId)) {
  146. // return CommonResult.fail("无该用户");
  147. // }
  148. UnlockingAdmin unlockingAdmin = null;
  149. UnlockingEmployee unlockingEmployee = new UnlockingEmployee();
  150. try {
  151. KeyCardDto keyCardDto1=new KeyCardDto();
  152. BeanUtils.copyProperties(keyCardDto,keyCardDto1);
  153. unlockingAdmin = passwordIssController.addCard(keyCardDto1);
  154. unlockingAdmin.setName(byId.getUserName());
  155. unlockingAdmin.setPhone(byId.getPhone());
  156. // 添加操作记录
  157. OperatingRecord operatingRecord = new OperatingRecord();
  158. operatingRecord.setHouseNumberId(houseNumber.getId());
  159. operatingRecord.setRoomNumber(houseNumber.getRoomNumber());
  160. operatingRecord.setOperatorName(admin.getName());
  161. DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  162. operatingRecord.setDataTime(LocalDateTime.now().format(dateTimeFormatter1));
  163. operatingRecord.setContent("姓名:" + byId.getUserName());
  164. operatingRecord.setType("添加员工卡片钥匙");
  165. BeanUtils.copyProperties(unlockingAdmin,unlockingEmployee);
  166. unlockingEmployeeService.save(unlockingEmployee);
  167. operatingRecordService.save(operatingRecord);
  168. return CommonResult.ok();
  169. }catch (Exception e){
  170. e.printStackTrace();
  171. // 删除锁
  172. passwordIssController.deleteLockUser(unlockingAdmin.getLuid(),unlockingAdmin.getLockUserId());
  173. return CommonResult.fail();
  174. }
  175. }
  176. @Override
  177. @Transactional(rollbackFor = Exception.class)
  178. public CommonResult saveFingerprint(KeyFingerprintEmpDto keyFingerprintEmpDto) {
  179. String permissionSettingId = keyFingerprintEmpDto.getPermissionSettingId();
  180. PermissionSetting permissionSetting = permissionSettingService.getById(permissionSettingId);
  181. if (ObjectUtils.isEmpty(permissionSetting)) {
  182. return CommonResult.fail("非法进入");
  183. }
  184. // 判断该用户是否拥有权限
  185. String houseTypeManagement = permissionSetting.getDoorLockManagement();
  186. if (!"0".equals(houseTypeManagement) && !houseTypeManagement.contains("11")) {
  187. return CommonResult.fail("此账号暂无该权限");
  188. }
  189. Admin admin = adminService.getById(keyFingerprintEmpDto.getAdminId());
  190. if (ObjectUtils.isEmpty(admin)) {
  191. return CommonResult.fail("该管理员不存在");
  192. }
  193. EmployeeUsers byId = employeeUsersService.getById(keyFingerprintEmpDto.getUsersId());
  194. if (ObjectUtils.isEmpty(admin)) {
  195. return CommonResult.fail("添加的用户不存在");
  196. }
  197. KeyFingerprintDto keyFingerprintDto = new KeyFingerprintDto();
  198. if (!StringUtils.hasText(byId.getFingerprint())){
  199. return CommonResult.fail("缺少指纹,请前往员工管理添加该员工指纹");
  200. }else{
  201. keyFingerprintDto.setFingerprintData(byId.getFingerprint());
  202. }
  203. HouseNumber houseNumber = houseNumberService.getById(keyFingerprintEmpDto.getHouseNumberId());
  204. if (ObjectUtils.isEmpty(houseNumber)) {
  205. return CommonResult.fail("该房间不存在");
  206. }
  207. // String usersId = keyFingerprintDto.getUsersId();
  208. // Users byId = usersService.getById(usersId);
  209. // if (ObjectUtils.isEmpty(byId)) {
  210. // return CommonResult.fail("无该用户");
  211. // }
  212. UnlockingAdmin unlockingAdmin = null;
  213. UnlockingEmployee unlockingEmployee = new UnlockingEmployee();
  214. try {
  215. BeanUtils.copyProperties(keyFingerprintEmpDto,keyFingerprintDto);
  216. unlockingAdmin = passwordIssController.addFingerprintDto(keyFingerprintDto);
  217. unlockingAdmin.setName(byId.getUserName());
  218. unlockingAdmin.setPhone(byId.getPhone());
  219. // 添加操作记录
  220. OperatingRecord operatingRecord = new OperatingRecord();
  221. operatingRecord.setHouseNumberId(houseNumber.getId());
  222. operatingRecord.setRoomNumber(houseNumber.getRoomNumber());
  223. operatingRecord.setOperatorName(admin.getName());
  224. DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  225. operatingRecord.setDataTime(LocalDateTime.now().format(dateTimeFormatter1));
  226. operatingRecord.setContent("姓名:" + byId.getUserName());
  227. operatingRecord.setType("添加员工指纹钥匙");
  228. BeanUtils.copyProperties(unlockingAdmin,unlockingEmployee);
  229. unlockingEmployeeService.save(unlockingEmployee);
  230. operatingRecordService.save(operatingRecord);
  231. return CommonResult.ok();
  232. }catch (Exception e){
  233. e.printStackTrace();
  234. // 删除锁
  235. passwordIssController.deleteLockUser(unlockingAdmin.getLuid(),unlockingAdmin.getLockUserId());
  236. return CommonResult.fail();
  237. }
  238. }
  239. @Override
  240. public CommonResult deleteLock(Integer unlockingEmpId) {
  241. UnlockingEmployee byId = unlockingEmployeeService.getById(unlockingEmpId);
  242. if (ObjectUtils.isEmpty(byId)) {
  243. return CommonResult.fail("不存在该记录");
  244. }
  245. String lockUserId = byId.getLockUserId();
  246. String luid = byId.getLuid();
  247. passwordIssController.deleteLockUser(luid,lockUserId);
  248. unlockingEmployeeService.removeById(unlockingEmpId);
  249. return CommonResult.ok();
  250. }
  251. @Override
  252. public CommonResult updateLock(UpdateLockDto updateLockDto) {
  253. UnlockingEmployee byId = unlockingEmployeeService.getById(updateLockDto.getUnlockingAdminId());
  254. if (ObjectUtils.isEmpty(byId)) {
  255. return CommonResult.fail("不存在该记录");
  256. }
  257. String lockStatus = byId.getLockStatus();
  258. if (!"1".equals(lockStatus)) {
  259. return CommonResult.fail("只有密码用户才能修改时效");
  260. }
  261. String lockUserId = byId.getLockUserId();
  262. String luid = byId.getLuid();
  263. String startTime = updateLockDto.getStartTime();
  264. String endTime = updateLockDto.getEndTime();
  265. passwordIssController.updateLock(lockUserId,luid,startTime,endTime);
  266. byId.setStartTime(startTime);
  267. byId.setEndTime(endTime);
  268. unlockingEmployeeService.updateById(byId);
  269. return CommonResult.ok();
  270. }
  271. }