package com.tourguide.api.guide; import com.tourguide.common.api.ApiResponse; import com.tourguide.modules.finance.dto.GuideElectronicLedgerRequest; import com.tourguide.modules.finance.dto.GuideElectronicLedgerResponse; import com.tourguide.modules.finance.dto.GuideElectronicLedgerStatusResponse; import com.tourguide.modules.finance.service.GuideElectronicLedgerService; import com.tourguide.security.AppUserPrincipal; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; import java.math.BigDecimal; /** * 导游电子账本接口。 * * 备注:接口只暴露导游电子账本资料提交、修改、查询和余额查询;斗拱进件、银行卡、提现状态落库由 * GuideElectronicLedgerService 统一处理,避免控制器直接依赖旧系统模型。 */ @Validated @RestController @RequestMapping("/api/guide/electronic-ledger") public class ElectronicLedgerController { private final GuideElectronicLedgerService electronicLedgerService; public ElectronicLedgerController(GuideElectronicLedgerService electronicLedgerService) { this.electronicLedgerService = electronicLedgerService; } @PostMapping public ApiResponse create( @AuthenticationPrincipal AppUserPrincipal principal, @Valid @RequestBody GuideElectronicLedgerRequest request) { return ApiResponse.success(electronicLedgerService.create(principal.getUserId(), request)); } @PutMapping public ApiResponse update( @AuthenticationPrincipal AppUserPrincipal principal, @Valid @RequestBody GuideElectronicLedgerRequest request) { return ApiResponse.success(electronicLedgerService.update(principal.getUserId(), request)); } @GetMapping public ApiResponse detail( @AuthenticationPrincipal AppUserPrincipal principal) { return ApiResponse.success(electronicLedgerService.detail(principal.getUserId())); } @GetMapping("/status") public ApiResponse status( @AuthenticationPrincipal AppUserPrincipal principal) { return ApiResponse.success(electronicLedgerService.status(principal.getUserId())); } @GetMapping("/balance") public ApiResponse balance(@AuthenticationPrincipal AppUserPrincipal principal) { return ApiResponse.success(electronicLedgerService.balance(principal.getUserId())); } }