Aslee 3 роки тому
батько
коміт
367f964daa

+ 9 - 3
src/main/java/com/caimei/controller/AuthProductApi.java

@@ -1,12 +1,9 @@
 package com.caimei.controller;
 
-import com.alibaba.fastjson.JSONObject;
 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.ShopFormVo;
-import com.caimei.model.vo.ShopListVo;
 import com.caimei.service.AuthProductService;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
@@ -109,4 +106,13 @@ public class AuthProductApi {
     public ResponseJson<ProductFormVo> getProductFormData(Integer productId) {
         return authProductService.getProductFormData(productId);
     }
+
+    /**
+     * 更新所有商品的水印图片
+     */
+    @ApiOperation("更新所有商品的水印图片")
+    @PostMapping("/update/all/watermark")
+    public ResponseJson updateAllWatermark(){
+        return authProductService.updateAllWaterMark();
+    }
 }

+ 1 - 1
src/main/java/com/caimei/controller/ShopApi.java

@@ -193,7 +193,7 @@ public class ShopApi {
             @ApiImplicitParam(name = "file", required = false, value = "代理声明文件"),
     })
     @PostMapping("/upload/file")
-    public ResponseJson<Integer> uploadFile(Integer authUserId, Integer brandId, MultipartFile file) {
+    public ResponseJson<FileVo> uploadFile(Integer authUserId, Integer brandId, MultipartFile file) {
         return shopService.uploadFile(authUserId, brandId, file);
     }
 

+ 4 - 0
src/main/java/com/caimei/mapper/AuthProductMapper.java

@@ -41,4 +41,8 @@ public interface AuthProductMapper {
     List<Integer> getProductIdsByAuthId(Integer authId);
 
     ProductPo getImageByProductId(Integer productId);
+
+    List<ProductPo> getAllImage();
+
+    void updateImageByProductId(ProductPo product);
 }

+ 20 - 0
src/main/java/com/caimei/model/vo/FileVo.java

@@ -0,0 +1,20 @@
+package com.caimei.model.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * cm_brand_auth
+ * @author Aslee
+ * @date 2021/5/17
+ */
+@Data
+public class FileVo {
+    @ApiModelProperty("文件id")
+    private Integer fileId;
+
+    @ApiModelProperty("文件名称")
+    private String fileName;
+}

+ 6 - 0
src/main/java/com/caimei/service/AuthProductService.java

@@ -74,4 +74,10 @@ public interface AuthProductService {
      * @return  Integer
      */
     List<Integer> getProductIdsByAuthId(Integer authId);
+
+    /**
+     * 更新所有商品的水印图片
+     * @return  ResponseJson
+     */
+    ResponseJson updateAllWaterMark();
 }

+ 2 - 2
src/main/java/com/caimei/service/ShopService.java

@@ -48,11 +48,11 @@ public interface ShopService {
      * 上传文件
      *
      * @param authUserId 供应商用户id
-     * @param brandId:品牌id
+     * @param brandId :品牌id
      * @param file       上传文件
      * @return
      */
-    ResponseJson<Integer> uploadFile(Integer authUserId, Integer brandId, MultipartFile file);
+    ResponseJson<FileVo> uploadFile(Integer authUserId, Integer brandId, MultipartFile file);
 
     /**
      * 添加供应商

+ 37 - 7
src/main/java/com/caimei/service/impl/AuthProductServiceImpl.java

@@ -23,7 +23,6 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.imageio.ImageIO;
-import javax.validation.constraints.NotNull;
 import java.awt.*;
 import java.io.File;
 import java.io.IOException;
@@ -176,13 +175,15 @@ public class AuthProductServiceImpl implements AuthProductService {
             // 商品id
             product.setProductId(productId);
             ProductPo productImages = authProductMapper.getImageByProductId(productId);
-            if (StringUtils.isNotBlank(product.getProductImage()) && !product.getProductImage().equals(productImages.getProductImage())) {
+            boolean updateImageFlag = (StringUtils.isNotBlank(product.getProductImage()) && !product.getProductImage().equals(productImages.getProductImage())) || (StringUtils.isEmpty(product.getPcImage()) || StringUtils.isEmpty(product.getAppletsImage()));
+            if (updateImageFlag) {
                 //商品图片添加水印
                 product.setPcImage(addWaterMark(product.getProductImage(), 1));
                 product.setAppletsImage(addWaterMark(product.getProductImage(), 2));
             }
-            if (StringUtils.isNotBlank(product.getCertificateImage()) && !product.getCertificateImage().equals(productImages.getCertificateImage())) {
-                //商品图片添加水印
+            updateImageFlag = (StringUtils.isNotBlank(product.getCertificateImage()) && !product.getCertificateImage().equals(productImages.getCertificateImage())) || (StringUtils.isEmpty(product.getPcCertificateImage()) || StringUtils.isEmpty(product.getPcCertificateImage()));
+            if (updateImageFlag) {
+                //授权牌照添加水印
                 product.setPcCertificateImage(addWaterMark(product.getCertificateImage(), 1));
                 product.setAppletsCertificateImage(addWaterMark(product.getCertificateImage(), 2));
             }
@@ -208,9 +209,14 @@ public class AuthProductServiceImpl implements AuthProductService {
         classPathResource = new ClassPathResource("/images/appletsWaterMark.png");
         inputStreamImg = classPathResource.getInputStream();
         Image appletsWaterMarkImg = ImageIO.read(inputStreamImg);
-        String Img = ImageUtils.markImageByIcon(type == 1 ? pcWaterMarkImg : appletsWaterMarkImg, image, null);
-        MultipartFile ImgFile = Base64Util.base64ToMultipart(Img);
-        String imagePath = imageDomain + "/" + saveImage(ImgFile);
+        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 = imageDomain + "/" + saveImage(imgFile);
+            }
+        }
         log.info(">>>>>>>>>>>>>>>>水印图片上传成功:" + imagePath);
         return imagePath;
     }
@@ -247,4 +253,28 @@ public class AuthProductServiceImpl implements AuthProductService {
         log.info(">>>>>>>>>>>>>>>>水印图片上传路径:" + filePath);
         return client.uploadFile(filePath);
     }
+
+    @Override
+    public ResponseJson updateAllWaterMark() {
+        List<ProductPo> productList = authProductMapper.getAllImage();
+        productList.forEach(product->{
+            try {
+                if (StringUtils.isNotEmpty(product.getProductImage())) {
+                    //商品图片添加水印
+                    product.setPcImage(addWaterMark(product.getProductImage(), 1));
+                    product.setAppletsImage(addWaterMark(product.getProductImage(), 2));
+                }
+                if (StringUtils.isNotEmpty(product.getCertificateImage())) {
+                    //授权牌照添加水印
+                    product.setPcCertificateImage(addWaterMark(product.getCertificateImage(), 1));
+                    product.setAppletsCertificateImage(addWaterMark(product.getCertificateImage(), 2));
+                }
+                // 更新授权商品
+                authProductMapper.updateImageByProductId(product);
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        });
+        return ResponseJson.success("更新商品水印图片成功");
+    }
 }

+ 5 - 2
src/main/java/com/caimei/service/impl/ShopServiceImpl.java

@@ -81,7 +81,7 @@ public class ShopServiceImpl implements ShopService {
     }
 
     @Override
-    public ResponseJson<Integer> uploadFile(Integer authUserId, Integer brandId, MultipartFile file) {
+    public ResponseJson<FileVo> uploadFile(Integer authUserId, Integer brandId, MultipartFile file) {
         authUserId = (null != authUserId && authUserId > 0) ? authUserId : null;
         String fileAllName = file.getOriginalFilename();
         String fileType = fileAllName.substring(fileAllName.lastIndexOf(".") + 1);
@@ -127,7 +127,10 @@ public class ShopServiceImpl implements ShopService {
                 //删除本地文件
                 OSSUtils.deleteFile(uploadFile);
             }
-            return ResponseJson.success("文件上传成功", cmBrandAuthFile.getId());
+            FileVo fileVo = new FileVo();
+            fileVo.setFileId(cmBrandAuthFile.getId());
+            fileVo.setFileName(cmBrandAuthFile.getName());
+            return ResponseJson.success("文件上传成功", fileVo);
         } catch (Exception e) {
             log.error("<<<<< 文件上传异常 >>>>>");
             return ResponseJson.error("文件上传失败", null);

+ 26 - 1
src/main/resources/mapper/AuthProductMapper.xml

@@ -43,6 +43,14 @@
         </set>
         where id = #{productId};
     </update>
+    <update id="updateImageByProductId">
+        update cm_brand_auth_product
+        set `pcImage`                 = #{pcImage},
+            `appletsImage`            = #{appletsImage},
+            `pcCertificateImage`      = #{pcCertificateImage},
+            `appletsCertificateImage` = #{appletsCertificateImage}
+        where id = #{productId};
+    </update>
     <delete id="deleteProductByProductId">
         delete from cm_brand_auth_product where id = #{productId}
     </delete>
@@ -86,6 +94,23 @@
         select id from cm_brand_auth_product where authId = #{authId}
     </select>
     <select id="getImageByProductId" resultType="com.caimei.model.po.ProductPo">
-        select image as productImage,certificateImage from cm_brand_auth_product where id = #{productId}
+        select image as productImage,
+               pcImage,
+               appletsImage,
+               certificateImage,
+               pcCertificateImage,
+               appletsCertificateImage
+        from cm_brand_auth_product
+        where id = #{productId}
+    </select>
+    <select id="getAllImage" resultType="com.caimei.model.po.ProductPo">
+        select id as productId,
+               image as productImage,
+               pcImage,
+               appletsImage,
+               certificateImage,
+               pcCertificateImage,
+               appletsCertificateImage
+        from cm_brand_auth_product
     </select>
 </mapper>

+ 16 - 0
src/test/java/com/caimei/AdminApplicationTests.java

@@ -1,20 +1,30 @@
 package com.caimei;
 
+import com.caimei.config.FastDfsClient;
+import com.caimei.service.AuthProductService;
+import com.caimei.utils.Base64Util;
 import com.caimei.utils.ImageUtils;
 import com.caimei.utils.JwtUtil;
 import com.caimei.utils.OSSUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.core.io.ClassPathResource;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.imageio.ImageIO;
 import java.awt.*;
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.UUID;
 
 @SpringBootTest
 public class AdminApplicationTests {
 
+
     @Test
     public void JWTToken(){
         OSSUtils.deleteSingleFile("5dbb6eb668174438ae5f9b5a1d99f7cf.ppt");
@@ -28,5 +38,11 @@ public class AdminApplicationTests {
         classPathResource = new ClassPathResource("/images/appletsWaterMark.png");
         inputStreamImg = classPathResource.getInputStream();
         Image appletsWaterMarkImg = ImageIO.read(inputStreamImg);
+        String img = ImageUtils.markImageByIcon(pcWaterMarkImg, "https://img-b.caimei365.com/group1/M00/03/3A/Cmgy62CsZKWALkD8AAUjzdv0-wk753.jpg", null);
+        String img1 = ImageUtils.markImageByIcon(appletsWaterMarkImg, "https://img-b.caimei365.com/group1/M00/03/3A/Cmgy62CsZKWALkD8AAUjzdv0-wk753.jpg", null);
+        System.out.println(img);
+        System.out.println(img1);
     }
+
+
 }