Jelajahi Sumber

二维码配置的修改

dongxin 1 tahun lalu
induk
melakukan
c1a92b55b3

+ 4 - 0
src/main/java/com/ydtech/modules/admin/constants/UserConstants.java

@@ -20,6 +20,10 @@ public class UserConstants
     public final static Integer OPT_TYPE_0 = 0; // 新增加投
     public final static Integer OPT_TYPE_1 = 1; // 修改加投
 
+    /** 二维码配置类型 */
+    public final static Integer CONFIG_TYPE_0 = 0; // url
+    public final static Integer CONFIG_TYPE_1 = 1; // base
+    public final static Integer CONFIG_TYPE_2 = 2; // h5
     /**
      * 分页长度限制
      */

+ 78 - 0
src/main/java/com/ydtech/modules/admin/controller/SysBarcodeConfigController.java

@@ -0,0 +1,78 @@
+package com.ydtech.modules.admin.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.admin.model.po.SysBarcodeConfig;
+import com.ydtech.modules.admin.model.vo.AddSysBarcodeConfigVo;
+import com.ydtech.modules.admin.model.vo.SysBarcodeConfigPageVo;
+import com.ydtech.modules.admin.service.SysBarcodeConfigService;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.utils.JudgeUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.time.LocalDateTime;
+
+@Api(tags = "二维码配置管理")
+@RestController
+@RequestMapping("/sysBarcodeConfig")
+public class SysBarcodeConfigController extends BaseController {
+
+    @Autowired
+    private SysBarcodeConfigService sysBarcodeConfigService;
+
+    @PostMapping("/queryPage")
+    @ApiOperation(value = "二维码配置分页列表")
+    public HttpResult<PageResult<SysBarcodeConfig>> queryPage(@RequestBody SysBarcodeConfigPageVo sysBarcodeConfigPageVo) {
+        Page page = buildPageRequest(sysBarcodeConfigPageVo.getPageDto());
+        Page<SysBarcodeConfig> pageResult = sysBarcodeConfigService.queryPage(page,sysBarcodeConfigPageVo);
+        return HttpResult.ok(buildPageResponse(pageResult));
+    }
+
+    @GetMapping(value = "/query/{id}")
+    @ApiOperation(value = "二维码配置{id}查询")
+    public HttpResult query(@PathVariable Long id) {
+        return HttpResult.ok(sysBarcodeConfigService.getById(id));
+    }
+
+    @PostMapping("/add")
+    @ApiOperation("添加二维码配置")
+    public HttpResult save(@RequestBody @Valid AddSysBarcodeConfigVo addSysBarcodeConfigVo) {
+        // 获取当前登录信息
+        String userName = getUserName();
+        SysBarcodeConfig sysBarcodeConfig = new SysBarcodeConfig();
+        BeanUtils.copyProperties(addSysBarcodeConfigVo, sysBarcodeConfig);
+        sysBarcodeConfig.setCreateTime(LocalDateTime.now());
+        sysBarcodeConfig.setCreateBy(userName);
+        LambdaQueryWrapper<SysBarcodeConfig> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysBarcodeConfig::getCompanyId, sysBarcodeConfig.getCompanyId());
+        if (sysBarcodeConfigService.count(wrapper) > 0){
+            HttpResult.error("不允许重复配置!");
+        }
+        boolean save = sysBarcodeConfigService.save(sysBarcodeConfig);
+        return JudgeUtils.add(save);
+    }
+
+    @PutMapping("/edit/{id}")
+    @ApiOperation("修改二维码配置")
+    public HttpResult edit(@PathVariable Long id, @RequestBody AddSysBarcodeConfigVo addSysBarcodeConfigVo) {
+        SysBarcodeConfig sysBarcodeConfig = new SysBarcodeConfig();
+        BeanUtils.copyProperties(addSysBarcodeConfigVo, sysBarcodeConfig);
+        sysBarcodeConfig.setId(id);
+        boolean modify = sysBarcodeConfigService.saveOrUpdate(sysBarcodeConfig);
+        return JudgeUtils.modify(modify);
+    }
+
+    @DeleteMapping("/del/{id}")
+    @ApiOperation("删除二维码配置")
+    public HttpResult delete(@PathVariable Long id) {
+        boolean delete = sysBarcodeConfigService.removeById(id);
+        return JudgeUtils.delete(delete);
+    }
+}

