18 changed files with 225 additions and 275 deletions
-
7src/main/java/com/example/demo/Export/ExportService.java
-
25src/main/java/com/example/demo/Export/ExportServiceImpl.java
-
2src/main/java/com/example/demo/config/Mysql3DataSourceConfig.java
-
18src/main/java/com/example/demo/controller/coin/ExportController.java
-
37src/main/java/com/example/demo/domain/DTO/LiveDTO.java
-
2src/main/java/com/example/demo/service/coin/ExportExcelService.java
-
84src/main/java/com/example/demo/service/listen/AiEmotionExportListener.java
-
1src/main/java/com/example/demo/service/listen/BaseMessageListener.java
-
42src/main/java/com/example/demo/service/listen/ConsumeListener.java
-
50src/main/java/com/example/demo/service/listen/GoldDetailListener.java
-
43src/main/java/com/example/demo/service/listen/GoldListener.java
-
38src/main/java/com/example/demo/service/listen/LiveListener.java
-
66src/main/java/com/example/demo/service/listen/RechargeListener.java
-
44src/main/java/com/example/demo/service/listen/RefundListener.java
-
19src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java
-
2src/main/resources/application-dev.yml
-
8src/main/resources/application-test.yml
-
8src/main/resources/application.yml
@ -0,0 +1,37 @@ |
|||||
|
package com.example.demo.domain.DTO; |
||||
|
|
||||
|
import com.example.demo.domain.vo.bean.BeanConsumeLive; |
||||
|
import com.example.demo.domain.vo.coin.ConsumeUser; |
||||
|
import jakarta.validation.constraints.NotNull; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
/** |
||||
|
* @program: GOLD |
||||
|
* @ClassName LiveDTO |
||||
|
* @description: |
||||
|
* @author: huangqizhen |
||||
|
* @create: 2025−07-31 17:28 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
public class LiveDTO { |
||||
|
private String token; |
||||
|
private String url = ""; |
||||
|
private String fileName = ""; |
||||
|
private Integer sort = 0; |
||||
|
private String field = ""; |
||||
|
private Integer account; |
||||
|
private Integer type = 6; //类型 |
||||
|
private Integer state = 0; //状态 |
||||
|
private String text = ""; //关键词搜索 |
||||
|
private Integer dataNum = 0; |
||||
|
private String deptid = ""; |
||||
|
|
||||
|
@NotNull(message = "page不能为空") |
||||
|
private Integer page = 1; |
||||
|
@NotNull(message = "pageSize不能为空") |
||||
|
private Integer pageSize = 20; |
||||
|
private BeanConsumeLive beanConsumeLive; |
||||
|
} |
@ -1,84 +0,0 @@ |
|||||
package com.example.demo.service.listen; |
|
||||
|
|
||||
import cn.hutool.core.util.StrUtil; |
|
||||
|
|
||||
|
|
||||
import com.example.demo.Util.ExecutionContextUtil; |
|
||||
import com.example.demo.Util.FeiShuAlertUtil; |
|
||||
import com.example.demo.Util.RedisUtil; |
|
||||
import com.example.demo.domain.vo.coin.ExecutionContext; |
|
||||
import com.example.demo.service.coin.ExportExcelService; |
|
||||
import com.example.demo.service.queue.AbstractMessageListener; |
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
|
||||
import org.springframework.stereotype.Component; |
|
||||
|
|
||||
import static java.lang.Thread.sleep; |
|
||||
|
|
||||
|
|
||||
@Component |
|
||||
public class AiEmotionExportListener extends AbstractMessageListener<String> { |
|
||||
|
|
||||
|
|
||||
//注入ExportExcelService |
|
||||
@Autowired |
|
||||
private ExportExcelService exportExcelService; |
|
||||
|
|
||||
@Autowired |
|
||||
public AiEmotionExportListener( |
|
||||
RedisUtil redisQueueUtil |
|
||||
|
|
||||
) { |
|
||||
super(redisQueueUtil, "hwgold:queue:export_queue"); |
|
||||
System.out.println("监听器已启动,队列: "); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
protected void handleMessage(String message) { |
|
||||
if (StrUtil.isBlank(message)) { |
|
||||
System.err.println("redis消息队列数据为空" + message); |
|
||||
} |
|
||||
try { |
|
||||
Thread.sleep(5000); |
|
||||
exportExcelService.handleExcelExportData(message); |
|
||||
} catch (Exception e) { |
|
||||
logError(e, message); |
|
||||
throw new RuntimeException("Failed to process HWGOLD export: " + e.getMessage(), e); |
|
||||
} |
|
||||
|
|
||||
|
|
||||
} |
|
||||
|
|
||||
private void logError(Exception e, String message) { |
|
||||
System.err.println("Export data listener exception: " + e.getMessage()); |
|
||||
e.printStackTrace(); |
|
||||
try { |
|
||||
ExecutionContext context = ExecutionContextUtil.getExecutionContext(); |
|
||||
String cause = ""; |
|
||||
if (e.getCause() != null) { |
|
||||
cause = e.getCause().getMessage(); |
|
||||
} |
|
||||
FeiShuAlertUtil.sendAlertMessage( |
|
||||
context, |
|
||||
e.getStackTrace()[0].getFileName(), |
|
||||
e.getStackTrace()[0].getLineNumber(), |
|
||||
"HWGOLD Export Error: " + e.getMessage() + " 底层错误: " + cause , |
|
||||
"Failed message: " + message |
|
||||
); |
|
||||
} catch (Exception alertEx) { |
|
||||
System.err.println("Failed to send Feishu alert: " + alertEx.getMessage()); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
protected void handleError(Exception e, String message) { |
|
||||
System.err.println("处理消息失败: " + message); |
|
||||
e.printStackTrace(); |
|
||||
} |
|
||||
|
|
||||
} |
|
@ -0,0 +1,50 @@ |
|||||
|
package com.example.demo.service.listen; |
||||
|
|
||||
|
import cn.hutool.core.util.StrUtil; |
||||
|
|
||||
|
|
||||
|
import com.example.demo.Util.ExecutionContextUtil; |
||||
|
import com.example.demo.Util.FeiShuAlertUtil; |
||||
|
import com.example.demo.Util.RedisUtil; |
||||
|
import com.example.demo.domain.vo.coin.ExecutionContext; |
||||
|
import com.example.demo.service.coin.ExportExcelService; |
||||
|
import com.example.demo.service.queue.AbstractMessageListener; |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
import static java.lang.Thread.sleep; |
||||
|
|
||||
|
|
||||
|
@Component |
||||
|
public class GoldDetailListener extends BaseMessageListener<String> { |
||||
|
|
||||
|
|
||||
|
//注入ExportExcelService |
||||
|
@Autowired |
||||
|
private ExportExcelService exportExcelService; |
||||
|
|
||||
|
@Autowired |
||||
|
public GoldDetailListener(RedisUtil redisQueueUtil) { |
||||
|
super(redisQueueUtil, "hwgold:queue:export_queue"); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
protected void handleMessage(String message) { |
||||
|
validateMessage( message); |
||||
|
try { |
||||
|
Thread.sleep(5000); |
||||
|
exportExcelService.handleExcelExportData(message); |
||||
|
} catch (Exception e) { |
||||
|
handleException(e, message); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,38 @@ |
|||||
|
package com.example.demo.service.listen; |
||||
|
|
||||
|
import com.example.demo.Util.RedisUtil; |
||||
|
import com.example.demo.service.coin.ExportExcelService; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
/** |
||||
|
* @program: GOLD |
||||
|
* @ClassName LiveListener |
||||
|
* @description: |
||||
|
* @author: huangqizhen |
||||
|
* @create: 2025−07-31 17:53 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Component |
||||
|
public class LiveListener extends BaseMessageListener<String>{ |
||||
|
|
||||
|
@Autowired |
||||
|
private ExportExcelService exportExcelService; |
||||
|
|
||||
|
@Autowired |
||||
|
public LiveListener(RedisUtil redisQueueUtil) { |
||||
|
super(redisQueueUtil, "live:queue:export_queue"); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
protected void handleMessage(String message) { |
||||
|
validateMessage( message); |
||||
|
try { |
||||
|
Thread.sleep(5000); |
||||
|
exportExcelService.LiveExcel(message); |
||||
|
} catch (Exception e) { |
||||
|
handleException(e, message); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
@ -1,80 +1,32 @@ |
|||||
package com.example.demo.service.listen; |
package com.example.demo.service.listen; |
||||
|
|
||||
import cn.hutool.core.util.StrUtil; |
|
||||
import com.example.demo.Util.ExecutionContextUtil; |
|
||||
import com.example.demo.Util.FeiShuAlertUtil; |
|
||||
import com.example.demo.Util.RedisUtil; |
import com.example.demo.Util.RedisUtil; |
||||
import com.example.demo.domain.vo.coin.ExecutionContext; |
|
||||
import com.example.demo.service.coin.ExportExcelService; |
import com.example.demo.service.coin.ExportExcelService; |
||||
import com.example.demo.service.queue.AbstractMessageListener; |
|
||||
|
import com.example.demo.service.listen.BaseMessageListener; |
||||
import org.springframework.beans.factory.annotation.Autowired; |
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.stereotype.Component; |
import org.springframework.stereotype.Component; |
||||
|
|
||||
/** |
|
||||
* @program: GOLD |
|
||||
* @ClassName RechargeListener |
|
||||
* @description: |
|
||||
* @author: huangqizhen |
|
||||
* @create: 2025−07-01 15:46 |
|
||||
* @Version 1.0 |
|
||||
**/ |
|
||||
|
import static org.ehcache.core.exceptions.StorePassThroughException.handleException; |
||||
|
|
||||
@Component |
@Component |
||||
public class RechargeListener extends AbstractMessageListener<String> { |
|
||||
//注入ExportExcelService |
|
||||
|
public class RechargeListener extends BaseMessageListener<String> { |
||||
|
|
||||
@Autowired |
@Autowired |
||||
private ExportExcelService exportService; |
private ExportExcelService exportService; |
||||
|
|
||||
@Autowired |
@Autowired |
||||
public RechargeListener( |
|
||||
RedisUtil redisQueueUtil |
|
||||
|
|
||||
) { |
|
||||
|
public RechargeListener(RedisUtil redisQueueUtil) { |
||||
super(redisQueueUtil, "recharge:queue:export_queue"); |
super(redisQueueUtil, "recharge:queue:export_queue"); |
||||
System.out.println("监听器已启动,队列: "); |
|
||||
} |
} |
||||
|
|
||||
@Override |
@Override |
||||
protected void handleMessage(String message) { |
protected void handleMessage(String message) { |
||||
if (StrUtil.isBlank(message)) { |
|
||||
System.err.println("redis消息队列数据为空" + message); |
|
||||
} |
|
||||
|
validateMessage(message); // 验证消息 |
||||
try { |
try { |
||||
Thread.sleep(5000); |
|
||||
|
Thread.sleep(5000); // 模拟延迟处理 |
||||
exportService.rechargeExcel(message); |
exportService.rechargeExcel(message); |
||||
} catch (Exception e) { |
} catch (Exception e) { |
||||
logError(e, message); |
|
||||
throw new RuntimeException("Failed to process HWGOLD export: " + e.getMessage(), e); |
|
||||
|
handleException(e, message); // 统一异常处理 |
||||
} |
} |
||||
|
|
||||
|
|
||||
} |
} |
||||
|
|
||||
private void logError(Exception e, String message) { |
|
||||
System.err.println("Export data listener exception: " + e.getMessage()); |
|
||||
e.printStackTrace(); |
|
||||
try { |
|
||||
ExecutionContext context = ExecutionContextUtil.getExecutionContext(); |
|
||||
String cause = ""; |
|
||||
if (e.getCause() != null) { |
|
||||
cause = e.getCause().getMessage(); |
|
||||
} |
|
||||
FeiShuAlertUtil.sendAlertMessage( |
|
||||
context, |
|
||||
e.getStackTrace()[0].getFileName(), |
|
||||
e.getStackTrace()[0].getLineNumber(), |
|
||||
"HWGOLD Export Error: " + e.getMessage() + " 底层错误: " + cause , |
|
||||
"Failed message: " + message |
|
||||
); |
|
||||
} catch (Exception alertEx) { |
|
||||
System.err.println("Failed to send Feishu alert: " + alertEx.getMessage()); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
protected void handleError(Exception e, String message) { |
|
||||
System.err.println("处理消息失败: " + message); |
|
||||
e.printStackTrace(); |
|
||||
} |
|
||||
|
|
||||
} |
} |
||||
|
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue