package com.doumee.api.web; import com.doumee.core.annotation.LoginRequired; import com.doumee.core.annotation.trace.Trace; import com.doumee.core.model.ApiResponse; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.dao.business.model.InvoiceRecord; import com.doumee.dao.dto.ApplyInvoiceDTO; import com.doumee.dao.dto.SendInvoiceEmailDTO; import com.doumee.service.business.InvoiceRecordService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; /** * 订单发票 * * @Author : Rk * @create 2026/5/18 9:42 */ @Api(tags = "订单发票") @Trace(exclude = true) @RestController @RequestMapping("/web/invoice") @Slf4j public class InvoiceApi extends ApiController { @Autowired private InvoiceRecordService invoiceRecordService; @LoginRequired @ApiOperation("开票申请") @PostMapping("/apply") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse apply(@RequestBody @Valid ApplyInvoiceDTO dto) { invoiceRecordService.applyInvoice(dto, getMemberId()); return ApiResponse.success("申请成功"); } @LoginRequired @ApiOperation("开票记录分页") @PostMapping("/page") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse> page(@RequestBody @Validated PageWrap pageWrap) { return ApiResponse.success("查询成功", invoiceRecordService.findMemberInvoicePage(pageWrap, getMemberId())); } @LoginRequired @ApiOperation("发送发票邮件") @PostMapping("/sendEmail") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse sendEmail(@RequestBody @Valid SendInvoiceEmailDTO dto) { invoiceRecordService.sendInvoiceEmail(getMemberId(), dto.getInvoiceRecordId(), dto.getEmail()); return ApiResponse.success("发送成功"); } }