+ 18 - 0
src/main/java/com/ydtech/modules/admin/dao/SysBarcodeConfigMapper.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.admin.model.po.SysBarcodeConfig;
+
+/**
+* @author dongxin
+* @description 针对表【sys_barcode_config(二维码配置表)】的数据库操作Mapper
+* @createDate 2024-09-27 15:12:05
+* @Entity generator.domain.SysBarcodeConfig
+*/
+public interface SysBarcodeConfigMapper extends BaseMapper<SysBarcodeConfig> {
+
+}
+
+
+
+

+ 66 - 0
src/main/java/com/ydtech/modules/admin/model/po/SysBarcodeConfig.java

@@ -0,0 +1,66 @@
+package com.ydtech.modules.admin.model.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 二维码配置表
+ * @TableName sys_barcode_config
+ */
+@TableName(value ="sys_barcode_config")
+@Data
+@ApiModel(value = "渠道分组表")
+@AllArgsConstructor
+@NoArgsConstructor
+public class SysBarcodeConfig implements Serializable {
+    /**
+     * 主键/自增
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 保险公司id
+     */
+    @ApiModelProperty(value = "保险公司id")
+    private String companyId;
+
+    /**
+     * 保险公司名称简称
+     */
+    @ApiModelProperty(value = "保险公司名称简称")
+    private String companyName;
+
+    /**
+     * 类型   0:url   1:base码   2:h5
+     */
+    @ApiModelProperty(value = "类型   0:url   1:base码   2:h5")
+    private Integer type;
+
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private LocalDateTime createTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+}

+ 37 - 0
src/main/java/com/ydtech/modules/admin/model/vo/AddSysBarcodeConfigVo.java

@@ -0,0 +1,37 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AddSysBarcodeConfigVo {
+
+    /**
+     * 保险公司id
+     */
+    @NotBlank(message = "保险公司id不能为空")
+    @ApiModelProperty(value = "保险公司id")
+    private String companyId;
+
+    /**
+     * 保险公司名称简称
+     */
+    @NotBlank(message = "保险公司名称简称不能为空")
+    @ApiModelProperty(value = "保险公司名称简称")
+    private String companyName;
+
+    /**
+     * 类型   0:url   1:base码   2:h5
+     */
+    @NotNull(message = "类型不能为空")
+    @ApiModelProperty(value = "类型   0:url   1:base码   2:h5")
+    private Integer type;
+
+}

+ 16 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysBarcodeConfigPageVo.java

@@ -0,0 +1,16 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.ydtech.core.page.PageRequest;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SysBarcodeConfigPageVo extends PageRequest {
+
+    @ApiModelProperty(value = "保险公司id")
+    private String companyId;
+}

+ 24 - 0
src/main/java/com/ydtech/modules/admin/service/SysBarcodeConfigService.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.admin.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.po.SysBarcodeConfig;
+import com.ydtech.modules.admin.model.vo.SysBarcodeConfigPageVo;
+
+import javax.validation.Valid;
+
+/**
+* @author dongxin
+* @description 针对表【sys_barcode_config(二维码配置表)】的数据库操作Service
+* @createDate 2024-09-27 15:12:05
+*/
+public interface SysBarcodeConfigService extends IService<SysBarcodeConfig> {
+
+    /**
+     * 二维码配置分页查询
+     * @param page
+     * @param sysBarcodeConfigPageVo
+     * @return
+     */
+    Page<SysBarcodeConfig> queryPage(Page page, @Valid SysBarcodeConfigPageVo sysBarcodeConfigPageVo);
+}

+ 37 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysBarcodeConfigServiceImpl.java

