xuanyan 4 лет назад
Родитель
Сommit
bb78aa47ab

+ 2 - 2
blade-service-api/device-api/src/main/java/org/springblade/device/feign/IDoorDeviceClient.java

@@ -85,8 +85,8 @@ public interface IDoorDeviceClient  {
 	@GetMapping("/getListByMacAddresses")
 	List<DoorDevice> getListByMacAddresses(List<String> macAddresses);
 
-	@GetMapping("/getListByResidentialAndUnit/{residentialId}/{unitId}")
-	List<DoorDeviceVO> getListByResidentialAndUnit(@PathVariable("residentialId") Long residentialId,@PathVariable("unitId") Long unitId, @RequestParam(value = "localType", required = false) Integer localType);
+	@GetMapping("/getListByResidentialAndUnit")
+	List<DoorDeviceVO> getListByResidentialAndUnit(@RequestParam("residentialId") Long residentialId,@RequestParam(value = "unitId", required = false) Long unitId, @RequestParam(value = "localType", required = false) Integer localType);
 
 	@GetMapping("/getListByAgencyAndResidential/{agencyId}/{residentialId}")
 	List<DoorDeviceVO> getListByAgencyAndResidential(@PathVariable("agencyId") Long agencyId,@PathVariable("residentialId") Long residentialId);

+ 3 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/feign/IUserAccessPermissionsClient.java

@@ -84,4 +84,7 @@ public interface IUserAccessPermissionsClient  {
 
 	@PostMapping("/autoPushPermissions")
 	R autoPushPermissions(@RequestBody UserAccessPermissionsDTO userAccessPermissionsDTO);
+
+	@PostMapping("/autoPushGuestPermissions")
+	R autoPushGuestPermissions(@RequestBody UserAccessPermissionsDTO userAccessPermissionsDTO);
 }

+ 5 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/feign/UserAccessPermissionsClientFallback.java

@@ -97,4 +97,9 @@ public class UserAccessPermissionsClientFallback implements IUserAccessPermissio
 		return null;
 	}
 
+	@Override
+	public R autoPushGuestPermissions(UserAccessPermissionsDTO userAccessPermissionsDTO) {
+		return null;
+	}
+
 }

+ 2 - 2
blade-service/device/src/main/java/org/springblade/device/feign/DoorDeviceClient.java

@@ -169,8 +169,8 @@ public class DoorDeviceClient implements IDoorDeviceClient {
 	}
 
 	@Override
