diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppVisitorController.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppVisitorController.java index aa7c5f021..f566c54d4 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppVisitorController.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppVisitorController.java @@ -5,6 +5,8 @@ import cn.hutool.jwt.JWT; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.admin.api.dto.UserDeptSimpleInfo; +import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.common.core.constant.CacheConstants; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.idempotent.annotation.Idempotent; @@ -33,6 +35,7 @@ import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.util.HashMap; +import java.util.List; import java.util.Map; import cn.hutool.extra.qrcode.QrConfig; import java.awt.Image; @@ -58,6 +61,8 @@ public class AppVisitorController { private final VisitorsService visitorsService; + private final RemoteUserService remoteUserService; + @Value("${visitor.qr-secret}") private String visitorQrSecret; @@ -240,4 +245,13 @@ public class AppVisitorController { } + @GetMapping("/getBFInfo") + @SysLog("查询拜访人的信息" ) + @Operation(summary = "查询拜访人的信息" , description = "根据拜访人的手机号或者姓名精确查询" ) + public R getBFInfo(@RequestParam("keyword") String keyword) { + R> userByNameOrMobile = remoteUserService.getUserByNameOrMobile(keyword); + return userByNameOrMobile; + } + + } \ No newline at end of file diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/UserDeptSimpleInfo.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/UserDeptSimpleInfo.java new file mode 100644 index 000000000..b3f77e909 --- /dev/null +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/dto/UserDeptSimpleInfo.java @@ -0,0 +1,46 @@ +/* + * + * Copyright (c) 2018-2025, pjcloud All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the pig4cloud.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: pjcloud + * + */ + +package com.bsd.pjcloud.admin.api.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; + + +@Data +@Schema(description = "用户信息") +public class UserDeptSimpleInfo implements Serializable { + + @Schema(description = "用户ID") + private Long userId; + + @Schema(description = "姓名") + private String name; + + @Schema(description = "手机号") + private String mobile; + + @Schema(description = "部门ID") + private Long deptId; + + @Schema(description = "部门名称") + private String deptName; +} diff --git a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java index a4e15a1d7..853a5b35f 100644 --- a/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java +++ b/pjcloud-upms/pjcloud-upms-api/src/main/java/com/bsd/pjcloud/admin/api/feign/RemoteUserService.java @@ -20,6 +20,7 @@ package com.bsd.pjcloud.admin.api.feign; import com.bsd.pjcloud.admin.api.dto.UserDTO; +import com.bsd.pjcloud.admin.api.dto.UserDeptSimpleInfo; import com.bsd.pjcloud.admin.api.dto.UserInfo; import com.bsd.pjcloud.admin.api.entity.SysUser; import com.bsd.pjcloud.admin.api.vo.UserVO; @@ -188,4 +189,7 @@ public interface RemoteUserService { R> getLikeNameOrByMobileScope(@RequestParam(value = "name", required = false) String name, @RequestParam(value = "mobile", required = false) String mobile); + @GetMapping("/get-name-or-mobile") + R> getUserByNameOrMobile(@RequestParam("keyword") String keyword); + } diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java index 6a4f23fd1..44b8e3c25 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java @@ -26,9 +26,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.admin.api.dto.UserDTO; +import com.bsd.pjcloud.admin.api.dto.UserDeptSimpleInfo; import com.bsd.pjcloud.admin.api.dto.UserInfo; +import com.bsd.pjcloud.admin.api.entity.SysDept; import com.bsd.pjcloud.admin.api.entity.SysUser; import com.bsd.pjcloud.admin.api.vo.*; +import com.bsd.pjcloud.admin.service.SysDeptService; import com.bsd.pjcloud.admin.service.SysUserService; import com.bsd.pjcloud.common.core.constant.CommonConstants; import com.bsd.pjcloud.common.core.exception.ErrorCodes; @@ -56,6 +59,7 @@ import org.apache.commons.lang3.StringUtils; import org.springdoc.core.annotations.ParameterObject; import org.springframework.http.HttpHeaders; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -81,6 +85,7 @@ public class SysUserController { private final RemoterVisitorService remoterVisitorService; + private final SysDeptService sysDeptService; /* ************************************* start 回调 start ************************************* */ @Inner(value = false) @@ -115,6 +120,32 @@ public class SysUserController { return R.ok(userService.findUserInfo(user)); } + @GetMapping("/get-name-or-mobile") + public R> getUserByNameOrMobile(@RequestParam("keyword") String keyword) { + List users = userService.list( + Wrappers.query().lambda() + .eq(SysUser::getName, keyword) + .or() + .eq(SysUser::getPhone, keyword) + ); + if (CollectionUtils.isEmpty(users)) { + return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_USERINFO_EMPTY, keyword)); + } + Map deptListByDeptIds = sysDeptService.getDeptListByDeptIds( + users.stream().map(SysUser::getDeptId).collect(Collectors.toList()) + ); + List userDeptSimpleInfos = users.stream().map(user -> { + UserDeptSimpleInfo userDeptSimpleInfo = new UserDeptSimpleInfo(); + userDeptSimpleInfo.setUserId(user.getUserId()); + userDeptSimpleInfo.setName(user.getName()); + userDeptSimpleInfo.setMobile(user.getPhone()); + userDeptSimpleInfo.setDeptId(user.getDeptId()); + userDeptSimpleInfo.setDeptName(deptListByDeptIds.get(user.getDeptId()).getName()); + return userDeptSimpleInfo; + }).collect(Collectors.toList()); + return R.ok(userDeptSimpleInfos); + } + /** * 获取指定用户全部信息 */