package com.tourguide.modules.user.dto;
|
|
import com.tourguide.modules.user.entity.MiniUser;
|
import org.springframework.util.StringUtils;
|
import java.time.LocalDateTime;
|
|
/** 小程序用户的脱敏返回对象,不暴露密码与敏感平台凭据。 */
|
public class MiniUserResponse {
|
private final Long id;
|
private final String username;
|
private final String nickname;
|
private final String mobile;
|
private final String avatar;
|
private final String realName;
|
private final String idCardNoMasked;
|
private final boolean realNameVerified;
|
private final Integer status;
|
private final LocalDateTime createdAt;
|
private final long orderCount;
|
|
private MiniUserResponse(MiniUser user) {
|
this.id = user.getId();
|
this.username = user.getUsername();
|
this.nickname = user.getNickname();
|
this.mobile = user.getMobile();
|
this.avatar = user.getAvatar();
|
this.realName = user.getRealName();
|
this.idCardNoMasked = maskIdCardNo(user.getIdCardNo());
|
this.realNameVerified = StringUtils.hasText(user.getRealName()) && StringUtils.hasText(user.getIdCardNo());
|
this.status = user.getStatus();
|
this.createdAt = user.getCreatedAt();
|
this.orderCount = 0L;
|
}
|
public static MiniUserResponse from(MiniUser user) { return new MiniUserResponse(user); }
|
public Long getId() { return id; }
|
public String getUsername() { return username; }
|
public String getNickname() { return nickname; }
|
public String getMobile() { return mobile; }
|
public String getAvatar() { return avatar; }
|
public String getRealName() { return realName; }
|
public String getIdCardNoMasked() { return idCardNoMasked; }
|
public boolean isRealNameVerified() { return realNameVerified; }
|
public Integer getStatus() { return status; }
|
public LocalDateTime getCreatedAt() { return createdAt; }
|
public long getOrderCount() { return orderCount; }
|
|
private static String maskIdCardNo(String idCardNo) {
|
if (!StringUtils.hasText(idCardNo) || idCardNo.length() != 18) { return ""; }
|
return idCardNo.substring(0, 6) + "********" + idCardNo.substring(14);
|
}
|
}
|