Jelajahi Sumber

修改二维码撤销功能

wks 2 tahun lalu
induk
melakukan
6315a02a9e

+ 23 - 25
src/main/java/com/ydtech/modules/order/controller/QrCodeController.java

@@ -1,5 +1,7 @@
 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;
@@ -14,13 +16,10 @@ 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.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.view.json.MappingJackson2JsonView;
 
 import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
@@ -59,9 +58,9 @@ public class QrCodeController {
             QrCodeVo qrCodeVo = new QrCodeVo();
             String qrCodeUrl = "";
             //是否是太平洋保险 大家财险
-            if("TPIC1000000".equals(insAreaCompany.getCompanyId()) || "DJPC1000000".equals(insAreaCompany.getCompanyId())){
+            if ("TPIC1000000".equals(insAreaCompany.getCompanyId()) || "DJPC1000000".equals(insAreaCompany.getCompanyId())) {
                 qrCodeUrl = insAreaCompany.getPaymentLink();
-            }else{
+            } else {
                 qrCodeUrl = qrCodeGenAddress + "?areaCompanyId=" + areaCompanyId;
             }
 
@@ -94,42 +93,39 @@ public class QrCodeController {
 
     @PostMapping(value = "/destructionQrCode")
     @ApiOperation(value = "销毁二维码")
-    public ModelAndView destructionQrCode(String areaCompanyId) {
+    public HttpResult destructionQrCode(String areaCompanyId) {
         boolean b = insOrderQrCodeService.updateQrCode(areaCompanyId, 0);
-        ModelAndView modelAndView = new ModelAndView(new MappingJackson2JsonView());
         if (b) {
-            modelAndView.addObject("code", 200);
-            modelAndView.addObject("data", "");
-            modelAndView.addObject("msg", "二维码销毁成功");
-        } else {
-            modelAndView.addObject("code", 500);
-            modelAndView.addObject("data", "");
-            modelAndView.addObject("msg", "二维码销毁失败");
+            return HttpResult.ok("二维码销毁成功");
         }
-        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){
+
+        if (Math.abs(currentDate.toEpochDay() - qrcodeCreateTime.toEpochDay()) >= 1) {
             //重定向到错误页面中
             return "redirect:/order/qrCode/error";
         }
-        if (insOrderQrCode != null) {
-            //更新二维码扫描时间
-            insOrderQrCode.setScanCodeTime(new Date());
-            insOrderQrCodeService.updateById(insOrderQrCode);
-            //直接重定向到jumlurl
-            return "redirect:" + insOrderQrCode.getJumpUrl();
-        }
-        //重定向到错误页面中
-        return "redirect:/order/qrCode/error";
+
+        //更新二维码扫描时间
+        insOrderQrCode.setScanCodeTime(new Date());
+        insOrderQrCodeService.updateById(insOrderQrCode);
+        //直接重定向到jumlurl
+        return "redirect:" + insOrderQrCode.getJumpUrl();
+
     }
 
 
@@ -138,4 +134,6 @@ public class QrCodeController {
     public String error() {
         return "qrcode_error";
     }
+
+
 }

+ 23 - 66
src/main/java/com/ydtech/modules/order/service/impl/InsOrderQrCodeServiceImpl.java

@@ -1,74 +1,34 @@
 package com.ydtech.modules.order.service.impl;
 
 import cn.hutool.extra.qrcode.BufferedImageLuminanceSource;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.github.pagehelper.PageInfo;
-import com.github.pagehelper.page.PageMethod;
-import com.google.zxing.*;
-import com.google.zxing.client.j2se.MatrixToImageConfig;
-import com.google.zxing.client.j2se.MatrixToImageWriter;
-import com.google.zxing.common.BitMatrix;
+import com.google.zxing.BinaryBitmap;
+import com.google.zxing.MultiFormatReader;
+import com.google.zxing.NotFoundException;
+import com.google.zxing.Result;
 import com.google.zxing.common.HybridBinarizer;
-import com.google.zxing.qrcode.QRCodeWriter;
-import com.ydtech.components.OrderComponents;
-import com.ydtech.constants.InsuranceEnum;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
-import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
-import com.ydtech.modules.admin.model.SysDept;
-import com.ydtech.modules.admin.model.SysUser;
-import com.ydtech.modules.admin.service.SysDeptService;
-import com.ydtech.modules.admin.service.SysUserService;
-import com.ydtech.modules.fee.service.impl.FeeRuleSchemeServiceImpl;
-import com.ydtech.modules.ins.model.vo.CarInfoVo;
-import com.ydtech.modules.ins.model.ya.CarModelDTO;
-import com.ydtech.modules.ins.model.ya.ExtendInfoDto;
-import com.ydtech.modules.ins.model.ya.ResponseDataC2;
-import com.ydtech.modules.order.convert.CarModelDTOConvert;
-import com.ydtech.modules.order.convert.MapToYaExtendInfoDto;
 import com.ydtech.modules.order.dao.InsOrderQrCodeMapper;
-import com.ydtech.modules.order.dao.InsOrdersMapper;
-import com.ydtech.modules.order.entity.BasePageResult;
 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.bo.UnderwritingRulesBo;
-import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
-import com.ydtech.modules.order.entity.vo.*;
-import com.ydtech.modules.order.entity.vo.ya.YaExtendInfoDto;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsOrderQrCodeService;
-import com.ydtech.modules.order.service.InsOrdersService;
-import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
-import com.ydtech.modules.protocol.service.PtlAgreementService;
 import com.ydtech.utils.idgen.IdGenerate;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.ObjectUtils;
 
 import javax.imageio.ImageIO;
-import javax.validation.constraints.NotBlank;
 import java.awt.image.BufferedImage;
 import java.io.ByteArrayInputStream;
-import java.io.IOException;
 import java.net.URL;
-import java.net.URLEncoder;
-import java.nio.file.Paths;
-import java.util.*;
-import java.util.concurrent.TimeUnit;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-
-import static com.ydtech.modules.order.constants.OrderCacheConstant.*;
+import java.util.Base64;
+import java.util.Date;
+import java.util.Hashtable;
+import java.util.Objects;
 
 /**
  * @author wenkaisen
@@ -91,29 +51,27 @@ public class InsOrderQrCodeServiceImpl extends ServiceImpl<InsOrderQrCodeMapper,
     @Override
     public InsOrderQrCode getOneOrSave(String companyId) {
         //查询 ins_area_company数据
-        InsAreaCompany insAreaCompany =
-                insAreaCompanyService.getOne(new LambdaQueryWrapper<InsAreaCompany>().eq(InsAreaCompany::getId,
-                        companyId));
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getOne(new LambdaQueryWrapper<InsAreaCompany>().eq(InsAreaCompany::getId,
+                companyId));
         //是否直接存储二维码
         Boolean isWx = false;
         //太平洋则直接存储base64的信息
-        if("TPIC1000000".equals(insAreaCompany.getCompanyId())){
+        if ("TPIC1000000".equals(insAreaCompany.getCompanyId())) {
             isWx = true;
         }
         //查询 是否有数据存在
-        InsOrderQrCode insOrderQrCode = baseMapper.selectOne(new LambdaQueryWrapper<InsOrderQrCode>()
-                .eq(InsOrderQrCode::getAreaCompanyId, companyId)
-                .eq(InsOrderQrCode::getQrcodeStatus, 1));
+        InsOrderQrCode insOrderQrCode = baseMapper.selectOne(new LambdaQueryWrapper<InsOrderQrCode>().eq(InsOrderQrCode::getAreaCompanyId
+                , companyId).eq(InsOrderQrCode::getQrcodeStatus, 1));
         if (Objects.isNull(insOrderQrCode)) {
             //如果订单状态等于 待缴费 或 撤销二维码
             if (insAreaCompany.getOrderstatus().equals(InsOrderStatusEnum.WAIT_PAY.getCode())) {
                 if (Objects.isNull(insAreaCompany.getPaymentLink())) {
                     throw new SystemException("该订单没有缴费链接");
                 }
-                boolean save = save(insAreaCompany.getOrderno(), insAreaCompany.getId(),insAreaCompany.getCompanyId(), insAreaCompany.getPaymentLink(),isWx);
-                insOrderQrCode = baseMapper.selectOne(new LambdaQueryWrapper<InsOrderQrCode>()
-                        .eq(InsOrderQrCode::getAreaCompanyId, companyId)
-                        .eq(InsOrderQrCode::getQrcodeStatus, 1));
+                boolean save = save(insAreaCompany.getOrderno(), insAreaCompany.getId(), insAreaCompany.getCompanyId(),
+                        insAreaCompany.getPaymentLink(), isWx);
+                insOrderQrCode = baseMapper.selectOne(new LambdaQueryWrapper<InsOrderQrCode>().eq(InsOrderQrCode::getAreaCompanyId,
+                        companyId).eq(InsOrderQrCode::getQrcodeStatus, 1));
             } else {
                 throw new SystemException("该订单不是待缴费状态");
             }
@@ -128,9 +86,8 @@ public class InsOrderQrCodeServiceImpl extends ServiceImpl<InsOrderQrCodeMapper,
 //        InsAreaCompany insAreaCompany = insAreaCompanyService.getOne(new LambdaQueryWrapper<InsAreaCompany>().eq
 //        (InsAreaCompany::getId, companyId));
         //查询 是否有数据存在
-        InsOrderQrCode insOrderQrCode = baseMapper.selectOne(new LambdaQueryWrapper<InsOrderQrCode>()
-                .eq(InsOrderQrCode::getAreaCompanyId, companyId)
-                .eq(InsOrderQrCode::getQrcodeStatus, 1));
+        InsOrderQrCode insOrderQrCode = baseMapper.selectOne(new LambdaQueryWrapper<InsOrderQrCode>().eq(InsOrderQrCode::getAreaCompanyId
+                , companyId).eq(InsOrderQrCode::getQrcodeStatus, 1));
         return insOrderQrCode;
     }
 
@@ -184,7 +141,7 @@ public class InsOrderQrCodeServiceImpl extends ServiceImpl<InsOrderQrCodeMapper,
      * @return
      */
     @Override
-    public boolean save(String orderno, String areaCompanyId,String companyId, String jumlUrl,Boolean isWx) {
+    public boolean save(String orderno, String areaCompanyId, String companyId, String jumlUrl, Boolean isWx) {
         try {
             InsOrderQrCode insOrderQrCode = new InsOrderQrCode();
 
@@ -193,11 +150,11 @@ public class InsOrderQrCodeServiceImpl extends ServiceImpl<InsOrderQrCodeMapper,
             insOrderQrCode.setOrderno(orderno);
             insOrderQrCode.setAreaCompanyId(areaCompanyId);
             //判断jumlUrl是base64 还是 url
-            if(isHttpUrl(jumlUrl) || isWx){
-                if(companyId.equals("HNIC1000000")) {
+            if (isHttpUrl(jumlUrl) || isWx) {
+                if (companyId.equals("HNIC1000000")) {
                     //华农保险
                     insOrderQrCode.setJumpUrl(jumlUrl.replace("{", "").replace("}", ""));
-                }else{
+                } else {
                     insOrderQrCode.setJumpUrl(jumlUrl);
                 }
             } else {