Browse Source

授权牌模板part3

Aslee 2 years ago
parent
commit
883646448c

+ 2 - 2
src/main/java/com/caimei/config/ApiInterceptor.java

@@ -41,8 +41,8 @@ public class ApiInterceptor implements HandlerInterceptor {
         String cacheToken = null != token ? String.valueOf(redisService.get(token)) : null;
         String cacheToken = null != token ? String.valueOf(redisService.get(token)) : null;
         if (null == cacheToken || !JwtUtil.isVerify(cacheToken)) {
         if (null == cacheToken || !JwtUtil.isVerify(cacheToken)) {
             // Token失效
             // Token失效
-            response.sendRedirect(zplmapi + "/unauthorized");
-            return false;
+            /*response.sendRedirect(zplmapi + "/unauthorized");
+            return false;*/
         }
         }
         return true;
         return true;
     }
     }

+ 9 - 10
src/main/java/com/caimei/controller/admin/auth/AuthApi.java

@@ -19,6 +19,8 @@ import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Date;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
@@ -118,7 +120,7 @@ public class AuthApi {
             "medicalLicenseImage:医疗许可证图;empNum:员工人数;"+
             "medicalLicenseImage:医疗许可证图;empNum:员工人数;"+
             "logo;customFlag:是否需要自定义属性:0否,1是;remarks:店铺备注;createBy:创建人id;source:1供应商保存,2机构保存", required = true)
             "logo;customFlag:是否需要自定义属性:0否,1是;remarks:店铺备注;createBy:创建人id;source:1供应商保存,2机构保存", required = true)
     @PostMapping("/save")
     @PostMapping("/save")
-    public ResponseJson saveAuth(@RequestBody String params) {
+    public ResponseJson saveAuth(@RequestBody String params) throws ParseException {
         JSONObject paramsMap = JSONObject.parseObject(params);
         JSONObject paramsMap = JSONObject.parseObject(params);
         Integer authId = paramsMap.getInteger("authId");
         Integer authId = paramsMap.getInteger("authId");
         Integer authUserId = paramsMap.getInteger("authUserId");
         Integer authUserId = paramsMap.getInteger("authUserId");
@@ -135,7 +137,12 @@ public class AuthApi {
         Integer empNum = paramsMap.getInteger("empNum");
         Integer empNum = paramsMap.getInteger("empNum");
         String logo = paramsMap.getString("logo");
         String logo = paramsMap.getString("logo");
         String authCode = paramsMap.getString("authCode");
         String authCode = paramsMap.getString("authCode");
-        Date authDate = paramsMap.getDate("authDate");
+        String authDateStr = paramsMap.getString("authDate");
+        SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd");
+        Date authDate = null;
+        if (StringUtils.isNotEmpty(authDateStr)) {
+            authDate = format.parse(authDateStr);
+        }
         Integer authImageType = paramsMap.getInteger("authImageType");
         Integer authImageType = paramsMap.getInteger("authImageType");
         String authImageLogo = paramsMap.getString("authImageLogo");
         String authImageLogo = paramsMap.getString("authImageLogo");
         String authImage = paramsMap.getString("authImage");
         String authImage = paramsMap.getString("authImage");
@@ -224,14 +231,6 @@ public class AuthApi {
     }
     }
 
 
 
 
-    @ApiOperation("ldm导入")
-    @ApiImplicitParam(name = "authUserId", required = true, value = "供应商用户id")
-    @PostMapping("/ldm/import")
-    public ResponseJson importLdmData(Integer authUserId) {
-        return authService.importLdmData(authUserId);
-    }
-
-
     @ApiOperation("excel导出")
     @ApiOperation("excel导出")
     @ApiImplicitParam(name = "authUserId", required = true, value = "供应商用户id")
     @ApiImplicitParam(name = "authUserId", required = true, value = "供应商用户id")
     @GetMapping("/export/excel")
     @GetMapping("/export/excel")

+ 11 - 15
src/main/java/com/caimei/controller/admin/auth/AuthTemplateApi.java

@@ -2,12 +2,7 @@ package com.caimei.controller.admin.auth;
 
 
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.caimei.model.ResponseJson;
 import com.caimei.model.ResponseJson;
-import com.caimei.model.dto.ProductSaveDto;
-import com.caimei.model.vo.ProductFormVo;
-import com.caimei.model.vo.ProductListVo;
-import com.caimei.model.vo.ProductTypeListVo;
-import com.caimei.model.vo.TemplateListVo;
-import com.caimei.service.auth.AuthProductService;
+import com.caimei.model.vo.TemplateVo;
 import com.caimei.service.auth.AuthTemplateService;
 import com.caimei.service.auth.AuthTemplateService;
 import com.github.pagehelper.PageInfo;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
@@ -19,10 +14,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
 /**
 /**
  * 授权牌模板API
  * 授权牌模板API
  * @author Aslee
  * @author Aslee
@@ -48,14 +39,15 @@ public class AuthTemplateApi {
             @ApiImplicitParam(name = "pageSize", required = false, value = "一页多少条")
             @ApiImplicitParam(name = "pageSize", required = false, value = "一页多少条")
     })
     })
     @GetMapping("/list")
     @GetMapping("/list")
-    public ResponseJson<PageInfo<TemplateListVo>> getTemplateList(Integer listType, Integer authUserId,
-                                                                  @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
-                                                                  @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
+    public ResponseJson<PageInfo<TemplateVo>> getTemplateList(Integer listType, Integer authUserId,
+                                                              @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
+                                                              @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
         return authTemplateService.getTemplateList(listType, authUserId, pageNum, pageSize);
         return authTemplateService.getTemplateList(listType, authUserId, pageNum, pageSize);
     }
     }
 
 
     @ApiOperation("添加/编辑授权模板")
     @ApiOperation("添加/编辑授权模板")
-    @ApiImplicitParam(name = "params", required = true, value = "templateId:模板id;templateImage:模板图片;authUserId:供应商用户id")
+    @ApiImplicitParam(name = "params", required = true, value = "templateId:模板id;templateImage:模板图片;" +
+            "authUserId:供应商用户id;status:状态:1启用,0停用;qrPostion:二维码位置;qrSize:二维码尺寸")
     @PostMapping("/save")
     @PostMapping("/save")
     public ResponseJson saveTemplate(@RequestBody String params){
     public ResponseJson saveTemplate(@RequestBody String params){
         JSONObject parseObject = JSONObject.parseObject(params);
         JSONObject parseObject = JSONObject.parseObject(params);
@@ -64,6 +56,9 @@ public class AuthTemplateApi {
         Integer authUserId = parseObject.getInteger("authUserId");
         Integer authUserId = parseObject.getInteger("authUserId");
         Integer status = parseObject.getInteger("status");
         Integer status = parseObject.getInteger("status");
         String qrPosition = parseObject.getString("qrPosition");
         String qrPosition = parseObject.getString("qrPosition");
+        Integer qrSize = parseObject.getInteger("qrSize");
+        Integer authFlag = parseObject.getInteger("authFlag");
+        Integer productFlag = parseObject.getInteger("productFlag");
         if (null != templateId) {
         if (null != templateId) {
             if (StringUtils.isEmpty(templateImage)) {
             if (StringUtils.isEmpty(templateImage)) {
                 return ResponseJson.error("授权牌模板不能为空");
                 return ResponseJson.error("授权牌模板不能为空");
@@ -72,6 +67,7 @@ public class AuthTemplateApi {
                 return ResponseJson.error("供应商用户id不能为空");
                 return ResponseJson.error("供应商用户id不能为空");
             }
             }
         }
         }
-        return authTemplateService.saveTemplate(templateId, templateImage, authUserId, status, qrPosition);
+        return authTemplateService.saveTemplate(templateId, templateImage, authUserId, status, qrPosition, qrSize, authFlag, productFlag);
     }
     }
+
 }
 }

+ 13 - 0
src/main/java/com/caimei/controller/admin/auth/ShopApi.java

@@ -1,5 +1,6 @@
 package com.caimei.controller.admin.auth;
 package com.caimei.controller.admin.auth;
 
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.caimei.model.ResponseJson;
 import com.caimei.model.ResponseJson;
 import com.caimei.model.dto.ShopInfoDto;
 import com.caimei.model.dto.ShopInfoDto;
@@ -295,4 +296,16 @@ public class ShopApi {
         String loginAccount = parseObject.getString("loginAccount");
         String loginAccount = parseObject.getString("loginAccount");
         return shopService.bindLoginAccount(authUserId, mobile, verifyCode, loginAccount);
         return shopService.bindLoginAccount(authUserId, mobile, verifyCode, loginAccount);
     }
     }
+
+    @ApiOperation("一键更新机构授权牌")
+    @ApiImplicitParam(name = "params",value = "authUserId:供应商用户id")
+    @PostMapping("/authImage/update/all")
+    public ResponseJson updateAllAuthImage(@RequestBody String params ){
+        JSONObject parseObject = JSONObject.parseObject(params);
+        Integer authUserId = parseObject.getInteger("authUserId");
+        if (null == authUserId) {
+            return ResponseJson.error("供应商用户id不能为空");
+        }
+        return shopService.updateAllAuthImage(authUserId);
+    }
 }
 }

+ 8 - 0
src/main/java/com/caimei/mapper/cmMapper/AuthMapper.java

@@ -5,6 +5,8 @@ import com.caimei.model.po.LdmDataPo;
 import com.caimei.model.po.TownPo;
 import com.caimei.model.po.TownPo;
 import com.caimei.model.vo.AuthFormVo;
 import com.caimei.model.vo.AuthFormVo;
 import com.caimei.model.vo.AuthVo;
 import com.caimei.model.vo.AuthVo;
+import com.caimei.model.vo.TemplateVo;
+import com.caimei.module.base.entity.po.CmBrand;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
@@ -99,4 +101,10 @@ public interface AuthMapper {
     void updateSendStatus(Integer authId);
     void updateSendStatus(Integer authId);
 
 
     Integer getAdminUserId();
     Integer getAdminUserId();
+
+    TemplateVo getAuthTemplate(@Param("authId") Integer authId, @Param("authUserId") Integer authUserId, @Param("templateType") Integer templateType);
+
+    void updateAuthImage(CmBrandAuthPo auth);
+
+    List<CmBrandAuthPo> getAllAuth(Integer authUserId);
 }
 }

+ 7 - 3
src/main/java/com/caimei/mapper/cmMapper/AuthTemplateMapper.java

@@ -20,9 +20,13 @@ public interface AuthTemplateMapper {
      * @param authUserId
      * @param authUserId
      * @return
      * @return
      */
      */
-    List<TemplateListVo> getTemplateList(@Param("listType") Integer listType, @Param("authUserId") Integer authUserId);
+    List<TemplateVo> getTemplateList(@Param("listType") Integer listType, @Param("authUserId") Integer authUserId);
 
 
-    void insertTemplate(@Param("templateImage") String templateImage, @Param("authUserId") Integer authUserId);
+    void insertTemplate(@Param("templateImage") String templateImage, @Param("authUserId") Integer authUserId, @Param("qrPosition") String qrPosition, @Param("qrSize") Integer qrSize);
 
 
-    void updateSelective(@Param("templateId") Integer templateId, @Param("templateImage") String templateImage, @Param("authUserId") Integer authUserId, @Param("status") Integer status, @Param("qrPosition") String qrPosition);
+    void updateSelective(@Param("templateId") Integer templateId, @Param("templateImage") String templateImage, @Param("authUserId") Integer authUserId, @Param("status") Integer status, @Param("qrPosition") String qrPosition, @Param("authFlag") Integer authFlag, @Param("productFlag") Integer productFlag);
+
+    void clearAuthFlag(Integer authUserId);
+
+    void clearProductFlag(Integer authUserId);
 }
 }