-	@GetMapping("/getListByResidentialAndUnit/{residentialId}/{unitId}")
-	public List<DoorDeviceVO> getListByResidentialAndUnit(@PathVariable("residentialId") Long residentialId,@PathVariable("unitId") Long unitId, @RequestParam(value = "localType", required = false) Integer localType) {
+	@GetMapping("/getListByResidentialAndUnit")
+	public List<DoorDeviceVO> getListByResidentialAndUnit(@RequestParam("residentialId") Long residentialId,@RequestParam(value = "unitId", required = false) Long unitId, @RequestParam(value = "localType", required = false) Integer localType) {
 		LambdaQueryWrapper<DoorDevice> doorDeviceLambdaQueryWrapper = new QueryWrapper<>(new DoorDevice()).lambda().eq(DoorDevice::getResidentialId, residentialId)
 			.or().eq(DoorDevice::getUnitId, unitId).eq(localType != null, DoorDevice::getLocalType, localType);
 		return DoorDeviceWrapper.build().listVO(this.doorDeviceService.list(doorDeviceLambdaQueryWrapper));

+ 14 - 0
blade-service/estate/src/main/java/org/springblade/estate/controller/GuestRecordController.java

@@ -38,6 +38,7 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.enterprise.entity.Staff;
+import org.springblade.estate.dto.UserAccessPermissionsDTO;
 import org.springblade.estate.entity.AccessRecord;
 import org.springblade.estate.feign.IUserAccessPermissionsClient;
 import org.springblade.system.expand.feign.IConfClient;
@@ -128,6 +129,19 @@ public class GuestRecordController extends BladeController {
 //		guestRecord.setRegisterSource(2);
 		boolean save = guestRecordService.save(guestRecord);
 		if(save){
+			Residential residential = residentialClient.getById(guestRecord.getResidentialId());
+			//给访客远程开门权限
+			UserAccessPermissionsDTO userAccessPermissionsDTO = new UserAccessPermissionsDTO();
+			userAccessPermissionsDTO.setUserId(Func.toStr(guestRecord.getId()));
+			userAccessPermissionsDTO.setUserName(guestRecord.getGuestName());
+			userAccessPermissionsDTO.setUserType(CommonConstant.UserFlag.GUEST_FLAG.getValue());
+			userAccessPermissionsDTO.setTargetType(1);
+			userAccessPermissionsDTO.setResidentialId(guestRecord.getResidentialId());
+			userAccessPermissionsDTO.setUnitId(guestRecord.getUnitId());
+			userAccessPermissionsDTO.setRoomId(guestRecord.getRoomId());
+//			userAccessPermissionsDTO.setUserFace(faceUrl);
+			userAccessPermissionsDTO.setTenantId(residential.getTenantId());
+			userAccessPermissionsClient.autoPushGuestPermissions(userAccessPermissionsDTO);
 			if(guestRecord.getAuditStatus() == 1 && StringUtil.isNotBlank(guestRecord.getFaceUrl())){
 				R result = this.guestRecordService.pushFace(guestRecord.getId());
 				return result;

+ 15 - 2
blade-service/estate/src/main/java/org/springblade/estate/controller/ServerUserController.java

@@ -34,6 +34,7 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.estate.dto.UserAccessPermissionsDTO;
 import org.springblade.estate.entity.GuestRecord;
 import org.springblade.estate.feign.IUserAccessPermissionsClient;
 import org.springblade.system.expand.feign.IConfClient;
@@ -129,10 +130,22 @@ public class ServerUserController extends BladeController {
 	public R submit(@Valid @RequestBody ServerUser serverUser, BladeUser bladeUser) {
 		serverUser.setCreateUser(bladeUser.getUserId());
 		serverUser.setCreateDept(Convert.toLong(bladeUser.getDeptId()));
-		serverUser.setFaceUrl(confClient.removePrefix(serverUser.getFaceUrl()));
+		String faceUrl = confClient.removePrefix(serverUser.getFaceUrl());
+		serverUser.setFaceUrl(faceUrl);
 		Agency agency = agencyClient.getById(serverUser.getAgencyId());
 		serverUser.setTenantId(agency.getTenantId());
-		return R.status(serverUserService.saveOrUpdate(serverUser));
+		if (serverUserService.saveOrUpdate(serverUser)){
+			UserAccessPermissionsDTO userAccessPermissionsDTO = new UserAccessPermissionsDTO();
+			userAccessPermissionsDTO.setUserId(Func.toStr(serverUser.getId()));
+			userAccessPermissionsDTO.setUserName(serverUser.getName());
+			userAccessPermissionsDTO.setUserType(CommonConstant.UserFlag.SERVER_USER_FLAG.getValue());
+			userAccessPermissionsDTO.setTargetType(1);
+			userAccessPermissionsDTO.setResidentialId(serverUser.getResidentialId());
+			userAccessPermissionsDTO.setUserFace(faceUrl);
+			userAccessPermissionsDTO.setTenantId(serverUser.getTenantId());
+			userAccessPermissionsClient.autoPushPermissions(userAccessPermissionsDTO);
+		}
+		return R.status(true);
 	}
 
 

+ 6 - 0
blade-service/estate/src/main/java/org/springblade/estate/feign/UserAccessPermissionsClient.java

@@ -136,4 +136,10 @@ public class UserAccessPermissionsClient implements IUserAccessPermissionsClient
 	public R autoPushPermissions(@RequestBody UserAccessPermissionsDTO userAccessPermissionsDTO){
 		return userAccessPermissionsService.autoPushPermissions(userAccessPermissionsDTO);
 	}
+
+	@Override
+	@PostMapping("/autoPushGuestPermissions")
+	public R autoPushGuestPermissions(@RequestBody UserAccessPermissionsDTO userAccessPermissionsDTO){
+		return userAccessPermissionsService.autoPushGuestPermissions(userAccessPermissionsDTO);
+	}
 }

+ 2 - 0
blade-service/estate/src/main/java/org/springblade/estate/service/IUserAccessPermissionsService.java

@@ -67,6 +67,8 @@ public interface IUserAccessPermissionsService extends BaseService<UserAccessPer
 
 	R autoPushPermissions(UserAccessPermissionsDTO userAccessPermissionsDTO);
 
+	R autoPushGuestPermissions(UserAccessPermissionsDTO userAccessPermissionsDTO);
+
 	R deleteFace(String userId, String userType);
 
     List<UserAccessPermissions> listByUser(String userId, String userType);

+ 4 - 0
blade-service/estate/src/main/java/org/springblade/estate/service/impl/GuestRecordServiceImpl.java

@@ -21,6 +21,7 @@ import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.common.constant.CommonConstant;
+import org.springblade.common.constant.Constants;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -29,6 +30,7 @@ import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.device.entity.DoorDevice;
 import org.springblade.device.feign.IDoorDeviceClient;
+import org.springblade.estate.entity.AuthorizeRecords;
 import org.springblade.estate.entity.GuestRecord;
 import org.springblade.estate.service.IUserAccessPermissionsService;
 import org.springblade.estate.vo.GuestRecordVO;
@@ -101,12 +103,14 @@ public class GuestRecordServiceImpl extends BaseServiceImpl<GuestRecordMapper, G
 			deviceDTO.setFactory(item.getDeviceFactory());
 			return deviceDTO;
 		}).collect(Collectors.toList());
+
 		UserDeviceDTO userDeviceDTO = new UserDeviceDTO();
 		userDeviceDTO.setTargetType(2);
 		userDeviceDTO.setUserName(guestRecord.getGuestName());
 		userDeviceDTO.setDeviceList(deviceDTOList);
 		userDeviceDTO.setUserFaceUrl(guestRecord.getFaceUrl());
 		userDeviceDTO.setUserId(CommonConstant.UserFlag.GUEST_FLAG.getValue() + guestRecord.getId());
+		userDeviceDTO.setUserType(CommonConstant.UserFlag.GUEST_FLAG.getValue());
 		userDeviceDTO.setAddOrUpdate(1);
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 		userDeviceDTO.setStartTime(sdf.format(guestRecord.getBeginTime()));

+ 31 - 0
blade-service/estate/src/main/java/org/springblade/estate/service/impl/UserAccessPermissionsServiceImpl.java

@@ -245,6 +245,37 @@ public class UserAccessPermissionsServiceImpl extends BaseServiceImpl<UserAccess
 		return R.status(true);
 	}
 
+	@Override
+	@Async
+	public R autoPushGuestPermissions(UserAccessPermissionsDTO userAccessPermissionsDTO) {
+		if (StringUtil.isNotBlank(userAccessPermissionsDTO.getUserFace())) {
+			this.autoPushFace(userAccessPermissionsDTO);
+		}
+		List<DoorDeviceVO> doorDeviceVOList = doorDeviceClient.getListByResidentialAndUnit(userAccessPermissionsDTO.getResidentialId(), userAccessPermissionsDTO.getUnitId(), 1);
+		if (doorDeviceVOList.size() == 0) {
+			return R.status(true);
+		} else {
+			for (DoorDeviceVO doorDeviceVO : doorDeviceVOList) {
+				UserAccessPermissions userAccessPermissions = BeanUtil.copy(userAccessPermissionsDTO, UserAccessPermissions.class);
+				userAccessPermissions.setId(null);
+				userAccessPermissions.setDeviceName(doorDeviceVO.getName());
+				userAccessPermissions.setDeviceSerialNum(doorDeviceVO.getSerialNum());
+				userAccessPermissions.setDeviceAddress(doorDeviceVO.getAddress());
+				userAccessPermissions.setAgencyId(doorDeviceVO.getAgencyId());
+				userAccessPermissions.setResidentialId(doorDeviceVO.getResidentialId());
+				userAccessPermissions.setBuildingId(doorDeviceVO.getBuildingId());
+				userAccessPermissions.setUnitId(doorDeviceVO.getUnitId());
+				userAccessPermissions.setRoomId(doorDeviceVO.getRoomId());
+				userAccessPermissions.setDeviceAddress(doorDeviceVO.getAddress());
+				userAccessPermissions.setDeviceFactory(doorDeviceVO.getDeviceFactory());
+				userAccessPermissions.setPermissions(Integer.parseInt(CommonConstant.UserAccessPermissions.REMOTE_OPEN_DOOR.getValue()));
+				userAccessPermissions.setUserFace(null);
+				this.save(userAccessPermissions);
+			}
+		}
+		return R.status(true);
+	}
+
 	@Override
 	public R deleteFace(String userId, String userType) {
 		List<UserAccessPermissions> permissionsList = this.listByUser(userId, userType);