保誠-保戶業務員媒合平台
[ADD] 新增預約單備註API
[ADD] 更新預約單備註API
[ADD] 刪除預約單備註API
[ADD] 顧問查詢自己的預約單清單時帶出備註資料
修改6個檔案
新增11個檔案
519 ■■■■ 已變更過的檔案
pamapi/src/doc/預約單/刪除預約單備註.txt 6 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/doc/預約單/新增預約單備註.txt 14 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/doc/預約單/更新預約單備註.txt 12 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/doc/預約單/顧問取得所有自己的預約單API.txt 179 ●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/domain/Appointment.java 17 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/domain/AppointmentCustomerView.java 19 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/domain/AppointmentMemo.java 57 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/repository/AppointmentMemoRepository.java 11 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/AppointmentMemoService.java 58 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCustomerViewDTO.java 11 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentMemoCreateDTO.java 22 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentMemoUpdateDTO.java 27 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentCustomerViewMapper.java 3 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentMemoMapper.java 23 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentMemoResource.java 45 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/web/rest/errors/AppointmentMemoNotFoundException.java 13 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/resources/config/application-dev.yml 2 ●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/doc/¹w¬ù³æ/§R°£¹w¬ù³æ³Æµù.txt
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,6 @@
http delete:
http://localhost:8080/api/appointment/memo/{appointmentMemoId}
http://localhost:8080/api/appointment/memo/1
pamapi/src/doc/¹w¬ù³æ/·s¼W¹w¬ù³æ³Æµù.txt
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,14 @@
http post :
http://localhost:8080/api/appointment/memo/create
content : é ç´„單備註內容
appointmentId : é ç´„å–®id
request body:
{
    "content":"test",
    "appointmentId":368
}
pamapi/src/doc/¹w¬ù³æ/§ó·s¹w¬ù³æ³Æµù.txt
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,12 @@
http post :
http://localhost:8080/api/appointment/memo/update
id : memo id
request body:
{
    "id": 1 ,
    "content":"test4"
}
pamapi/src/doc/¹w¬ù³æ/ÅU°Ý¨ú±o©Ò¦³¦Û¤vªº¹w¬ù³æAPI.txt
@@ -2,139 +2,54 @@
http://localhost:8080/api/consultant/getMyAppointment
appointmentMemoList : å‚™è¨»è³‡æ–™
[
    {
        "id": 110,
        "phone": "09123456789",
        "email": "",
        "contactType": "mobile",
        "gender": "male",
        "age": "30",
        "job": "內勤",
        "requirement": "子女教育,資產規劃,防疫保單相關",
        "communicateStatus": "contacted",
        "hopeContactTime": "'禮拜三,禮拜五、12:00~14:00,14:00~18:00'",
        "otherRequirement": null,
        "appointmentDate": "2021-12-02T09:58:58.932Z",
        "lastModifiedDate": "2021-12-02T09:58:58.932Z",
        "agentNo": "AG0109051204",
        "customerId": 70,
        "name": null,
        "consultantViewTime": "2021-12-02T09:58:12.066Z",
        "consultantReadTime": "2021-12-02T09:58:58.930Z",
        "contactTime": "2021-12-02T09:58:58.930Z",
        "satisfactionScore":3 // null ä»£è¡¨è©²ç­†é ç´„單尚未填寫滿意度
    },
    {
        "id": 109,
        "phone": "09123456789",
        "email": "",
        "contactType": "mobile",
        "gender": "male",
        "age": "20",
        "job": "內勤",
        "requirement": "健康與保障,子女教育,保單健檢/規劃,防疫保單相關",
        "communicateStatus": "contacted",
        "hopeContactTime": "'禮拜一,禮拜二,禮拜三,禮拜四,禮拜五,禮拜六,禮拜日、12:00~14:00,14:00~18:00'",
        "otherRequirement": null,
        "appointmentDate": "2021-12-02T10:12:24.613Z",
        "lastModifiedDate": "2021-12-02T10:12:24.613Z",
        "agentNo": "AG0109051204",
        "customerId": 67,
        "name": null,
        "consultantViewTime": "2021-12-02T09:58:12.066Z",
        "consultantReadTime": "2021-12-02T10:12:24.612Z",
        "contactTime": null,
        "satisfactionScore":3 // null ä»£è¡¨è©²ç­†é ç´„單尚未填寫滿意度
    },
    {
        "id": 114,
        "phone": "09123456789",
        "email": "",
        "contactType": "mobile",
        "gender": "male",
        "age": "70",
        "job": "內勤",
        "requirement": "健康與保障,子女教育,資產規劃,樂活退休,防疫保單相關",
        "communicateStatus": "contacted",
        "hopeContactTime": "'禮拜一,禮拜二,禮拜三,禮拜四,禮拜五,禮拜六,禮拜日、12:00~14:00,14:00~18:00'",
        "otherRequirement": null,
        "appointmentDate": "2021-12-02T09:58:12.248Z",
        "lastModifiedDate": "2021-12-02T09:58:12.248Z",
        "agentNo": "AG0109051204",
        "customerId": 71,
        "name": null,
        "consultantViewTime": "2021-12-02T09:58:12.066Z",
        "consultantReadTime": null,
        "contactTime": null,
        "satisfactionScore":3 // null ä»£è¡¨è©²ç­†é ç´„單尚未填寫滿意度
    },
    {
        "id": 121,
        "phone": "09123456789",
        "email": "",
        "contactType": "mobile",
        "gender": "male",
        "age": "20",
        "job": "內勤",
        "requirement": "子女教育",
        "communicateStatus": "contacted",
        "hopeContactTime": "'禮拜一,禮拜二,禮拜三,禮拜四,禮拜五,禮拜六,禮拜日、9:00~12:00,12:00~14:00,14:00~18:00,18:00~21:00'",
        "otherRequirement": null,
        "appointmentDate": "2021-12-02T09:58:12.248Z",
        "lastModifiedDate": "2021-12-02T09:58:12.248Z",
        "agentNo": "AG0109051204",
        "customerId": 76,
        "name": "李哲維",
        "consultantViewTime": "2021-12-02T09:58:12.066Z",
        "consultantReadTime": "2021-12-02T09:54:20.872Z",
        "contactTime": null,
        "satisfactionScore":3 // null ä»£è¡¨è©²ç­†é ç´„單尚未填寫滿意度
    },
    {
        "id": 118,
        "phone": "09123456789",
        "email": "",
        "contactType": "mobile",
        "gender": "male",
        "age": "20",
        "job": "內勤",
        "requirement": "健康與保障",
        "communicateStatus": "contacted",
        "hopeContactTime": "'禮拜一,禮拜二,禮拜三,禮拜四,禮拜五,禮拜六,禮拜日、12:00~14:00,14:00~18:00'",
        "otherRequirement": null,
        "appointmentDate": "2021-12-02T10:02:52.797Z",
        "lastModifiedDate": "2021-12-02T10:02:52.797Z",
        "agentNo": "AG0109051204",
        "customerId": 72,
        "name": null,
        "consultantViewTime": "2021-12-02T09:58:12.066Z",
        "consultantReadTime": "2021-12-02T10:02:52.796Z",
        "contactTime": null,
        "satisfactionScore":3 // null ä»£è¡¨è©²ç­†é ç´„單尚未填寫滿意度
    },
    {
        "id": 180,
        "phone": "0911111111",
[ {
  "id" : 435,
  "phone" : "0973057067",
        "email": "",
        "contactType": "phone",
        "gender": "female",
        "age": "31-40",
        "job": "內勤",
        "requirement": "子女教育,健康與保障",
        "communicateStatus": "contacted",
        "hopeContactTime": "'禮拜二,禮拜三,禮拜四,禮拜五,禮拜六、9:00~12:00,12:00~14:00,14:00~18:00,18:00~21:00','禮拜一,禮拜二,禮拜三,禮拜四,禮拜五,禮拜日、12:00~14:00,14:00~18:00,18:00~21:00','禮拜一,禮拜四,禮拜六,禮拜日、14:00~18:00,18:00~21:00'",
  "gender" : "male",
  "age" : "under_20",
  "job" : "外勤",
  "requirement" : "健康與保障",
  "communicateStatus" : "reserved",
  "hopeContactTime" : "'星期一,星期二,星期三,星期四,星期五,星期六,星期日、9:00~12:00,12:00~14:00,14:00~18:00,18:00~21:00'",
        "otherRequirement": null,
        "appointmentDate": "2021-12-02T10:10:53.341Z",
        "lastModifiedDate": "2021-12-03T03:40:16.344Z",
        "agentNo": "AG0109051204",
        "customerId": 77,
        "name": "111",
        "consultantViewTime": "2021-12-02T10:10:46.358Z",
        "consultantReadTime": "2021-12-02T10:10:53.340Z",
        "contactTime": "2021-12-03T03:40:16.215Z",
        "satisfactionScore":3 // null ä»£è¡¨è©²ç­†é ç´„單尚未填寫滿意度
    }
]
  "appointmentDate" : "2021-12-29T09:33:16.643Z",
  "lastModifiedDate" : "2021-12-29T09:33:16.637Z",
  "agentNo" : "A568420",
  "customerId" : 90,
  "name" : "Jack",
  "consultantViewTime" : "2021-12-29T09:33:49.547Z",
  "consultantReadTime" : null,
  "contactTime" : null,
  "satisfactionScore" : null,
  "appointmentMemoList" : [ ]
}, {
  "id" : 385,
  "phone" : "0911223344",
  "email" : "SDD",
  "contactType" : "phone",
  "gender" : "female",
  "age" : "21-30",
  "job" : "內勤",
  "requirement" : "健康與保障",
  "communicateStatus" : "reserved",
  "hopeContactTime" : "'星期一,星期二,星期三,星期四,星期五,星期六,星期日、9:00~12:00,12:00~14:00,14:00~18:00,18:00~21:00'",
  "otherRequirement" : null,
  "appointmentDate" : "2021-12-16T07:11:05.400Z",
  "lastModifiedDate" : "2021-12-16T07:11:05.399Z",
  "agentNo" : "A568420",
  "customerId" : 139,
  "name" : "Angula-test",
  "consultantViewTime" : "2021-12-27T02:02:18.711Z",
  "consultantReadTime" : "2021-12-29T09:14:24.209Z",
  "contactTime" : null,
  "satisfactionScore" : null,
  "appointmentMemoList" : [ {
    "id" : 2,
    "content" : "test4",
    "appointmentId" : 385
  } ]
} ]
pamapi/src/main/java/com/pollex/pam/domain/Appointment.java
@@ -2,6 +2,7 @@
import java.io.Serializable;
import java.time.Instant;
import java.util.List;
import javax.persistence.*;
@@ -81,6 +82,10 @@
    @Enumerated(value = EnumType.STRING)
    @Column(name = "status")
    private AppointmentStatusEnum status;
    @JoinColumn(name = "appointment_id")
    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
    private List<AppointmentMemo> appointmentMemoList;
    public Long getId() {
        return id;
@@ -233,4 +238,16 @@
    public void setLastModifiedDate(Instant lastModifiedDate) {
        this.lastModifiedDate = lastModifiedDate;
    }
    public List<AppointmentMemo> getAppointmentMemoList() {
        return appointmentMemoList;
    }
    public void setAppointmentMemoList(List<AppointmentMemo> appointmentMemoList) {
        this.appointmentMemoList = appointmentMemoList;
    }
}
pamapi/src/main/java/com/pollex/pam/domain/AppointmentCustomerView.java
@@ -2,12 +2,17 @@
import java.io.Serializable;
import java.time.Instant;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import com.pollex.pam.enums.AppointmentStatusEnum;
@@ -84,6 +89,10 @@
    @Enumerated(value = EnumType.STRING)
    @Column(name = "status")
    private AppointmentStatusEnum status;
    @JoinColumn(name = "appointment_id")
    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
    private List<AppointmentMemo> appointmentMemoList;
    public Long getId() {
        return id;
@@ -243,4 +252,14 @@
    public void setStatus(AppointmentStatusEnum status) {
        this.status = status;
    }
    public List<AppointmentMemo> getAppointmentMemoList() {
        return appointmentMemoList;
    }
    public void setAppointmentMemoList(List<AppointmentMemo> appointmentMemoList) {
        this.appointmentMemoList = appointmentMemoList;
    }
}
pamapi/src/main/java/com/pollex/pam/domain/AppointmentMemo.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,57 @@
package com.pollex.pam.domain;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "appointment_memo")
public class AppointmentMemo extends AbstractAuditingEntity implements Serializable {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name = "content")
    private String content;
    @Column(name = "appointment_id")
    private Long appointmentId;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public Long getAppointmentId() {
        return appointmentId;
    }
    public void setAppointmentId(Long appointmentId) {
        this.appointmentId = appointmentId;
    }
}
pamapi/src/main/java/com/pollex/pam/repository/AppointmentMemoRepository.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,11 @@
package com.pollex.pam.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.pollex.pam.domain.AppointmentMemo;
@Repository
public interface AppointmentMemoRepository extends JpaRepository<AppointmentMemo, Long>{
}
pamapi/src/main/java/com/pollex/pam/service/AppointmentMemoService.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,58 @@
package com.pollex.pam.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.pollex.pam.domain.Appointment;
import com.pollex.pam.domain.AppointmentMemo;
import com.pollex.pam.repository.AppointmentMemoRepository;
import com.pollex.pam.repository.AppointmentRepository;
import com.pollex.pam.security.SecurityUtils;
import com.pollex.pam.service.dto.AppointmentMemoCreateDTO;
import com.pollex.pam.service.dto.AppointmentMemoUpdateDTO;
import com.pollex.pam.service.mapper.AppointmentMemoMapper;
import com.pollex.pam.web.rest.errors.AppointmentMemoNotFoundException;
import com.pollex.pam.web.rest.errors.AppointmentNotFoundException;
@Service
public class AppointmentMemoService {
    @Autowired
    AppointmentMemoRepository appointmentMemoRepository;
    @Autowired
    AppointmentMemoMapper appointmentMemoMapper;
    @Autowired
    AppointmentRepository appointmentRepository;
    public AppointmentMemo create(AppointmentMemoCreateDTO memoDTO) {
        AppointmentMemo memo = appointmentMemoMapper.toAppointmentMemo(memoDTO);
        return appointmentMemoRepository.save(memo);
    }
    public void checkPermission(Long appointmentId) {
        Appointment appointment = appointmentRepository.findById(appointmentId)
                .orElseThrow(AppointmentNotFoundException::new);
        if(!appointment.getAgentNo().equals(SecurityUtils.getAgentNo())) {
            throw new IllegalAccessError("not have permission");
        }
    }
    public AppointmentMemo update(AppointmentMemoUpdateDTO memoDTO) {
        AppointmentMemo memo = appointmentMemoRepository
                .findById(memoDTO.getId())
                .orElseThrow(AppointmentMemoNotFoundException::new);
        checkPermission(memo.getAppointmentId());
        appointmentMemoMapper.copyToAppointmentMemo(memoDTO, memo);
        return appointmentMemoRepository.save(memo);
    }
    public void delete(Long memoId) {
        AppointmentMemo memo = appointmentMemoRepository
                .findById(memoId)
                .orElseThrow(AppointmentMemoNotFoundException::new);
        checkPermission(memo.getAppointmentId());
        appointmentMemoRepository.delete(memo);
    }
}
pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCustomerViewDTO.java
@@ -1,7 +1,9 @@
package com.pollex.pam.service.dto;
import java.time.Instant;
import java.util.List;
import com.pollex.pam.domain.AppointmentMemo;
import com.pollex.pam.enums.ContactStatusEnum;
public class AppointmentCustomerViewDTO {
@@ -26,6 +28,7 @@
    private Instant consultantReadTime;
    private Instant contactTime;
    private Float satisfactionScore;
    private List<AppointmentMemo> appointmentMemoList;
    public Long getId() {
        return id;
@@ -147,4 +150,12 @@
    public void setSatisfactionScore(Float satisfactionScore) {
        this.satisfactionScore = satisfactionScore;
    }
    public List<AppointmentMemo> getAppointmentMemoList() {
        return appointmentMemoList;
    }
    public void setAppointmentMemoList(List<AppointmentMemo> appointmentMemoList) {
        this.appointmentMemoList = appointmentMemoList;
    }
}
pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentMemoCreateDTO.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,22 @@
package com.pollex.pam.service.dto;
public class AppointmentMemoCreateDTO {
    private String content;
    private Long appointmentId;
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public Long getAppointmentId() {
        return appointmentId;
    }
    public void setAppointmentId(Long appointmentId) {
        this.appointmentId = appointmentId;
    }
}
pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentMemoUpdateDTO.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,27 @@
package com.pollex.pam.service.dto;
public class AppointmentMemoUpdateDTO{
    private Long id;
    private String content;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
}
pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentCustomerViewMapper.java
@@ -6,6 +6,7 @@
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.pollex.pam.domain.AppointmentCustomerView;
import com.pollex.pam.service.dto.AppointmentCustomerViewDTO;
@@ -13,9 +14,11 @@
@Service
public class AppointmentCustomerViewMapper {
    @Transactional
    public AppointmentCustomerViewDTO toAppointmentCustomerViewDTO(AppointmentCustomerView source) {
        AppointmentCustomerViewDTO target = new AppointmentCustomerViewDTO();
        BeanUtils.copyProperties(source, target);
        target.setAppointmentMemoList(source.getAppointmentMemoList());
        return target;
    }
pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentMemoMapper.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,23 @@
package com.pollex.pam.service.mapper;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.pollex.pam.domain.AppointmentMemo;
import com.pollex.pam.service.dto.AppointmentMemoCreateDTO;
import com.pollex.pam.service.dto.AppointmentMemoUpdateDTO;
@Service
public class AppointmentMemoMapper {
    public AppointmentMemo toAppointmentMemo(AppointmentMemoCreateDTO source) {
        AppointmentMemo target = new AppointmentMemo();
        BeanUtils.copyProperties(source, target);
        return target;
    }
    public AppointmentMemo copyToAppointmentMemo(AppointmentMemoUpdateDTO source, AppointmentMemo target) {
        BeanUtils.copyProperties(source, target);
        return target;
    }
}
pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentMemoResource.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,45 @@
package com.pollex.pam.web.rest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.pollex.pam.domain.AppointmentMemo;
import com.pollex.pam.security.SecurityUtils;
import com.pollex.pam.service.AppointmentMemoService;
import com.pollex.pam.service.dto.AppointmentMemoCreateDTO;
import com.pollex.pam.service.dto.AppointmentMemoUpdateDTO;
@RestController
@RequestMapping("/api/appointment/memo")
public class AppointmentMemoResource {
    @Autowired
    AppointmentMemoService appointmentMemoService;
    @PostMapping("/create")
    public ResponseEntity<AppointmentMemo> createMemo(@RequestBody AppointmentMemoCreateDTO memoDTO) {
        appointmentMemoService.checkPermission(memoDTO.getAppointmentId());
        AppointmentMemo memo = appointmentMemoService.create(memoDTO);
        return new ResponseEntity<>(memo, HttpStatus.OK);
    }
    @PostMapping("/update")
    public ResponseEntity<AppointmentMemo> updateMemo(@RequestBody AppointmentMemoUpdateDTO memoDTO) {
        AppointmentMemo memo = appointmentMemoService.update(memoDTO);
        return new ResponseEntity<>(memo, HttpStatus.OK);
    }
    @DeleteMapping("/{memoId}")
    public void deleteMemo(@PathVariable Long memoId) {
        appointmentMemoService.delete(memoId);
    }
}
pamapi/src/main/java/com/pollex/pam/web/rest/errors/AppointmentMemoNotFoundException.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,13 @@
package com.pollex.pam.web.rest.errors;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(code = HttpStatus.NOT_FOUND, reason = "Appointment memo not found")
public class AppointmentMemoNotFoundException extends RuntimeException{
    /**
     *
     */
    private static final long serialVersionUID = 1L;
}
pamapi/src/main/resources/config/application-dev.yml
@@ -32,7 +32,7 @@
      indent-output: true
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    url: jdbc:postgresql://dev.pollex.com.tw:5433/pam
    url: jdbc:postgresql://dev.pollex.com.tw:5433/pam_p2
    #url: jdbc:postgresql://localhost:5432/omo?currentSchema=omo
    username: pamadmin
    password: pamadmin