package com.ydtech.modules.order.controller; import com.ydtech.core.page.HttpResult; import com.ydtech.exception.SystemException; import com.ydtech.modules.order.entity.InsAreaCompany; import com.ydtech.modules.order.entity.InsOrderQrCode; import com.ydtech.modules.order.entity.InsOrders; import com.ydtech.modules.order.entity.vo.QrCodeVo; import com.ydtech.modules.order.service.InsAreaCompanyService; import com.ydtech.modules.order.service.InsOrderQrCodeService; import com.ydtech.modules.order.service.InsOrdersService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.view.json.MappingJackson2JsonView; import javax.annotation.Resource; import java.io.IOException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.Date; import java.util.Objects; @Api(tags = "订单二维码管理") @Controller @RequestMapping(value = "/order/qrCode") public class QrCodeController { @Resource private InsOrderQrCodeService insOrderQrCodeService; @Resource private InsAreaCompanyService insAreaCompanyService; @Resource private InsOrdersService insOrdersService; //二维码生成地址 @Value("${qrcode.genAddress}") private String qrCodeGenAddress; @GetMapping(value = "/getQrCode") @ApiOperation(value = "获取二维码") public ModelAndView getQrCode(String areaCompanyId) { InsOrderQrCode insOrderQrCode = insOrderQrCodeService.getOneOrSave(areaCompanyId); InsAreaCompany insAreaCompany = insAreaCompanyService.getById(areaCompanyId); ModelAndView modelAndView = new ModelAndView(new MappingJackson2JsonView()); if (!Objects.isNull(insOrderQrCode)) { InsOrders insOrders = insOrdersService.getById(insOrderQrCode.getOrderno()); QrCodeVo qrCodeVo = new QrCodeVo(); String qrCodeUrl = ""; //是否是太平洋保险 大家财险 if ("TPIC1000000".equals(insAreaCompany.getCompanyId()) || "DJPC1000000".equals(insAreaCompany.getCompanyId()) || "HTIC1000000".equals(insAreaCompany.getCompanyId())) { qrCodeUrl = insAreaCompany.getPaymentLink(); } else { qrCodeUrl = qrCodeGenAddress + "?areaCompanyId=" + areaCompanyId; } qrCodeVo.setQrCodeUrl(qrCodeUrl); qrCodeVo.setInscompany(insAreaCompany.getInscompany());//保险公司 qrCodeVo.setSumpremium(insAreaCompany.getSumpremium());//总保费 qrCodeVo.setSypremium(insAreaCompany.getSypremium());//商业险 qrCodeVo.setJqpremium(insAreaCompany.getJqpremium());//交强险 qrCodeVo.setTaxamount(insAreaCompany.getTaxamount());//车船税 qrCodeVo.setJypremium(insAreaCompany.getJypremium());//驾驭险 qrCodeVo.setCInsuredNme(insOrders.getInsuredname());//投保人 qrCodeVo.setCPlateNo(insOrders.getLicenseno());//车牌号 qrCodeVo.setJqStartDate(insAreaCompany.getJqStartDate());//交强开始时间 qrCodeVo.setJqEndDate(insAreaCompany.getJqEndDate());//交强结束时间 qrCodeVo.setSyStartDate(insAreaCompany.getSyStartDate()); qrCodeVo.setSysEndDate(insAreaCompany.getSyEndDate()); modelAndView.addObject("code", 200); modelAndView.addObject("data", qrCodeVo); modelAndView.addObject("msg", ""); } else { modelAndView.addObject("code", 500); modelAndView.addObject("data", ""); modelAndView.addObject("msg", "二维码不存在"); } return modelAndView; } @PostMapping(value = "/destructionQrCode") @ApiOperation(value = "销毁二维码") public ModelAndView destructionQrCode(String areaCompanyId) { ModelAndView modelAndView = new ModelAndView(new MappingJackson2JsonView()); boolean b = insOrderQrCodeService.updateQrCode(areaCompanyId, 0); if (b) { modelAndView.addObject("code", 200); modelAndView.addObject("data", "二维码销毁成功"); modelAndView.addObject("msg", ""); return modelAndView; } throw new SystemException("二维码销毁失败"); } @GetMapping(value = "/index") @ApiOperation(value = "扫描二维码地址") public String index(String areaCompanyId) throws IOException { InsOrderQrCode insOrderQrCode = insOrderQrCodeService.getOne(areaCompanyId); if (insOrderQrCode == null) { //重定向到错误页面中 return "redirect:/order/qrCode/error"; } SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String qrcodeCreateTimeStr = dateFormat.format(insOrderQrCode.getCreatetime()); LocalDate qrcodeCreateTime = LocalDate.parse(qrcodeCreateTimeStr); LocalDate currentDate = LocalDate.now(); if (Math.abs(currentDate.toEpochDay() - qrcodeCreateTime.toEpochDay()) >= 1) { //重定向到错误页面中 return "redirect:/order/qrCode/error"; } //更新二维码扫描时间 insOrderQrCode.setScanCodeTime(new Date()); insOrderQrCodeService.updateById(insOrderQrCode); //直接重定向到jumlurl return "redirect:" + insOrderQrCode.getJumpUrl(); } @GetMapping(value = "/error") @ApiOperation(value = "错误页面显示") public String error() { return "qrcode_error"; } }