package com.tourguide.modules.user.dto;
|
|
import com.tourguide.modules.user.entity.MiniUser;
|
import org.springframework.util.StringUtils;
|
import java.math.BigDecimal;
|
import java.time.LocalDateTime;
|
|
/** 后台游客详情,消费统计字段将在订单模块接入后由聚合查询填充。 */
|
public class MiniUserDetailResponse {
|
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 final BigDecimal totalConsumption;
|
private final long reviewCount;
|
|
private MiniUserDetailResponse(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;
|
this.totalConsumption = BigDecimal.ZERO;
|
this.reviewCount = 0L;
|
}
|
|
public static MiniUserDetailResponse from(MiniUser user) { return new MiniUserDetailResponse(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; }
|
public BigDecimal getTotalConsumption() { return totalConsumption; }
|
public long getReviewCount() { return reviewCount; }
|
|
private static String maskIdCardNo(String idCardNo) {
|
if (!StringUtils.hasText(idCardNo) || idCardNo.length() != 18) { return ""; }
|
return idCardNo.substring(0, 6) + "********" + idCardNo.substring(14);
|
}
|
}
|