From 30dbf9d2f9229c36f4857f97c36cf88b90c9b1b3 Mon Sep 17 00:00:00 2001 From: dzq Date: Tue, 13 May 2025 08:03:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86):=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=94=A8=E6=88=B7=E8=AF=A6=E6=83=85=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=B9=B6=E9=9A=90=E8=97=8F=E8=BA=AB=E4=BB=BD=E8=AF=81?= =?UTF-8?q?=E5=8F=B7=E7=A0=81=E4=B8=AD=E9=97=B48=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增用户详情接口,用于获取用户详细信息。同时,在用户DTO中处理身份证号码,隐藏中间8位以保护用户隐私。 --- .../controller/ab98/Ab98UserController.java | 8 +++ .../api/controller/MqttController.java | 4 +- .../ab98/user/Ab98UserApplicationService.java | 12 ++++ .../domain/ab98/user/dto/Ab98UserDTO.java | 5 ++ .../ab98/user/dto/Ab98UserDetailDTO.java | 64 +++++++++++++++++++ 5 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/dto/Ab98UserDetailDTO.java diff --git a/agileboot-admin/src/main/java/com/agileboot/admin/controller/ab98/Ab98UserController.java b/agileboot-admin/src/main/java/com/agileboot/admin/controller/ab98/Ab98UserController.java index 8fc5a8d..4155ae2 100644 --- a/agileboot-admin/src/main/java/com/agileboot/admin/controller/ab98/Ab98UserController.java +++ b/agileboot-admin/src/main/java/com/agileboot/admin/controller/ab98/Ab98UserController.java @@ -5,6 +5,7 @@ import com.agileboot.common.core.base.BaseController; import com.agileboot.common.core.dto.ResponseDTO; import com.agileboot.common.core.page.PageDTO; import com.agileboot.common.enums.common.BusinessTypeEnum; +import com.agileboot.domain.ab98.user.dto.Ab98UserDetailDTO; import com.agileboot.domain.common.command.BulkOperationCommand; import com.agileboot.domain.ab98.user.Ab98UserApplicationService; import com.agileboot.domain.ab98.user.command.AddAb98UserCommand; @@ -41,6 +42,13 @@ public class Ab98UserController extends BaseController { return ResponseDTO.ok(page); } + @Operation(summary = "用户详情") + @GetMapping("/detail/{id}") + public ResponseDTO detail(@PathVariable Long id) { + Ab98UserDetailDTO ab98UserDetail = userApplicationService.getAb98UserDetail(id); + return ResponseDTO.ok(ab98UserDetail); + } + @Operation(summary = "新增用户") @AccessLog(title = "用户管理", businessType = BusinessTypeEnum.ADD) @PostMapping diff --git a/agileboot-api/src/main/java/com/agileboot/api/controller/MqttController.java b/agileboot-api/src/main/java/com/agileboot/api/controller/MqttController.java index 0a6eead..b9241ad 100644 --- a/agileboot-api/src/main/java/com/agileboot/api/controller/MqttController.java +++ b/agileboot-api/src/main/java/com/agileboot/api/controller/MqttController.java @@ -20,9 +20,9 @@ public class MqttController { @GetMapping("/opencell") - public String opencell(@RequestParam String data, @RequestParam Long cabinetId) { + public String opencell(@RequestParam String data, @RequestParam Long mqttServerId) { try { - mqttService.publish(data, cabinetId); + mqttService.publish(data, mqttServerId); return "success"; } catch (Exception e) { log.error("getPermanentCode error", e); diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/Ab98UserApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/Ab98UserApplicationService.java index a5f81ed..9546fe3 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/Ab98UserApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/Ab98UserApplicationService.java @@ -3,6 +3,7 @@ package com.agileboot.domain.ab98.user; import com.agileboot.common.core.page.PageDTO; import com.agileboot.domain.ab98.api.Ab98ApiUtil; import com.agileboot.domain.ab98.api.SsoLoginUserinfo; +import com.agileboot.domain.ab98.user.dto.Ab98UserDetailDTO; import com.agileboot.domain.common.command.BulkOperationCommand; import com.agileboot.domain.ab98.user.command.AddAb98UserCommand; import com.agileboot.domain.ab98.user.command.UpdateAb98UserCommand; @@ -54,6 +55,10 @@ public class Ab98UserApplicationService { } } + public Ab98UserEntity getByAb98UserId(Long ab98UserId) { + return userService.getById(ab98UserId); + } + public Ab98UserEntity getByUserId(String userId) { return userService.getByUserid(userId); } @@ -62,6 +67,13 @@ public class Ab98UserApplicationService { return userService.getByOpenid(openid); } + + public Ab98UserDetailDTO getAb98UserDetail(Long ab98UserId) { + Ab98UserEntity ab98UserEntity = userService.getById(ab98UserId); + return new Ab98UserDetailDTO(ab98UserEntity); + } + + public void saveAb98User(String openid, Ab98ApiUtil.LoginData loginData) { Ab98UserEntity ab98UserEntity = getByUserId(loginData.getUserid()); if (ab98UserEntity != null && diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/dto/Ab98UserDTO.java b/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/dto/Ab98UserDTO.java index b7c7882..bb948e8 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/dto/Ab98UserDTO.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/dto/Ab98UserDTO.java @@ -17,6 +17,11 @@ public class Ab98UserDTO { BeanUtil.copyProperties(entity, this); this.registeredStatus = entity.getRegistered() ? "已注册" : "未注册"; + + // 处理身份证号码,隐藏中间8位 + if (this.idnum != null && this.idnum.length() >= 10) { + this.idnum = this.idnum.substring(0, 6) + "********" + this.idnum.substring(this.idnum.length() - 4); + } } } diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/dto/Ab98UserDetailDTO.java b/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/dto/Ab98UserDetailDTO.java new file mode 100644 index 0000000..e1c9dda --- /dev/null +++ b/agileboot-domain/src/main/java/com/agileboot/domain/ab98/user/dto/Ab98UserDetailDTO.java @@ -0,0 +1,64 @@ +package com.agileboot.domain.ab98.user.dto; + +import cn.hutool.core.bean.BeanUtil; +import com.agileboot.common.annotation.ExcelColumn; +import com.agileboot.common.annotation.ExcelSheet; +import com.agileboot.common.core.base.BaseEntity; +import com.agileboot.domain.ab98.user.db.Ab98UserEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@EqualsAndHashCode(callSuper = true) +@ExcelSheet(name = "汇邦云用户详情") +@Data +public class Ab98UserDetailDTO extends BaseEntity { + + public Ab98UserDetailDTO(Ab98UserEntity entity) { + if (entity != null) { + BeanUtil.copyProperties(entity, this); + + this.registeredStatus = entity.getRegistered() ? "已注册" : "未注册"; + + // 处理身份证号码,隐藏中间8位 + if (this.idnum != null && this.idnum.length() >= 10) { + this.idnum = this.idnum.substring(0, 6) + "********" + this.idnum.substring(this.idnum.length() - 4); + } + } + } + + @ExcelColumn(name = "主键ID") + private Long ab98UserId; + + @ExcelColumn(name = "openid") + private String openid; + + @ExcelColumn(name = "用户唯一ID") + private String userid; + + @ExcelColumn(name = "真实姓名") + private String name; + + @ExcelColumn(name = "手机号码") + private String tel; + + @ExcelColumn(name = "身份证号码") + private String idnum; + + @ExcelColumn(name = "性别") + private String sex; + + @ExcelColumn(name = "人脸照片地址") + private String faceImg; + + @ExcelColumn(name = "身份证正面地址") + private String idcardFront; + + @ExcelColumn(name = "身份证背面地址") + private String idcardBack; + + @ExcelColumn(name = "身份证登记地址") + private String address; + + @ExcelColumn(name = "注册状态") + private String registeredStatus; +}