@@ -0,0 +1,37 @@
+package com.ydtech.modules.admin.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.admin.dao.SysBarcodeConfigMapper;
+import com.ydtech.modules.admin.model.po.SysBarcodeConfig;
+import com.ydtech.modules.admin.model.po.SysChannelCost;
+import com.ydtech.modules.admin.model.vo.SysBarcodeConfigPageVo;
+import com.ydtech.modules.admin.service.SysBarcodeConfigService;
+import com.ydtech.utils.StringUtils;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.stereotype.Service;
+
+/**
+* @author dongxin
+* @description 针对表【sys_barcode_config(二维码配置表)】的数据库操作Service实现
+* @createDate 2024-09-27 15:12:05
+*/
+@Service
+public class SysBarcodeConfigServiceImpl extends ServiceImpl<SysBarcodeConfigMapper, SysBarcodeConfig>
+    implements SysBarcodeConfigService {
+
+    @Override
+    public Page<SysBarcodeConfig> queryPage(Page page, SysBarcodeConfigPageVo sysBarcodeConfigPageVo) {
+        LambdaQueryWrapper<SysBarcodeConfig> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(StringUtils.isNotBlank(sysBarcodeConfigPageVo.getCompanyId()), SysBarcodeConfig::getCompanyId,
+                        sysBarcodeConfigPageVo.getCompanyId())
+        ;
+        Page<SysBarcodeConfig> costPage = page(page, wrapper);
+        return costPage;
+    }
+}
+
+
+
+

+ 91 - 31
src/main/java/com/ydtech/modules/order/controller/QrCodeController.java

@@ -1,8 +1,18 @@
 package com.ydtech.modules.order.controller;
 
-import com.ydtech.core.page.HttpResult;
+import cn.dev33.satoken.annotation.SaIgnore;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.constants.UserConstants;
+import com.ydtech.modules.admin.model.po.SysBarcodeConfig;
+import com.ydtech.modules.admin.service.SysBarcodeConfigService;
 import com.ydtech.modules.admin.service.SysQRCodeRelationService;
+import com.ydtech.modules.admin.service.impl.SysBarcodeConfigServiceImpl;
+import com.ydtech.modules.esm.model.EsmInsCompany;
+import com.ydtech.modules.esm.service.EsmInsCompanyService;
+import com.ydtech.modules.esm.service.impl.EsmInsCompanyServiceImpl;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrderQrCode;
 import com.ydtech.modules.order.entity.InsOrders;
@@ -13,6 +23,7 @@ import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.modules.protocol.entity.constants.PtlApiType;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -26,6 +37,7 @@ import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.util.Date;
+import java.util.List;
 import java.util.Objects;
 
 @Api(tags = "订单二维码管理")
