QrCodeController.java 5.9 KB

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