Ver código fonte

1、门禁、访客、车辆调整

slowslo 4 anos atrás
pai
commit
8a0a496c26
33 arquivos alterados com 311 adições e 240 exclusões
  1. 14 0
      blade-biz-common/src/main/java/org/springblade/common/constant/CommonConstant.java
  2. 8 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/dto/AuthorizeRecordsDTO.java
  3. 3 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/entity/Car.java
  4. 15 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/entity/Feedback.java
  5. 8 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/entity/UserAccessPermissions.java
  6. 3 2
      blade-service-api/estate-api/src/main/java/org/springblade/estate/feign/ApplyUserClientFallback.java
  7. 3 2
      blade-service-api/estate-api/src/main/java/org/springblade/estate/feign/IApplyUserClient.java
  8. 2 1
      blade-service-api/estate-api/src/main/java/org/springblade/estate/feign/IUserAccessPermissionsClient.java
  9. 1 1
      blade-service-api/estate-api/src/main/java/org/springblade/estate/feign/UserAccessPermissionsClientFallback.java
  10. 2 0
      blade-service-api/estate-api/src/main/java/org/springblade/estate/vo/FeedbackVO.java
  11. 1 1
      blade-service-api/person-api/src/main/java/org/springblade/person/feign/HouseUserClientFallback.java
  12. 1 1
      blade-service-api/person-api/src/main/java/org/springblade/person/feign/IHouseUserClient.java
  13. 4 2
      blade-service/community/src/main/java/org/springblade/community/controller/ResidentialController.java
  14. 10 15
      blade-service/device/src/main/java/org/springblade/device/controller/DoorDeviceController.java
  15. 8 5
      blade-service/estate/src/main/java/org/springblade/estate/controller/ApplyUserController.java
  16. 4 3
      blade-service/estate/src/main/java/org/springblade/estate/feign/ApplyUserClient.java
  17. 3 2
      blade-service/estate/src/main/java/org/springblade/estate/feign/UserAccessPermissionsClient.java
  18. 1 0
      blade-service/estate/src/main/java/org/springblade/estate/mapper/CarMapper.xml
  19. 3 0
      blade-service/estate/src/main/java/org/springblade/estate/mapper/FeedbackMapper.xml
  20. 1 0
      blade-service/estate/src/main/java/org/springblade/estate/mapper/UserAccessPermissionsMapper.xml
  21. 15 1
      blade-service/estate/src/main/java/org/springblade/estate/service/IApplyUserService.java
  22. 5 1
      blade-service/estate/src/main/java/org/springblade/estate/service/IUserAccessPermissionsService.java
  23. 92 132
      blade-service/estate/src/main/java/org/springblade/estate/service/impl/ApplyUserServiceImpl.java
  24. 52 4
      blade-service/estate/src/main/java/org/springblade/estate/service/impl/UserAccessPermissionsServiceImpl.java
  25. 8 0
      blade-service/estate/src/main/java/org/springblade/estate/wrapper/FeedbackWrapper.java
  26. 6 2
      blade-service/person/src/main/java/org/springblade/person/feign/HouseUserClient.java
  27. 12 12
      blade-service/person/src/main/java/org/springblade/person/wrapper/HouseUserWrapper.java
  28. 1 1
      blade-service/third/src/main/java/org/springblade/third/doordevice/feign/DoorDeviceButtClient.java
  29. 3 0
      blade-service/third/src/main/java/org/springblade/third/zongheng/handler/FrmFacePictureHandler.java
  30. 10 35
      community-app-gateway/src/main/java/org/springblade/app/controller/ApplyUserController.java
  31. 6 16
      community-app-gateway/src/main/java/org/springblade/app/controller/CarController.java
  32. 5 0
      community-app-gateway/src/main/java/org/springblade/app/controller/HouseUserController.java
  33. 1 1
      community-app-gateway/src/main/java/org/springblade/app/controller/MemberController.java

+ 14 - 0
blade-biz-common/src/main/java/org/springblade/common/constant/CommonConstant.java

@@ -212,4 +212,18 @@ public interface CommonConstant {
 		}
 	}
 
+	@Getter
+	enum UserAccessPermissions {
+
+		REMOTE_OPEN_DOOR("远程开门","1"),
+		CARD_OPEN_DOOR("门禁卡开门","2"),
+		FACE_OPEN_DOOR("人脸开门","3");
+		private String name;
+		private String value;
+		UserAccessPermissions(String name,String value){
+			this.name = name;
+			this.value = value;
+		}
+	}
+
 }

+ 8 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/dto/AuthorizeRecordsDTO.java

@@ -33,4 +33,12 @@ public class AuthorizeRecordsDTO extends AuthorizeRecords {
 
 	private String userFace;
 
+	/**
+	 * 授权开门类型
+	 * 1:远程开门
+	 * 2:门禁卡开门
+	 * 3:人脸开门
+	 */
+	private Integer permissions;
+
 }

+ 3 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/entity/Car.java

@@ -172,4 +172,7 @@ public class Car extends BaseEntity {
 	@ApiModelProperty(value = "租户类型")
 	private String tenantType;
 
+	@ApiModelProperty(value = "车主身份证号")
+	private String userIdCard;
+
 }

+ 15 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/entity/Feedback.java

@@ -17,11 +17,15 @@
 package org.springblade.estate.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import org.springblade.core.mp.base.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 /**
  * 实体类
@@ -92,5 +96,16 @@ public class Feedback extends BaseEntity {
 	@ApiModelProperty("0:社区,1园区")
 	private Integer tenantType;
 
+	@ApiModelProperty("是否已处理")
+	private Integer isHandle;
+
+	@ApiModelProperty(value = "处理日期")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date handleDate;
+
+	@ApiModelProperty(value = "处理意见")
+	private String handleOpinion;
+
 
 }

+ 8 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/entity/UserAccessPermissions.java

@@ -115,6 +115,14 @@ public class UserAccessPermissions extends BaseEntity {
 	 */
 	private String deviceFactory;
 
+	/**
+	 * 授权开门类型
+	 * 1:远程开门
+	 * 2:门禁卡开门
+	 * 3:人脸开门
+	 */
+	private Integer permissions;
+
 
 
 }

+ 3 - 2
blade-service-api/estate-api/src/main/java/org/springblade/estate/feign/ApplyUserClientFallback.java

@@ -1,6 +1,7 @@
 package org.springblade.estate.feign;
 
 import org.springblade.core.mp.support.BladePage;
+import org.springblade.core.tool.api.R;
 import org.springblade.estate.dto.ApplyUserDTO;
 import org.springblade.estate.entity.ApplyUser;
 import org.springblade.estate.vo.ApplyUserVO;
@@ -53,8 +54,8 @@ public class ApplyUserClientFallback implements IApplyUserClient {
 	}
 
 	@Override
