From 6dd264601727f2e7ae70e5caa99f137fdad6546c Mon Sep 17 00:00:00 2001
From: wayne <wayne8692wayne8692@gmail.com>
Date: 星期二, 30 十一月 2021 19:45:31 +0800
Subject: [PATCH] [add] 【todo 131189】新增嚴選配對年資篩選功能

---
 pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java            |   11 +++++
 pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java        |    6 +-
 pamapi/src/doc/顧問API/嚴選配對.txt                                                   |    2 
 pamapi/src/main/java/com/pollex/pam/service/dto/StrictQueryConsultantParam.java |    7 ++-
 pamapi/src/main/java/com/pollex/pam/enums/SeniorityQueryEnum.java               |    7 +++
 pamapi/src/doc/sql/20211130_w.sql                                               |   16 ++++++++
 pamapi/src/main/java/com/pollex/pam/domain/Consultant.java                      |   33 +++++++++++++---
 7 files changed, 68 insertions(+), 14 deletions(-)

diff --git a/pamapi/src/doc/sql/20211130_w.sql b/pamapi/src/doc/sql/20211130_w.sql
new file mode 100644
index 0000000..2fe4809
--- /dev/null
+++ b/pamapi/src/doc/sql/20211130_w.sql
@@ -0,0 +1,16 @@
+ALTER TABLE omo.consultant ADD seniority_year int4 NULL;
+ALTER TABLE omo.consultant ADD seniority_month int4 NULL;
+
+-- Auto-generated SQL script #202111301732
+UPDATE omo.consultant SET seniority_year=10,seniority_month=0 WHERE agent_no='AGAM11249699';
+UPDATE omo.consultant SET seniority_year=22,seniority_month=8 WHERE agent_no='J149388015';
+UPDATE omo.consultant SET seniority_year=15,seniority_month=9 WHERE agent_no='X147309614';
+UPDATE omo.consultant SET seniority_year=3,seniority_month=0 WHERE agent_no='A183619275';
+UPDATE omo.consultant SET seniority_year=1,seniority_month=0 WHERE agent_no='AG0101234567';
+UPDATE omo.consultant SET seniority_year=30,seniority_month=8 WHERE agent_no='B282677963';
+UPDATE omo.consultant SET seniority_year=20,seniority_month=3 WHERE agent_no='D265260662';
+UPDATE omo.consultant SET seniority_year=38,seniority_month=0 WHERE agent_no='R221444250';
+UPDATE omo.consultant SET seniority_year=26,seniority_month=10 WHERE agent_no='AG0109051204';
+UPDATE omo.consultant SET seniority_year=17,seniority_month=1 WHERE agent_no='Z152717443';
+
+ALTER TABLE omo.consultant DROP COLUMN seniority;
diff --git "a/pamapi/src/doc/\351\241\247\345\225\217API/\345\232\264\351\201\270\351\205\215\345\260\215.txt" "b/pamapi/src/doc/\351\241\247\345\225\217API/\345\232\264\351\201\270\351\205\215\345\260\215.txt"
index aad2277..9401136 100644
--- "a/pamapi/src/doc/\351\241\247\345\225\217API/\345\232\264\351\201\270\351\205\215\345\260\215.txt"
+++ "b/pamapi/src/doc/\351\241\247\345\225\217API/\345\232\264\351\201\270\351\205\215\345\260\215.txt"
@@ -8,7 +8,7 @@
     "area":"獢��",
     "requirements": ["�摨瑁����","靽�瑼�/閬��"],
     "otherRequirement": "���",
-    "seniority":"鞈楛",
+    "seniority":        // "鞈楛"撣�"SENIOR"��"撟渲��"撣�"YOUNG"��"銝��"撣�"UNLIMITED"
     "popularTags":["��","憭梯","����"],
     "otherPopularTags":"���",
 }
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/Consultant.java b/pamapi/src/main/java/com/pollex/pam/domain/Consultant.java
index 890a849..60fcbf9 100644
--- a/pamapi/src/main/java/com/pollex/pam/domain/Consultant.java
+++ b/pamapi/src/main/java/com/pollex/pam/domain/Consultant.java
@@ -50,8 +50,11 @@
     @Column(name = "company_address")
     private String companyAddress;
 
-    @Column(name = "seniority")
-    private String seniority;
+    @Column(name = "seniority_year")
+    private Long seniorityYear;
+
+    @Column(name = "seniority_month")
+    private Long seniorityMonth;
 
     @Column(name = "concept")
     private String concept;
@@ -164,12 +167,27 @@
         companyAddress = companyAddress;
     }
 
