package <你的package>; // 放和 ClamNoteService 相同的 package
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import java.util.*;
@Service
@Primary
@ConditionalOnProperty(name = "mock", havingValue = "true")
public class MockClamNoteService implements ClamNoteService {
@Override
public ClamNoticeDataCountResBean getClamNoticeDataCount(ClamNoteReqBean noticeDataCountReqBean) throws ApiException {
// 版本 A:若是 setter 風格(有無參數建構子)
ClamNoticeDataCountResBean res = new ClamNoticeDataCountResBean();
// res.setTotal(3); res.setUnread(1); res.setRead(2); // ← 用你的欄位名填
return res;
// 版本 B:若是 Lombok @Builder
// return ClamNoticeDataCountResBean.builder()
// .total(3).unread(1).read(2)
// .build();
// 版本 C:若是 record
// return new ClamNoticeDataCountResBean(3, 1, 2);
}
@Override
public List<ClamNoticeDataListResBean> getClamNoticeList(ClamNoteReqBean noticeDataListReqBean) throws ApiException {
// 版本 A:setter 風格
ClamNoticeDataListResBean item = new ClamNoticeDataListResBean();
// item.setNoticeId("MOCK-001");
// item.setTitle("這是假的通知");
// item.setStatus("UNREAD");
// item.setCreateTime("2025-11-07T10:00:00Z");
return Arrays.asList(item);
// 版本 B:@Builder
// return List.of(
// ClamNoticeDataListResBean.builder()
// .noticeId("MOCK-001").title("這是假的通知").status("UNREAD")
// .createTime("2025-11-07T10:00:00Z").build()
// );
//
// 版本 C:record
// return List.of(new ClamNoticeDataListResBean("MOCK-001","這是假的通知","UNREAD","2025-11-07T10:00:00Z"));
}
@Override
public String getClamNoticePdf(ClamNotePdfReqBean clamNotePdfReqBean) throws ApiException {
// 回傳固定字串即可(例如 Base64、或假 URL)
return "MOCK_PDF_BASE64_OR_URL";
}
}
cGFja2FnZSA85L2g55qEcGFja2FnZT47IC8vIOaUvuWSjCBDbGFtTm90ZVNlcnZpY2Ug55u45ZCM55qEIHBhY2thZ2UKCgoKaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYm9vdC5hdXRvY29uZmlndXJlLmNvbmRpdGlvbi5Db25kaXRpb25hbE9uUHJvcGVydHk7CgppbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5jb250ZXh0LmFubm90YXRpb24uUHJpbWFyeTsKCmltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnN0ZXJlb3R5cGUuU2VydmljZTsKCmltcG9ydCBqYXZhLnV0aWwuKjsKCgoKQFNlcnZpY2UKCkBQcmltYXJ5CgpAQ29uZGl0aW9uYWxPblByb3BlcnR5KG5hbWUgPSAibW9jayIsIGhhdmluZ1ZhbHVlID0gInRydWUiKQoKcHVibGljIGNsYXNzIE1vY2tDbGFtTm90ZVNlcnZpY2UgaW1wbGVtZW50cyBDbGFtTm90ZVNlcnZpY2UgewoKCgogICAgQE92ZXJyaWRlCgogICAgcHVibGljIENsYW1Ob3RpY2VEYXRhQ291bnRSZXNCZWFuIGdldENsYW1Ob3RpY2VEYXRhQ291bnQoQ2xhbU5vdGVSZXFCZWFuIG5vdGljZURhdGFDb3VudFJlcUJlYW4pIHRocm93cyBBcGlFeGNlcHRpb24gewoKICAgICAgICAvLyDniYjmnKwgQe+8muiLpeaYryBzZXR0ZXIg6aKo5qC877yI5pyJ54Sh5Y+D5pW45bu65qeL5a2Q77yJCgogICAgICAgIENsYW1Ob3RpY2VEYXRhQ291bnRSZXNCZWFuIHJlcyA9IG5ldyBDbGFtTm90aWNlRGF0YUNvdW50UmVzQmVhbigpOwoKICAgICAgICAvLyByZXMuc2V0VG90YWwoMyk7IHJlcy5zZXRVbnJlYWQoMSk7IHJlcy5zZXRSZWFkKDIpOyAvLyDihpAg55So5L2g55qE5qyE5L2N5ZCN5aGrCgogICAgICAgIHJldHVybiByZXM7CgoKCiAgICAgICAgLy8g54mI5pysIELvvJroi6XmmK8gTG9tYm9rIEBCdWlsZGVyCgogICAgICAgIC8vIHJldHVybiBDbGFtTm90aWNlRGF0YUNvdW50UmVzQmVhbi5idWlsZGVyKCkKCiAgICAgICAgLy8gICAgICAgICAudG90YWwoMykudW5yZWFkKDEpLnJlYWQoMikKCiAgICAgICAgLy8gICAgICAgICAuYnVpbGQoKTsKCgoKICAgICAgICAvLyDniYjmnKwgQ++8muiLpeaYryByZWNvcmQKCiAgICAgICAgLy8gcmV0dXJuIG5ldyBDbGFtTm90aWNlRGF0YUNvdW50UmVzQmVhbigzLCAxLCAyKTsKCiAgICB9CgoKCiAgICBAT3ZlcnJpZGUKCiAgICBwdWJsaWMgTGlzdDxDbGFtTm90aWNlRGF0YUxpc3RSZXNCZWFuPiBnZXRDbGFtTm90aWNlTGlzdChDbGFtTm90ZVJlcUJlYW4gbm90aWNlRGF0YUxpc3RSZXFCZWFuKSB0aHJvd3MgQXBpRXhjZXB0aW9uIHsKCiAgICAgICAgLy8g54mI5pysIEHvvJpzZXR0ZXIg6aKo5qC8CgogICAgICAgIENsYW1Ob3RpY2VEYXRhTGlzdFJlc0JlYW4gaXRlbSA9IG5ldyBDbGFtTm90aWNlRGF0YUxpc3RSZXNCZWFuKCk7CgogICAgICAgIC8vIGl0ZW0uc2V0Tm90aWNlSWQoIk1PQ0stMDAxIik7CgogICAgICAgIC8vIGl0ZW0uc2V0VGl0bGUoIumAmeaYr+WBh+eahOmAmuefpSIpOwoKICAgICAgICAvLyBpdGVtLnNldFN0YXR1cygiVU5SRUFEIik7CgogICAgICAgIC8vIGl0ZW0uc2V0Q3JlYXRlVGltZSgiMjAyNS0xMS0wN1QxMDowMDowMFoiKTsKCiAgICAgICAgcmV0dXJuIEFycmF5cy5hc0xpc3QoaXRlbSk7CgoKCiAgICAgICAgLy8g54mI5pysIELvvJpAQnVpbGRlcgoKICAgICAgICAvLyByZXR1cm4gTGlzdC5vZigKCiAgICAgICAgLy8gICBDbGFtTm90aWNlRGF0YUxpc3RSZXNCZWFuLmJ1aWxkZXIoKQoKICAgICAgICAvLyAgICAgLm5vdGljZUlkKCJNT0NLLTAwMSIpLnRpdGxlKCLpgJnmmK/lgYfnmoTpgJrnn6UiKS5zdGF0dXMoIlVOUkVBRCIpCgogICAgICAgIC8vICAgICAuY3JlYXRlVGltZSgiMjAyNS0xMS0wN1QxMDowMDowMFoiKS5idWlsZCgpCgogICAgICAgIC8vICk7CgogICAgICAgIC8vCgogICAgICAgIC8vIOeJiOacrCBD77yacmVjb3JkCgogICAgICAgIC8vIHJldHVybiBMaXN0Lm9mKG5ldyBDbGFtTm90aWNlRGF0YUxpc3RSZXNCZWFuKCJNT0NLLTAwMSIsIumAmeaYr+WBh+eahOmAmuefpSIsIlVOUkVBRCIsIjIwMjUtMTEtMDdUMTA6MDA6MDBaIikpOwoKICAgIH0KCgoKICAgIEBPdmVycmlkZQoKICAgIHB1YmxpYyBTdHJpbmcgZ2V0Q2xhbU5vdGljZVBkZihDbGFtTm90ZVBkZlJlcUJlYW4gY2xhbU5vdGVQZGZSZXFCZWFuKSB0aHJvd3MgQXBpRXhjZXB0aW9uIHsKCiAgICAgICAgLy8g5Zue5YKz5Zu65a6a5a2X5Liy5Y2z5Y+v77yI5L6L5aaCIEJhc2U2NOOAgeaIluWBhyBVUkzvvIkKCiAgICAgICAgcmV0dXJuICJNT0NLX1BERl9CQVNFNjRfT1JfVVJMIjsKCiAgICB9Cgp9Cg==