From 3f45e8fdfa31d7b764d60a7c0cb5dd11944ed418 Mon Sep 17 00:00:00 2001
From: 刘帅 <rr.iii@qq.com>
Date: 星期一, 21 九月 2026 23:38:59 +0800
Subject: [PATCH] bug:统计数据修正
---
cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
index a75c076..d8b3fbe 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/AppUserController.java
@@ -39,6 +39,7 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.RequestHeader;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -243,6 +244,46 @@
public TAppUser queryAppUser1(@RequestBody Integer appUserId) {
TAppUser appUser = appUserService.getById(appUserId);
return appUser;
+ }
+
+ /**
+ * Internal-only data source for the management sensitive-data query. The
+ * caller is authenticated and authorised by the management service; its
+ * Feign interceptor adds the header that permits the response to remain
+ * unmasked for that single request.
+ */
+ @PostMapping("/internal/sensitive/app-user/{id}")
+ public Map<String, Object> sensitiveAppUser(@PathVariable("id") Integer id,
+ @RequestHeader(value = "X-Internal-Sensitive-Access", required = false) String access) {
+ if (!"true".equalsIgnoreCase(access)) {
+ throw new IllegalStateException("Sensitive data access is restricted to the management service");
+ }
+ TAppUser user = appUserService.getById(id);
+ if (user == null) return null;
+ Map<String, Object> result = new java.util.HashMap<String, Object>();
+ result.put("id", user.getId());
+ result.put("name", user.getName());
+ result.put("phone", user.getPhone());
+ result.put("idCard", user.getIdCard());
+ return result;
+ }
+
+ /**
+ * Internal data source used when an APP booking submits its displayed,
+ * masked phone number. Limit the response to the single field needed for
+ * that booking; callers must use the internal sensitive-data header.
+ */
+ @PostMapping("/internal/sensitive/site-booking/app-user/{id}/phone")
+ public Map<String, Object> siteBookingPhone(@PathVariable("id") Integer id,
+ @RequestHeader(value = "X-Internal-Sensitive-Access", required = false) String access) {
+ if (!"true".equalsIgnoreCase(access)) {
+ throw new IllegalStateException("Sensitive data access is restricted to site booking");
+ }
+ TAppUser user = appUserService.getById(id);
+ if (user == null) return null;
+ Map<String, Object> result = new java.util.HashMap<String, Object>();
+ result.put("phone", user.getPhone());
+ return result;
}
/**
@@ -842,6 +883,10 @@
public void updateAppUser(@RequestBody TAppUser appUser) {
try {
TAppUser appUser1 = appUserService.getById(appUser.getId());
+ // A management edit form may contain the displayed masked value.
+ // Never persist that display value over the original identifier.
+ if (appUser.getPhone() != null && appUser.getPhone().contains("*")) appUser.setPhone(appUser1.getPhone());
+ if (appUser.getIdCard() != null && appUser.getIdCard().contains("*")) appUser.setIdCard(appUser1.getIdCard());
appUserService.updateById(appUser);
if (appUser.getIntegral().compareTo(appUser1.getIntegral()) != 0) {
UserIntegralChanges userIntegralChanges = new UserIntegralChanges();
--
Gitblit v1.7.1