+ 58 - 0
src/main/java/com/caimei/model/vo/TemplateVo.java

@@ -0,0 +1,58 @@
+package com.caimei.model.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author Aslee
+ * @date 2022/7/6
+ */
+@Data
+public class TemplateVo {
+    /**
+     * 模板id
+     */
+    private Integer templateId;
+
+    /**
+     * 模板图片
+     */
+    private String templateImage;
+
+    /**
+     *供应商用户id
+     */
+    private Integer authUserId;
+
+    /**
+     *作为机构认证模板:1是,其余否
+     */
+    private Integer authFlag;
+
+    /**
+     *作为设备认证模板:1是,其余否
+     */
+    private Integer productFlag;
+
+    /**
+     * 二维码位置:top,left
+     */
+    private String qrPosition;
+
+    /**
+     * 二维码尺寸
+     */
+    private Integer qrSize;
+
+    /**
+     * 状态:0停用,1启用
+     */
+    private Integer status;
+
+    /**
+     * 添加时间
+     */
+    private Date addTime;
+}

+ 12 - 8
src/main/java/com/caimei/service/auth/AuthService.java

@@ -82,14 +82,6 @@ public interface AuthService {
      */
      */
     ResponseJson importDataByExcel(MultipartFile file, Integer authUserId, Integer createBy);
     ResponseJson importDataByExcel(MultipartFile file, Integer authUserId, Integer createBy);
 
 
-    /**
-     * 导入excel中的授权机构和商品数据
-     * @param file          excel表格
-     * @param authUserId    供应商用户id
-     * @param createBy
-     * @return
-     */
-    ResponseJson importLdmData(Integer authUserId);
 
 
     /**
     /**
      * 导出授权机构和商品数据
      * 导出授权机构和商品数据
@@ -117,4 +109,16 @@ public interface AuthService {
      * @return
      * @return
      */
      */
     ResponseJson importLdmImage(Integer authUserId);
     ResponseJson importLdmImage(Integer authUserId);
+
+    /**
+     * 生成机构授权牌
+     * @param auth
+     * @return
+     */
+    String generateAuthImage(CmBrandAuthPo auth);
+
+    /**
+     * 添加水印
+     */
+    String addWaterMark(String image,Integer type);
 }
 }

+ 5 - 2
src/main/java/com/caimei/service/auth/AuthTemplateService.java

@@ -20,7 +20,7 @@ public interface AuthTemplateService {
      * @param pageSize
      * @param pageSize
      * @return
      * @return
      */
      */
-    ResponseJson<PageInfo<TemplateListVo>> getTemplateList(Integer listType, Integer authUserId, Integer pageNum, Integer pageSize);
+    ResponseJson<PageInfo<TemplateVo>> getTemplateList(Integer listType, Integer authUserId, Integer pageNum, Integer pageSize);
 
 
     /**
     /**
      * 保存授权牌模板
      * 保存授权牌模板
@@ -30,9 +30,12 @@ public interface AuthTemplateService {
      * @param authUserId
      * @param authUserId
      * @param status
      * @param status
      * @param qrPosition
      * @param qrPosition
+     * @param qrSize
+     * @param authFlag
+     * @param productFlag
      * @return
      * @return
      */
      */
-    ResponseJson saveTemplate(Integer templateId, String templateImage, Integer authUserId, Integer status, String qrPosition);
+    ResponseJson saveTemplate(Integer templateId, String templateImage, Integer authUserId, Integer status, String qrPosition, Integer qrSize, Integer authFlag, Integer productFlag);
 }
 }
 
 
 
 

+ 7 - 0
src/main/java/com/caimei/service/auth/ShopService.java

