From 9cb6d5f92ad7aeda45ad1fe6482dcfc63d17be2b Mon Sep 17 00:00:00 2001 From: HelenHuang <LinHuang@pollex.com.tw> Date: 星期一, 06 十二月 2021 12:35:26 +0800 Subject: [PATCH] Merge branch 'master' of https://192.168.0.10:8443/r/pcalife/PAM --- PAMapp/pages/consultantLogin/index.vue | 4 PAMapp/pages/login/index.vue | 2 PAMapp/store/index.ts | 9 pamapi/src/main/java/com/pollex/pam/service/mapper/SatisfactionMapper.java | 17 ++ pamapi/src/doc/滿意度/查詢登入者所有的滿意度問卷.txt | 75 +++------- PAMapp/pages/myAppointmentList.vue | 35 ++++- PAMapp/pages/myAppointmentList/appointmentList.vue | 18 + PAMapp/components/Client/ClientCard.vue | 156 ++++++++++++++++----- PAMapp/pages/myAppointmentList/contactedList.vue | 8 pamapi/src/main/resources/config/application-uat.yml | 4 pamapi/pom.xml | 2 PAMapp/assets/ts/api/appointment.ts | 31 +++ pamapi/src/main/java/com/pollex/pam/service/dto/SatisfactionDTO.java | 23 +++ 13 files changed, 261 insertions(+), 123 deletions(-) diff --git a/PAMapp/assets/ts/api/appointment.ts b/PAMapp/assets/ts/api/appointment.ts index 046d993..f27be9d 100644 --- a/PAMapp/assets/ts/api/appointment.ts +++ b/PAMapp/assets/ts/api/appointment.ts @@ -28,6 +28,21 @@ } +// 憿批��憿舐內����蝑敺孛� +export function allAppointmentsView() { + const headers = { + Authorization: 'Bearer ' + localStorage.getItem('id_token') + } + return service.post('/consultant/record/allAppointmentsView', undefined, {headers}) +} + +// 霈�������孛� +export function recordRead(appointmentId: number) { + const headers = { + Authorization: 'Bearer ' + localStorage.getItem('id_token') + } + return service.post('/appointment/recordRead/' + appointmentId, undefined, {headers}) +} export interface ClientInfo { @@ -40,10 +55,14 @@ job : string, requirement : string, communicateStatus: string, - hopeContactTime : string, - otherRequirement : string, - appointmentDate : Date, - agentNo : string, - customerId : number, - name : string + hopeContactTime: string, + otherRequirement: string, + appointmentDate: Date, + agentNo: string, + customerId: number, + name: string, + consultantViewTime: Date, + consultantReadTime: Date, + contactTime: Date, + satisfactionScore: number } \ No newline at end of file diff --git a/PAMapp/components/Client/ClientCard.vue b/PAMapp/components/Client/ClientCard.vue index 22454b1..a0ecf5c 100644 --- a/PAMapp/components/Client/ClientCard.vue +++ b/PAMapp/components/Client/ClientCard.vue @@ -1,18 +1,28 @@ <template> <div> - <el-row type="flex" class="rowStyle" @click.native="openDetail"> - <el-col :xs="5" :sm="3"> + <el-row + type="flex" + class="rowStyle cursor--pointer" + justify="space-between" + :class="{'new': !isView && isReserved}" + @click.native="openDetail" + > + <el-col :xs="1" :sm="1" class="unread" align="middle"> + <div class="circle" v-if="isReserved && !isRead"></div> + </el-col> + <el-col :xs="4" :sm="2" align="middle"> <el-avatar :size="50" src="" - class="cursor--pointer fix-chrome-click--issue" ></el-avatar> - <!-- <div class="satisfaction"> - <i class="icon-star pam-icon icon--yellow satisfaction"></i> - <span>{{'1'}}</span> - </div> --> + <div class="satisfaction"> + <template v-if="client.satisfactionScore"> + <i class="icon-star pam-icon icon--yellow satisfaction"></i> + <span>{{client.satisfactionScore}}</span> + </template> + </div> </el-col> - <el-col :xs="14" :sm="15"> + <el-col :xs="15" :sm="15" class="pl-10"> <div class="smTxt_bold name">{{client.name}}</div> <div class="message">������</div> <div class="professionals"> @@ -29,33 +39,49 @@ </template> </div> </el-col> - <el-col class="flex-column contactInfo" :xs="5" :sm="6"> - <div class="smTxt_bold cursor--pointer fix-chrome-click--issue" - :class="client.communicateStatus" - >{{isReserved ? '撌脤���' : '撌脰蝯�'}} - </div> - <div class="date xsTxt text--mid_grey">{{date}}</div> - <div class="xsTxt text--mid_grey">{{time}}</div> + <el-col class="flex-column contactInfo" :xs="4" :sm="6"> + <div + class="smTxt_bold fix-chrome-click--issue" + :class="{'unread-txt': reservedTxt === '�霈�', 'read-txt': reservedTxt !== '�霈�'}" + >{{reservedTxt}}</div> + <div + class="date xsTxt text--mid_grey" + >{{date}}</div> + <div + class="xsTxt text--mid_grey" + >{{time}}</div> </el-col> </el-row> <Ui-Dialog :isVisible.sync="isVisibleDialog" :width="width" + @closeDialog="close" class="pam-myDemand-dialog" > <h5 class="subTitle text--center mb-30" - >{{isReserved ? '������' : '撌脰蝯∟���'}}</h5> - <p class="smTxt text-right">{{client.appointmentDate | formatDate}}</p> + >{{isReserved ? '������' : '撌脰蝯∟���'}}</h5> + + <p v-if='isReserved' + class="smTxt text-right" + ><span v-if="isRead">{{client.consultantReadTime | formatDate}}</span> 撌脰�</p> + <p + v-if="!isReserved" + class="smTxt text-right" + >{{client.contactTime | formatDate}} �蝯�</p> + <p class="smTxt">{{client.appointmentDate | formatDate}} ����</p> + <div class="dialogTxt"> - <p>憪��{client.name}}</p> - <p>�閰梧�{client.phone}}</p> - <p>Email嚗{client.email}}</p> - <p>�批嚗{gender}}</p> - <p>撟湧翩嚗{client.age | toAgeLabel }}</p> - <p>�璆哨�{client.job}}</p> - <p>��瘙�{client.requirement.split(',').join('��')}}</p> - <p v-for="(item, index) in hopeContactTime" :key="index">��蝯⊥�挾{{index + 1 | formatNumber}}嚗{ item | formatHopeContactTime}}</p> + <p>憪���<span>{{client.name}}</span></p> + <p>�閰梧��<span>{{client.phone}}</span></p> + <p>Email嚗�<span>{{client.email}}</span></p> + <p>�批嚗�<span>{{gender}}</span></p> + <p>撟湧翩嚗�<span>{{client.age | toAgeLabel }}</span></p> + <p>�璆哨��<span>{{client.job}}</span></p> + <p>��瘙��<span>{{client.requirement.split(',').join('��')}}</span></p> + <p v-for="(item, index) in hopeContactTime" + :key="index" + >��蝯⊥�挾{{index + 1 | formatNumber}}嚗�<span>{{ item | formatHopeContactTime}}</span></p> </div> <div class="mt-30 text--center" v-if="isReserved"> <el-button @click="markAppointment">璅酉�撌脤��蝯�</el-button> @@ -65,9 +91,9 @@ </template> <script lang="ts"> -import { Vue, Component, Prop, Mutation, Action } from 'nuxt-property-decorator'; +import { Vue, Component, Prop, Action } from 'nuxt-property-decorator'; import { isMobileDevice } from '~/assets/ts/device'; -import { ClientInfo, markAsContact } from '~/assets/ts/api/appointment'; +import { ClientInfo, markAsContact, recordRead } from '~/assets/ts/api/appointment'; @Component({ filters: { @@ -90,6 +116,7 @@ }) export default class ClientList extends Vue { @Action updateMyAppointment!: (data: ClientInfo) => void + @Action storeConsultantList!: () => void; @Prop() client!: ClientInfo; isVisibleDialog = false; @@ -111,18 +138,42 @@ return contactList.filter(item => !!item && item !== ",") } + get isReserved() { + return this.client.communicateStatus === 'reserved'; + } + + get isRead() { + return !!this.client.consultantReadTime; + } + + get isView() { + return !!this.client.consultantViewTime; + } + + get reservedTxt() { + if (this.isReserved) { + return this.client.consultantReadTime ? '撌脰�' : '�霈�'; + } else { + return '撌脰蝯�' + } + } + + get latestUpdateTime() { + if (this.isReserved) { + return this.client.consultantReadTime ? this.client.consultantReadTime : this.client.appointmentDate; + } else { + return this.client.contactTime; + } + } + get time() { - const formatDate = (this.$options.filters as any).formatDate(this.client.appointmentDate); + const formatDate = (this.$options.filters as any).formatDate(this.latestUpdateTime); return formatDate.split(' ')[1] } get date() { - const formatDate = (this.$options.filters as any).formatDate(this.client.appointmentDate); - return formatDate.split(' ')[0] - } - - get isReserved() { - return this.client.communicateStatus === 'reserved'; + const formatDate = (this.$options.filters as any).formatDate(this.latestUpdateTime); + return formatDate.split(' ')[0]; } openDetail() { @@ -136,7 +187,7 @@ const updatedClient = {...this.client}; updatedClient.communicateStatus = 'contacted'; - updatedClient.appointmentDate = new Date(); + updatedClient.contactTime = new Date(); this.updateMyAppointment(updatedClient); this.isVisibleDialog = false; @@ -144,16 +195,43 @@ }) } + close() { + if (!this.client.consultantReadTime) { + recordRead(this.client.id).then(res => { + const updatedClient = {...this.client}; + updatedClient.consultantReadTime = new Date(); + + this.updateMyAppointment(updatedClient); + }); + } + } + } </script> <style lang="scss" scoped> .rowStyle { - padding: 10px; + padding: 10px 15px 10px 5px; background-color: $PRIMARY_WHITE; margin-bottom: 10px; display: flex; justify-content: space-between; + + &.new { + border-left: solid 4px $YELLOW; + } + + .unread { + align-self: center; + + .circle { + width: 10px; + height: 10px; + border-radius: 50px; + background-color: $PRIMARY_RED; + margin: auto; + } + } .satisfaction { font-size: 12px; @@ -189,13 +267,14 @@ } } - .reserved { + .unread-txt { @extend .text--primary; } - .contacted { + .read-txt { color: $SKY_BLUE; } + } .flex-column { @@ -212,7 +291,6 @@ height: 400px; } } - .text-right { text-align: right; diff --git a/PAMapp/pages/consultantLogin/index.vue b/PAMapp/pages/consultantLogin/index.vue index 5154d1e..283f867 100644 --- a/PAMapp/pages/consultantLogin/index.vue +++ b/PAMapp/pages/consultantLogin/index.vue @@ -31,8 +31,8 @@ </div> <div class="pam-paragraph"> <div class="pam-consultant-login__title"> - <div>撽�Ⅳ</div> - <div class="text--dark-blue fs-16 cursor--pointer fix-chrome-click--issue" + <div>撽�Ⅳ <span class="text--dark-blue fs-16">(����之撠神)</span></div> + <div class="text--primary fs-16 cursor--pointer fix-chrome-click--issue" @click="regenerateImgOfVerification">������</div> </div> <div class="pam-consultant-login__verifyBlock mt-10"> diff --git a/PAMapp/pages/login/index.vue b/PAMapp/pages/login/index.vue index 1587be6..6f02559 100644 --- a/PAMapp/pages/login/index.vue +++ b/PAMapp/pages/login/index.vue @@ -522,11 +522,13 @@ private redirect() { const backToPrevious = ['questionnaire', 'myConsultantList']; const find = backToPrevious.findIndex(item => this.previousPath.includes(item)); + console.log(this.previousPath, find, 'redirect'); find > -1 ? this.$router.go(-1) : this.$router.push('/'); } beforeRouteEnter (to, from, next) { next(vm => { + console.log(from.path, 'beforeRouteEnter'); vm.previousPath = from.path; }) } diff --git a/PAMapp/pages/myAppointmentList.vue b/PAMapp/pages/myAppointmentList.vue index 3e99491..85a57da 100644 --- a/PAMapp/pages/myAppointmentList.vue +++ b/PAMapp/pages/myAppointmentList.vue @@ -21,12 +21,26 @@ <NuxtChild></NuxtChild> </div> + + <PopUpFrame + :isOpen.sync="showNewAppointmentNumber" + > + <div class="text--center mdTxt"> + <p class="mb-50">雿�� <span class="text--primary">{{newAppointmentNumber}}</span> �������</p> + <div class="text--center"> + <el-button + type="primary" + @click="showNewAppointmentNumber = false" + >������</el-button> + </div> + </div> + </PopUpFrame> </div> </template> <script lang="ts"> import { Vue, Component, State, Action, Watch } from 'nuxt-property-decorator'; -import { ClientInfo } from '~/assets/ts/api/appointment'; +import { allAppointmentsView, ClientInfo } from '~/assets/ts/api/appointment'; import * as _ from 'lodash'; @Component({ @@ -37,12 +51,20 @@ appointmentList: ClientInfo[] = []; contactedList: ClientInfo[] = []; clients: ClientInfo[] = []; + newAppointmentNumber: number = 0; + showNewAppointmentNumber = false; @State('myAppointmentList') myAppointmentList!: ClientInfo[]; - @Action storeMyAppointmentList!: any; + @Action storeMyAppointmentList!: () => Promise<number>; mounted() { - this.storeMyAppointmentList(); + this.storeMyAppointmentList().then(newDataLength => { + this.newAppointmentNumber = newDataLength; + if (this.newAppointmentNumber > 0) { + this.showNewAppointmentNumber = true; + allAppointmentsView().then(res => res); + } + }); if (this.$route.name) { this.activeTabName = this.$route.name.split('-')[1] @@ -52,11 +74,10 @@ @Watch('myAppointmentList') onMyAppointmentListChange() { this.contactedList = this.myAppointmentList - .filter(item => item.communicateStatus === 'contacted') - .sort((a, b) => a.appointmentDate > b.appointmentDate ? -1 : 1); + .filter(item => item.communicateStatus === 'contacted'); + this.appointmentList = this.myAppointmentList - .filter(item => item.communicateStatus !== 'contacted') - .sort((a, b) => a.appointmentDate > b.appointmentDate ? -1 : 1);; + .filter(item => item.communicateStatus !== 'contacted'); } tabClick(path: string) { diff --git a/PAMapp/pages/myAppointmentList/appointmentList.vue b/PAMapp/pages/myAppointmentList/appointmentList.vue index 370dad2..4e6ac07 100644 --- a/PAMapp/pages/myAppointmentList/appointmentList.vue +++ b/PAMapp/pages/myAppointmentList/appointmentList.vue @@ -5,6 +5,7 @@ placeholder="隢撓���摮�" class="mb-30 pam-clientReserved-input" v-model="keyWord" + @keyup.enter.native="search" > <i slot="suffix" class="icon-search search cursor--pointer" @click="search"></i> </el-input> @@ -15,14 +16,14 @@ ></ClientList> <UiPagination - :totalList="appointmentList" + :totalList="filterList" @changePage="changePage" ></UiPagination> </div> </template> <script lang="ts"> -import { Vue, Component, Prop, State, Watch } from 'nuxt-property-decorator'; +import { Vue, Component, State, Watch } from 'nuxt-property-decorator'; import { ClientInfo } from '~/assets/ts/api/appointment'; @Component @@ -36,9 +37,16 @@ @Watch('myAppointmentList') onMyAppointmentListChange() { - this.appointmentList = this.myAppointmentList - .filter(item => item.communicateStatus !== 'contacted') - .sort((a, b) => a.appointmentDate > b.appointmentDate ? -1 : 1);; + const unreadList = this.myAppointmentList + .filter(item => item.communicateStatus !== 'contacted' && !item.consultantReadTime) + .sort((a, b) => a.consultantViewTime > b.consultantViewTime ? 1 : -1); + + const readList = this.myAppointmentList + .filter(item => item.communicateStatus !== 'contacted' && item.consultantReadTime) + .sort((a, b) => a.consultantReadTime > b.consultantReadTime ? -1 : 1) + + this.appointmentList = unreadList.concat(readList); + this.filterList = this.appointmentList; } mounted() { diff --git a/PAMapp/pages/myAppointmentList/contactedList.vue b/PAMapp/pages/myAppointmentList/contactedList.vue index 857d6cd..15954b7 100644 --- a/PAMapp/pages/myAppointmentList/contactedList.vue +++ b/PAMapp/pages/myAppointmentList/contactedList.vue @@ -5,6 +5,7 @@ placeholder="隢撓���摮�" class="mb-30 pam-clientReserved-input" v-model="keyWord" + @keyup.enter.native="search" > <i slot="suffix" @@ -19,7 +20,7 @@ ></ClientList> <UiPagination - :totalList="contactedList" + :totalList="filterList" @changePage="changePage" ></UiPagination> </div> @@ -42,12 +43,11 @@ onMyAppointmentListChange() { this.contactedList = (this.myAppointmentList || []) .filter(item => item.communicateStatus === 'contacted') - .sort((a, b) => a.appointmentDate > b.appointmentDate ? -1 : 1); + .sort((a, b) => a.contactTime > b.contactTime ? -1 : 1); + this.filterList = this.contactedList; } mounted() { - console.log('ClientContactedList mounted'); - this.onMyAppointmentListChange(); } diff --git a/PAMapp/store/index.ts b/PAMapp/store/index.ts index a117eb2..4fe433a 100644 --- a/PAMapp/store/index.ts +++ b/PAMapp/store/index.ts @@ -1,5 +1,5 @@ import { Module, VuexModule, Mutation, Action } from 'vuex-module-decorators' -import { ClientInfo, getMyAppointmentList, getMyReviewLog } from '~/assets/ts/api/appointment'; +import { ClientInfo, getMyAppointmentList, getMyReviewLog, allAppointmentsView } from '~/assets/ts/api/appointment'; // import * as consultant from '~/assets/ts/api/consultant'; import { recommend, AgentOfStrictQuery, getFavoriteConsultant, addFavoriteConsultant, deleteConsultant, strictQuery } from '~/assets/ts/api/consultant'; import { Consultants } from '~/assets/ts/models/consultant.model'; @@ -105,9 +105,10 @@ } @Action - storeMyAppointmentList() { - getMyAppointmentList().then((data) => { - this.context.commit('updateMyAppointmentList', data) + async storeMyAppointmentList() { + return await getMyAppointmentList().then((data) => { + this.context.commit('updateMyAppointmentList', data); + return data.filter(item => !item.consultantViewTime || item.consultantViewTime === null).length }); } diff --git a/pamapi/pom.xml b/pamapi/pom.xml index d49b823..d4c1861 100644 --- a/pamapi/pom.xml +++ b/pamapi/pom.xml @@ -1012,7 +1012,7 @@ </build> <properties> <!-- default Spring profiles --> - <spring.profiles.active>uat{profile.api-docs}${profile.tls}${profile.no-liquibase}</spring.profiles.active> + <spring.profiles.active>uat${profile.api-docs}${profile.tls}${profile.no-liquibase}</spring.profiles.active> </properties> </profile> <profile> diff --git "a/pamapi/src/doc/\346\273\277\346\204\217\345\272\246/\346\237\245\350\251\242\347\231\273\345\205\245\350\200\205\346\211\200\346\234\211\347\232\204\346\273\277\346\204\217\345\272\246\345\225\217\345\215\267.txt" "b/pamapi/src/doc/\346\273\277\346\204\217\345\272\246/\346\237\245\350\251\242\347\231\273\345\205\245\350\200\205\346\211\200\346\234\211\347\232\204\346\273\277\346\204\217\345\272\246\345\225\217\345\215\267.txt" index 945ccba..73ae4c7 100644 --- "a/pamapi/src/doc/\346\273\277\346\204\217\345\272\246/\346\237\245\350\251\242\347\231\273\345\205\245\350\200\205\346\211\200\346\234\211\347\232\204\346\273\277\346\204\217\345\272\246\345\225\217\345\215\267.txt" +++ "b/pamapi/src/doc/\346\273\277\346\204\217\345\272\246/\346\237\245\350\251\242\347\231\273\345\205\245\350\200\205\346\211\200\346\234\211\347\232\204\346\273\277\346\204\217\345\272\246\345\225\217\345\215\267.txt" @@ -7,66 +7,39 @@ [ { - "id": 4, - "createdDate": "2021-11-30T12:32:28.943Z", - "lastModifiedDate": "2021-11-30T12:32:28.943Z", + "id": 11, + "createdDate": "2021-12-03T03:59:07.854Z", + "lastModifiedDate": "2021-12-03T03:59:07.854Z", "customerId": 90, "agentNo": "B282677963", - "status": "UNFILLED", - "score": 4.0 + "status": "FILLED", + "score": 4.0, + "appointmentId": 134, + "customerName": "Jack", + "agentName": "�憒�" }, { - "id": 5, - "createdDate": "2021-11-30T12:34:16.225Z", - "lastModifiedDate": "2021-11-30T12:34:16.225Z", + "id": 12, + "createdDate": "2021-12-03T04:00:43.181Z", + "lastModifiedDate": "2021-12-03T04:00:43.181Z", "customerId": 90, "agentNo": "B282677963", - "status": "UNFILLED", - "score": 4.0 + "status": "FILLED", + "score": 4.0, + "appointmentId": 135, + "customerName": "Jack", + "agentName": "�憒�" }, { - "id": 6, - "createdDate": "2021-11-30T12:37:27.571Z", - "lastModifiedDate": "2021-11-30T12:37:27.571Z", + "id": 13, + "createdDate": "2021-12-03T04:01:20.095Z", + "lastModifiedDate": "2021-12-03T04:01:20.095Z", "customerId": 90, "agentNo": "B282677963", - "status": "UNFILLED", - "score": 4.0 - }, - { - "id": 7, - "createdDate": "2021-11-30T12:52:27.709Z", - "lastModifiedDate": "2021-11-30T12:52:27.709Z", - "customerId": 90, - "agentNo": "B282677963", - "status": "UNFILLED", - "score": 4.0 - }, - { - "id": 8, - "createdDate": "2021-11-30T12:52:46.657Z", - "lastModifiedDate": "2021-11-30T12:52:46.657Z", - "customerId": 90, - "agentNo": "B282677963", - "status": "UNFILLED", - "score": 2.0 - }, - { - "id": 9, - "createdDate": "2021-12-01T03:08:50.258Z", - "lastModifiedDate": "2021-12-01T03:08:50.258Z", - "customerId": 90, - "agentNo": "B282677963", - "status": "UNFILLED", - "score": 0.0 - }, - { - "id": 10, - "createdDate": "2021-12-01T09:48:50.991Z", - "lastModifiedDate": "2021-12-01T09:48:50.991Z", - "customerId": 90, - "agentNo": "B282677963", - "status": "UNFILLED", - "score": null + "status": "FILLED", + "score": 2.0, + "appointmentId": 136, + "customerName": "Jack", + "agentName": "�憒�" } ] \ No newline at end of file diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/SatisfactionDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/SatisfactionDTO.java index e244de1..5a6c4ae 100644 --- a/pamapi/src/main/java/com/pollex/pam/service/dto/SatisfactionDTO.java +++ b/pamapi/src/main/java/com/pollex/pam/service/dto/SatisfactionDTO.java @@ -14,6 +14,9 @@ private SatisfactionStatusEnum status; private Float score; private Long appointmentId; + private String customerName; + private String agentName; + public Long getId() { return id; } @@ -56,6 +59,24 @@ public void setScore(Float score) { this.score = score; } - + public Long getAppointmentId() { + return appointmentId; + } + public void setAppointmentId(Long appointmentId) { + this.appointmentId = appointmentId; + } + public String getCustomerName() { + return customerName; + } + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + public String getAgentName() { + return agentName; + } + public void setAgentName(String agentName) { + this.agentName = agentName; + } + } diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/SatisfactionMapper.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/SatisfactionMapper.java index d83505c..97669a7 100644 --- a/pamapi/src/main/java/com/pollex/pam/service/mapper/SatisfactionMapper.java +++ b/pamapi/src/main/java/com/pollex/pam/service/mapper/SatisfactionMapper.java @@ -5,18 +5,33 @@ import java.util.List; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import com.pollex.pam.domain.Consultant; +import com.pollex.pam.domain.Customer; import com.pollex.pam.domain.Satisfaction; +import com.pollex.pam.repository.ConsultantRepository; +import com.pollex.pam.repository.CustomerRepository; import com.pollex.pam.service.dto.SatisfactionDTO; @Service public class SatisfactionMapper { + @Autowired + ConsultantRepository consultantRepository; + + @Autowired + CustomerRepository customerRepository; + public SatisfactionDTO toDTO(Satisfaction source) { SatisfactionDTO target = new SatisfactionDTO(); - target.setScore(source.getScore()); BeanUtils.copyProperties(source, target); + target.setScore(source.getScore()); + Consultant consultant= consultantRepository.findOneByAgentNo(source.getAgentNo()).get(); + target.setAgentName(consultant.getName()); + Customer customer = customerRepository.findById(source.getCustomerId()).get(); + target.setCustomerName(customer.getName()); return target; } diff --git a/pamapi/src/main/resources/config/application-uat.yml b/pamapi/src/main/resources/config/application-uat.yml index 7f13be1..58ac9bb 100644 --- a/pamapi/src/main/resources/config/application-uat.yml +++ b/pamapi/src/main/resources/config/application-uat.yml @@ -1,5 +1,5 @@ # =================================================================== -# Spring Boot configuration for the "sit" profile. +# Spring Boot configuration for the "uat" profile. # # This configuration overrides the application.yml file. # @@ -111,7 +111,7 @@ application: mock-login: false - otp-web-service-url: https://vtwlifeopensysuat.pru.intranet.asia:443/pcalife-otp/ws/otpWebService?wsdl + otp-web-service-url: https://vtwlifeopensysuat.pru.intranet.asia/pcalife-otp/ws/otpWebService?wsdl otp-web-service-password: es20!%Pass otp-web-service-system-type: epos e-service-login-url: https://eserviceuat.pcalife.com.tw/sso/chatbotValidate -- Gitblit v1.8.0