Sfoglia il codice sorgente

refactor: exportResult抽取为公共的

lixuesong 5 giorni fa
parent
commit
bb200b5409

+ 9 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/user/SysUserExportController.java

@@ -1,11 +1,15 @@
 package com.qunzhixinxi.hnqz.admin.controller.user;
 
+import com.qunzhixinxi.hnqz.admin.api.constant.CacheConstants;
+import com.qunzhixinxi.hnqz.admin.api.constant.enums.ExportType;
 import com.qunzhixinxi.hnqz.admin.api.dto.SysUserDTO;
 import com.qunzhixinxi.hnqz.admin.api.entity.WmReportOpt;
 import com.qunzhixinxi.hnqz.admin.api.model.excel.SysUserExcelModel;
+import com.qunzhixinxi.hnqz.admin.service.SysCommonExportService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserExportService;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -30,6 +34,7 @@ import java.util.List;
 public class SysUserExportController {
 
 	private final SysUserExportService userExportService;
+	private final SysCommonExportService commonExportService;
 
 	/**
 	 * 导出用户列表
@@ -49,6 +54,9 @@ public class SysUserExportController {
 	 */
 	@GetMapping("/export-user-result")
 	public R<WmReportOpt> exportResult() {
-		return R.ok(userExportService.exportResult(SecurityUtils.getUser()));
+		HnqzUser user = SecurityUtils.getUser();
+		String key = String.format(CacheConstants.ASYNC_EXPORT_CACHE, ExportType.USER.getType(), user.getId());
+
+		return R.ok(commonExportService.exportResult(user, key));
 	}
 }

+ 22 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/SysCommonExportService.java

@@ -0,0 +1,22 @@
+package com.qunzhixinxi.hnqz.admin.service;
+
+import com.qunzhixinxi.hnqz.admin.api.entity.WmReportOpt;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+
+/**
+ * 通用导出服务
+ *
+ * @author snows
+ * @date 2025/08/04
+ */
+public interface SysCommonExportService {
+
+	/**
+	 * 导出信息的结果
+	 *
+	 * @param user     用户
+	 * @param redisKey Redis key
+	 * @return {@link WmReportOpt } 状态和结果
+	 */
+	WmReportOpt exportResult(HnqzUser user, String redisKey);
+}

+ 0 - 9
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/SysUserExportService.java

@@ -1,7 +1,6 @@
 package com.qunzhixinxi.hnqz.admin.service;
 
 import com.qunzhixinxi.hnqz.admin.api.dto.SysUserDTO;
-import com.qunzhixinxi.hnqz.admin.api.entity.WmReportOpt;
 import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 
 import java.util.List;
@@ -33,12 +32,4 @@ public interface SysUserExportService {
 	 * @return {@link Boolean } 是否成功
 	 */
 	Boolean export(HnqzUser user, List<Integer> roles, SysUserDTO.OnList query);
-
-	/**
-	 * 导出用户信息的结果
-	 *
-	 * @param user 用户
-	 * @return {@link WmReportOpt } 状态和结果
-	 */
-	WmReportOpt exportResult(HnqzUser user);
 }

+ 69 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysCommonExportServiceImpl.java

@@ -0,0 +1,69 @@
+package com.qunzhixinxi.hnqz.admin.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.qunzhixinxi.hnqz.admin.api.entity.WmReportOpt;
+import com.qunzhixinxi.hnqz.admin.service.SysCommonExportService;
+import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 通用导出服务impl
+ *
+ * @author snows
+ * @date 2025/08/04
+ */
+@Service
+@RequiredArgsConstructor
+public class SysCommonExportServiceImpl implements SysCommonExportService {
+
+	private final RedisTemplate<String, Object> redisTemplate;
+
+	/**
+	 * 导出信息的结果
+	 *
+	 * @param user     用户
+	 * @param redisKey Redis key
+	 * @return {@link WmReportOpt } 状态和结果
+	 */
+	@Override
+	public WmReportOpt exportResult(HnqzUser user, String redisKey) {
+		String o = (String) redisTemplate.opsForValue().get(redisKey);
+		WmReportOpt opt = new WmReportOpt();
+
+		if (StringUtils.isNotEmpty(o)) {
+			// 生成中的
+			if ("GENERATING".equals(o)) {
+				opt.setStatus(WmReportOpt.WmReportOptStatus.GENERATING);
+			}
+			// 生成失败的
+			else if (o.startsWith("ERROR")) {
+				opt.setStatus(WmReportOpt.WmReportOptStatus.ERROR);
+				opt.setErrorMsg(o.split(StrUtil.UNDERLINE)[1]);
+			}
+			// 生成失败的2
+			else if (!o.startsWith("/admin/sys-file")) {
+				opt.setStatus(WmReportOpt.WmReportOptStatus.ERROR);
+				opt.setErrorMsg(o);
+			}
+			// 成功的
+			else {
+				LocalDateTime now = LocalDateTime.now();
+				Long expire = redisTemplate.opsForValue().getOperations().getExpire(redisKey, TimeUnit.SECONDS);
+				opt.setStatus(WmReportOpt.WmReportOptStatus.GENERATED);
+				opt.setTtl(expire != null ? now.plusSeconds(expire) : now);
+				opt.setLatestUrl(o);
+			}
+
+		} else {
+			opt.setStatus(WmReportOpt.WmReportOptStatus.NOT_GENERATE);
+		}
+
+		return opt;
+	}
+}

+ 0 - 43
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysUserExportServiceImpl.java

@@ -38,7 +38,6 @@ import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
@@ -442,46 +441,4 @@ public class SysUserExportServiceImpl implements SysUserExportService {
 		return userMapper.selectList(queryWrapper);
 	}
 
-	/**
-	 * 导出用户信息的结果
-	 *
-	 * @param user 用户
-	 * @return {@link WmReportOpt } 状态和结果
-	 */
-	@Override
-	public WmReportOpt exportResult(HnqzUser user) {
-		String key = String.format(CacheConstants.ASYNC_EXPORT_CACHE, ExportType.USER.getType(), user.getId());
-
-		String o = (String) redisTemplate.opsForValue().get(key);
-		WmReportOpt opt = new WmReportOpt();
-
-		if (StringUtils.isNotEmpty(o)) {
-			// 生成中的
-			if ("GENERATING".equals(o)) {
-				opt.setStatus(WmReportOpt.WmReportOptStatus.GENERATING);
-			}
-			// 生成失败的
-			else if (o.startsWith("ERROR")) {
-				opt.setStatus(WmReportOpt.WmReportOptStatus.ERROR);
-				opt.setErrorMsg(o.split(StrUtil.UNDERLINE)[1]);
-			}
-			// 生成失败的2
-			else if (!o.startsWith("/admin/sys-file")) {
-				opt.setStatus(WmReportOpt.WmReportOptStatus.ERROR);
-				opt.setErrorMsg(o);
-			}
-			// 成功的
-			else {
-				Long expire = redisTemplate.opsForValue().getOperations().getExpire(key, TimeUnit.SECONDS);
-				opt.setStatus(WmReportOpt.WmReportOptStatus.GENERATED);
-				opt.setTtl(LocalDateTime.now().plusSeconds(expire));
-				opt.setLatestUrl(o);
-			}
-
-		} else {
-			opt.setStatus(WmReportOpt.WmReportOptStatus.NOT_GENERATE);
-		}
-
-		return opt;
-	}
 }