@@ -39,15 +51,24 @@ public class QrCodeController {
     @Resource
     private InsAreaCompanyService insAreaCompanyService;
 
-    @Resource
-    private InsOrdersService insOrdersService;
     @Resource
     SysQRCodeRelationService sysQRCodeRelationService;
 
+    @Resource
+    SysBarcodeConfigService sysBarcodeConfigService;
+
+    @Resource
+    InsOrdersService insOrdersService;
+
     //二维码生成地址
     @Value("${qrcode.genAddress}")
     private String qrCodeGenAddress;
 
+    //二维码生成地址
+    @Value("${qrcode.imageSrc}")
+    private String imageSrc;
+    @Autowired
+    private EsmInsCompanyService esmInsCompanyService;
 
     @GetMapping(value = "/getQrCode")
     @ApiOperation(value = "获取二维码")
@@ -61,16 +82,7 @@ public class QrCodeController {
             InsOrders insOrders = insOrdersService.getById(insOrderQrCode.getOrderno());
 
             QrCodeVo qrCodeVo = new QrCodeVo();
-            String qrCodeUrl = "";
-            //是否是太平洋保险 大家财险
-            if ("TPIC1000000".equals(insAreaCompany.getCompanyId()) || "DJPC1000000".equals(insAreaCompany.getCompanyId())
-                    || ("CHAC1000000").equals(insAreaCompany.getCompanyId())
-                    || ("HTIC1000000".equals(insAreaCompany.getCompanyId()) && PtlApiType.PTL_API_2.getCode() == insAreaCompany.getApiType())) {
-                qrCodeUrl = insAreaCompany.getPaymentLink();
-            } else {
-                qrCodeUrl = qrCodeGenAddress + "?areaCompanyId=" + areaCompanyId;
-            }
-
+            String qrCodeUrl = qrCodeGenAddress + "?areaCompanyId=" + areaCompanyId;
             qrCodeVo.setQrCodeUrl(qrCodeUrl);
             qrCodeVo.setInscompany(insAreaCompany.getInscompany());//保险公司
             qrCodeVo.setSumpremium(insAreaCompany.getSumpremium());//总保费
@@ -99,7 +111,6 @@ public class QrCodeController {
         return modelAndView;
     }
 
-
     @PostMapping(value = "/destructionQrCode")
     @ApiOperation(value = "销毁二维码")
     public ModelAndView destructionQrCode(String areaCompanyId) {
@@ -116,29 +127,78 @@ public class QrCodeController {
 
     @GetMapping(value = "/index")
     @ApiOperation(value = "扫描二维码地址")
-    public String index(String areaCompanyId) throws IOException {
+    @SaIgnore
+    public ModelAndView index(String areaCompanyId) throws IOException {
         InsOrderQrCode insOrderQrCode = insOrderQrCodeService.getOne(areaCompanyId);
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getById(areaCompanyId);
+        // 根据保险公司获取二维码配置方式
+        LambdaQueryWrapper<SysBarcodeConfig> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysBarcodeConfig::getCompanyId, insAreaCompany.getCompanyId());
+        List<SysBarcodeConfig> configs = sysBarcodeConfigService.list(wrapper);
+        if (CollUtil.isEmpty(configs) || configs.size() > 1) {
+            //重定向到错误页面中
+            ModelAndView modelAndView = new ModelAndView("qrcode_error");
+            return modelAndView;
+        }
+        Integer configType = configs.get(0).getType();
         if (insOrderQrCode == null) {
             //重定向到错误页面中
-            return "redirect:/order/qrCode/error";
+            ModelAndView modelAndView = new ModelAndView("qrcode_error");
+            return modelAndView;
         }
-
-        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(UserConstants.CONFIG_TYPE_2.equals(configType) || UserConstants.CONFIG_TYPE_1.equals(configType)){
+            InsOrders insOrders = insOrdersService.getById(insOrderQrCode.getOrderno());
+            // 获取图标
+            EsmInsCompany company = esmInsCompanyService.getById(insAreaCompany.getCompanyId());
+            ModelAndView modelAndView = new ModelAndView("qrcode");
+            QrCodeVo qrCodeVo = new QrCodeVo();
+            qrCodeVo.setLogo(company.getLogo());
+            if(UserConstants.CONFIG_TYPE_1.equals(configType)){
+                qrCodeVo.setQrCodeUrl("data:image/png;base64,"+insAreaCompany.getPaymentLink());
+            } else {
+                qrCodeVo.setQrCodeUrl("https://api.qrserver.com/v1/create-qr-code/?size=300x300&data="+insAreaCompany.getPaymentLink());
+            }
+            qrCodeVo.setImageSrc(imageSrc);
+            qrCodeVo.setInscompany(insAreaCompany.getInscompany());//保险公司
+            qrCodeVo.setInscompanyCode(insAreaCompany.getCompanyId());//保险公司编号
+            qrCodeVo.setSumpremium(insAreaCompany.getSumpremium());//总保费
+            qrCodeVo.setSypremium(insAreaCompany.getSypremium());//商业险
+            qrCodeVo.setJqpremium(insAreaCompany.getJqpremium());//交强险
+            qrCodeVo.setTaxamount(insAreaCompany.getTaxamount());//车船税
+            qrCodeVo.setJypremium(insAreaCompany.getJypremium());//驾驭险
+            qrCodeVo.setCApplyNme(insOrders.getApplyinfo().getString("name"));//投保人
+            qrCodeVo.setCInsuredNme(insOrders.getInsureinfo().getString("name"));//被保人
+            qrCodeVo.setCOwnerNme(insOrders.getOwnerinfo().getString("name"));//车主
+            qrCodeVo.setCPlateNo(insOrders.getLicenseno());//车牌号
+            qrCodeVo.setJqStartDate(insAreaCompany.getJqStartDate());//交强开始时间
+            qrCodeVo.setJqEndDate(insAreaCompany.getJqEndDate());//交强结束时间
+            qrCodeVo.setSyStartDate(insAreaCompany.getSyStartDate());
+            qrCodeVo.setSysEndDate(insAreaCompany.getSyEndDate());
+            qrCodeVo.setSyStartDate(insAreaCompany.getSyStartDate());
+            qrCodeVo.setSysEndDate(insAreaCompany.getSyEndDate());
+            modelAndView.addObject("data",qrCodeVo);
+            return modelAndView;
+        } else if(UserConstants.CONFIG_TYPE_0.equals(configType)){
+            //更新二维码扫描时间
+            insOrderQrCode.setScanCodeTime(new Date());
+            insOrderQrCodeService.updateById(insOrderQrCode);
+            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) {
+                //重定向到错误页面中
+                ModelAndView modelAndView = new ModelAndView("qrcode_error");
+                return modelAndView;
+            }
+            ModelAndView modelAndView = new ModelAndView("https://api.qrserver.com/v1/create-qr-code/?size=300x300&data="+insOrderQrCode.getJumpUrl());
+            return modelAndView;
+        }else{
             //重定向到错误页面中
-            return "redirect:/order/qrCode/error";
+            ModelAndView modelAndView = new ModelAndView("qrcode_error");
+            return modelAndView;
         }
-
-        //更新二维码扫描时间
-        insOrderQrCode.setScanCodeTime(new Date());
-        insOrderQrCodeService.updateById(insOrderQrCode);
-        //直接重定向到jumlurl
-        return "redirect:" + insOrderQrCode.getJumpUrl();
-
     }
 
 

+ 36 - 0
src/main/java/com/ydtech/modules/order/entity/vo/QrCodeVo.java

@@ -15,12 +15,30 @@ public class QrCodeVo implements Serializable {
 
     private static final long serialVersionUID = -4906378446672825846L;
 
+    /**
+     * 保险公司logo
+     */
+    @JsonProperty("logo")
+    private String logo;
+
+    /**
+     * 图片访问前缀
+     */
+    @JsonProperty("imageSrc")
+    private String imageSrc;
+
     /**
      * 二维码地址
      */
     @JsonProperty("qrCodeUrl")
     private String qrCodeUrl;
 
+    /**
+     * 保险公司code
+     */
+    @JsonProperty("inscompanyCode")
+    private String inscompanyCode;
+
     /**
      * 保险公司
      */
@@ -42,6 +60,7 @@ public class QrCodeVo implements Serializable {
      */
     @JsonProperty("sypremium")
     private BigDecimal sypremium;
+
     /**
      * 车船税
      */
@@ -53,6 +72,12 @@ public class QrCodeVo implements Serializable {
     @JsonProperty("jypremium")
     private BigDecimal jypremium;
 
+    /**
+     * 车主
+     */
+    @JsonProperty("cOwnerNme")
+    private String cOwnerNme;
+
     /**
      * 投保人
      */
@@ -89,6 +114,17 @@ public class QrCodeVo implements Serializable {
      */
     @JsonProperty("sysEndDate")
     private String sysEndDate;
+
+    /**
+     * 商业开始时间
+     */
+    @JsonProperty("jyStartDate")
+    private String jyStartDate;
+    /**
+     * 商业结束时间
+     */
+    @JsonProperty("jyEndDate")
+    private String jyEndDate;
     /**
      * 二维码类型 (0:Base64,1:内部链接,2:外部链接)
      */

+ 2 - 1
src/main/resources/application-prod.yml

@@ -316,6 +316,7 @@ guoren:
 
 qrcode:
   genAddress: https://sxzgkj.baoxianzhanggui.com/web-api/order/qrCode/index
+  imageSrc: https://sxzgkj.baoxianzhanggui.com/web-api/template/image/
 
 #大家财险api
 dajia:
@@ -401,4 +402,4 @@ python:
 ### AI
 customer:
   api:
-    url: http://39.98.41.104:8088/ai
+    url: http://39.98.41.104:8088/ai

+ 2 - 1
src/main/resources/application-test.yml

@@ -408,6 +408,7 @@ guoren:
 
 qrcode:
   genAddress: https://test.baoxianzhanggui.com/web-api/order/qrCode/index
+  imageSrc: https://test.baoxianzhanggui.com/web-api/template/image/
 
 # 渤海财险
 bohai:
@@ -482,4 +483,4 @@ python:
 ### AI
 customer:
   api:
-    url: http://39.98.41.104:8088/ai
+    url: http://39.98.41.104:8088/ai

+ 20 - 0
src/main/resources/mapper/modules/admin/SysBarcodeConfigMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.admin.dao.SysBarcodeConfigMapper">
+
+    <resultMap id="BaseResultMap" type="com.ydtech.modules.admin.model.po.SysBarcodeConfig">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="companiesId" column="companies_id" jdbcType="VARCHAR"/>
+            <result property="companyName" column="company_name" jdbcType="VARCHAR"/>
+            <result property="type" column="type" jdbcType="INTEGER"/>
+            <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,companies_id,company_name,
+        type,create_by,create_time
+    </sql>
+</mapper>

+ 225 - 0
src/main/resources/template/html/qrcode.html

@@ -0,0 +1,225 @@
+<!DOCTYPE html>
+<!--配置thymeleaf模版-->
+<html xmlns:th="http://www.thymeleaf.org">
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Typewriter Effect</title>
+    <style>
+        .dis {
+            display: flex;
+        }
+
+        .j-s {
+            justify-content: space-between;
+        }
+
+        .j-c {
+            justify-content: center;
+        }
+
+        .j-start {
+            justify-content: flex-start;
+        }
+
+        .j-end {
+            justify-content: flex-end;
+        }
+
+        .a-c {
+            align-items: center;
+        }
+
+        .a-start {
+            align-items: flex-start;
+        }
+
+        .a-end {
+            align-items: flex-end;
+        }
+
+        .f-c {
+            flex-direction: column;
+        }
+
+        .f-wrap {
+            flex-wrap: wrap;
+        }
+
+        .font-weight {
+            font-weight: bold;
+        }
+
+        .page {
+            height: 100%;
+            padding: 12px;
+            box-sizing: border-box;
+        }
+
+        .header {
+            padding: 8px;
+        }
+
+        .header .span {
+            font-size: 40rpx;
+            color: #333;
+        }
+
+        .mt-2 {
+            margin-top: 20px;
+        }
+
+        .mb-2 {
+            margin-bottom: 20px;
+        }
+
+        .content {
+            height: auto;
+            background: #FFFFFF;
+            box-shadow: 0px 4px 10px 0px #DAE3F4;
+            border-radius: 6px;
+            border: 1px solid #FFFFFF;
+            position: relative;
+            padding: 16px 14px 0 14px;
+        }
+
+        .content .configData .user {
+            padding: 8px;
+            border: 1px solid #0052FF;
+            background: #F8FAFF;
+            border-radius: 3px;
+        }
+
+        .content .configData .user>div>span:nth-child(1) {
+            color: #333;
+            font-size: 13px;
+            font-weight: bold;
+        }
+
+        .content .configData .user>div>span:nth-child(2) {
+            color: #666666;
+            font-size: 12px;
+        }
+
+        .content .configData .view {
+            padding: 10px 0;
+        }
+
+        .content .configData .view span:nth-child(1) {
+            color: #666666;
+            font-size: 14px;
+        }
+
+        .content .configData .view span:nth-child(2) {
+            color: #333;
+            font-size: 14px;
+        }
+
+        .content .qrcode {
+            padding: 14px;
+            border-bottom: 1px dashed #D4D4D4;
+        }
+
+        .content .qrcode>span {
+            font-size: 12px;
+            color: #666666;
+        }
+
+        .content .qrcode .fuzzyLayer {
+            width: 134px;
+            height: 134px;
+            background: rgba(0, 0, 0, 0.6);
+            filter: blur(4px);
+            position: absolute;
+        }
+
+        .content .qrcode .code {
+            width: 120px;
+            height: 120px;
+            background: #FFFFFF;
+            border-radius: 4px;
+            position: relative;
+            padding: 8px;
+        }
+    </style>
+</head>
+<body>
+    <div class="page">
+        <img th:src="${data.imageSrc} + 'code.png'" mode="" style="width: 100%;height: 430px;position: absolute;top: 0;left: 0;"></img>
+        <div class="dis j-c a-c header">
+            <img  th:src="${data.logo}" mode="" style="width: 30px;height: 30px;margin-right: 6px;">
+            <span class="font-weight" th:text="${data.inscompany}" ></span>
+        </div>
+        <div class="content mt-2">
+            <div class="qrcode dis f-c a-c">
+                <div class="dis a-c j-c mb-2"
+                    style="width: 150px;height: 150px;border: 1px solid #0052FF;border-radius: 4px;">
+                    <div class="fuzzyLayer">
+                        <img th:src="${data.imageSrc} + 'code1.jpg'" mode="" style="width: 100%;height: 100%;">
+                        </img>
+                    </div>
+                    <div class="code">
+                        <!-- 二维码 -->
+                        <input id="text" type="hidden" th:value="${data.qrCodeUrl}" />
+                        <img th:src="${data.qrCodeUrl}" mode="" style="width: 100%;height: 100%;"></img>
+                    </div>
+                </div>
+                <span>为保证付款的有效性 请扫描保险公司二维码</span>
+            </div>
+            <div class="configData dis f-c">
+                <div class="dis j-s a-c view">
+                    <span class="font-weight" style="font-size: 16px;color: #232832;" th:text="${data.cPlateNo}" ></span>
+                    <span class="font-weight" >
+                            <span style="font-size: 12px;color:#FF5600;">¥</span >
+                        <span style="font-size: 16px;color: #FF5600;" th:text="${data.sumpremium}"></span>
+                    </span>
+                </div>
+                <div class=" dis j-s a-c user">
+                    <div class="dis f-c a-start">
+                        <span th:text="${data.cOwnerNme}"></span>
+                        <span>车主</span>
+                    </div>
+                    <div class="dis f-c a-start">
+                        <span th:text="${data.cApplyNme}"></span>
+                        <span>投保人</span>
+                    </div>
+                    <div class="dis f-c a-start">
+                        <span th:text="${data.cInsuredNme}"></span>
+                        <span>被保人</span>
+                    </div>
+                </div>
+                <div class="view dis j-s a-c border-btn">
+                    <span>交强险起保时间:</span>
+                    <span th:text="${data.jqStartDate}"></span>
+                </div>
+                <div class="view dis j-s a-c border-btn">
+                    <span>交强险:</span>
+                    <span th:text="${data.jqpremium}"></span>
+                </div>
+                <div class="view dis j-s a-c border-btn">
+                    <span>商业险起保时间:</span>
+                    <span th:text="${data.syStartDate}"></span>
+                </div>
+                <div class="view dis j-s a-c border-btn">
+                    <span>商业险:</span>
+                    <span th:text="${data.sypremium}" ></span>
+                </div>
+                <div class="view dis j-s a-c border-btn">
+                    <span>车船税:</span>
+                    <span th:text="${data.taxamount}"></span>
+                </div>
+                <div class="view dis j-s a-c border-btn">
+                    <span>驾意险:</span>
+                    <span th:text="${data.jypremium}" ></span>
+                </div>
+                <div class="view dis j-s a-c ">
+                    <span>保费合计:</span>
+                    <span th:text="${data.sumpremium}"></span>
+                </div>
+            </div>
+        </div>
+    </div>
+</body>
+</html>

TEMPAT SAMPAH
src/main/resources/template/image/code.png


TEMPAT SAMPAH
src/main/resources/template/image/code1.jpg