-    public String getSeniority() {
-        return seniority;
+    public Long getSeniorityYear() {
+        return seniorityYear;
     }
 
-    public void setSeniority(String seniority) {
-        this.seniority = seniority;
+    public void setSeniorityYear(Long seniorityYear) {
+        this.seniorityYear = seniorityYear;
+    }
+
+    public Long getSeniorityMonth() {
+        return seniorityMonth;
+    }
+
+    public void setSeniorityMonth(Long seniorityMonth) {
+        this.seniorityMonth = seniorityMonth;
+    }
+
+    public String getSeniorityDTOString() {
+        final String seniorityYearString = this.seniorityYear != 0 ? this.seniorityYear + " 撟� " : "";
+        final String seniorityMonthString = this.seniorityMonth != 0 ? this.seniorityMonth + " ���" : "";
+
+        return seniorityYearString + seniorityMonthString;
     }
 
     public String getConcept() {
@@ -227,7 +245,8 @@
             ", gender=" + gender +
             ", phoneNumber='" + phoneNumber + '\'' +
             ", companyAddress='" + companyAddress + '\'' +
-            ", seniority='" + seniority + '\'' +
+            ", seniorityYear='" + seniorityYear + '\'' +
+            ", seniorityMonth='" + seniorityMonth + '\'' +
             ", concept='" + concept + '\'' +
             ", experience='" + experience + '\'' +
             ", award='" + award + '\'' +
diff --git a/pamapi/src/main/java/com/pollex/pam/enums/SeniorityQueryEnum.java b/pamapi/src/main/java/com/pollex/pam/enums/SeniorityQueryEnum.java
new file mode 100644
index 0000000..8cf8576
--- /dev/null
+++ b/pamapi/src/main/java/com/pollex/pam/enums/SeniorityQueryEnum.java
@@ -0,0 +1,7 @@
+package com.pollex.pam.enums;
+
+public enum SeniorityQueryEnum {
+    SENIOR,
+    YOUNG,
+    UNLIMITED
+}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java b/pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java
index 33ac5cf..3163411 100644
--- a/pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java
+++ b/pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java
@@ -9,6 +9,8 @@
 import javax.persistence.criteria.*;
 import java.util.*;
 
+import static com.pollex.pam.enums.SeniorityQueryEnum.*;
+
 public class ConsultantQuerySpec {
     private ConsultantQuerySpec() {
     }
@@ -58,6 +60,15 @@
                     set.add(criteriaBuilder.greaterThanOrEqualTo(root.get("avgScore"), param.getAvgScore().intValue()));
                 }
 
+                if(Objects.nonNull(param.getSeniority()) && param.getSeniority() != UNLIMITED) {
+                    if(param.getSeniority() == YOUNG) {
+                        set.add(criteriaBuilder.lessThanOrEqualTo(root.get("seniorityYear"), 5));
+                    }
+                    else if(param.getSeniority() == SENIOR) {
+                        set.add(criteriaBuilder.greaterThan(root.get("seniorityYear"), 5));
+                    }
+                }
+
                 if(StringUtils.isNotEmpty(param.getArea())) {
                     Predicate predicate1 = criteriaBuilder.like(root.get("serveArea"), "%" + param.getArea() + "%");
                     Predicate predicate2 = criteriaBuilder.like(root.get("serveArea"), "%��%");
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/StrictQueryConsultantParam.java b/pamapi/src/main/java/com/pollex/pam/service/dto/StrictQueryConsultantParam.java
index a62c19d..fc83599 100644
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/StrictQueryConsultantParam.java
+++ b/pamapi/src/main/java/com/pollex/pam/service/dto/StrictQueryConsultantParam.java
@@ -1,6 +1,7 @@
 package com.pollex.pam.service.dto;
 
 import com.pollex.pam.enums.GenderEnum;
+import com.pollex.pam.enums.SeniorityQueryEnum;
 
 import java.util.List;
 
@@ -12,7 +13,7 @@
     private String area;
     private List<String> requirements;
     private String otherRequirement;
-    private String seniority;
+    private SeniorityQueryEnum seniority;
     private List<String> popularTags;
     private String otherPopularTags;
 
@@ -64,11 +65,11 @@
         this.otherRequirement = otherRequirement;
     }
 
-    public String getSeniority() {
+    public SeniorityQueryEnum getSeniority() {
         return seniority;
     }
 
-    public void setSeniority(String seniority) {
+    public void setSeniority(SeniorityQueryEnum seniority) {
         this.seniority = seniority;
     }
 
diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java
index ea9842b..8a8d485 100644
--- a/pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java
+++ b/pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java
@@ -17,7 +17,7 @@
 @Service
 public class ConsultantMapper {
 
-    private final static Character SPLIT_MASK = ',';
+    private static final Character SPLIT_MASK = ',';
 
     @Autowired
     AppointmentService appointmentService;
@@ -27,7 +27,7 @@
         consultantDTO.setAgentNo(source.getAgentNo());
         consultantDTO.setName(source.getName());
         consultantDTO.setAvgScore(source.getAvgScore());
-        consultantDTO.setSeniority(source.getSeniority());
+        consultantDTO.setSeniority(source.getSeniorityDTOString());
         consultantDTO.setExpertise(splitStringWithChar(source.getExpertise()));
         consultantDTO.setImg(source.getPhotoPath());
         consultantDTO.setRole(source.getRole());
@@ -72,7 +72,7 @@
         consultantDetailDTO.setPhoneNumber(source.getPhoneNumber());
         consultantDetailDTO.setServeArea(source.getServeArea());
         consultantDetailDTO.setCompanyAddress(source.getCompanyAddress());
-        consultantDetailDTO.setSeniority(source.getSeniority());
+        consultantDetailDTO.setSeniority(source.getSeniorityDTOString());
         consultantDetailDTO.setConcept(source.getConcept());
         consultantDetailDTO.setAwards(source.getAward());
         consultantDetailDTO.setImage(source.getPhotoPath());

--
Gitblit v1.8.0