CODE-350 取引管理画面
-
remind 2022-10-03 11:00- 2022-10-03-mtg
-
検索APIで
Page<T>で返す実装をする -
管理用検索APIの実装
- 今後paganationされる可能性あるので
(件数, 結果[])を返す - IDが指定された時は一件取得に分岐する
- それ以外はクエリ
DealにList<Tender>を追加するかRepo.getDealAndTenders() -> Pair<Deal, List<Tender>>生やすかTenderの が小さいはずだからまとめて取得しても良いか?Dealに含めてしまうとList<Deal>を取得するのが重くなるのでサービスで個別に取得する
- 今後paganationされる可能性あるので
本APIと違う点
- ページングはされず, 全ての検索結果が返ってくる
- 今後ページングがされる想定で, 内部実装ではページングされている
- 取引ステータスに下書きも指定できる (ex.
&statuses=1,2)
日報
お疲れ様です。鎌田です。
9月最終週と本日の作業報告を致します。
- 完了 CODE-336 詳細設計(管理画面/バックエンド/お知らせ管理画面)
- 完了 CODE-338 コーディング(管理画面/バックエンド/お知らせ管理画面)
- 完了 CODE-342 詳細設計(管理画面/バックエンド/お問い合わせ管理画面)
- 完了 CODE-343 コーディング(管理画面/バックエンド/お問い合わせ管理画面)
- 完了 CODE-349 詳細設計(管理画面/バックエンド/取引情報管理画面)
- 実施中 CODE-350 コーディング(管理画面/バックエンド/取引情報管理画面)
本日はミーティングありがとうございました。CODE-350のAPIとサービス部分の実装を行っていました。次回引き続き行います。
PR
管理用の取引検索API, 取引取得APIの実装を行いました.
詳しい仕様は『API仕様書-管理画面』を参照してください.
管理用ではない検索APIを以下「本検索API」, 管理用の検索APIを
以下「管理用検索API」と呼びます.
本検索APIと違う点
- ページングはされず, 全ての検索結果が返ってくる
- 内部実装ではクエリによる検索を行っていますが, 全ての検索結果を1ページとして返すような実装をしています.
- 取引ステータスに下書きも指定できる (ex.
&statuses=1,2)
snake_caseを持ったリクエストパラメータをdata classとして受け取る方法について
GetReviewsDto.kt#GetManagementReviewsWRequestParameters 部分についての補足です.
クラスをリクエストパラメータの各パラメータにマッピングしたい時は @ModelAttribute が必要です.
@GetMapping("/hoge")
fun getHoge(
@Validated @ModelAttribute params: ReqParams,
): Dto { ... }data class ReqParams(val hogeId: String?)しかし, そのままでは snake_case を含むリクエスト(ex. /hoge?hoge_id=aaa) に対して ReqParams.hogeId にはマッピングされません. snake_case が含まれている時は @ConstructorProperties をクラスのコンストラクタにつける必要があります.
しかし, Kotlin の primary constructor はクラス定義と一体化しているのでデコレータを書く場所に困りますが, "constructor" を前置しても良いらしいので以下のように書くようです.
data class ReqParams
@ConstructorProperties("hoge_id")
constructor(
@field:Pattern(regexp = "...")
val hogeId: String?,
)嵌ったので念のため共有しておきます.
参考
- [Spring Boot]Controller周りのあれこれ
- @RequestParam や @ModelAttribute でリクエストパラメータ1つを受け取るときの挙動 - Qiita
- java - Springboot property binding for Kotlin nested immutable data class not working - Stack Overflow
APIの実行例
確認に使用した http ファイルを貼ります. VSCodeの拡張機能を用いると実際に実行することが出来ます.
management_deal.http
以上, お手好きの際にご確認お願い致します.
- 2022-10-07 実装 & 確認 & PR done