server/dmvisit_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java
@@ -75,11 +75,11 @@ String token = request.getHeader(JwtTokenUtil.HEADER_KEY); String redisToken = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.ERP_TOKEN,String.class); if(StringUtils.isBlank(redisToken)||!token.equals(redisToken)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未登录"); throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"授权已失效"); } request.setAttribute(JwtTokenUtil.HEADER_KEY,token); } catch (IllegalArgumentException | JwtException e) { throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"未登录"); throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"授权已失效"); } // request.setAttribute("token", token); } server/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/ErpVisitDTO.java
@@ -8,6 +8,9 @@ import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.util.Date; import java.util.List; @@ -21,18 +24,23 @@ @ApiModel("ERP访客申请主类") public class ErpVisitDTO extends BaseRequst { @NotBlank(message = "ERP记录主键不能为空") @ApiModelProperty(value = "ERP记录主键") private String erpId; @NotBlank(message = "访客姓名不能为空") @ApiModelProperty(value = "访客姓名") private String name; @NotBlank(message = "手机号不能为空") @ApiModelProperty(value = "手机号") private String phone; @NotNull(message = "证件类型不能为空") @ApiModelProperty(value = "证件类型 0身份证 1港澳证件 2护照") private Integer idcardType; @NotBlank(message = "证件号不能为空") @ApiModelProperty(value = "证件号") private String idcardNo; @@ -42,25 +50,31 @@ @ApiModelProperty(value = "健康证") private String imgurl; @NotBlank(message = "公司名称不能为空") @ApiModelProperty(value = "公司名称") private String companyName; @NotBlank(message = "被访人不能为空") @ApiModelProperty(value = "被访人 erp 主键 ") private String receptMemberId; @NotNull(message = "门禁有效起期不能为空") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "门禁有效期开始") private Date starttime; @NotNull(message = "门禁有效止期不能为空") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "门禁有效期截止") private Date endtime; @NotBlank(message = "门禁编码不能为空") @ApiModelProperty(value = "门禁编码 海康系统主键 ,多个用英文逗号隔开") private String doors; @NotBlank(message = "来访事由不能为空") @ApiModelProperty(value = "来访事由") private String reason; server/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java
@@ -26,7 +26,7 @@ */ Integer create(Visits visits); Integer createFk(Visits visits); Integer createFk(Visits visits,Boolean isERP); void createFKForErp(ErpVisitDTO erpVisitDTO); server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -111,7 +111,6 @@ @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public void createFKForErp(ErpVisitDTO erpVisitDTO){ try { if (Objects.isNull(erpVisitDTO) || StringUtils.isBlank(erpVisitDTO.getName()) || StringUtils.isBlank(erpVisitDTO.getPhone()) @@ -120,6 +119,7 @@ || Objects.isNull(erpVisitDTO.getStarttime()) || Objects.isNull(erpVisitDTO.getEndtime()) || StringUtils.isBlank(erpVisitDTO.getFaceImg()) || StringUtils.isBlank(erpVisitDTO.getDoors()) || Objects.isNull(erpVisitDTO.getReceptMemberId()) || Objects.isNull(erpVisitDTO.getErpId()) ) { @@ -159,7 +159,7 @@ } visits.setWithUserList(visitsList); } this.createFk(visits); this.createFk(visits,true); }catch (BusinessException e){ throw e; }finally { @@ -190,12 +190,12 @@ */ @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public Integer createFk(Visits visits) { public Integer createFk(Visits visits,Boolean isERP) { isValidBaseParam(visits); //检查是否必须答题,并且符合答题要求 ProblemLog problemLog = isValidProblemLog(visits); //获取申请的海康访问门禁组信息 getHkDeviceRoles(visits); getHkDeviceRoles(visits,isERP); //检验拜访人是否合法 Member visitMember = isValideVisitedUser(visits.getReceptMemberId()); if(Constants.equalsInteger(Constants.ZERO, visits.getIdcardType())&&visits.getIdcardNo().length()!=18 @@ -577,9 +577,9 @@ || visits.getReceptMemberId() == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,信息填写不正确!"); } // if(visits.getStarttime().getTime() < System.currentTimeMillis()){ // throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,预约开始时间必须大于当前时间!");// // } if(visits.getEndtime().getTime() < System.currentTimeMillis()){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,预约结束时间必须大于当前时间!");// } if(visits.getEndtime().getTime() <= visits.getStarttime().getTime()){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,预约结束时间必须大于开始时间!");// } @@ -944,16 +944,13 @@ * @param visits * @return */ private String[] getHkDeviceRoles(Visits visits) { private String[] getHkDeviceRoles(Visits visits,Boolean isERP) { String mustSelectDoors = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SELECT_DOORS_VISIT_REQUIRED).getCode(); if(isERP){ mustSelectDoors = Constants.ONE+""; } List<DeviceRole> roles = null; if(StringUtils.equals(mustSelectDoors,Constants.ZERO+"")){ //如果设置不选择门禁,则提供默认门禁组信息 if(StringUtils.isBlank(visits.getDoors())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请选择访问门禁!"); } //校验门禁组信息是否正确 String[] dIds = visits.getDoors().split(","); roles = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda() .eq(DeviceRole::getIsDefault,Constants.ZERO) .eq(DeviceRole::getIsdeleted,Constants.ZERO) @@ -963,7 +960,7 @@ } }else{ //如果必须选择门禁,但未选择 if(StringUtils.isNotBlank(visits.getDoors())){ if(StringUtils.isBlank(visits.getDoors())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请选择有效访问门禁!"); } String[] dIds = visits.getDoors().split(","); server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
@@ -1017,12 +1017,16 @@ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,用户信息不存在!"); } List<Integer> doorIds = getRoleIdByParam(param.getRoleIds(),member); if(StringUtils.isBlank(member.getRoleId())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到门禁组数据"); } //更新授权有效期 Member update = new Member(); update.setId(member.getId()); update.setEditDate(new Date()); update.setStartTime(param.getValidStartTime()); update.setEndTime(param.getValidEndTime()); update.setRoleId(StringUtils.isNotBlank(member.getRoleId())?member.getRoleId():null); update.setHkStatus(Constants.ZERO);//做一遍更新逻辑 update.setRemark("待同步安防平台"); memberMapper.updateById(update); @@ -1035,8 +1039,10 @@ ||StringUtils.isBlank(param.getCarCode())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } if(param.getValidStartTime()!=null && param.getValidEndTime()!=null&¶m.getValidStartTime().getTime()> param.getValidEndTime().getTime()){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,有效期时间不合法!"); if(Objects.nonNull(param.getValidStartTime())&&Objects.nonNull(param.getValidEndTime())){ if(param.getValidStartTime().getTime()> param.getValidEndTime().getTime()){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,有效期时间不合法!"); } } Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getErpId,param.getUserId()).last("limit 1")); if(Objects.isNull(member)){ @@ -1048,8 +1054,13 @@ .set(ParkBook::getIsdeleted,Constants.ONE) .set(ParkBook::getHkStatus,Constants.ZERO) ); List<Parks> parksList = new ArrayList<>(); if(CollectionUtils.isNotEmpty(param.getParkIdList())){ parksList = parksMapper.selectList(new QueryWrapper<Parks>().lambda() .in(Parks::getId,param.getParkIdList()) ); } //查询车库信息 List<Parks> parksList = parksMapper.selectList(new QueryWrapper<Parks>().lambda().in(Parks::getId,param.getParkIdList())); if(CollectionUtils.isNotEmpty(parksList)){ List<ParkBook> parkBookList = new ArrayList<>(); for (Parks parks:parksList) { @@ -1060,7 +1071,7 @@ parkBook.setParkId(parks.getId()); parkBook.setOrigin(Constants.ZERO); parkBook.setStartTime(Objects.isNull(param.getValidStartTime())?new Date():param.getValidStartTime()); parkBook.setEndTime(param.getValidEndTime()); parkBook.setEndTime(Objects.isNull(param.getValidEndTime())?null:param.getValidEndTime()); parkBook.setTimeType(Objects.isNull(param.getValidEndTime())?Constants.ZERO:Constants.ONE); parkBook.setMemberId(member.getId()); parkBook.setHkStatus(Constants.ZERO); server/dmvisit_web/src/main/java/com/doumee/api/web/InternalController.java
@@ -24,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; /** @@ -108,7 +109,7 @@ }) public ApiResponse createVisit(@RequestBody Visits visits) { visits.setCreateMemberId(getMemberId()); return ApiResponse.success("查询成功", visitsService.createFk(visits)); return ApiResponse.success("查询成功", visitsService.createFk(visits,false)); } @LoginRequired server/dmvisit_web/src/main/java/com/doumee/api/web/VisitorController.java
@@ -64,7 +64,7 @@ @PostMapping("/createFk") public ApiResponse createFk(@RequestBody Visits visits) { visits.setSourceType(Constants.ZERO); return ApiResponse.success("查询成功", visitsService.createFk(visits)); return ApiResponse.success("查询成功", visitsService.createFk(visits,false)); } server/openapi/src/main/java/com/doumee/api/web/BizResourceController.java
@@ -19,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -166,7 +167,7 @@ @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "授权token值", required = true) }) public ApiResponse createVisit(@RequestBody ErpVisitDTO param) { public ApiResponse createVisit(@Valid @RequestBody ErpVisitDTO param) { param.setToken(this.getToken()); visitsService.createFKForErp(param); return ApiResponse.success("操作成功");