QrCodeController.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. package com.ydtech.modules.order.controller;
  2. import com.ydtech.core.page.HttpResult;
  3. import com.ydtech.exception.SystemException;
  4. import com.ydtech.modules.order.entity.InsAreaCompany;
  5. import com.ydtech.modules.order.entity.InsOrderQrCode;
  6. import com.ydtech.modules.order.entity.InsOrders;
  7. import com.ydtech.modules.order.entity.vo.QrCodeVo;
  8. import com.ydtech.modules.order.service.InsAreaCompanyService;
  9. import com.ydtech.modules.order.service.InsOrderQrCodeService;
  10. import com.ydtech.modules.order.service.InsOrdersService;
  11. import io.swagger.annotations.Api;
  12. import io.swagger.annotations.ApiOperation;
  13. import org.springframework.beans.factory.annotation.Value;
  14. import org.springframework.stereotype.Controller;
  15. import org.springframework.web.bind.annotation.GetMapping;
  16. import org.springframework.web.bind.annotation.PostMapping;
  17. import org.springframework.web.bind.annotation.RequestMapping;
  18. import org.springframework.web.servlet.ModelAndView;
  19. import org.springframework.web.servlet.view.json.MappingJackson2JsonView;
  20. import javax.annotation.Resource;
  21. import java.io.IOException;
  22. import java.text.SimpleDateFormat;
  23. import java.time.LocalDate;
  24. import java.util.Date;
  25. import java.util.Objects;
  26. @Api(tags = "订单二维码管理")
  27. @Controller
  28. @RequestMapping(value = "/order/qrCode")
  29. public class QrCodeController {
  30. @Resource
  31. private InsOrderQrCodeService insOrderQrCodeService;
  32. @Resource
  33. private InsAreaCompanyService insAreaCompanyService;
  34. @Resource
  35. private InsOrdersService insOrdersService;
  36. //二维码生成地址
  37. @Value("${qrcode.genAddress}")
  38. private String qrCodeGenAddress;
  39. @GetMapping(value = "/getQrCode")
  40. @ApiOperation(value = "获取二维码")
  41. public ModelAndView getQrCode(String areaCompanyId) {
  42. InsOrderQrCode insOrderQrCode = insOrderQrCodeService.getOneOrSave(areaCompanyId);
  43. InsAreaCompany insAreaCompany = insAreaCompanyService.getById(areaCompanyId);
  44. ModelAndView modelAndView = new ModelAndView(new MappingJackson2JsonView());
  45. if (!Objects.isNull(insOrderQrCode)) {
  46. InsOrders insOrders = insOrdersService.getById(insOrderQrCode.getOrderno());
  47. QrCodeVo qrCodeVo = new QrCodeVo();
  48. String qrCodeUrl = "";
  49. //是否是太平洋保险 大家财险
  50. if ("TPIC1000000".equals(insAreaCompany.getCompanyId()) || "DJPC1000000".equals(insAreaCompany.getCompanyId()) || "HTIC1000000".equals(insAreaCompany.getCompanyId())) {
  51. qrCodeUrl = insAreaCompany.getPaymentLink();
  52. } else {
  53. qrCodeUrl = qrCodeGenAddress + "?areaCompanyId=" + areaCompanyId;
  54. }
  55. qrCodeVo.setQrCodeUrl(qrCodeUrl);
  56. qrCodeVo.setInscompany(insAreaCompany.getInscompany());//保险公司
  57. qrCodeVo.setSumpremium(insAreaCompany.getSumpremium());//总保费
  58. qrCodeVo.setSypremium(insAreaCompany.getSypremium());//商业险
  59. qrCodeVo.setJqpremium(insAreaCompany.getJqpremium());//交强险
  60. qrCodeVo.setTaxamount(insAreaCompany.getTaxamount());//车船税
  61. qrCodeVo.setJypremium(insAreaCompany.getJypremium());//驾驭险
  62. qrCodeVo.setCInsuredNme(insOrders.getInsuredname());//投保人
  63. qrCodeVo.setCPlateNo(insOrders.getLicenseno());//车牌号
  64. qrCodeVo.setJqStartDate(insAreaCompany.getJqStartDate());//交强开始时间
  65. qrCodeVo.setJqEndDate(insAreaCompany.getJqEndDate());//交强结束时间
  66. qrCodeVo.setSyStartDate(insAreaCompany.getSyStartDate());
  67. qrCodeVo.setSysEndDate(insAreaCompany.getSyEndDate());
  68. modelAndView.addObject("code", 200);
  69. modelAndView.addObject("data", qrCodeVo);
  70. modelAndView.addObject("msg", "");
  71. } else {
  72. modelAndView.addObject("code", 500);
  73. modelAndView.addObject("data", "");
  74. modelAndView.addObject("msg", "二维码不存在");
  75. }
  76. return modelAndView;
  77. }
  78. @PostMapping(value = "/destructionQrCode")
  79. @ApiOperation(value = "销毁二维码")
  80. public ModelAndView destructionQrCode(String areaCompanyId) {
  81. ModelAndView modelAndView = new ModelAndView(new MappingJackson2JsonView());
  82. boolean b = insOrderQrCodeService.updateQrCode(areaCompanyId, 0);
  83. if (b) {
  84. modelAndView.addObject("code", 200);
  85. modelAndView.addObject("data", "二维码销毁成功");
  86. modelAndView.addObject("msg", "");
  87. return modelAndView;
  88. }
  89. throw new SystemException("二维码销毁失败");
  90. }
  91. @GetMapping(value = "/index")
  92. @ApiOperation(value = "扫描二维码地址")
  93. public String index(String areaCompanyId) throws IOException {
  94. InsOrderQrCode insOrderQrCode = insOrderQrCodeService.getOne(areaCompanyId);
  95. if (insOrderQrCode == null) {
  96. //重定向到错误页面中
  97. return "redirect:/order/qrCode/error";
  98. }
  99. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
  100. String qrcodeCreateTimeStr = dateFormat.format(insOrderQrCode.getCreatetime());
  101. LocalDate qrcodeCreateTime = LocalDate.parse(qrcodeCreateTimeStr);
  102. LocalDate currentDate = LocalDate.now();
  103. if (Math.abs(currentDate.toEpochDay() - qrcodeCreateTime.toEpochDay()) >= 1) {
  104. //重定向到错误页面中
  105. return "redirect:/order/qrCode/error";
  106. }
  107. //更新二维码扫描时间
  108. insOrderQrCode.setScanCodeTime(new Date());
  109. insOrderQrCodeService.updateById(insOrderQrCode);
  110. //直接重定向到jumlurl
  111. return "redirect:" + insOrderQrCode.getJumpUrl();
  112. }
  113. @GetMapping(value = "/error")
  114. @ApiOperation(value = "错误页面显示")
  115. public String error() {
  116. return "qrcode_error";
  117. }
  118. }