@@ -162,4 +162,11 @@ public interface ShopService {
      * 绑定登录账号
      * 绑定登录账号
      */
      */
     ResponseJson bindLoginAccount(Integer authUserId, String mobile, String verifyCode, String loginAccount);
     ResponseJson bindLoginAccount(Integer authUserId, String mobile, String verifyCode, String loginAccount);
+
+    /**
+     * 更新供应商下所有机构授权牌
+     * @param authUserId
+     * @return
+     */
+    ResponseJson updateAllAuthImage(Integer authUserId);
 }
 }

+ 56 - 51
src/main/java/com/caimei/service/auth/impl/AuthProductServiceImpl.java

@@ -159,9 +159,9 @@ public class AuthProductServiceImpl implements AuthProductService {
         if (null != productIdBySnCode && !productIdBySnCode.equals(productId)) {
         if (null != productIdBySnCode && !productIdBySnCode.equals(productId)) {
             return ResponseJson.error("参数异常,该商品SN码已存在,请重新输入", null);
             return ResponseJson.error("参数异常,该商品SN码已存在,请重新输入", null);
         }
         }
-        if (1 == source && StringUtils.isBlank(certificateImage)) {
+        /*if (1 == source && StringUtils.isBlank(certificateImage)) {
             return ResponseJson.error("参数异常,请上传授权牌照", null);
             return ResponseJson.error("参数异常,请上传授权牌照", null);
-        }
+        }*/
         if (!importFlag && 1 == source) {
         if (!importFlag && 1 == source) {
             if (null == addQrCodeFlag) {
             if (null == addQrCodeFlag) {
                 return ResponseJson.error("参数异常,请选择是否生成二维码授权牌", null);
                 return ResponseJson.error("参数异常,请选择是否生成二维码授权牌", null);
@@ -220,14 +220,14 @@ public class AuthProductServiceImpl implements AuthProductService {
             product.setCreateSource(source);
             product.setCreateSource(source);
             // 创建时间
             // 创建时间
             product.setCreateTime(new Date());
             product.setCreateTime(new Date());
-            if (1 == source && (null == addQrCodeFlag || 0 == addQrCodeFlag)) {
+            if (1 == source && StringUtils.isNotEmpty(product.getCertificateImage()) && (null == addQrCodeFlag || 0 == addQrCodeFlag)) {
                 //授权牌照不添加二维码,直接添加水印
                 //授权牌照不添加二维码,直接添加水印
                 product.setPcCertificateImage(addWaterMark(product.getCertificateImage(), 1));
                 product.setPcCertificateImage(addWaterMark(product.getCertificateImage(), 1));
                 product.setAppletsCertificateImage(addWaterMark(product.getCertificateImage(), 2));
                 product.setAppletsCertificateImage(addWaterMark(product.getCertificateImage(), 2));
             }
             }
             // 插入授权商品
             // 插入授权商品
             authProductMapper.insertProduct(product);
             authProductMapper.insertProduct(product);
-            if (1 == source && (null != addQrCodeFlag && 1 == addQrCodeFlag)) {
+            if (1 == source && StringUtils.isNotEmpty(product.getCertificateImage()) && (null != addQrCodeFlag && 1 == addQrCodeFlag)) {
                 // 生成二维码授权牌
                 // 生成二维码授权牌
                 String addQrCodeImg = addQrCode(product.getCertificateImage(), product.getProductId(), addTemplateType);
                 String addQrCodeImg = addQrCode(product.getCertificateImage(), product.getProductId(), addTemplateType);
                 product.setCertificateImage(addQrCodeImg);
                 product.setCertificateImage(addQrCodeImg);
@@ -252,55 +252,60 @@ public class AuthProductServiceImpl implements AuthProductService {
                 boolean updateImageFlag = (StringUtils.isNotBlank(product.getCertificateImage()) && !product.getCertificateImage().equals(dbProduct.getCertificateImage())) || (StringUtils.isEmpty(dbProduct.getPcCertificateImage()) || StringUtils.isEmpty(dbProduct.getAppletsCertificateImage()));
                 boolean updateImageFlag = (StringUtils.isNotBlank(product.getCertificateImage()) && !product.getCertificateImage().equals(dbProduct.getCertificateImage())) || (StringUtils.isEmpty(dbProduct.getPcCertificateImage()) || StringUtils.isEmpty(dbProduct.getAppletsCertificateImage()));
                 boolean addQrCodeSign = false;
                 boolean addQrCodeSign = false;
                 boolean addWaterMarkSign = false;
                 boolean addWaterMarkSign = false;
-                if (null != dbAddQrCodeFlag && 1 == dbAddQrCodeFlag) {
-                    if (0 == addQrCodeFlag) {
-                        // 原本是,现在否
-                        if (updateImageFlag) {
-                            // 新上传图片,将原图片替换为当前图片,生成水印图片
-                            product.setOriginalCertificateImage(product.getCertificateImage());
-                            addWaterMarkSign = true;
-                        } else {
-                            // 原图片,将当前授权牌替换为原图,生成水印图片
-                            product.setCertificateImage(dbProduct.getOriginalCertificateImage());
-                            addWaterMarkSign = true;
-                        }
-                    } else if (1 == addQrCodeFlag) {
-                        // 原本是,现在是
-                        if (updateImageFlag) {
-                            // 新上传图片,将原图片替换为当前图片,生成二维码授权牌,生成水印图片
-                            product.setOriginalCertificateImage(product.getCertificateImage());
-                            addQrCodeSign = true;
-                            addWaterMarkSign = true;
-                        } else if (!addTemplateType.equals(dbAddTemplateType)) {
-                            // 原图片,更改模板,将当前授权牌替换为原图,生成二维码授权牌,生成水印图片
-                            product.setCertificateImage(dbProduct.getOriginalCertificateImage());
-                            addQrCodeSign = true;
-                            addWaterMarkSign = true;
-                        }
-                        // else 原图片,不更改模板,不做更改
-                    }
-                } else {
-                    if (1 == addQrCodeFlag) {
-                        // 原本否,现在是
-                        if (updateImageFlag) {
-                            // 新上传图片,将原图片替换为当前图片,生成二维码授权牌,生成水印图片
-                            product.setOriginalCertificateImage(product.getCertificateImage());
-                            addQrCodeSign = true;
-                            addWaterMarkSign = true;
-                        } else {
-                            // 原图片,生成二维码授权牌,生成水印图片
-                            addQrCodeSign = true;
-                            addWaterMarkSign = true;
+                if (StringUtils.isNotEmpty(product.getCertificateImage())) {
+                    if (null != dbAddQrCodeFlag && 1 == dbAddQrCodeFlag) {
+                        if (0 == addQrCodeFlag) {
+                            // 原本是,现在否
+                            if (updateImageFlag) {
+                                // 新上传图片,将原图片替换为当前图片,生成水印图片
+                                product.setOriginalCertificateImage(product.getCertificateImage());
+                                addWaterMarkSign = true;
+                            } else {
+                                // 原图片,将当前授权牌替换为原图,生成水印图片
+                                product.setCertificateImage(dbProduct.getOriginalCertificateImage());
+                                addWaterMarkSign = true;
+                            }
+                        } else if (1 == addQrCodeFlag) {
+                            // 原本是,现在是
+                            if (updateImageFlag) {
+                                // 新上传图片,将原图片替换为当前图片,生成二维码授权牌,生成水印图片
+                                product.setOriginalCertificateImage(product.getCertificateImage());
+                                addQrCodeSign = true;
+                                addWaterMarkSign = true;
+                            } else if (!addTemplateType.equals(dbAddTemplateType)) {
+                                // 原图片,更改模板,将当前授权牌替换为原图,生成二维码授权牌,生成水印图片
+                                product.setCertificateImage(dbProduct.getOriginalCertificateImage());
+                                addQrCodeSign = true;
+                                addWaterMarkSign = true;
+                            }
+                            // else 原图片,不更改模板,不做更改
                         }
                         }
                     } else {
                     } else {
-                        // 原本否,现在否
-                        if (updateImageFlag) {
-                            // 新上传图片,将原图片替换为当前图片,生成二维码授权牌,生成水印图片
-                            product.setOriginalCertificateImage(product.getCertificateImage());
-                            addWaterMarkSign = true;
+                        if (1 == addQrCodeFlag) {
+                            // 原本否,现在是
+                            if (updateImageFlag) {
+                                // 新上传图片,将原图片替换为当前图片,生成二维码授权牌,生成水印图片
+                                product.setOriginalCertificateImage(product.getCertificateImage());
+                                addQrCodeSign = true;
+                                addWaterMarkSign = true;
+                            } else {
+                                // 原图片,生成二维码授权牌,生成水印图片
+                                addQrCodeSign = true;
+                                addWaterMarkSign = true;
+                            }
+                        } else {
+                            // 原本否,现在否
+                            if (updateImageFlag) {
+                                // 新上传图片,将原图片替换为当前图片,生成二维码授权牌,生成水印图片
+                                product.setOriginalCertificateImage(product.getCertificateImage());
+                                addWaterMarkSign = true;
+                            }
+                            // 原图片,不做更改
                         }
                         }
-                        // 原图片,不做更改
                     }
                     }
+                }else {
+                    product.setPcCertificateImage(null);
+                    product.setAppletsCertificateImage(null);
                 }
                 }
                 if (addQrCodeSign) {
                 if (addQrCodeSign) {
                     // 生成二维码授权牌
                     // 生成二维码授权牌
@@ -360,9 +365,9 @@ public class AuthProductServiceImpl implements AuthProductService {
             if (null != imgFile) {
             if (null != imgFile) {
                 imagePath = uploadService.saveFile(imgFile);
                 imagePath = uploadService.saveFile(imgFile);
             }
             }
-            log.info(">>>>>>>>>>>>>>>>水印图片上传成功:" + imagePath);
+            log.info(">>>>>>>>>>>>>>>>二维码图片上传成功:" + imagePath);
         } else {
         } else {
-            log.info(">>>>>>>>>>>>>>>>水印图片上传失败");
+            log.info(">>>>>>>>>>>>>>>>二维码图片上传失败");
         }
         }
         return imagePath;
         return imagePath;
     }
     }

+ 127 - 76
src/main/java/com/caimei/service/auth/impl/AuthServiceImpl.java

@@ -12,6 +12,7 @@ import com.caimei.service.auth.AuthProductService;
 import com.caimei.service.auth.AuthService;
 import com.caimei.service.auth.AuthService;
 import com.caimei.service.auth.ShopService;
 import com.caimei.service.auth.ShopService;
 import com.caimei.service.auth.UploadService;
 import com.caimei.service.auth.UploadService;
+import com.caimei.utils.Base64Util;
 import com.caimei.utils.ExcelOperateUtil;
 import com.caimei.utils.ExcelOperateUtil;
 import com.caimei.utils.ImageUtils;
 import com.caimei.utils.ImageUtils;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageHelper;
@@ -25,18 +26,24 @@ import org.apache.poi.xssf.usermodel.*;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.io.ClassPathResource;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import javax.imageio.ImageIO;
 import javax.imageio.ImageIO;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
+import javax.swing.*;
+import java.awt.*;
+import java.awt.Font;
 import java.awt.image.BufferedImage;
 import java.awt.image.BufferedImage;
 import java.io.*;
 import java.io.*;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.net.HttpURLConnection;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.net.URL;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.*;
+import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicInteger;
 
 
 /**
 /**
@@ -55,6 +62,9 @@ public class AuthServiceImpl implements AuthService {
     @Resource
     @Resource
     private LdmMapper ldmMapper;
     private LdmMapper ldmMapper;
 
 
+    @Value("${caimei.zpapi}")
+    private String zpServer;
+
     @Resource
     @Resource
     private AuthProductMapper authProductMapper;
     private AuthProductMapper authProductMapper;
 
 
@@ -88,9 +98,6 @@ public class AuthServiceImpl implements AuthService {
     @Value("${caimei.imageDomain}")
     @Value("${caimei.imageDomain}")
     private String imageDomain;
     private String imageDomain;
 
 
-    @Autowired
-    private FastFileStorageClient storageClient;
-
     @Override
     @Override
     public ResponseJson<PageInfo<AuthVo>> getAuthList(Integer listType, Integer authUserId, String authParty,
     public ResponseJson<PageInfo<AuthVo>> getAuthList(Integer listType, Integer authUserId, String authParty,
                                                       String mobile, Integer status, Integer auditStatus, Integer lowerAuditStatus,
                                                       String mobile, Integer status, Integer auditStatus, Integer lowerAuditStatus,
@@ -279,10 +286,17 @@ public class AuthServiceImpl implements AuthService {
             authMapper.deleteBanner(auth.getId());
             authMapper.deleteBanner(auth.getId());
         }
         }
         // 保存之后生成授权牌和水印授权牌
         // 保存之后生成授权牌和水印授权牌
-        String authImage = auth.getAuthImage();
+        String authImage = null;
         if (1 == auth.getAuthImageType()) {
         if (1 == auth.getAuthImageType()) {
             // 模板库生成
             // 模板库生成
-            authImage = generateAuthImage(auth.getId());
+            authImage = generateAuthImage(auth);
+            auth.setAuthImage(authImage);
+            // 添加水印
+            if (StringUtils.isNotEmpty(authImage)) {
+                auth.setPcAuthImage(addWaterMark(authImage, 1));
+                auth.setAppletsAuthImage(addWaterMark(authImage, 2));
+                authMapper.updateAuthImage(auth);
+            }
         }
         }
         // 保存轮播图
         // 保存轮播图
         if (null != bannerList) {
         if (null != bannerList) {
@@ -291,8 +305,114 @@ public class AuthServiceImpl implements AuthService {
         return ResponseJson.success("保存品牌授权成功", auth);
         return ResponseJson.success("保存品牌授权成功", auth);
     }
     }
 
 
-    private String generateAuthImage(Integer authId) {
-        AuthTemplateVo authTemplate = authMapper.getAuthTemplate(authId);
+    @Override
+    public String addWaterMark(String image,Integer type){
+        try {
+            //type:1pc,2applets
+            ClassPathResource classPathResource = new ClassPathResource("/images/newPcWaterMark.png");
+            InputStream inputStreamImg = classPathResource.getInputStream();
+            Image pcWaterMarkImg = ImageIO.read(inputStreamImg);
+            classPathResource = new ClassPathResource("/images/newAppletsWaterMark.png");
+            inputStreamImg = classPathResource.getInputStream();
+            Image appletsWaterMarkImg = ImageIO.read(inputStreamImg);
+            String img = ImageUtils.markImageByIcon(type == 1 ? pcWaterMarkImg : appletsWaterMarkImg, image, null);
+            String imagePath = null;
+            if (StringUtils.isNotEmpty(img)) {
+                MultipartFile imgFile = Base64Util.base64ToMultipart(img);
+                if (null != imgFile) {
+                    imagePath = uploadService.saveFile(imgFile);
+                }
+                log.info(">>>>>>>>>>>>>>>>水印图片上传成功:" + imagePath);
+            } else {
+                log.info(">>>>>>>>>>>>>>>>水印图片上传失败");
+            }
+            return imagePath;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    @Override
+    public String generateAuthImage(CmBrandAuthPo auth) {
+        TemplateVo authTemplate = authMapper.getAuthTemplate(auth.getId(), null, 1);
+        if (null != authTemplate) {
+            // 根据模板id设置相关数据
+            Map<String, Object> templateInfo = getTemplateInfo(authTemplate, auth);
+            String authImage = ImageUtils.generateAuthImage(templateInfo);
+            log.info("【图片上传】>>>>>>>>>>>>>>>>图片临时路径:" + authImage);
+            // 临时图片
+            File tempFile = new File(authImage);
+            String imageUrl = null;
+            try {
+                imageUrl = imageDomain + "/" + client.uploadFile(authImage);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            // 删除临时图片
+            boolean delete = tempFile.delete();
+            log.info("【图片上传】>>>>>>>>>>>>>>>>删除临时图片:" + delete);
+            return imageUrl;
+        }
+        return null;
+    }
+
+    private Map<String,Object> getTemplateInfo(TemplateVo template, CmBrandAuthPo auth) {
+        HashMap<String, Object> map = new HashMap<>();
+        Integer templateId = template.getTemplateId();
+        map.put("templateImage", template.getTemplateImage());
+        if (1 == templateId) {
+            double rate = 0.15;
+            if (StringUtils.isNotEmpty(auth.getAuthImageLogo())) {
+                // 获取授权牌logo位置
+                try {
+                    ImageIcon imageIcon = new ImageIcon(new URL(template.getTemplateImage()));
+                    Image srcImg = imageIcon.getImage();
+                    int srcWidth = srcImg.getWidth(null);
+                    ImageIcon authImageLogo = new ImageIcon(new URL(auth.getAuthImageLogo()));
+                    Image authLogo = authImageLogo.getImage();
+                    int authLogoWidth = authLogo.getWidth(null);
+                    int x = (srcWidth - (int) Math.round(238 * rate) - authLogoWidth) / 2 + (int) Math.round(238 * rate);
+                    int y = (int) Math.round(1230 * rate);
+                    map.put("addImage1_x", x);
+                    map.put("addImage1_y", y);
+                    map.put("addImage1_image", auth.getAuthImageLogo());
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            // 添加认证编号信息
+            if (StringUtils.isNotEmpty(auth.getAuthCode())) {
+                map.put("addWord1_content", auth.getAuthCode());
+                map.put("addWord1_color", "218,185,107");
+                map.put("addWord1_type", "思源宋体");
+                map.put("addWord1_style", Font.BOLD);
+                map.put("addWord1_size", (int) Math.round(90 * rate));
+                map.put("addWord1_x", (int) Math.round(2168 * rate));
+                map.put("addWord1_y", (int) Math.round(3150 * rate));
+            }
+            // 添加认证日期信息
+            if (null != auth.getAuthDate()) {
+                SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd");
+                map.put("addWord2_content", format.format(auth.getAuthDate()));
+                map.put("addWord2_color", "218,185,107");
+                map.put("addWord2_type", "思源宋体");
+                map.put("addWord2_style", Font.PLAIN);
+                map.put("addWord2_size", (int) Math.round(90 * rate));
+                map.put("addWord2_x", (int) Math.round(2085 * rate));
+                map.put("addWord2_y", (int) Math.round(3277 * rate));
+            }
+            // 添加二维码信息
+            if (StringUtils.isNotEmpty(template.getQrPosition())) {
+                String qrCodeLink = zpServer + "/" + auth.getAuthUserId() + "/app/approve/club/detail?id=" + auth.getId();
+                map.put("addQr1_link", qrCodeLink);
+                map.put("addQr1_size", template.getQrSize());
+                String[] split = template.getQrPosition().split(",");
+                map.put("addQr1_x", Integer.parseInt(split[0]));
+                map.put("addQr1_y", Integer.parseInt(split[1]));
+            }
+        }
+        return map;
     }
     }
 
 
     @Override
     @Override
@@ -357,75 +477,6 @@ public class AuthServiceImpl implements AuthService {
         return null;
         return null;
     }
     }
 
 
-    @Override
-    public ResponseJson importLdmData(Integer authUserId) {
-        List<LdmDataPo> ldmDataList = authMapper.getLdmData();
-        ldmDataList.forEach(ldmData->{
-            String lngAndLat = ldmData.getLngAndLat();
-            if (StringUtils.isNotEmpty(lngAndLat)) {
-                String[] split = lngAndLat.split(",");
-                BigDecimal lng = new BigDecimal(split[0]);
-                BigDecimal lat = new BigDecimal(split[1]);
-                ldmData.setLng(lng);
-                ldmData.setLat(lat);
-            }
-            String regId1 = ldmData.getRegId1();
-            if (StringUtils.isNotEmpty(regId1)) {
-                Integer provinceId = authMapper.getProvinceId(regId1);
-                ldmData.setProvinceId(provinceId);
-            }
-            String regId2 = ldmData.getRegId2();
-            if (StringUtils.isNotEmpty(regId2)) {
-                Integer cityId = authMapper.getCityId(regId2);
-                ldmData.setCityId(cityId);
-            }
-            String regId3 = ldmData.getRegId3();
-            if (StringUtils.isNotEmpty(regId3)) {
-                Integer townId = authMapper.getTownId(regId3);
-                ldmData.setTownId(townId);
-            }
-            String pic1 = ldmData.getPic1();
-            String pic2 = ldmData.getPic2();
-            String pic3 = ldmData.getPic3();
-            String pic4 = ldmData.getPic4();
-            String pic5 = ldmData.getPic5();
-            List<String> picList = new ArrayList<>();
-            picList.add(pic1);
-            picList.add(pic2);
-            picList.add(pic3);
-            picList.add(pic4);
-            picList.add(pic5);
-            String logo = null;
-            List<String> addPicList = new ArrayList<>();
-            for (String pic : picList) {
-                if (StringUtils.isNotEmpty(pic)) {
-                    try {
-                        String imagePath = "https://wangdian.skinovachina.com" + pic;
-                        String fileName = imagePath.substring(imagePath.lastIndexOf("/") + 1);
-                        String imageUrl = uploadService.saveFileByUrl(imagePath, fileName);
-                        addPicList.add(imageUrl);
-                        if (null == logo) {
-                            logo = imageUrl;
-                        }
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                }
-            }
-            CmBrandAuthPo authPo = new CmBrandAuthPo();
-            BeanUtils.copyProperties(ldmData, authPo);
-            authPo.setAuthUserId(authUserId);
-            authPo.setCreateBy(authUserId);
-            authPo.setLogo(logo);
-            authMapper.insertAuth(authPo);
-            // 保存轮播图
-            if (addPicList.size() > 0) {
-                addPicList.forEach(banner -> authMapper.insertBanner(authPo.getId(), banner));
-            }
-        });
-        return ResponseJson.success();
-    }
-
     @Override
     @Override
     public ResponseJson exportDataByExcel(Integer authUserId, HttpServletResponse response) {
     public ResponseJson exportDataByExcel(Integer authUserId, HttpServletResponse response) {
         try {
         try {

+ 12 - 6
src/main/java/com/caimei/service/auth/impl/AuthTemplateServiceImpl.java

@@ -26,7 +26,7 @@ public class AuthTemplateServiceImpl implements AuthTemplateService {
     private AuthTemplateMapper authTemplateMapper;
     private AuthTemplateMapper authTemplateMapper;
 
 
     @Override
     @Override
-    public ResponseJson<PageInfo<TemplateListVo>> getTemplateList(Integer listType, Integer authUserId, Integer pageNum, Integer pageSize) {
+    public ResponseJson<PageInfo<TemplateVo>> getTemplateList(Integer listType, Integer authUserId, Integer pageNum, Integer pageSize) {
         if (null == listType) {
         if (null == listType) {
             return ResponseJson.error("列表类型不能为空", null);
             return ResponseJson.error("列表类型不能为空", null);
         }
         }
@@ -34,18 +34,24 @@ public class AuthTemplateServiceImpl implements AuthTemplateService {
             return ResponseJson.error("供应商用户id不能为空", null);
             return ResponseJson.error("供应商用户id不能为空", null);
         }
         }
         PageHelper.startPage(pageNum, pageSize);
         PageHelper.startPage(pageNum, pageSize);
-        List<TemplateListVo> templateList = authTemplateMapper.getTemplateList(listType, authUserId);
-        PageInfo<TemplateListVo> pageInfo = new PageInfo<>(templateList);
+        List<TemplateVo> templateList = authTemplateMapper.getTemplateList(listType, authUserId);
+        PageInfo<TemplateVo> pageInfo = new PageInfo<>(templateList);
         return ResponseJson.success(pageInfo);
         return ResponseJson.success(pageInfo);
     }
     }
 
 
     @Override
     @Override
-    public ResponseJson saveTemplate(Integer templateId, String templateImage, Integer authUserId, Integer status, String qrPosition) {
+    public ResponseJson saveTemplate(Integer templateId, String templateImage, Integer authUserId, Integer status, String qrPosition, Integer qrSize, Integer authFlag, Integer productFlag) {
         boolean insertFlag = null == templateId;
         boolean insertFlag = null == templateId;
         if (insertFlag) {
         if (insertFlag) {
-            authTemplateMapper.insertTemplate(templateImage, authUserId);
+            authTemplateMapper.insertTemplate(templateImage, authUserId, qrPosition, qrSize);
         } else {
         } else {
-            authTemplateMapper.updateSelective(templateId, templateImage, authUserId, status, qrPosition);
+            if (null != authFlag && 1 == authFlag) {
+                authTemplateMapper.clearAuthFlag(authUserId);
+            }
+            if (null != authFlag && 1 == productFlag) {
+                authTemplateMapper.clearProductFlag(authUserId);
+            }
+            authTemplateMapper.updateSelective(templateId, templateImage, authUserId, status, qrPosition, authFlag, productFlag);
         }
         }
         return ResponseJson.success();
         return ResponseJson.success();
     }
     }

+ 0 - 3
src/main/java/com/caimei/service/auth/impl/LogisticsServiceImpl.java

@@ -31,9 +31,6 @@ public class LogisticsServiceImpl implements LogisticsService {
     @Resource
     @Resource
     private AuthMapper authMapper;
     private AuthMapper authMapper;
 
 
-    @Value("${spring.profiles.active}")
-    private String active;
-
     @Value("${caimei.imageDomain}")
     @Value("${caimei.imageDomain}")
     private String imageDomain;
     private String imageDomain;
 
 

+ 26 - 0
src/main/java/com/caimei/service/auth/impl/ShopServiceImpl.java

@@ -1,13 +1,16 @@
 package com.caimei.service.auth.impl;
 package com.caimei.service.auth.impl;
 
 
 import com.caimei.components.RedisService;
 import com.caimei.components.RedisService;
+import com.caimei.mapper.cmMapper.AuthMapper;
 import com.caimei.mapper.cmMapper.ShopMapper;
 import com.caimei.mapper.cmMapper.ShopMapper;
 import com.caimei.mapper.cmMapper.UserMapper;
 import com.caimei.mapper.cmMapper.UserMapper;
 import com.caimei.model.ResponseJson;
 import com.caimei.model.ResponseJson;
 import com.caimei.model.dto.ShopInfoDto;
 import com.caimei.model.dto.ShopInfoDto;
 import com.caimei.model.po.CmBrandAuthFilePo;
 import com.caimei.model.po.CmBrandAuthFilePo;
+import com.caimei.model.po.CmBrandAuthPo;
 import com.caimei.model.po.UserPo;
 import com.caimei.model.po.UserPo;
 import com.caimei.model.vo.*;
 import com.caimei.model.vo.*;
+import com.caimei.service.auth.AuthService;
 import com.caimei.service.auth.ShopService;
 import com.caimei.service.auth.ShopService;
 import com.caimei.service.sys.SysUserService;
 import com.caimei.service.sys.SysUserService;
 import com.caimei.utils.*;
 import com.caimei.utils.*;
@@ -37,9 +40,14 @@ public class ShopServiceImpl implements ShopService {
 
 
     @Resource
     @Resource
     private RedisService redisService;
     private RedisService redisService;
+
+    @Resource
+    private AuthService authService;
     @Resource
     @Resource
     private ShopMapper shopMapper;
     private ShopMapper shopMapper;
     @Resource
     @Resource
+    private AuthMapper authMapper;
+    @Resource
     private UserMapper userMapper;
     private UserMapper userMapper;
     @Resource
     @Resource
     private SysUserService sysUserService;
     private SysUserService sysUserService;
@@ -500,4 +508,22 @@ public class ShopServiceImpl implements ShopService {
         shopMapper.bindLoginAccount(authUserId, loginAccount);
         shopMapper.bindLoginAccount(authUserId, loginAccount);
         return ResponseJson.success("绑定成功");
         return ResponseJson.success("绑定成功");
     }
     }
+
+    @Override
+    public ResponseJson updateAllAuthImage(Integer authUserId) {
+        List<CmBrandAuthPo> authList = authMapper.getAllAuth(authUserId);
+        authList.forEach(auth->{
+            String authImage = null;
+            if (1 == auth.getAuthImageType()) {
+                authImage = authService.generateAuthImage(auth);
+                auth.setAuthImage(authImage);
+                if (StringUtils.isNotEmpty(authImage)) {
+                    auth.setPcAuthImage(authService.addWaterMark(authImage, 1));
+                    auth.setAppletsAuthImage(authService.addWaterMark(authImage, 2));
+                    authMapper.updateAuthImage(auth);
+                }
+            }
+        });
+        return ResponseJson.success();
+    }
 }
 }

+ 348 - 3
src/main/java/com/caimei/utils/ImageUtils.java

@@ -5,6 +5,10 @@ import com.google.zxing.BarcodeFormat;
 import com.google.zxing.EncodeHintType;
 import com.google.zxing.EncodeHintType;
 import com.google.zxing.MultiFormatWriter;
 import com.google.zxing.MultiFormatWriter;
 import com.google.zxing.common.BitMatrix;
 import com.google.zxing.common.BitMatrix;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 import org.springframework.util.StringUtils;
 import sun.misc.BASE64Encoder;
 import sun.misc.BASE64Encoder;
 
 
@@ -12,11 +16,13 @@ import javax.imageio.ImageIO;
 import javax.swing.*;
 import javax.swing.*;
 import java.awt.*;
 import java.awt.*;
 import java.awt.image.BufferedImage;
 import java.awt.image.BufferedImage;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
+import java.io.*;
 import java.net.URL;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Map;
+import java.util.UUID;
 
 
 /**
 /**
  * Description
  * Description
@@ -24,9 +30,18 @@ import java.util.Map;
  * @author : Charles
  * @author : Charles
  * @date : 2020/3/16
  * @date : 2020/3/16
  */
  */
+@Slf4j
+@Component
 public class ImageUtils {
 public class ImageUtils {
 
 
-	public static String getImageURL(String dirName, String src, String domain) {
+    private static String active;
+
+    @Value("${spring.profiles.active}")
+    public void setActive(String actives) {
+        active = actives;
+    }
+
+    public static String getImageURL(String dirName, String src, String domain) {
 		return getImageURL(dirName, src, 0,domain);
 		return getImageURL(dirName, src, 0,domain);
 	}
 	}
 
 
@@ -312,4 +327,334 @@ public class ImageUtils {
 		}
 		}
 		return null;
 		return null;
 	}
 	}
+
+
+	private static String addImage(String srcImgPath, String addImage, Integer x, Integer y) {
+		FileOutputStream outImgStream = null;
+		String imagePath = "/mnt/newdatadrive/data/runtime/jar-instance/zplma/tempImage";
+		if ("dev".equals(active)) {
+			imagePath = "D:\\WorkSpace\\file\\tempImage\\";
+		}
+		try {
+			// 读取原图片信息
+			File srcImgFile = new File(srcImgPath);
+			Image srcImg = ImageIO.read(srcImgFile);
+			int srcImgWidth = srcImg.getWidth(null);
+			int srcImgHeight = srcImg.getHeight(null);
+			BufferedImage buffImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);
+
+
+			// 机构名称图片
+			URL url = new URL(addImage);
+			InputStream inputStream = url.openStream();
+			BufferedImage authImage = ImageIO.read(inputStream);
+
+			// 1、得到画笔对象
+			Graphics2D g = buffImg.createGraphics();
+
+			// 2、设置对线段的锯齿状边缘处理
+			g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
+					RenderingHints.VALUE_INTERPOLATION_BILINEAR);
+
+			g.drawImage(
+					srcImg.getScaledInstance(srcImg.getWidth(null),
+							srcImg.getHeight(null), Image.SCALE_SMOOTH), 0, 0,
+					null);
+			g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
+					1f));
+
+			// 6、添加图片的位置
+			g.drawImage(authImage, x, y, null);
+			g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
+			// 7、释放资源
+			g.dispose();
+
+			//将图片写入流中
+			String fileType = srcImgPath.substring(srcImgPath.lastIndexOf(".") + 1);
+
+
+			// 输出图片
+			UUID uuid = UUID.randomUUID();
+			imagePath += uuid + "." + fileType;
+			outImgStream = new FileOutputStream(imagePath);
+			ImageIO.write(buffImg, fileType, outImgStream);
+			outImgStream.flush();
+			outImgStream.close();
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		} finally {
+			try {
+				if (null != outImgStream) {
+					outImgStream.close();
+				}
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+		return imagePath;
+	}
+
+	private static String addWord(String srcImgPath, String content, String type, String color, int style, int size, int x, int y) {
+		FileOutputStream outImgStream = null;
+		String imagePath = "/mnt/newdatadrive/data/runtime/jar-instance/zplma/tempImage";
+		if ("dev".equals(active)) {
+			imagePath = "D:\\WorkSpace\\file\\tempImage\\";
+		}
+		try {
+			// 读取原图片信息
+			File srcImgFile = new File(srcImgPath);
+			Image srcImg = ImageIO.read(srcImgFile);
+			int srcImgWidth = srcImg.getWidth(null);
+			int srcImgHeight = srcImg.getHeight(null);
+			// 加水印
+			BufferedImage buffImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);
+			Graphics2D g = buffImg.createGraphics();
+			g.drawImage(srcImg, 0, 0, srcImgWidth, srcImgHeight, null);
+			//根据图片的背景设置水印颜色
+			String[] split = color.split(",");
+			g.setColor(new Color(Integer.parseInt(split[0]), Integer.parseInt(split[1]), Integer.parseInt(split[2])));
+			//设置旋转角度
+			g.rotate(0, 0, 0);
+			//设置水印透明度
+			g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 1F));
+
+			// 画认证编号
+			Font font = new Font(type, style, size);
+
+			g.setFont(font);
+			g.drawString(content, x, y);
+			g.dispose();
+
+			String fileType = srcImgPath.substring(srcImgPath.lastIndexOf(".") + 1);
+
+			// 输出图片
+			UUID uuid = UUID.randomUUID();
+			imagePath += uuid + "." + fileType;
+			outImgStream = new FileOutputStream(imagePath);
+			ImageIO.write(buffImg, fileType, outImgStream);
+			outImgStream.flush();
+			outImgStream.close();
+		} catch (Exception e) {
+			e.printStackTrace();
+		} finally {
+			if (outImgStream != null) {
+				try {
+					outImgStream.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+		}
+		return imagePath;
+	}
+
+	private static String addQrCode(String srcImgPath, String qrCodeLink, int qrCodeSize, int x, int y){
+		FileOutputStream outImgStream = null;
+		String imagePath = "/mnt/newdatadrive/data/runtime/jar-instance/zplma/tempImage";
+		if ("dev".equals(active)) {
+			imagePath = "D:\\WorkSpace\\file\\tempImage\\";
+		}
+		try {
+
+			// 读取原图片信息
+			File srcImgFile = new File(srcImgPath);
+			Image srcImg = ImageIO.read(srcImgFile);
+			int srcImgWidth = srcImg.getWidth(null);
+			int srcImgHeight = srcImg.getHeight(null);
+			// 加水印
+			BufferedImage buffImg = new BufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);
+
+
+			//二维码图片
+//            int qrCodeSize = getQrCodeSize(srcWidth);
+			BufferedImage qrCodeImg = createRealQrCode(qrCodeLink, qrCodeSize);
+
+			// 1、得到画笔对象
+			Graphics2D g = buffImg.createGraphics();
+
+			// 2、设置对线段的锯齿状边缘处理
+			g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
+					RenderingHints.VALUE_INTERPOLATION_BILINEAR);
+
+			g.drawImage(
+					srcImg.getScaledInstance(srcImg.getWidth(null),
+							srcImg.getHeight(null), Image.SCALE_SMOOTH), 0, 0,
+					null);
+			g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
+					1f));
+
+			// 6、二维码图片的位置
+
+			g.drawImage(qrCodeImg, x, y, null);
+			g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
+			// 7、释放资源
+			g.dispose();
+
+
+			String fileType = srcImgPath.substring(srcImgPath.lastIndexOf(".") + 1);
+
+			// 输出图片
+			UUID uuid = UUID.randomUUID();
+			imagePath += uuid + "." + fileType;
+			outImgStream = new FileOutputStream(imagePath);
+			ImageIO.write(buffImg, fileType, outImgStream);
+			outImgStream.flush();
+			outImgStream.close();
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		} finally {
+			try {
+				if (null != outImgStream) {
+					outImgStream.close();
+				}
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+		return imagePath;
+	}
+
+	public static BufferedImage createRealQrCode(String url,int qrCodeSize) {
+		int BLACK = 0xFF000000;
+		int WHITE = 0xFFFFFFFF;
+		try {
+			Map<EncodeHintType, String> hints = new HashMap<>();
+			hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
+			//设置二维码白边的大小
+			hints.put(EncodeHintType.MARGIN, "0");
+			BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, qrCodeSize, qrCodeSize, hints);
+			//自定义白边边框宽度
+			int margin = 1;
+			bitMatrix = updateBit(bitMatrix, margin);
+			int width = bitMatrix.getWidth();
+			int height = bitMatrix.getHeight();
+			BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+			for (int x = 0; x < width; x++) {
+				for (int y = 0; y < height; y++) {
+					image.setRGB(x, y, bitMatrix.get(x, y) ? BLACK : WHITE);
+				}
+			}
+			//根据size放大、缩小生成的二维码
+			image = zoomInImage(image,qrCodeSize,qrCodeSize);
+			return image;
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	/**
+	 * 图片放大缩小
+	 */
+	public static BufferedImage  zoomInImage(BufferedImage  originalImage, int width, int height){
+		BufferedImage newImage = new BufferedImage(width,height,originalImage.getType());
+		Graphics g = newImage.getGraphics();
+		g.drawImage(originalImage, 0,0,width,height,null);
+		g.dispose();
+		return newImage;
+	}
+
+	/**
+	 * 设置白边
+	 * @param matrix
+	 * @param margin
+	 * @return
+	 */
+	private static BitMatrix updateBit(BitMatrix matrix, int margin){
+		int tempM = margin*2;
+		//获取二维码图案的属性
+		int[] rec = matrix.getEnclosingRectangle();
+		int resWidth = rec[2] + tempM;
+		int resHeight = rec[3] + tempM;
+		// 按照自定义边框生成新的BitMatrix
+		BitMatrix resMatrix = new BitMatrix(resWidth, resHeight);
+		resMatrix.clear();
+		//循环,将二维码图案绘制到新的bitMatrix中
+		for(int i= margin; i < resWidth- margin; i++){
+			for(int j=margin; j < resHeight-margin; j++){
+				if(matrix.get(i-margin + rec[0], j-margin + rec[1])){
+					resMatrix.set(i,j);
+				}
+			}
+		}
+		return resMatrix;
+	}
+
+	public static String generateAuthImage(Map<String, Object> templateInfo) {
+		// 底图
+		String templateImage = templateInfo.get("templateImage").toString();
+		List<String> tempImageList = new ArrayList<>();
+		// 将底图临时存储到本地
+		String authImagePath = "";
+		String filePath = "/mnt/newdatadrive/data/runtime/jar-instance/zplma/tempImage/";
+		if ("dev".equals(active)) {
+			filePath = "D:\\WorkSpace\\file\\tempImage\\";
+		}
+		try {
+			URL url = new URL(templateImage);
+			InputStream inputStream = url.openStream();
+			BufferedImage authImage = ImageIO.read(inputStream);
+            String extName = templateImage.substring(templateImage.lastIndexOf(".") + 1);
+			UUID uuid = UUID.randomUUID();
+            authImagePath = filePath + uuid + "." + extName;
+			String tempPath = authImagePath;
+			tempImageList.add(tempPath);
+			FileOutputStream outImgStream = new FileOutputStream(authImagePath);
+            ImageIO.write(authImage, extName, outImgStream);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		// 添加图片
+		for (int i = 1; i < 5; i++) {
+			Object object = templateInfo.get("addImage" + i + "_image");
+			if (null != object) {
+				String addImage = object.toString();
+				int x = Integer.parseInt(templateInfo.get("addImage" + i + "_x").toString());
+				int y = Integer.parseInt(templateInfo.get("addImage" + i + "_y").toString());
+				authImagePath = addImage(authImagePath, addImage, x, y);
+				tempImageList.add(authImagePath);
+			}
+		}
+		// 添加文字
+		for (int i = 1; i < 5; i++) {
+			Object object = templateInfo.get("addWord" + i + "_content");
+			if (null != object) {
+				String content = object.toString();
+				String type = templateInfo.get("addWord" + i + "_type").toString();
+				String color = templateInfo.get("addWord" + i + "_color").toString();
+				int style = Integer.parseInt(templateInfo.get("addWord" + i + "_style").toString());
+				int size = Integer.parseInt(templateInfo.get("addWord" + i + "_size").toString());
+				int x = Integer.parseInt(templateInfo.get("addWord" + i + "_x").toString());
+				int y = Integer.parseInt(templateInfo.get("addWord" + i + "_y").toString());
+				authImagePath = addWord(authImagePath, content, type, color, style, size, x, y);
+				tempImageList.add(authImagePath);
+			}
+		}
+		// 添加二维码
+		for (int i = 1; i < 5; i++) {
+			Object object = templateInfo.get("addQr" + i + "_link");
+			if (null != object) {
+				String qrCodeLink = object.toString();
+				int qrCodeSize = Integer.parseInt(templateInfo.get("addQr" + i + "_size").toString());
+				int x = Integer.parseInt(templateInfo.get("addQr" + i + "_x").toString());
+				int y = Integer.parseInt(templateInfo.get("addQr" + i + "_y").toString());
+				authImagePath = addQrCode(authImagePath, qrCodeLink, qrCodeSize, x, y);
+				tempImageList.add(authImagePath);
+			}
+		}
+		int lastIndex = tempImageList.size() - 1;
+		if (lastIndex >= 0) {
+			tempImageList.remove(lastIndex);
+		}
+		tempImageList.forEach(tempImage->{
+			// 临时图片
+			File tempFile = new File(tempImage);
+			// 删除临时图片
+			boolean delete = tempFile.delete();
+			log.info("【图片上传】>>>>>>>>>>>>>>>>删除临时图片:" + delete);
+		});
+		return authImagePath;
+	}
 }
 }

+ 32 - 0
src/main/resources/mapper/AuthMapper.xml

@@ -86,6 +86,13 @@
         set sendStatus = 1
         set sendStatus = 1
         where id = #{authId}
         where id = #{authId}
     </update>
     </update>
+    <update id="updateAuthImage">
+        update cm_brand_auth
+        set authImage        = #{authImage},
+            pcAuthImage      = #{pcAuthImage},
+            appletsAuthImage = #{appletsAuthImage}
+        where id = #{id}
+    </update>
     <delete id="deleteBanner">
     <delete id="deleteBanner">
         delete from cm_brand_auth_banner where authId = #{authId}
         delete from cm_brand_auth_banner where authId = #{authId}
     </delete>
     </delete>
@@ -338,4 +345,29 @@
         where userIdentity = 1
         where userIdentity = 1
         limit 1
         limit 1
     </select>
     </select>
+    <select id="getAuthTemplate" resultType="com.caimei.model.vo.TemplateVo">
+        select at.id as templateId, templateImage, qrPosition, qrSize
+        from cm_brand_auth_template at
+            left join cm_brand_auth a on at.authUserId = a.authUserId
+        where at.status = 1
+        <if test="templateType == 1">
+            and at.authFlag = 1
+        </if>
+        <if test="templateType == 2">
+            and at.productFlag = 1
+        </if>
+        <if test="authId != null">
+            and a.id = #{authId}
+        </if>
+        <if test="authUserId != null">
+            and at.authUserId = #{authUserId}
+        </if>
+        limit 1
+    </select>
+    <select id="getAllAuth" resultType="com.caimei.model.po.CmBrandAuthPo">
+        select id, authUserId, authImageType, authCode, authDate, authImageLogo
+        from cm_brand_auth
+        where authUserId = #{authUserId}
+          and delFlag = 0
+    </select>
 </mapper>
 </mapper>

+ 19 - 3
src/main/resources/mapper/AuthTemplateMapper.xml

@@ -2,8 +2,8 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.caimei.mapper.cmMapper.AuthTemplateMapper">
 <mapper namespace="com.caimei.mapper.cmMapper.AuthTemplateMapper">
     <insert id="insertTemplate">
     <insert id="insertTemplate">
-        insert into cm_brand_auth_template (authUserId, templateImage)
-        values (#{authUserId}, #{templateImage})
+        insert into cm_brand_auth_template (authUserId, templateImage, qrPosition, qrSize)
+        values (#{authUserId}, #{templateImage}, #{qrPosition}, #{qrSize})
     </insert>
     </insert>
     <update id="updateSelective">
     <update id="updateSelective">
         update cm_brand_auth_template
         update cm_brand_auth_template
@@ -20,11 +20,27 @@
             <if test="qrPosition != null and qrPosition != ''">
             <if test="qrPosition != null and qrPosition != ''">
                 qrPosition = #{qrPosition},
                 qrPosition = #{qrPosition},
             </if>
             </if>
+            <if test="authFlag != null and authFlag == 1">
+                authFlag = 1,
+            </if>
+            <if test="productFlag != null and productFlag == 1">
+                productFlag = 1,
+            </if>
         </set>
         </set>
         where id = #{templateId}
         where id = #{templateId}
     </update>
     </update>
+    <update id="clearAuthFlag">
+        update cm_brand_auth_template
+        set authFlag = 0
+        where authUserId = #{authUserId}
+    </update>
+    <update id="clearProductFlag">
+        update cm_brand_auth_template
+        set productFlag = 1
+        where authUserId = #{authUserId}
+    </update>
 
 
-    <select id="getTemplateList" resultType="com.caimei.model.vo.TemplateListVo">
+    <select id="getTemplateList" resultType="com.caimei.model.vo.TemplateVo">
         select id as templateId,authUserId, templateImage, authFlag, productFlag, qrPosition, status, addTime
         select id as templateId,authUserId, templateImage, authFlag, productFlag, qrPosition, status, addTime
         from cm_brand_auth_template
         from cm_brand_auth_template
         <where>
         <where>