Sfoglia il codice sorgente

保养图片加水印

yang 4 anni fa
parent
commit
8b441d0b96

+ 10 - 1
lift-business-service/src/main/java/cn/com/ty/lift/business/maintenance/dao/mapper/MaintenanceRecordMapper.java

@@ -72,7 +72,7 @@ public interface MaintenanceRecordMapper extends BaseMapper<MaintenanceRecord> {
 
     IPage<MtRecordResponse> pageByLift(IPage<MtRecordResponse> page, @Param("cond") MtRecordRequest request);
 
-    MaintenanceTask queryMaintenanceTask(@Param("mtCompanyId") Long mtCompanyId,@Param("liftId") Long liftId);
+    MaintenanceTask queryMaintenanceTask(@Param("mtCompanyId") Long mtCompanyId, @Param("liftId") Long liftId);
 
     @Select("SELECT img_url FROM mt_record_img WHERE mt_record_id = #{recordId}")
     List<String> getMaintenanceRecordUrl(Long recordId);
@@ -85,4 +85,13 @@ public interface MaintenanceRecordMapper extends BaseMapper<MaintenanceRecord> {
 
     @Select("SELECT user_id,name FROM user_info WHERE user_id in (${userIds})")
     List<Map<String, Object>> selectUserBy(@Param("userIds") String userIds);
+
+    /**
+     * 用户ID获取用户姓名
+     *
+     * @param userId
+     * @return
+     */
+    @Select("SELECT name FROM user_info WHERE user_id = #{userId}")
+    String getUserNameById(@Param("userId") Long userId);
 }

+ 59 - 2
lift-business-service/src/main/java/cn/com/ty/lift/business/maintenance/service/MaintenanceRecordService.java

@@ -31,6 +31,7 @@ import cn.com.ty.lift.common.verify.Val;
 import cn.com.ty.lift.common.verify.Validate;
 import cn.com.ty.lift.common.verify.ValidateException;
 import cn.com.xwy.boot.web.dto.RestResponse;
+import cn.hutool.core.codec.Base64;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.IterUtil;
 import cn.hutool.core.io.FileUtil;
@@ -502,10 +503,20 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
             return RestResponse.fail(MessageUtils.get("msg.modify.fail"));
         }
         List<MtRecordImg> imageList = new ArrayList<>();
-        //更新保养图片
+
+        //当前时间
+        String waterTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());
+        //电梯注册码
+        String waterRegistrationCode = liftService.getBaseMapper().selectById(oldRecord.getLiftId()).getRegistrationCode();
+        //当前维保工名称
+        String name = baseMapper.getUserNameById(oldRecord.getWorkerId1());
+
+        //生成水印后缀
+        String suffix = generateWatermark(name, waterTime, waterRegistrationCode);
+
         request.getRecordImageList().forEach(entry -> {
             MtRecordImg image = new MtRecordImg();
-            image.setImgUrl(entry);
+            image.setImgUrl(entry+suffix);
             image.setMtRecordId(record.getId());
             imageList.add(image);
         });
@@ -543,6 +554,52 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
         return RestResponse.success(null, MessageUtils.get("msg.modify.success"));
     }
 
+    /**
+     * 生成水印后缀
+     *
+     * @param userName         用户名
+     * @param time             时间
+     * @param registrationCode 电梯注册码
+     * @return
+     */
+    private String generateWatermark(String userName, String time, String registrationCode) {
+
+        if (Objects.isNull(userName) || Objects.isNull(time) || Objects.isNull(registrationCode)) {
+            throw new RuntimeException("生产图片参数校验错误!");
+        }
+
+        StringBuffer buffer = new StringBuffer();
+        //图片固定格式
+        buffer.append("?x-oss-process=image/auto-orient,1/quality,q_90/watermark,image_bG9nby9sb2dvLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSxQXzMw,g_se,x_10,y_10");
+        //用户名
+        buffer.append("/watermark,text_");
+        buffer.append(toBase64(userName));
+        buffer.append(",color_2D78B6,size_30,g_sw,x_10,y_90");
+        //时间
+        buffer.append("/watermark,text_");
+        buffer.append(toBase64(time));
+        buffer.append(",color_2D78B6,size_30,g_sw,x_10,y_50");
+        //电梯注册码
+        buffer.append("/watermark,text_");
+        buffer.append(toBase64(registrationCode));
+        buffer.append(",color_2D78B6,size_30,g_sw,x_10,y_10");
+
+        return buffer.toString();
+    }
+
+
+    /**
+     * 字符串base64编码(阿里云oss特定的需要格式)
+     *
+     * @param str
+     * @return
+     */
+    private String toBase64(String str) {
+        String encode = Base64.encode(str);
+        return encode.replaceAll("\\+", "-").replaceAll("/", "_").replaceAll("=", "");
+    }
+
+
     /**
      * @param id 保养记录id
      * @return 保养信息详情