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; |
|||
|
|||
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 com.example.demo.service.listen.BaseMessageListener; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
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 |
|||
public class RechargeListener extends AbstractMessageListener<String> { |
|||
//注入ExportExcelService |
|||
public class RechargeListener extends BaseMessageListener<String> { |
|||
|
|||
@Autowired |
|||
private ExportExcelService exportService; |
|||
|
|||
@Autowired |
|||
public RechargeListener( |
|||
RedisUtil redisQueueUtil |
|||
|
|||
) { |
|||
public RechargeListener(RedisUtil redisQueueUtil) { |
|||
super(redisQueueUtil, "recharge:queue:export_queue"); |
|||
System.out.println("监听器已启动,队列: "); |
|||
} |
|||
|
|||
@Override |
|||
protected void handleMessage(String message) { |
|||
if (StrUtil.isBlank(message)) { |
|||
System.err.println("redis消息队列数据为空" + message); |
|||
} |
|||
validateMessage(message); // 验证消息 |
|||
try { |
|||
Thread.sleep(5000); |
|||
Thread.sleep(5000); // 模拟延迟处理 |
|||
exportService.rechargeExcel(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()); |
|||
} |
|||
handleException(e, message); // 统一异常处理 |
|||
} |
|||
|
|||
@Override |
|||
protected void handleError(Exception e, String message) { |
|||
System.err.println("处理消息失败: " + message); |
|||
e.printStackTrace(); |
|||
} |
|||
|
|||
} |
|||
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue