소스 검색

feat: 审核任务 释放图片

shc 3 년 전
부모
커밋
b32106de51
1개의 변경된 파일87개의 추가작업 그리고 1개의 파일을 삭제
  1. 87 1
      hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmTaskController.java

+ 87 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmTaskController.java

@@ -17,6 +17,8 @@
 
 package com.qunzhixinxi.hnqz.admin.controller;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.ExcelWriter;
@@ -35,6 +37,7 @@ import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysFile;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmReportOpt;
+import com.qunzhixinxi.hnqz.admin.config.UpmsConfig;
 import com.qunzhixinxi.hnqz.admin.entity.AuditEntity;
 import com.qunzhixinxi.hnqz.admin.entity.WmDaAgent;
 import com.qunzhixinxi.hnqz.admin.entity.WmDaDistribution;
@@ -64,6 +67,7 @@ import com.qunzhixinxi.hnqz.admin.service.WmTaskContentService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskRuleService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskService;
 import com.qunzhixinxi.hnqz.admin.service.WmTaskTypeService;
+import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
 import com.qunzhixinxi.hnqz.common.core.entity.BaseMap;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
@@ -76,6 +80,7 @@ import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.util.ResourceUtils;
@@ -97,18 +102,26 @@ import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Field;
 import java.math.BigDecimal;
+import java.math.BigInteger;
 import java.math.RoundingMode;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.net.URLEncoder;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -156,6 +169,7 @@ public class WmTaskController {
 
 	private final RabbitMqClient rabbitMqClient;
 	private final RedisTemplate<String,String> redisTemplate;
+	private final UpmsConfig upmsConfig;
 
 	/**
 	 * 分页查询
@@ -1145,7 +1159,79 @@ public class WmTaskController {
 		if (StringUtils.isEmpty(wmTask.getId())) {
 			R.failed("任务id不能为空");
 		}
-		return wmTaskService.approvalTask(wmTask);
+		R result = wmTaskService.approvalTask(wmTask);
+
+
+		// 释放图片
+		if (result.getCode() == CommonConstants.SUCCESS){
+
+			List<String> idList = StrUtil.split(wmTask.getId(), StrUtil.COMMA);
+
+			if (CollUtil.isNotEmpty(idList)){
+				List<WmTask> wmTasks = wmTaskService.list(Wrappers.<WmTask>lambdaQuery().in(WmTask::getId, idList));
+
+				wmTasks.stream().filter(task -> "4".equals(task.getTaskStatus())).forEach(t -> {
+					String userId = t.getTaskUserId();
+
+					WmTaskContent content = wmTaskContentService.getById(t.getTaskContentId());
+
+					Field[] fields = content.getClass().getDeclaredFields();
+					for (Field field : fields) {
+
+						field.setAccessible(true);
+
+						try {
+							String fieldVal = (String) field.get(content);
+
+							if (fieldVal.startsWith("/admin/sys-file/wmkj")) {
+
+								List<String> split = StrUtil.split(fieldVal, StrUtil.COMMA);
+
+								List<String> IMG_EXT_NAME = Arrays.asList("png", "jpg", "gif", "jpeg", "tif", "bmp");
+
+								split.forEach(item -> {
+									List<String> temp = StrUtil.split(item, StrUtil.DOT);
+									String extName = temp.get(temp.size() - 1);
+
+									if (IMG_EXT_NAME.contains(extName.toLowerCase())) {
+										// 文件md5
+										try {
+											log.info("图片地址:{}", upmsConfig.getClientUrl() + item);
+											byte[] bytes = IOUtils.toByteArray(new URI(upmsConfig.getClientUrl() + item));
+											MessageDigest md5 = MessageDigest.getInstance("MD5");
+											byte[] digest = md5.digest(bytes);
+											String hash = new BigInteger(1, digest).toString(16);
+											log.info("图片md5:{}", hash);
+											String key = String.format("%s:%s", userId, hash);
+											log.info("key:{}", key);
+											redisTemplate.delete(key);
+										} catch (IOException | URISyntaxException | NoSuchAlgorithmException e) {
+											e.printStackTrace();
+										}
+
+									}
+
+
+								});
+
+
+							}
+						} catch (Exception ignored) {
+						}
+
+					}
+
+
+				});
+
+			}
+
+
+		}
+
+
+		return result;
+
 	}
 
 	/**