liujie
2026-09-11 4f6f15b818704079ff2e4e4719b798f48d68a335
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package com.tourguide.modules.user.dto;
 
import com.tourguide.modules.user.entity.GuideScenicConfig;
import com.tourguide.modules.user.entity.GuideUser;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Period;
import java.util.List;
import java.util.stream.Collectors;
 
public class GuideUserDetailResponse {
    private final Long id;
    private final String username;
    private final String realName;
    private final String mobile;
    private final String avatar;
    private final String certificateNo;
    private final Integer gender;
    private final LocalDate birthDate;
    private final Integer age;
    private final String ageRange;
    private final Integer workYears;
    private final String workYearRange;
    private final String idCardNo;
    private final String idCardFrontUrl;
    private final String idCardBackUrl;
    private final String guideCertificateUrl;
    private final String qualificationCertificateUrl;
    private final Long teamId;
    private final String teamName;
    private final String teamType;
    private final Long acceptedOrderCount;
    private final Long currentMonthOrderCount;
    private final BigDecimal rating;
    private final boolean autoDisableWhitelisted;
    private final boolean premiumEnabled;
    private final String wechatOpenId;
    private final Integer status;
    private final LocalDateTime createdAt;
    private final List<GuideScenicConfigResponse> scenicConfigs;
 
    public GuideUserDetailResponse(GuideUser user, String teamName, List<GuideScenicConfig> scenicConfigs) {
        this(user, teamName, scenicConfigs, user.getBirthDate(), user.getWorkYears());
    }
 
    public GuideUserDetailResponse(GuideUser user, String teamName, List<GuideScenicConfig> scenicConfigs,
                                   LocalDate birthDate, Integer workYears) {
        this(user, teamName, scenicConfigs, birthDate, workYears, null, null);
    }
 
    public GuideUserDetailResponse(GuideUser user, String teamName, List<GuideScenicConfig> scenicConfigs,
                                   LocalDate birthDate, Integer workYears,
                                   String ageRange, String workYearRange) {
        this.id = user.getId();
        this.username = user.getUsername();
        this.realName = user.getRealName();
        this.mobile = user.getMobile();
        this.avatar = user.getAvatar();
        this.certificateNo = user.getCertificateNo();
        this.gender = user.getGender();
        this.birthDate = birthDate;
        this.age = birthDate == null ? null : Period.between(birthDate, LocalDate.now()).getYears();
        this.ageRange = ageRange;
        this.workYears = workYears;
        this.workYearRange = workYearRange;
        this.idCardNo = user.getIdCardNo();
        this.idCardFrontUrl = user.getIdCardFrontUrl();
        this.idCardBackUrl = user.getIdCardBackUrl();
        this.guideCertificateUrl = user.getGuideCertificateUrl();
        this.qualificationCertificateUrl = user.getQualificationCertificateUrl();
        this.teamId = user.getTeamId();
        this.teamName = teamName;
        this.teamType = user.getTeamId() == null ? "个人" : "讲解队";
        this.acceptedOrderCount = user.getAcceptedOrderCount() == null ? 0L : user.getAcceptedOrderCount();
        this.currentMonthOrderCount = user.getCurrentMonthOrderCount() == null ? 0L : user.getCurrentMonthOrderCount();
        this.rating = user.getRating() == null ? BigDecimal.ZERO : user.getRating();
        this.autoDisableWhitelisted = user.getAutoDisableWhitelisted() != null && user.getAutoDisableWhitelisted() == 1;
        this.premiumEnabled = Integer.valueOf(1).equals(user.getPremiumEnabled());
        this.wechatOpenId = user.getWechatOpenId();
        this.status = user.getStatus();
        this.createdAt = user.getCreatedAt();
        this.scenicConfigs = scenicConfigs.stream().map(GuideScenicConfigResponse::new).collect(Collectors.toList());
    }
    public Long getId() { return id; }
    public String getUsername() { return username; }
    public String getRealName() { return realName; }
    public String getMobile() { return mobile; }
    public String getAvatar() { return avatar; }
    public String getCertificateNo() { return certificateNo; }
    public Integer getGender() { return gender; }
    public LocalDate getBirthDate() { return birthDate; }
    public Integer getAge() { return age; }
    public String getAgeRange() { return ageRange; }
    public Integer getWorkYears() { return workYears; }
    public String getWorkYearRange() { return workYearRange; }
    public String getIdCardNo() { return idCardNo; }
    public String getIdCardFrontUrl() { return idCardFrontUrl; }
    public String getIdCardBackUrl() { return idCardBackUrl; }
    public String getGuideCertificateUrl() { return guideCertificateUrl; }
    public String getQualificationCertificateUrl() { return qualificationCertificateUrl; }
    public Long getTeamId() { return teamId; }
    public String getTeamName() { return teamName; }
    public String getTeamType() { return teamType; }
    public Long getAcceptedOrderCount() { return acceptedOrderCount; }
    public Long getCurrentMonthOrderCount() { return currentMonthOrderCount; }
    public BigDecimal getRating() { return rating; }
    public boolean isAutoDisableWhitelisted() { return autoDisableWhitelisted; }
    public boolean isPremiumEnabled() { return premiumEnabled; }
    public String getWechatOpenId() { return wechatOpenId; }
    public Integer getStatus() { return status; }
    public LocalDateTime getCreatedAt() { return createdAt; }
    public List<GuideScenicConfigResponse> getScenicConfigs() { return scenicConfigs; }
}