UserInvoiceFrontController.java 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package com.cyksj.web.controller.invoice;
  2. import cn.hutool.core.date.DateTime;
  3. import cn.hutool.core.date.DateUtil;
  4. import com.cyksj.dto.Result;
  5. import com.cyksj.enums.GatewayResponse;
  6. import com.cyksj.model.request.UserInvoiceOrderReq;
  7. import com.cyksj.model.views.UserInvoiceChoseOrderViews;
  8. import com.cyksj.model.views.UserInvoiceFrontView;
  9. import com.cyksj.model.views.UserInvoiceOrderViews;
  10. import com.cyksj.service.invoice.UserInvoiceApplyRecordService;
  11. import com.cyksj.service.user.UserBindRelationService;
  12. import com.cyksj.web.util.StpUserUtil;
  13. import com.ejlchina.searcher.BeanSearcher;
  14. import com.ejlchina.searcher.SearchResult;
  15. import com.ejlchina.searcher.param.Operator;
  16. import com.ejlchina.searcher.util.MapUtils;
  17. import lombok.RequiredArgsConstructor;
  18. import org.springframework.web.bind.annotation.*;
  19. import javax.servlet.http.HttpServletRequest;
  20. import java.util.List;
  21. /**
  22. * 项目名: yhlxj
  23. * 文件名: UserInvoiceFrontController
  24. * 创建者: JavaZou
  25. * 创建时间:2024/12/13 16:22
  26. */
  27. @RestController
  28. @RequestMapping("/applets/invoice")
  29. @RequiredArgsConstructor
  30. public class UserInvoiceFrontController {
  31. private final BeanSearcher beanSearcher;
  32. private final HttpServletRequest request;
  33. private final UserInvoiceApplyRecordService userInvoiceApplyRecordService;
  34. private final UserBindRelationService userBindRelationService;
  35. /**
  36. * 发票 用户可选AI车票订单
  37. */
  38. @GetMapping("/get/orders")
  39. public Result<SearchResult<UserInvoiceChoseOrderViews>> getOrders() {
  40. long userId = StpUserUtil.getLoginIdAsLong();
  41. List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
  42. String dateCondition;
  43. DateTime now = DateTime.now();
  44. String thisSixMontStr = DateUtil.thisYear() + "-06-01";
  45. //当前时间达到6月份 可开发票的订单只能是24年的 去年的发票只能截至到次年5月底
  46. if (now.isAfter(DateUtil.parse(thisSixMontStr))) {
  47. dateCondition = String.format(" and o.created_time >= '%s'", DateUtil.beginOfYear(now));
  48. } else {
  49. dateCondition = String.format(" and o.created_time >= '%s'", DateUtil.offsetMonth(DateUtil.beginOfYear(now), -12));
  50. }
  51. SearchResult<UserInvoiceChoseOrderViews> search = beanSearcher.search(UserInvoiceChoseOrderViews.class, MapUtils.flatBuilder(request.getParameterMap())
  52. .put("dc", dateCondition)
  53. .field(UserInvoiceChoseOrderViews::getUserId, userIdList).op(Operator.InList)
  54. .build());
  55. return GatewayResponse.SUCCESS.newBuilder().toResult(search);
  56. }
  57. /**
  58. * 提交发票申请
  59. */
  60. @PostMapping("/apply")
  61. public Result<Long> apply(@RequestBody UserInvoiceOrderReq req) {
  62. long userId = StpUserUtil.getLoginIdAsLong();
  63. req.setUserId(userId);
  64. Long recordId = userInvoiceApplyRecordService.applyOrderInvoice(req);
  65. return GatewayResponse.SUCCESS.newBuilder().toResult(recordId);
  66. }
  67. /**
  68. * 用户发票申请列表
  69. */
  70. @GetMapping("/get")
  71. public Result<SearchResult<UserInvoiceFrontView>> get() {
  72. long userId = StpUserUtil.getLoginIdAsLong();
  73. List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
  74. SearchResult<UserInvoiceFrontView> search = beanSearcher.search(UserInvoiceFrontView.class, MapUtils.flatBuilder(request.getParameterMap())
  75. .field(UserInvoiceFrontView::getUserId, userIdList).op(Operator.InList)
  76. .orderBy(UserInvoiceFrontView::getId).desc()
  77. .build());
  78. search.getDataList().forEach(data->{
  79. data.setOrderViews(beanSearcher.searchAll(UserInvoiceOrderViews.class, MapUtils.builder().field(UserInvoiceOrderViews::getRecordId, data.getId()).build()));
  80. });
  81. return GatewayResponse.SUCCESS.newBuilder().toResult(search);
  82. }
  83. }