| | |
| | | import com.sinata.appointment.common.Result; |
| | | import com.sinata.appointment.common.ResultUtil; |
| | | import com.sinata.appointment.dto.MiniAppointmentCreateRequest; |
| | | import com.sinata.appointment.dto.MiniAppointmentCreateResultVo; |
| | | import com.sinata.appointment.dto.MiniAppointmentListVo; |
| | | import com.sinata.appointment.dto.MiniMyAppointmentDetailVo; |
| | | import com.sinata.appointment.dto.MiniMyVisitorCodeOrderVo; |
| | | import com.sinata.appointment.dto.MiniSharedAppointmentDetailVo; |
| | | import com.sinata.appointment.dto.MiniVisitRecordListVo; |
| | | import com.sinata.appointment.service.MiniAppointmentApplicationService; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import java.time.LocalDate; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | |
| | | |
| | | @Operation(summary = "小程序发起预约") |
| | | @PostMapping |
| | | public Result<Map<String, Long>> create(@Valid @RequestBody MiniAppointmentCreateRequest request) { |
| | | return ResultUtil.data(Map.of("id", miniAppointmentApplicationService.create(request))); |
| | | public Result<MiniAppointmentCreateResultVo> create(@Valid @RequestBody MiniAppointmentCreateRequest request) { |
| | | return ResultUtil.data(miniAppointmentApplicationService.create(request)); |
| | | } |
| | | |
| | | @Operation(summary = "小程序取消预约(预约人可在完成/拒绝前取消)") |
| | | @Operation(summary = "小程序取消预约") |
| | | @PostMapping("/{id}/cancel") |
| | | public Result<Void> cancel( |
| | | @PathVariable Long id, |
| | | @RequestParam @NotBlank(message = "uuid 不能为空") String uuid) { |
| | | miniAppointmentApplicationService.cancelBySubmitter(id, uuid); |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | | @Operation(summary = "小程序删除预约记录") |
| | | @PostMapping("/{id}/delete") |
| | | public Result<Void> deleteMyRecord( |
| | | @PathVariable Long id, |
| | | @RequestParam @NotBlank(message = "uuid 不能为空") String uuid) { |
| | | miniAppointmentApplicationService.deleteMyOrderRecord(id, uuid); |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | |
| | | return ResultUtil.data(miniAppointmentApplicationService.detailMyOrder(id, uuid)); |
| | | } |
| | | |
| | | @Operation(summary = "小程序审批人已处理预约列表(支持状态/姓名关键词/来访日期)") |
| | | @Operation(summary = "小程序审批人已处理预约列表") |
| | | @GetMapping("/mine") |
| | | public Result<List<MiniAppointmentListVo>> mine( |
| | | @RequestParam(defaultValue = "1") long page, |
| | | @RequestParam(defaultValue = "10") long size, |
| | | @RequestParam(required = false) String status, |
| | | @RequestParam(required = false) String visitorNameKeyword, |
| | | @RequestParam(required = false) String visitedUserNameKeyword, |
| | | @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate visitDate) { |
| | | String keyword = visitorNameKeyword != null && !visitorNameKeyword.isBlank() |
| | | ? visitorNameKeyword |
| | | : visitedUserNameKeyword; |
| | | return ResultUtil.page( |
| | | miniAppointmentApplicationService.pageMine( |
| | | page, size, status, visitedUserNameKeyword, visitDate)); |
| | | page, size, status, keyword, visitDate)); |
| | | } |
| | | |
| | | @Operation(summary = "小程序来访记录列表(已通过且被访人为当前用户)") |
| | | @Operation(summary = "小程序来访记录列表") |
| | | @GetMapping("/visit-records") |
| | | public Result<List<MiniVisitRecordListVo>> visitRecords( |
| | | @RequestParam(defaultValue = "1") long page, |
| | | @RequestParam(defaultValue = "10") long size, |
| | | @RequestParam(defaultValue = "false") boolean futureOnly, |
| | | @RequestParam(required = false) String visitorNameKeyword, |
| | | @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate visitDate) { |
| | | return ResultUtil.page( |
| | | miniAppointmentApplicationService.pageVisitRecords( |
| | | page, size, visitorNameKeyword, visitDate)); |
| | | page, size, futureOnly, visitorNameKeyword, visitDate)); |
| | | } |
| | | |
| | | @Operation(summary = "小程序我的预约列表(发起人视角)") |
| | | @Operation(summary = "小程序我的预约列表") |
| | | @GetMapping("/my-orders") |
| | | public Result<List<MiniAppointmentListVo>> myOrders( |
| | | @RequestParam(defaultValue = "1") long page, |
| | |
| | | public Result<List<MiniMyVisitorCodeOrderVo>> myVisitorCodes() { |
| | | return ResultUtil.data(miniAppointmentApplicationService.listMyVisitorCodes()); |
| | | } |
| | | |
| | | @Operation(summary = "小程序分享页预约详情") |
| | | @GetMapping("/shared/detail") |
| | | public Result<MiniSharedAppointmentDetailVo> sharedDetail( |
| | | @RequestParam @NotBlank(message = "uuid 不能为空") String uuid) { |
| | | return ResultUtil.data(miniAppointmentApplicationService.detailSharedOrder(uuid)); |
| | | } |
| | | |
| | | @Operation(summary = "小程序分享页访客码") |
| | | @GetMapping("/shared/visitor-codes") |
| | | public Result<MiniMyVisitorCodeOrderVo> sharedVisitorCodes( |
| | | @RequestParam @NotBlank(message = "uuid 不能为空") String uuid) { |
| | | return ResultUtil.data(miniAppointmentApplicationService.getSharedVisitorCodes(uuid)); |
| | | } |
| | | |
| | | @Operation(summary = "小程序单张分享访客码") |
| | | @GetMapping("/shared/ticket-code") |
| | | public Result<MiniMyVisitorCodeOrderVo> sharedTicketCode( |
| | | @RequestParam @NotBlank(message = "ticketUuid 不能为空") String ticketUuid) { |
| | | return ResultUtil.data(miniAppointmentApplicationService.getSharedVisitorCodeByTicketUuid(ticketUuid)); |
| | | } |
| | | } |
| | | |