diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt b/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt
new file mode 100644
index 0000000..9ac3ca6
--- /dev/null
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt
@@ -0,0 +1,136 @@
+package com.supwisdom.dlpay.water
+
+import com.supwisdom.dlpay.exception.RequestParamCheckException
+import com.supwisdom.dlpay.framework.util.APIRequestParam
+import com.supwisdom.dlpay.framework.util.DateUtil
+import com.supwisdom.dlpay.framework.util.Sign
+import com.supwisdom.dlpay.framework.util.TradeErrorCode
+
+class DeviceLoginParam : APIRequestParam() {
+    @Sign
+    var deviceNo: String = ""
+
+    @Sign
+    var deviceDate: String = ""
+
+    @Sign
+    var deviceTime: String = ""
+
+    override fun checkParam(): Boolean {
+        if (deviceNo.length != 8 || deviceNo.any { it !in '0'..'9' }) {
+            throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备ID号长度不符")
+        }
+
+        if (!DateUtil.checkDatetimeValid(deviceDate, DateUtil.DATE_FMT)
+                || !DateUtil.checkDatetimeValid(deviceTime, DateUtil.TIME_FMT)) {
+            throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备日期时间错误")
+        }
+        return true
+    }
+}
+
+class DeviceLineCheckParam : APIRequestParam() {
+    @Sign
+    var deviceNo: String = ""
+
+    @Sign
+    var deviceDate: String = ""
+
+    @Sign
+    var deviceTime: String = ""
+
+    @Sign
+    var offlineRecordCount: Int = 0
+
+    override fun checkParam(): Boolean {
+        if (deviceNo.length != 8 || deviceNo.any { it !in '0'..'9' }) {
+            throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备ID号长度不符")
+        }
+
+        if (!DateUtil.checkDatetimeValid(deviceDate, DateUtil.DATE_FMT)
+                || !DateUtil.checkDatetimeValid(deviceTime, DateUtil.TIME_FMT)) {
+            throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备日期时间错误")
+        }
+        return true
+    }
+
+}
+
+class CardPayRequest : APIRequestParam() {
+    @Sign
+    var deviceNo: String = ""
+
+    @Sign
+    var deviceDate: String = ""
+
+    @Sign
+    var deviceTime: String = ""
+
+    @Sign
+    var cardNo: String = ""
+
+    override fun checkParam(): Boolean {
+        if (deviceNo.length != 8 || deviceNo.any { it !in '0'..'9' }) {
+            throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备ID号长度不符")
+        }
+
+        if (!DateUtil.checkDatetimeValid(deviceDate, DateUtil.DATE_FMT)
+                || !DateUtil.checkDatetimeValid(deviceTime, DateUtil.TIME_FMT)) {
+            throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备日期时间错误")
+        }
+
+        if (cardNo.isEmpty()) {
+            throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR,
+                    "卡号长度错误")
+        }
+        return true
+    }
+}
+
+class QrcodePayRequest : APIRequestParam() {
+    @Sign
+    var deviceNo: String = ""
+
+    @Sign
+    var deviceDate: String = ""
+
+    @Sign
+    var deviceTime: String = ""
+
+    override fun checkParam(): Boolean {
+        if (deviceNo.length != 8 || deviceNo.any { it !in '0'..'9' }) {
+            throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备ID号长度不符")
+        }
+
+        if (!DateUtil.checkDatetimeValid(deviceDate, DateUtil.DATE_FMT)
+                || !DateUtil.checkDatetimeValid(deviceTime, DateUtil.TIME_FMT)) {
+            throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备日期时间错误")
+        }
+
+        return true
+    }
+}
+
+class UploadRecordRequest : APIRequestParam() {
+    @Sign
+    var deviceNo: String = ""
+
+    @Sign
+    var deviceDate: String = ""
+
+    @Sign
+    var deviceTime: String = ""
+
+    override fun checkParam(): Boolean {
+        if (deviceNo.length != 8 || deviceNo.any { it !in '0'..'9' }) {
+            throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备ID号长度不符")
+        }
+
+        if (!DateUtil.checkDatetimeValid(deviceDate, DateUtil.DATE_FMT)
+                || !DateUtil.checkDatetimeValid(deviceTime, DateUtil.TIME_FMT)) {
+            throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备日期时间错误")
+        }
+
+        return true
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
new file mode 100644
index 0000000..d3988f4
--- /dev/null
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
@@ -0,0 +1,33 @@
+package com.supwisdom.dlpay.water.controller
+
+import com.supwisdom.dlpay.water.*
+import org.springframework.http.ResponseEntity
+import org.springframework.web.bind.annotation.*
+
+@RestController("/api")
+class WaterApiController {
+    @GetMapping("/login")
+    fun deviceLogin(@RequestBody param: DeviceLoginParam): ResponseEntity<Any> {
+        TODO("")
+    }
+
+    @RequestMapping("/linecheck", method = [RequestMethod.GET, RequestMethod.POST])
+    fun deviceLineCheck(@RequestBody param: DeviceLineCheckParam): ResponseEntity<Any> {
+        TODO("")
+    }
+
+    @PostMapping("/card/purseinit")
+    fun cardPurseInit(@RequestBody param: CardPayRequest): ResponseEntity<Any> {
+        TODO("")
+    }
+
+    @PostMapping("/qrcode/init")
+    fun qrcodePayInit(@RequestBody param: QrcodePayRequest): ResponseEntity<Any> {
+        TODO("")
+    }
+
+    @PostMapping("/uploadrecord")
+    fun transdtlUpload(@RequestBody param: UploadRecordRequest): ResponseEntity<Any> {
+        TODO("")
+    }
+}
\ No newline at end of file