-	public boolean updateCheckState(ApplyUser applyUser) {
-		return false;
+	public R appUpdateAuditStatus(ApplyUserDTO applyUserDTO) {
+		return null;
 	}
 
 

+ 3 - 2
blade-service-api/estate-api/src/main/java/org/springblade/estate/feign/IApplyUserClient.java

@@ -2,6 +2,7 @@ package org.springblade.estate.feign;
 
 import io.swagger.annotations.ApiParam;
 import org.springblade.core.mp.support.BladePage;
+import org.springblade.core.tool.api.R;
 import org.springblade.estate.dto.ApplyUserDTO;
 import org.springblade.estate.dto.ApplyUserPageDTO;
 import org.springblade.estate.entity.ApplyUser;
@@ -55,8 +56,8 @@ public interface IApplyUserClient {
 	@PostMapping("/addApplyUserForFamily")
 	boolean addApplyUserForFamily(@RequestBody ApplyUser applyUser);
 
-	@PostMapping("/updateCheckState")
-	boolean updateCheckState(@RequestBody ApplyUser applyUser);
+	@PostMapping("/appUpdateAuditStatus")
+	R appUpdateAuditStatus(@RequestBody ApplyUserDTO applyUserDTO);
 
 
 	/**

+ 2 - 1
blade-service-api/estate-api/src/main/java/org/springblade/estate/feign/IUserAccessPermissionsClient.java

@@ -79,5 +79,6 @@ public interface IUserAccessPermissionsClient  {
 
 	@PostMapping("/getListByUserAndAddress")
 	List<UserAccessPermissionsVO> getListByUserAndAddress(@RequestParam(value = "userId") String userId, @RequestParam(value = "userType") String userType,
-										@RequestParam(value = "residentialId", required =  false) Long residentialId, @RequestParam(value = "unitId", required = false) Long unitId);
+										@RequestParam(value = "residentialId", required =  false) Long residentialId, @RequestParam(value = "unitId", required = false) Long unitId
+										, @RequestParam(value = "permissions", required = false) Integer permissions);
 }

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

@@ -88,7 +88,7 @@ public class UserAccessPermissionsClientFallback implements IUserAccessPermissio
 	}
 
 	@Override
-	public List<UserAccessPermissionsVO> getListByUserAndAddress(String userId, String userType, Long residentialId, Long unitId) {
+	public List<UserAccessPermissionsVO> getListByUserAndAddress(String userId, String userType, Long residentialId, Long unitId, Integer permissions) {
 		return null;
 	}
 

+ 2 - 0
blade-service-api/estate-api/src/main/java/org/springblade/estate/vo/FeedbackVO.java

@@ -35,4 +35,6 @@ public class FeedbackVO extends Feedback {
 
 	private String agencyName;
 
+	private String residentialName;
+
 }

+ 1 - 1
blade-service-api/person-api/src/main/java/org/springblade/person/feign/HouseUserClientFallback.java

@@ -106,7 +106,7 @@ public class HouseUserClientFallback implements IHouseUserClient {
 	}
 
 	@Override
-	public HouseUser applySave(HouseUser houseUser) {
+	public R<HouseUser> applySave(HouseUser houseUser) {
 		return null;
 	}
 

+ 1 - 1
blade-service-api/person-api/src/main/java/org/springblade/person/feign/IHouseUserClient.java

@@ -109,7 +109,7 @@ public interface IHouseUserClient {
 	 * 新增
 	 */
 	@PostMapping("/applySave")
-	HouseUser applySave(@Valid @RequestBody HouseUser houseUser);
+	R<HouseUser> applySave(@Valid @RequestBody HouseUser houseUser);
 
 	/***
 	 * 住户数量

+ 4 - 2
blade-service/community/src/main/java/org/springblade/community/controller/ResidentialController.java

@@ -182,7 +182,9 @@ public class ResidentialController extends BladeController {
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "下拉列表", notes = "传入residential")
 	public R<List<Residential>> select(@RequestParam Map<String,Object> residential,Integer size, BladeUser bladeUser) {
-		LambdaQueryWrapper<Residential> residentialLambdaQueryWrapper = new QueryWrapperUtil<Residential>().getBasicQueryWrapperByMap(Residential::getOrgPosition, residential, new Residential(), bladeUser, orgPositionClient);
-		return R.data(residentialService.list(residentialLambdaQueryWrapper));
+		LambdaQueryWrapper<Residential> queryWrapper = Condition.getQueryWrapper(residential, Residential.class).lambda();
+		queryWrapper.last(size != null, "limit " + size);
+		queryWrapper.orderByDesc(Residential::getCreateTime);
+		return R.data(residentialService.list(queryWrapper));
 	}
 }

+ 10 - 15
blade-service/device/src/main/java/org/springblade/device/controller/DoorDeviceController.java

@@ -16,9 +16,6 @@
  */
 package org.springblade.device.controller;
 
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.convert.Convert;
-import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import io.swagger.annotations.Api;
@@ -30,7 +27,6 @@ import javax.validation.Valid;
 
 import org.springblade.common.constant.CommonConstant;
 import org.springblade.community.entity.Residential;
-import org.springblade.community.feign.IAgencyClient;
 import org.springblade.community.feign.IResidentialClient;
 import org.springblade.community.vo.ResidentialVO;
 import org.springblade.core.mp.support.Condition;
@@ -39,12 +35,8 @@ import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.device.dto.UserInfoDto;
-import org.springblade.device.vo.CoordinatesVO;
-import org.springblade.estate.entity.CarOutRecord;
-import org.springblade.system.expand.feign.IOrgPositionClient;
-import org.springblade.system.expand.util.QueryWrapperUtil;
 import org.springblade.third.doordevice.feign.IDoorDeviceButtClient;
+import org.springframework.util.Assert;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -145,17 +137,20 @@ public class DoorDeviceController extends BladeController {
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "新增或修改", notes = "传入doorDevice")
 	public R submit(@Valid @RequestBody DoorDevice doorDevice) {
-
+		Assert.hasText(doorDevice.getSerialNum(), "设备序列号必传");
 		Residential residential = new Residential();
 		residential.setId(doorDevice.getResidentialId());
 		ResidentialVO residentialVO = residentialClient.detail(residential);
 		Assert.notNull(residentialVO,"找不到对应的小区");
 		doorDevice.setAgencyId(residentialVO.getAgencyId());
-		boolean isNewDoorDevice = doorDevice.getId() == null? true : false;
-		boolean saveOrUpdate = doorDeviceService.saveOrUpdate(doorDevice);
-		if(saveOrUpdate && isNewDoorDevice){
-			doorDeviceButtClient.addDevices(Arrays.asList(doorDevice));
-		}
+		LambdaQueryWrapper<DoorDevice> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(DoorDevice::getSerialNum, doorDevice.getSerialNum());
+		List<DoorDevice> deviceList = doorDeviceService.list(lambdaQueryWrapper);
+		Assert.isTrue(deviceList.size() == 0,"设备序列号已存在");
+		doorDeviceService.saveOrUpdate(doorDevice);
+//		if(saveOrUpdate && isNewDoorDevice){
+//			doorDeviceButtClient.addDevices(Arrays.asList(doorDevice));
+//		}
 		return R.data(doorDevice);
 	}
 

+ 8 - 5
blade-service/estate/src/main/java/org/springblade/estate/controller/ApplyUserController.java

@@ -41,6 +41,7 @@ import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.estate.dto.ApplyUserDTO;
 import org.springblade.person.entity.HouseUser;
 import org.springblade.person.feign.IHouseUserClient;
 import org.springblade.person.vo.HouseUserVO;
@@ -135,8 +136,8 @@ public class ApplyUserController extends BladeController {
 	@PostMapping("/update")
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "修改", notes = "传入applyUser")
-	public R update(@Valid @RequestBody ApplyUser applyUser) {
-		applyUser.setOperatorType(2);//后台审核类型
+	public R update(@Valid @RequestBody ApplyUserDTO applyUserDTO) {
+		/*applyUser.setOperatorType(2);//后台审核类型
 		BladeUser user = SecureUtil.getUser();
 		applyUser.setOperatorName(user.getUserName());
 		applyUser.setCheckDate(new Date());
@@ -206,7 +207,9 @@ public class ApplyUserController extends BladeController {
 				}
 			}
 		}
-		return R.status(applyUserService.updateById(applyUser));
+		return R.status(applyUserService.updateById(applyUser));*/
+		applyUserDTO.setOperatorType(2);
+		return this.applyUserService.updateAuditStatus(applyUserDTO);
 	}
 
 	/**
@@ -238,9 +241,9 @@ public class ApplyUserController extends BladeController {
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "住户申请审核", notes = "传入applyUser")
 	@Transactional
-	public R updateCheckState(@Valid @RequestBody ApplyUser applyUser) {
+	public R updateCheckState(@Valid @RequestBody ApplyUserDTO applyUserDTO) {
 
-		return R.data(this.applyUserService.updateCheckState(applyUser));
+		return R.data(this.applyUserService.updateAuditStatus(applyUserDTO));
 	}
 
 

+ 4 - 3
blade-service/estate/src/main/java/org/springblade/estate/feign/ApplyUserClient.java

@@ -12,6 +12,7 @@ import javax.validation.Valid;
 import org.springblade.common.constant.ConfConstant;
 import org.springblade.core.mp.support.BladePage;
 import org.springblade.core.mp.support.Condition;
+import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.estate.dto.ApplyUserDTO;
@@ -111,9 +112,9 @@ public class ApplyUserClient implements IApplyUserClient {
 	}
 
 	@Override
-	@PostMapping("/updateCheckState")
-	public boolean updateCheckState(@RequestBody ApplyUser applyUser) {
-		return this.applyUserService.updateCheckState(applyUser);
+	@PostMapping("/appUpdateAuditStatus")
+	public R appUpdateAuditStatus(@RequestBody ApplyUserDTO applyUserDTO) {
+		return this.applyUserService.appUpdateAuditStatus(applyUserDTO);
 	}
 
 

+ 3 - 2
blade-service/estate/src/main/java/org/springblade/estate/feign/UserAccessPermissionsClient.java

@@ -125,8 +125,9 @@ public class UserAccessPermissionsClient implements IUserAccessPermissionsClient
 	@Override
 	@PostMapping("/getListByUserAndAddress")
 	public List<UserAccessPermissionsVO> getListByUserAndAddress(@RequestParam(value = "userId") String userId, @RequestParam(value = "userType") String userType,
-													   @RequestParam(value = "residentialId", required =  false) Long residentialId, @RequestParam(value = "unitId", required =  false) Long unitId) {
-		return userAccessPermissionsService.getListByUserAndAddress(userId, userType, residentialId, unitId);
+													   @RequestParam(value = "residentialId", required =  false) Long residentialId, @RequestParam(value = "unitId", required =  false) Long unitId,
+																 @RequestParam(value = "permissions") Integer permissions) {
+		return userAccessPermissionsService.getListByUserAndAddress(userId, userType, residentialId, unitId, permissions);
 	}
 
 

+ 1 - 0
blade-service/estate/src/main/java/org/springblade/estate/mapper/CarMapper.xml

@@ -35,6 +35,7 @@
         <result column="agency_name" property="agencyName"/>
         <result column="residential_name" property="residentialName"/>
         <result column="enterprise_name" property="enterpriseName"/>
+        <result column="user_id_card" property="userIdCard"/>
     </resultMap>
 
 

+ 3 - 0
blade-service/estate/src/main/java/org/springblade/estate/mapper/FeedbackMapper.xml

@@ -21,6 +21,9 @@
         <result column="avatar" property="avatar"/>
         <result column="agency_id" property="agencyId"/>
         <result column="tenant_id" property="tenantId"/>
+        <result column="is_handle" property="isHandle"/>
+        <result column="handle_date" property="handleDate"/>
+        <result column="handle_opinion" property="handleOpinion"/>
     </resultMap>
 
 

+ 1 - 0
blade-service/estate/src/main/java/org/springblade/estate/mapper/UserAccessPermissionsMapper.xml

@@ -27,6 +27,7 @@
         <result column="room_id" property="roomId"/>
         <result column="enterprise_id" property="enterpriseId"/>
         <result column="device_factory" property="deviceFactory"/>
+        <result column="permissions" property="permissions"/>
     </resultMap>
 
 

+ 15 - 1
blade-service/estate/src/main/java/org/springblade/estate/service/IApplyUserService.java

@@ -17,6 +17,7 @@
 package org.springblade.estate.service;
 
 import org.springblade.core.tool.api.R;
+import org.springblade.estate.dto.ApplyUserDTO;
 import org.springblade.estate.entity.ApplyUser;
 import org.springblade.estate.feign.IApplyUserClient;
 import org.springblade.estate.vo.ApplyUserVO;
@@ -48,5 +49,18 @@ public interface IApplyUserService extends BaseService<ApplyUser> {
 	boolean authentication(ApplyUser applyUser);
 
 	boolean addApplyUserForFamily(ApplyUser applyUser);
-	boolean updateCheckState(ApplyUser applyUser);
+
+	/**
+	 * 小程序更新认证状态
+	 * @param applyUserDTO
+	 * @return
+	 */
+	R appUpdateAuditStatus(ApplyUserDTO applyUserDTO);
+
+	/**
+	 * 后台更新认证状态
+	 * @param applyUserDTO
+	 * @return
+	 */
+	R updateAuditStatus(ApplyUserDTO applyUserDTO);
 }

+ 5 - 1
blade-service/estate/src/main/java/org/springblade/estate/service/IUserAccessPermissionsService.java

@@ -63,9 +63,13 @@ public interface IUserAccessPermissionsService extends BaseService<UserAccessPer
 
     R pushFace(UserAccessPermissionsDTO userAccessPermissionsDTO);
 
+	R autoPushFace(UserAccessPermissionsDTO userAccessPermissionsDTO);
+
+	R authPushPermissions(UserAccessPermissionsDTO userAccessPermissionsDTO);
+
 	R deleteFace(String userId, String userType);
 
     List<UserAccessPermissions> listByUser(String userId, String userType);
 
-    List<UserAccessPermissionsVO> getListByUserAndAddress(String userId, String userType, Long residentialId, Long unitId);
+    List<UserAccessPermissionsVO> getListByUserAndAddress(String userId, String userType, Long residentialId, Long unitId, Integer permissions);
 }

+ 92 - 132
blade-service/estate/src/main/java/org/springblade/estate/service/impl/ApplyUserServiceImpl.java

@@ -16,16 +16,12 @@
  */
 package org.springblade.estate.service.impl;
 
-import cn.hutool.core.date.DateTime;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.constant.OperationConstant;
 import org.springblade.community.entity.Room;
-import org.springblade.community.feign.IAgencyClient;
 import org.springblade.community.feign.ICommunityClient;
 import org.springblade.community.feign.IRoomClient;
-import org.springblade.core.secure.BladeUser;
-import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringUtil;
@@ -47,11 +43,11 @@ import org.springblade.person.feign.IHouseUserClient;
 import org.springblade.person.feign.IMemberClient;
 import org.springblade.system.expand.entity.Conf;
 import org.springblade.system.expand.feign.IConfClient;
+import org.springblade.system.feign.IDictBizClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.Assert;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -72,11 +68,12 @@ public class ApplyUserServiceImpl extends BaseServiceImpl<ApplyUserMapper, Apply
 	private final IDoorDeviceClient doorDeviceClient;
 	private final IRoomClient roomClient;
 	private final IUserAccessPermissionsService userAccessPermissionsService;
+	private final IDictBizClient dictBizClient;
 
 
 	@Autowired
 	public ApplyUserServiceImpl(IMemberClient memberClient, IHouseUserClient houseUserClient
-		, ICommunityClient communityClient, IConfClient confClient, IDoorDeviceClient doorDeviceClient, IRoomClient roomClient, IUserAccessPermissionsService userAccessPermissionsService) {
+		, ICommunityClient communityClient, IConfClient confClient, IDoorDeviceClient doorDeviceClient, IRoomClient roomClient, IUserAccessPermissionsService userAccessPermissionsService, IDictBizClient dictBizClient) {
 		this.memberClient = memberClient;
 		this.houseUserClient = houseUserClient;
 		this.communityClient = communityClient;
@@ -84,6 +81,7 @@ public class ApplyUserServiceImpl extends BaseServiceImpl<ApplyUserMapper, Apply
 		this.doorDeviceClient = doorDeviceClient;
 		this.roomClient = roomClient;
 		this.userAccessPermissionsService = userAccessPermissionsService;
+		this.dictBizClient = dictBizClient;
 	}
 
 	@Override
@@ -208,7 +206,8 @@ public class ApplyUserServiceImpl extends BaseServiceImpl<ApplyUserMapper, Apply
 				//往user增加faceEnable并设置为0
 //                    user.setFaceEnable(OperationConstant.ZERO);
 				//新增一个user
-				houseUser = this.houseUserClient.applySave(houseUser);
+				R<HouseUser> houseUserR = this.houseUserClient.applySave(houseUser);
+				houseUser = houseUserR.getData();
 				applyUser.setUserId(houseUser.getId());
 				result = this.updateById(applyUser);
 				//新增人数
@@ -281,140 +280,101 @@ public class ApplyUserServiceImpl extends BaseServiceImpl<ApplyUserMapper, Apply
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public boolean updateCheckState(ApplyUser condition) {
-		Boolean result = false;
-		ApplyUser applyUser = this.getById(condition.getId());
-
+	public R appUpdateAuditStatus(ApplyUserDTO applyUserDTO) {
+		ApplyUser applyUser = this.getById(applyUserDTO.getId());
 		if (applyUser.getAuditStatus() == OperationConstant.ZERO) {
 			//更新记录状态
-			condition.setFaceUrl(confClient.removePrefix(condition.getFaceUrl()));
-			condition.setCheckDate(new Date());
-			result = this.updateById(condition);
-			//更新会员状态--认证类型的记录才需要修改
-			Member member = new Member();
-			member.setId(applyUser.getMemberId());
-			//当操作是审核通过操作
-			if (result && condition.getAuditStatus() == 1) {
-				//认证状态:{ 0:未认证,1:待审核,2:已认证 }
-				member.setState(OperationConstant.TWO);
-				HouseUser oldUser = null;
-
-				if (applyUser.getUserId() != null) {//编辑
-					HouseUser searchUser = new HouseUser();
-					searchUser.setId(applyUser.getUserId());
-					oldUser = this.houseUserClient.detail(searchUser);
-				}
-
-				HouseUser houseUser = null;
-				//存在住户信息
-
-				if (oldUser != null) {
-					boolean isUpdate = false;
-					houseUser = new HouseUser();
-					houseUser.setFaceEnable(oldUser.getFaceEnable());
-					houseUser.setId(oldUser.getId());
-					//替换身份
-					if (applyUser.getType() != null && !applyUser.getType().equals(oldUser.getType())) {
-						houseUser.setType(applyUser.getType());
-						isUpdate = true;
-					}
-					//替换手机
-					if (StringUtils.isNotBlank(applyUser.getPhone()) && !applyUser.getPhone().equals(oldUser.getPhone())) {
-						houseUser.setPhone(applyUser.getPhone());
-						isUpdate = true;
-					}
-					//替换身份证
-					if (StringUtils.isNotBlank(applyUser.getIdCard()) && !applyUser.getIdCard().equals(oldUser.getIdCard())) {
-						houseUser.setIdCard(applyUser.getIdCard());
-						isUpdate = true;
-					}
-					//人脸替换
-					if (StringUtils.isNotBlank(applyUser.getFaceUrl())) {
-						houseUser.setFaceUrl(applyUser.getFaceUrl());
-						houseUser.setImageMd5(applyUser.getImageMd5());
-						if (oldUser.getAuditStatus() == null || oldUser.getAuditStatus() != 1) {
-							houseUser.setAuditStatus(1);
-						}
-						if (oldUser.getFaceEnable() == null || oldUser.getFaceEnable() == -1) {
-							houseUser.setFaceEnable(0);
-						}
-						isUpdate = true;
-					}
-					//房间
-					if (applyUser.getRoomId() != null && !applyUser.getRoomId().equals(oldUser.getRoomId())) {
-						houseUser.setRoomId(applyUser.getRoomId());
-						isUpdate = true;
-					}
-					//性别
-					if (applyUser.getSex() != null && !applyUser.getSex().equals(oldUser.getSex())) {
-						houseUser.setSex(applyUser.getSex());
-						isUpdate = true;
-					}
-					//国籍
-					if (applyUser.getNationality() != null && !applyUser.getNationality().equals(oldUser.getNationality())) {
-						houseUser.setNationality(applyUser.getNationality());
-						isUpdate = true;
-					}
-					//护照
-					if (StringUtils.isNotBlank(applyUser.getPassportImgUri()) && !applyUser.getPassportImgUri().equals(oldUser.getPassportImgUri())) {
-						houseUser.setPassportImgUri(applyUser.getPassportImgUri());
-						isUpdate = true;
-					}
-					//护照
-					if (StringUtils.isNotBlank(applyUser.getEntryImgUri()) && !applyUser.getEntryImgUri().equals(oldUser.getEntryImgUri())) {
-						houseUser.setEntryImgUri(applyUser.getEntryImgUri());
-						isUpdate = true;
-					}
-					if (isUpdate) {
-						//更新之前user信息
-						result = this.houseUserClient.update(houseUser);
-					}
-				} else {
+			applyUserDTO.setFaceUrl(confClient.removePrefix(applyUserDTO.getFaceUrl()));
+			applyUserDTO.setPassportImgUri(confClient.removePrefix(applyUserDTO.getPassportImgUri()));
+			applyUserDTO.setEntryImgUri(confClient.removePrefix(applyUserDTO.getEntryImgUri()));
+			applyUserDTO.setCheckDate(new Date());
+			boolean applyUpdate = this.updateById(applyUserDTO);
+			if(applyUpdate){
+				Member member = new Member();
+				member.setId(applyUser.getMemberId());
+				if(applyUserDTO.getAuditStatus() == 1){ //通过
 					//申请记录转User
-					houseUser = this.applyUserToUser(applyUser);
-					Date beginDate = new Date();
-					Calendar cd = Calendar.getInstance();
-					cd.setTime(beginDate);
-					cd.add(Calendar.YEAR, 20);
-					houseUser.setMemberId(applyUser.getMemberId());
-					houseUser.setFaceBeginDate(beginDate);
-					houseUser.setFaceEndDate(cd.getTime());
-					//往user增加faceEnable并设置为0
-//                    user.setFaceEnable(OperationConstant.ZERO);
-					//新增一个user
-					houseUser = this.houseUserClient.applySave(houseUser);
-					condition.setUserId(houseUser.getId());
-					result = this.updateById(condition);
-					//新增人数
-					this.communityClient.addPersonNum(houseUser.getAgencyId(), houseUser.getResidentialId()
-						, houseUser.getBuildingId(), houseUser.getUnitId(), houseUser.getFloorId(), houseUser.getRoomId());
-
+					HouseUser houseUser = this.applyUserToUser(applyUser);
+					R r = this.houseUserClient.applySave(houseUser);
+					if(r.isSuccess()){
+						member.setState(OperationConstant.TWO);
+						this.memberClient.update(member);
+						//下发默认开门权限
+						UserAccessPermissionsDTO userAccessPermissionsDTO = new UserAccessPermissionsDTO();
+						userAccessPermissionsDTO.setUserId(Func.toStr(houseUser.getId()));
+						userAccessPermissionsDTO.setUserType(CommonConstant.UserFlag.HOUSE_USER_FLAG.getValue());
+						userAccessPermissionsDTO.setTargetType(1);
+						userAccessPermissionsDTO.setResidentialId(houseUser.getResidentialId());
+						userAccessPermissionsDTO.setUnitId(houseUser.getUnitId());
+						userAccessPermissionsDTO.setRoomId(houseUser.getRoomId());
+						userAccessPermissionsDTO.setUserFace(confClient.addPrefix(applyUserDTO.getFaceUrl()));
+						userAccessPermissionsDTO.setTenantId(houseUser.getTenantId());
+						userAccessPermissionsService.authPushPermissions(userAccessPermissionsDTO);
+					}else{
+						return R.fail("住户新增失败");
+					}
+					//新增小区入住人数
+					this.communityClient.addPersonNum(houseUser.getAgencyId(), houseUser.getResidentialId(), houseUser.getBuildingId(), houseUser.getUnitId(), houseUser.getFloorId(), houseUser.getRoomId());
+				}else if(applyUserDTO.getAuditStatus() == 2){ //不通过
+					member.setState(OperationConstant.ZERO);
+					this.memberClient.update(member);
 				}
+				return R.success("审核成功");
+			}else{
+				return R.fail("申请记录更新失败");
+			}
+		}else{
+			return R.fail("已审核记录不能重复审核");
+		}
+	}
 
-				//---------------------------------------------------------------------------
-				//下发人脸
-				if (oldUser != null) {
-					if (houseUser.getFaceEnable() == 2) {
-						// 人脸已禁用
-					} else {
-						pushFace(houseUser, 1);
+	@Override
+	public R updateAuditStatus(ApplyUserDTO applyUserDTO) {
+		ApplyUser applyUser = this.getById(applyUserDTO.getId());
+		if (applyUser.getAuditStatus() == OperationConstant.ZERO) {
+			//更新记录状态
+			applyUserDTO.setFaceUrl(confClient.removePrefix(applyUserDTO.getFaceUrl()));
+			applyUserDTO.setPassportImgUri(confClient.removePrefix(applyUserDTO.getPassportImgUri()));
+			applyUserDTO.setEntryImgUri(confClient.removePrefix(applyUserDTO.getEntryImgUri()));
+			applyUserDTO.setCheckDate(new Date());
+			boolean applyUpdate = this.updateById(applyUserDTO);
+			if(applyUpdate){
+				Member member = new Member();
+				member.setId(applyUser.getMemberId());
+				if(applyUserDTO.getAuditStatus() == 1){ //通过
+					//申请记录转User
+					HouseUser houseUser = this.applyUserToUser(applyUser);
+					R r = this.houseUserClient.applySave(houseUser);
+					if(r.isSuccess()){
+						member.setState(OperationConstant.TWO);
+						this.memberClient.update(member);
+						//下发默认开门权限
+						UserAccessPermissionsDTO userAccessPermissionsDTO = new UserAccessPermissionsDTO();
+						userAccessPermissionsDTO.setUserId(Func.toStr(houseUser.getId()));
+						userAccessPermissionsDTO.setUserType(CommonConstant.UserFlag.HOUSE_USER_FLAG.getValue());
+						userAccessPermissionsDTO.setTargetType(1);
+						userAccessPermissionsDTO.setResidentialId(houseUser.getResidentialId());
+						userAccessPermissionsDTO.setUnitId(houseUser.getUnitId());
+						userAccessPermissionsDTO.setRoomId(houseUser.getRoomId());
+						userAccessPermissionsDTO.setUserFace(confClient.addPrefix(applyUserDTO.getFaceUrl()));
+						userAccessPermissionsDTO.setTenantId(houseUser.getTenantId());
+						userAccessPermissionsService.authPushPermissions(userAccessPermissionsDTO);
+					}else{
+						return R.fail("住户新增失败");
 					}
-				} else {
-					pushFace(houseUser, 1);
+					//新增小区入住人数
+					this.communityClient.addPersonNum(houseUser.getAgencyId(), houseUser.getResidentialId(), houseUser.getBuildingId(), houseUser.getUnitId(), houseUser.getFloorId(), houseUser.getRoomId());
+				}else if(applyUserDTO.getAuditStatus() == 2){ //不通过
+					member.setState(OperationConstant.ZERO);
+					this.memberClient.update(member);
 				}
-
-			} else {//审核不通过
-				//认证状态:{ 0:未认证,1:待审审核,2:已认证 }
-				member.setState(OperationConstant.ZERO);
-			}
-			//申请的记录类型 0--认证类型 1--新增类型 2--编辑类型
-			if (applyUser.getRecordType() == null || applyUser.getRecordType() == 0) {
-				//认证类型的记录须修改会员的状态
-				result = this.memberClient.update(member);
+				return R.success("审核成功");
+			}else{
+				return R.fail("申请记录更新失败");
 			}
-
+		}else{
+			return R.fail("已审核记录不能重复审核");
 		}
-		return result;
 	}
 
 	private HouseUser applyUserToUser(ApplyUser applyUser) {

+ 52 - 4
blade-service/estate/src/main/java/org/springblade/estate/service/impl/UserAccessPermissionsServiceImpl.java

@@ -18,15 +18,18 @@ package org.springblade.estate.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.lang.Assert;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.springblade.common.constant.CommonConstant;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.device.entity.DoorDevice;
 import org.springblade.device.feign.IDoorDeviceClient;
+import org.springblade.device.vo.DoorDeviceVO;
 import org.springblade.enterprise.entity.Staff;
 import org.springblade.estate.dto.AuthorizeRecordsDTO;
 import org.springblade.estate.dto.UserAccessPermissionsDTO;
@@ -37,13 +40,16 @@ import org.springblade.estate.mapper.UserAccessPermissionsMapper;
 import org.springblade.estate.service.IUserAccessPermissionsService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.estate.wrapper.UserAccessPermissionsWrapper;
+import org.springblade.system.entity.DictBiz;
 import org.springblade.system.expand.feign.IConfClient;
+import org.springblade.system.feign.IDictBizClient;
 import org.springblade.third.doordevice.dto.UserDeviceDTO;
 import org.springblade.third.doordevice.feign.IDoorDeviceButtClient;
 import org.springblade.third.dto.DeviceDTO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.util.StringUtils;
 
 import java.text.SimpleDateFormat;
 import java.util.List;
@@ -64,6 +70,8 @@ public class UserAccessPermissionsServiceImpl extends BaseServiceImpl<UserAccess
 	private IDoorDeviceButtClient doorDeviceButtClient;
 	@Autowired
 	private IConfClient confClient;
+	@Autowired
+	private IDictBizClient dictBizClient;
 
 	@Override
 	public IPage<UserAccessPermissionsVO> selectUserAccessPermissionsPage(IPage<UserAccessPermissionsVO> page, UserAccessPermissionsVO userAccessPermissions) {
@@ -96,6 +104,7 @@ public class UserAccessPermissionsServiceImpl extends BaseServiceImpl<UserAccess
 		permissions.setDeviceAddress(authorizeRecordsDTO.getDeviceAddress());
 		permissions.setTenantId(authorizeRecordsDTO.getTenantId());
 		permissions.setDeviceFactory(doorDevice.getDeviceFactory());
+		permissions.setPermissions(authorizeRecordsDTO.getPermissions());
 		String authReqData = authorizeRecordsDTO.getAuthReqData();
 		JSONObject reqData = JSONObject.parseObject(authReqData);
 		permissions.setUserFace(confClient.removePrefix(reqData.getString("userFaceUrl")));
@@ -157,15 +166,53 @@ public class UserAccessPermissionsServiceImpl extends BaseServiceImpl<UserAccess
 				} else {
 					userDeviceDTO.setAddOrUpdate(1); //新增
 				}
-				R result = doorDeviceButtClient.pushFace(userDeviceDTO);
-				return result;
+				doorDeviceButtClient.pushFace(userDeviceDTO);
 			}
-			return R.fail("请先添加设备");
+			return R.success("下发成功");
 		}else{
 			return R.fail("请先添加设备");
 		}
 	}
 
+	@Override
+	public R autoPushFace(UserAccessPermissionsDTO userAccessPermissionsDTO) {
+		List<DoorDeviceVO> doorDeviceVOList = doorDeviceClient.getListByResidentialAndUnit(userAccessPermissionsDTO.getResidentialId(), userAccessPermissionsDTO.getUnitId(), 1);
+		if (doorDeviceVOList.size() == 0) {
+			return R.status(true);
+		}
+		List<Long> deviceIdList = doorDeviceVOList.stream().map(DoorDeviceVO::getId).collect(Collectors.toList());
+		userAccessPermissionsDTO.setDeviceIds(StringUtil.join(deviceIdList, ","));
+		return this.pushFace(userAccessPermissionsDTO);
+	}
+
+	@Override
+	public R authPushPermissions(UserAccessPermissionsDTO userAccessPermissionsDTO) {
+		R<List<DictBiz>> dictListR = dictBizClient.getList("default_user_access_permissions");
+		List<DictBiz> dictList = dictListR.getData();
+		for(DictBiz dict : dictList){
+			if(dict.getDictKey().equals(CommonConstant.UserAccessPermissions.FACE_OPEN_DOOR.getValue())){
+				if(StringUtil.isNotBlank(userAccessPermissionsDTO.getUserFace())){
+					this.autoPushFace(userAccessPermissionsDTO);
+				}
+			}else{
+				List<DoorDeviceVO> doorDeviceVOList = doorDeviceClient.getListByResidentialAndUnit(userAccessPermissionsDTO.getResidentialId(), userAccessPermissionsDTO.getUnitId(), 1);
+				if (doorDeviceVOList.size() == 0) {
+					return R.status(true);
+				}else{
+					for(DoorDeviceVO doorDeviceVO : doorDeviceVOList){
+						userAccessPermissionsDTO.setDeviceName(doorDeviceVO.getName());
+						userAccessPermissionsDTO.setDeviceSerialNum(doorDeviceVO.getSerialNum());
+						userAccessPermissionsDTO.setDeviceAddress(doorDeviceVO.getAddress());
+						userAccessPermissionsDTO.setAgencyId(doorDeviceVO.getAgencyId());
+						userAccessPermissionsDTO.setPermissions(Integer.parseInt(dict.getDictValue()));
+						this.save(userAccessPermissionsDTO);
+					}
+				}
+			}
+		}
+		return R.status(true);
+	}
+
 	@Override
 	public R deleteFace(String userId, String userType) {
 		List<UserAccessPermissions> permissionsList = this.listByUser(userId, userType);
@@ -192,12 +239,13 @@ public class UserAccessPermissionsServiceImpl extends BaseServiceImpl<UserAccess
 	}
 
 	@Override
-	public List<UserAccessPermissionsVO> getListByUserAndAddress(String userId, String userType, Long residentialId, Long unitId) {
+	public List<UserAccessPermissionsVO> getListByUserAndAddress(String userId, String userType, Long residentialId, Long unitId, Integer permissions) {
 		LambdaQueryWrapper<UserAccessPermissions> lambdaQueryWrapper = new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.eq(UserAccessPermissions::getUserId, userId);
 		lambdaQueryWrapper.eq(StringUtil.isNotBlank(userType), UserAccessPermissions::getUserType, userType);
 		lambdaQueryWrapper.eq(residentialId != null, UserAccessPermissions::getResidentialId, residentialId);
 		lambdaQueryWrapper.eq(unitId != null, UserAccessPermissions::getUnitId, unitId);
+		lambdaQueryWrapper.eq(permissions != null, UserAccessPermissions::getPermissions, permissions);
 		lambdaQueryWrapper.orderByDesc(UserAccessPermissions::getCreateTime);
 		return UserAccessPermissionsWrapper.build().listVO(this.list(lambdaQueryWrapper));
 	}

+ 8 - 0
blade-service/estate/src/main/java/org/springblade/estate/wrapper/FeedbackWrapper.java

@@ -17,7 +17,9 @@
 package org.springblade.estate.wrapper;
 
 import org.springblade.community.entity.Agency;
+import org.springblade.community.entity.Residential;
 import org.springblade.community.feign.IAgencyClient;
+import org.springblade.community.feign.IResidentialClient;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.SpringUtil;
@@ -34,6 +36,7 @@ import java.util.Objects;
 public class FeedbackWrapper extends BaseEntityWrapper<Feedback, FeedbackVO>  {
 
 	private static IAgencyClient agencyClient;
+	private static IResidentialClient residentialClient;
 
 	public static FeedbackWrapper build() {
 		return new FeedbackWrapper();
@@ -41,6 +44,7 @@ public class FeedbackWrapper extends BaseEntityWrapper<Feedback, FeedbackVO>  {
 
  	static {
 		agencyClient = SpringUtil.getBean(IAgencyClient.class);
+		residentialClient = SpringUtil.getBean(IResidentialClient.class);
 	}
 
 	@Override
@@ -50,6 +54,10 @@ public class FeedbackWrapper extends BaseEntityWrapper<Feedback, FeedbackVO>  {
 		if(agency != null){
 			feedbackVO.setAgencyName(agency.getName());
 		}
+		Residential residential = residentialClient.getById(feedback.getResidentialId());
+		if(residential != null){
+			feedbackVO.setResidentialName(residential.getName());
+		}
 		return feedbackVO;
 	}
 

+ 6 - 2
blade-service/person/src/main/java/org/springblade/person/feign/HouseUserClient.java

@@ -174,9 +174,13 @@ public class HouseUserClient implements IHouseUserClient {
 
 	@Override
 	@PostMapping("/applySave")
-	public HouseUser applySave(@Valid HouseUser houseUser) {
+	public R<HouseUser> applySave(@Valid HouseUser houseUser) {
 		boolean save = houseUserService.save(houseUser);
-		return houseUser;
+		if(save){
+			return R.data(houseUser);
+		}else{
+			return R.fail("新增用户失败");
+		}
 	}
 
 	@Override

+ 12 - 12
blade-service/person/src/main/java/org/springblade/person/wrapper/HouseUserWrapper.java

@@ -64,37 +64,37 @@ public class HouseUserWrapper extends BaseEntityWrapper<HouseUser, HouseUserVO>
 		StringBuilder sb = new StringBuilder();
 		StringBuilder address = new StringBuilder();
 		if(houseUser.getResidentialId() != null){
-			if(houseUser.getAgencyId() != null){
-				Agency agency = agencyClient.getById(houseUser.getAgencyId());
+			Agency agency = agencyClient.getById(houseUser.getAgencyId());
+			if(agency != null){
 				sb.append(agency.getName());
 				houseUserVO.setAgencyName(agency.getName());
 				sb.append("|");
 			}
-			if(houseUser.getResidentialId() != null){
-				Residential residential = residentialClient.getById(houseUser.getResidentialId());
+			Residential residential = residentialClient.getById(houseUser.getResidentialId());
+			if(residential != null){
 				sb.append(residential.getName());
 				houseUserVO.setResidentialName(residential.getName());
 				address.append(residential.getName());
 			}
-			if(houseUser.getBuildingId() != null){
-				Building building = buildingClient.getById(houseUser.getBuildingId());
+			Building building = buildingClient.getById(houseUser.getBuildingId());
+			if(building != null){
 				sb.append("|").append(building.getName());
 				houseUserVO.setBuildingName(building.getName());
 				address.append("-").append(building.getName());
 			}
-			if(houseUser.getUnitId() != null){
-				Unit unit = unitClient.getById(houseUser.getUnitId());
+			Unit unit = unitClient.getById(houseUser.getUnitId());
+			if(unit != null){
 				sb.append("|").append(unit.getName());
 				houseUserVO.setUnitName(unit.getName());
 				address.append("-").append(unit.getName());
 			}
-			if(houseUser.getFloorId() != null){
-				Floor floor = floorClient.getById(houseUser.getFloorId());
+			Floor floor = floorClient.getById(houseUser.getFloorId());
+			if(floor != null){
 				sb.append("|").append(floor.getName());
 				houseUserVO.setFloorName(floor.getName());
 			}
-			if(houseUser.getRoomId() != null){
-				Room room = roomClient.getById(houseUser.getRoomId());
+			Room room = roomClient.getById(houseUser.getRoomId());
+			if(room != null){
 				sb.append("|").append(room.getName());
 				houseUserVO.setRoomName(room.getName());
 				address.append("-").append(room.getName());

+ 1 - 1
blade-service/third/src/main/java/org/springblade/third/doordevice/feign/DoorDeviceButtClient.java

@@ -100,7 +100,7 @@ public class DoorDeviceButtClient implements IDoorDeviceButtClient {
 
 	@Override
 	@PostMapping("/addDevices")
-	public R addDevices(List<DoorDevice> doorDeviceList) {
+	public R addDevices(@RequestBody List<DoorDevice> doorDeviceList) {
 		if(doorDeviceList != null && doorDeviceList.size() > 0){
 			for(DoorDevice doorDevice : doorDeviceList){
 				switch (doorDevice.getDeviceFactory()){

+ 3 - 0
blade-service/third/src/main/java/org/springblade/third/zongheng/handler/FrmFacePictureHandler.java

@@ -36,6 +36,7 @@ public class FrmFacePictureHandler implements IDeviceEndianCommandHandler{
 			authorizeRecords.setAuthRespData(responseData.toString());
 			//更新用户人脸权限
 			AuthorizeRecordsDTO authorizeRecordsDTO = Objects.requireNonNull(BeanUtil.copy(authorizeRecords, AuthorizeRecordsDTO.class));
+			authorizeRecordsDTO.setPermissions(3); //刷脸开门权限
 			if(authorizeRecords.getAuthCmd().equals(ZHConstant.I8H.add_user_face.getDesc())){
 				try{
 					JSONObject data = responseData.getJSONObject("Data");
@@ -74,6 +75,7 @@ public class FrmFacePictureHandler implements IDeviceEndianCommandHandler{
 					e.printStackTrace();
 					authorizeRecordsDTO.setAuthStatus(CommonConstant.AuthStatus.FAIL.getValue());
 					authorizeRecordsDTO.setAuthRespMsg("未知人脸更新异常");
+					return R.status(true);
 				}
 				userAccessPermissionsClient.generateUserAccessPermissions(authorizeRecordsDTO);
 			}else if(authorizeRecords.getAuthCmd().equals(ZHConstant.I8H.update_user_face.getDesc())){
@@ -102,6 +104,7 @@ public class FrmFacePictureHandler implements IDeviceEndianCommandHandler{
 					e.printStackTrace();
 					authorizeRecordsDTO.setAuthStatus(CommonConstant.AuthStatus.FAIL.getValue());
 					authorizeRecordsDTO.setAuthRespMsg("未知人脸更新异常");
+					return R.status(true);
 				}
 				userAccessPermissionsClient.generateUserAccessPermissions(authorizeRecordsDTO);
 			}else if(authorizeRecords.getAuthCmd().equals(ZHConstant.I8H.delete_user_face.getDesc())){

+ 10 - 35
community-app-gateway/src/main/java/org/springblade/app/controller/ApplyUserController.java

@@ -15,7 +15,11 @@ import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.device.vo.DoorDeviceVO;
 import org.springblade.estate.dto.ApplyUserDTO;
+import org.springblade.estate.dto.UserAccessPermissionsDTO;
 import org.springblade.estate.entity.ApplyUser;
 import org.springblade.estate.feign.IApplyUserClient;
 import org.springblade.estate.vo.ApplyUserVO;
@@ -83,7 +87,7 @@ public class ApplyUserController {
 	 *
 	 *
 	 */
-	@PostMapping(value = "/getAllApplyUserByMemberIdBat")
+	@PostMapping(value = "/getAllApplyUserByMemberIdBak")
 	public Map<String,Object> getAllApplyUserByMemberId(@RequestBody Map<String,String> map){
 
 		Map<String,Object> hashMap = new HashMap<>();
@@ -257,7 +261,7 @@ public class ApplyUserController {
 
 	/**
 	 * 功能描述:审核
-	 * @param applyUser{
+	 * @param applyUserDTO{
 	 *                 id : 1  记录id,
 	 *                 checkState : 1  审核状态,
 	 *                 checkOpinion :  审核意见--审核不通过时有值
@@ -267,40 +271,11 @@ public class ApplyUserController {
 	 *
 	 */
 	@PostMapping("/updateCheckState")
-//    @Security(token = EstateSecurityToken.APPLY_USER_AUDIT,format = DataFormatEnum.JSON)
-	public Map<String, Object> updateCheckState(@RequestBody ApplyUser applyUser){
-
-		Map<String,Object> hashMap = new HashMap<>(3);
-		hashMap.put("result_code", 0);
-		hashMap.put("result_msg", "审核失败");
+	public R updateCheckState(@RequestBody ApplyUserDTO applyUserDTO){
 		//审核人类型:1-业主,2-后台
-		applyUser.setOperatorType(1);
-		if (applyUser.getAuditStatus().equals(CommonConstant.UserAuditStatus.pass.getValue())){
-			//要审核通过的话,必须有时间和身份验证的限制
-			boolean timeRange = false;
-			try {
-				timeRange = CommonUtil.isTimeRange("7:00", "22:00");
-			}catch (Exception e){
-				return hashMap;
-			}
-			Assert.isTrue(timeRange, "请在7:00-22:00时间内进行审核!");
-
-			if(StringUtils.isNotBlank(applyUser.getIdCard()) && StringUtils.isNotBlank(applyUser.getName())){
-				CustInfoVerify custInfoVerify = new CustInfoVerify();
-				custInfoVerify.setCustName(applyUser.getName());
-				custInfoVerify.setCertNumber(applyUser.getIdCard());
-				custInfoVerify.setCertType("1");
-//				Boolean resultCheck = CustInfoVerifyUtil.custInfoVerify(custInfoVerify);
-//				Assert.isTrue(resultCheck, "身份证验证失败,请填写正确的身份证信息");
-			}else{
-				Assert.isTrue(false, "该住户没有身份证号,无法通过审核!");
-			}
-		}
-		if(this.applyUserClient.updateCheckState(applyUser)){
-			hashMap.put("result_code", 1);
-			hashMap.put("result_msg", "审核成功");
-		}
-		return hashMap;
+		applyUserDTO.setOperatorType(1);
+		R result = this.applyUserClient.appUpdateAuditStatus(applyUserDTO);
+		return result;
 	}
 
 

+ 6 - 16
community-app-gateway/src/main/java/org/springblade/app/controller/CarController.java

@@ -1,31 +1,22 @@
 package org.springblade.app.controller;
 
-import cn.hutool.core.lang.Assert;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.plugins.Page;
 import lombok.AllArgsConstructor;
-import lombok.SneakyThrows;
-import org.springblade.common.constant.OperationConstant;
 import org.springblade.community.entity.Residential;
 import org.springblade.community.feign.IResidentialClient;
 import org.springblade.core.mp.support.BladePage;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.enterprise.entity.Staff;
 import org.springblade.enterprise.feign.IStaffClient;
 import org.springblade.enterprise.vo.StaffVO;
 import org.springblade.estate.dto.CarDTO;
-import org.springblade.estate.entity.ApplyUser;
-import org.springblade.estate.entity.Car;
 import org.springblade.estate.feign.IApplyUserClient;
 import org.springblade.estate.feign.ICarClient;
-import org.springblade.estate.vo.ApplyUserVO;
 import org.springblade.estate.vo.CarVO;
-import org.springblade.person.entity.HouseUser;
+import org.springblade.person.entity.Member;
 import org.springblade.person.feign.IHouseUserClient;
 import org.springblade.person.feign.IMemberClient;
-import org.springblade.person.vo.HouseUserVO;
+import org.springframework.util.Assert;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.HashMap;
@@ -41,10 +32,8 @@ import java.util.Objects;
 public class CarController {
 
 	private final ICarClient carClient;
-	private final IHouseUserClient houseUserClient;
 	private final IResidentialClient residentialClient;
 	private final IStaffClient staffClient;
-	private final IApplyUserClient applyUserClient;
 	private final IMemberClient memberClient;
 
 	@PostMapping(value = "/saveOrUpdate")
@@ -82,17 +71,18 @@ public class CarController {
 
 
 	@GetMapping(value = "/page/member")
-	@SneakyThrows
 	public R<BladePage<CarVO>> getMemberCarPage(@RequestParam(value = "residentialId") Long residentialId, @RequestParam(value = "memberId") Long memberId, Query query){
+		Member member = memberClient.getById(memberId);
+		Assert.notNull(member, "会员不存在");
 		CarDTO carDTO = new CarDTO();
 		carDTO.setQuery(query);
 		carDTO.setMemberId(memberId);
 		carDTO.setResidentialId(residentialId);
+		carDTO.setIdCard(member.getIdcard());
 		return carClient.page(carDTO);
 	}
 
-	@PostMapping(value = "/page/admin")
-	@SneakyThrows
+	@GetMapping(value = "/page/admin")
 	public R<BladePage<CarVO>> getAdminCarPage(@RequestParam(value = "residentialId") Long residentialId, Query query){
 		CarDTO carDTO = new CarDTO();
 		carDTO.setQuery(query);

+ 5 - 0
community-app-gateway/src/main/java/org/springblade/app/controller/HouseUserController.java

@@ -700,6 +700,11 @@ public class HouseUserController {
 		return hashMap;
 	}
 
+	/**
+	 * 更新人脸下发
+	 * @param houseUserDTO
+	 * @return
+	 */
 	@PostMapping(value = "/modifyFace")
 	public R modifyFace(@RequestBody HouseUserDTO houseUserDTO) {
 		HouseUser houseUser = houseUserClient.getById(houseUserDTO.getId());

+ 1 - 1
community-app-gateway/src/main/java/org/springblade/app/controller/MemberController.java

@@ -647,7 +647,7 @@ public class MemberController {
 		try {
 			List<UserAccessPermissionsVO> userAccessPermissionsVOList = new ArrayList<>();
 			for (HouseUser user : houseUserVOList) {
-				List<UserAccessPermissionsVO> tempList = userAccessPermissionsClient.getListByUserAndAddress(Func.toStr(user.getId()), CommonConstant.UserFlag.HOUSE_USER_FLAG.getValue(), user.getResidentialId(), user.getUnitId());
+				List<UserAccessPermissionsVO> tempList = userAccessPermissionsClient.getListByUserAndAddress(Func.toStr(user.getId()), CommonConstant.UserFlag.HOUSE_USER_FLAG.getValue(), user.getResidentialId(), user.getUnitId(), 1);
 				userAccessPermissionsVOList.addAll(tempList);
 			}
 			return R.data(userAccessPermissionsVOList);