Browse Source
Merge remote-tracking branch 'origin/milestone-20251104-现金管理二期' into milestone-20251104-现金管理二期
sunjiabei/feature-20251021102635-银行接口
Merge remote-tracking branch 'origin/milestone-20251104-现金管理二期' into milestone-20251104-现金管理二期
sunjiabei/feature-20251021102635-银行接口
39 changed files with 1882 additions and 314 deletions
-
4src/main/java/com/example/demo/Export/ExportService.java
-
44src/main/java/com/example/demo/Export/ExportServiceImpl.java
-
9src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java
-
76src/main/java/com/example/demo/RabbitMQ/CashCollectionConsumer.java
-
76src/main/java/com/example/demo/RabbitMQ/CashRefundConsumer.java
-
5src/main/java/com/example/demo/RabbitMQ/LogAspect.java
-
240src/main/java/com/example/demo/config/RabbitMQConfig.java
-
19src/main/java/com/example/demo/controller/cash/CashCollectionController.java
-
82src/main/java/com/example/demo/controller/cash/CashRefundController.java
-
38src/main/java/com/example/demo/controller/coin/ExportController.java
-
39src/main/java/com/example/demo/domain/DTO/CashDTO.java
-
36src/main/java/com/example/demo/domain/DTO/FinanceDTO.java
-
2src/main/java/com/example/demo/domain/vo/cash/CashCollection.java
-
66src/main/java/com/example/demo/domain/vo/cash/CashCollectionMessage.java
-
245src/main/java/com/example/demo/domain/vo/cash/CashRecordDTO.java
-
10src/main/java/com/example/demo/domain/vo/cash/CashRecordRefund.java
-
76src/main/java/com/example/demo/domain/vo/cash/CashRefundMessage.java
-
24src/main/java/com/example/demo/domain/vo/cash/LhlAudit.java
-
13src/main/java/com/example/demo/domain/vo/coin/IdName.java
-
1src/main/java/com/example/demo/mapper/cash/CashAuditMapper.java
-
7src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java
-
12src/main/java/com/example/demo/mapper/cash/CashRefundMapper.java
-
5src/main/java/com/example/demo/mapper/coin/AuditMapper.java
-
5src/main/java/com/example/demo/mapper/coin/MarketMapper.java
-
2src/main/java/com/example/demo/security/SecurityConfig.java
-
4src/main/java/com/example/demo/service/cash/RefundService.java
-
4src/main/java/com/example/demo/service/coin/ExportExcelService.java
-
36src/main/java/com/example/demo/service/listen/CashListener.java
-
36src/main/java/com/example/demo/service/listen/FinanceListener.java
-
41src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java
-
102src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java
-
151src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java
-
6src/main/java/com/example/demo/serviceImpl/coin/AdminServiceImpl.java
-
48src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java
-
4src/main/resources/cashMapper/CashAuditMapper.xml
-
123src/main/resources/cashMapper/CashCollectionMapper.xml
-
143src/main/resources/cashMapper/CashRefundMapper.xml
-
74src/main/resources/mapper/AuditMapper.xml
-
14src/main/resources/mapper/MarketMapper.xml
@ -0,0 +1,76 @@ |
|||||
|
package com.example.demo.RabbitMQ; |
||||
|
|
||||
|
import com.example.demo.config.RabbitMQConfig; |
||||
|
import com.example.demo.domain.vo.cash.CashCollectionMessage; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.amqp.rabbit.annotation.RabbitListener; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
/** |
||||
|
* 收款流程消息消费者 |
||||
|
* 监听收款流程中各个状态变更的消息队列 |
||||
|
*/ |
||||
|
@Component |
||||
|
@Slf4j |
||||
|
public class CashCollectionConsumer { |
||||
|
|
||||
|
/** |
||||
|
* 处理收款订单创建消息 |
||||
|
* 当有新的收款订单创建时,该方法会被调用 |
||||
|
* |
||||
|
* @param message 收款订单消息对象 |
||||
|
*/ |
||||
|
@RabbitListener(queues = RabbitMQConfig.COLLECTION_CREATED_QUEUE) |
||||
|
public void handleCollectionCreated(CashCollectionMessage message) { |
||||
|
log.info("收款订单创建通知: 订单号={}, 状态={}, 提交人={}, 消息={}", |
||||
|
message.getOrderCode(), message.getStatus(), message.getSubmitterId(), message.getMessage()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 处理收款订单审核通过消息 |
||||
|
* 当收款订单审核通过时,该方法会被调用 |
||||
|
* |
||||
|
* @param message 收款订单消息对象 |
||||
|
*/ |
||||
|
@RabbitListener(queues = RabbitMQConfig.COLLECTION_AUDITED_QUEUE) |
||||
|
public void handleCollectionAudited(CashCollectionMessage message) { |
||||
|
log.info("收款订单审核通过通知: 订单号={}, 状态={}, 审核人={}, 消息={}", |
||||
|
message.getOrderCode(), message.getStatus(), message.getAuditId(), message.getMessage()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 处理收款订单审核驳回消息 |
||||
|
* 当收款订单被审核驳回时,该方法会被调用 |
||||
|
* |
||||
|
* @param message 收款订单消息对象 |
||||
|
*/ |
||||
|
@RabbitListener(queues = RabbitMQConfig.COLLECTION_REJECTED_QUEUE) |
||||
|
public void handleCollectionRejected(CashCollectionMessage message) { |
||||
|
log.info("收款订单审核驳回通知: 订单号={}, 状态={}, 审核人={}, 消息={}", |
||||
|
message.getOrderCode(), message.getStatus(), message.getAuditId(), message.getMessage()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 处理收款订单完成消息 |
||||
|
* 当收款订单流程全部完成时,该方法会被调用 |
||||
|
* |
||||
|
* @param message 收款订单消息对象 |
||||
|
*/ |
||||
|
@RabbitListener(queues = RabbitMQConfig.COLLECTION_COMPLETED_QUEUE) |
||||
|
public void handleCollectionCompleted(CashCollectionMessage message) { |
||||
|
log.info("收款订单完成通知: 订单号={}, 状态={}, 消息={}", |
||||
|
message.getOrderCode(), message.getStatus(), message.getMessage()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 处理收款订单撤回消息 |
||||
|
* 当收款订单被撤回时,该方法会被调用 |
||||
|
* |
||||
|
* @param message 收款订单消息对象 |
||||
|
*/ |
||||
|
@RabbitListener(queues = RabbitMQConfig.COLLECTION_CANCELLED_QUEUE) |
||||
|
public void handleCollectionCancelled(CashCollectionMessage message) { |
||||
|
log.info("收款订单撤回通知: 订单号={}, 状态={}, 提交人={}, 消息={}", |
||||
|
message.getOrderCode(), message.getStatus(), message.getSubmitterId(), message.getMessage()); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,76 @@ |
|||||
|
package com.example.demo.RabbitMQ; |
||||
|
|
||||
|
import com.example.demo.config.RabbitMQConfig; |
||||
|
import com.example.demo.domain.vo.cash.CashRefundMessage; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.amqp.rabbit.annotation.RabbitListener; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
/** |
||||
|
* 退款流程消息消费者 |
||||
|
* 监听退款流程中各个状态变更的消息队列 |
||||
|
*/ |
||||
|
@Component |
||||
|
@Slf4j |
||||
|
public class CashRefundConsumer { |
||||
|
|
||||
|
/** |
||||
|
* 处理退款订单创建消息 |
||||
|
* 当有新的退款订单创建时,该方法会被调用 |
||||
|
* |
||||
|
* @param message 退款订单消息对象 |
||||
|
*/ |
||||
|
@RabbitListener(queues = RabbitMQConfig.REFUND_CREATED_QUEUE) |
||||
|
public void handleRefundCreated(CashRefundMessage message) { |
||||
|
log.info("退款订单创建通知: 订单号={}, 状态={}, 提交人={}, 消息={}", |
||||
|
message.getOrderCode(), message.getStatus(), message.getSubmitterId(), message.getMessage()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 处理退款订单审核通过消息 |
||||
|
* 当退款订单审核通过时,该方法会被调用 |
||||
|
* |
||||
|
* @param message 退款订单消息对象 |
||||
|
*/ |
||||
|
@RabbitListener(queues = RabbitMQConfig.REFUND_REVIEWED_QUEUE) |
||||
|
public void handleRefundReviewed(CashRefundMessage message) { |
||||
|
log.info("退款订单审核通过通知: 订单号={}, 状态={}, 审核人={}, 消息={}", |
||||
|
message.getOrderCode(), message.getStatus(), message.getAuditId(), message.getMessage()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 处理退款订单审核驳回消息 |
||||
|
* 当退款订单被审核驳回时,该方法会被调用 |
||||
|
* |
||||
|
* @param message 退款订单消息对象 |
||||
|
*/ |
||||
|
@RabbitListener(queues = RabbitMQConfig.REFUND_REJECTED_QUEUE) |
||||
|
public void handleRefundRejected(CashRefundMessage message) { |
||||
|
log.info("退款订单审核驳回通知: 订单号={}, 状态={}, 审核人={}, 消息={}", |
||||
|
message.getOrderCode(), message.getStatus(), message.getAuditId(), message.getMessage()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 处理退款订单执行消息 |
||||
|
* 当退款订单被执行时,该方法会被调用 |
||||
|
* |
||||
|
* @param message 退款订单消息对象 |
||||
|
*/ |
||||
|
@RabbitListener(queues = RabbitMQConfig.REFUND_EXECUTED_QUEUE) |
||||
|
public void handleRefundExecuted(CashRefundMessage message) { |
||||
|
log.info("退款订单执行通知: 订单号={}, 状态={}, 执行人={}, 消息={}", |
||||
|
message.getOrderCode(), message.getStatus(), message.getExecutorId(), message.getMessage()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 处理退款订单完成消息 |
||||
|
* 当退款订单流程全部完成时,该方法会被调用 |
||||
|
* |
||||
|
* @param message 退款订单消息对象 |
||||
|
*/ |
||||
|
@RabbitListener(queues = RabbitMQConfig.REFUND_COMPLETED_QUEUE) |
||||
|
public void handleRefundCompleted(CashRefundMessage message) { |
||||
|
log.info("退款订单完成通知: 订单号={}, 状态={}, 消息={}", |
||||
|
message.getOrderCode(), message.getStatus(), message.getMessage()); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,39 @@ |
|||||
|
package com.example.demo.domain.DTO; |
||||
|
|
||||
|
import com.example.demo.domain.vo.bean.BeanOnlineRechargeInfo; |
||||
|
import com.example.demo.domain.vo.cash.CashCollection; |
||||
|
import jakarta.validation.constraints.NotNull; |
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
/** |
||||
|
* @program: GOLD |
||||
|
* @ClassName CashDTO |
||||
|
* @description: |
||||
|
* @author: huangqizhen |
||||
|
* @create: 2025−11-09 09:26 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
@AllArgsConstructor |
||||
|
@NoArgsConstructor |
||||
|
public class CashDTO { |
||||
|
private String token; |
||||
|
private String url = ""; |
||||
|
private String fileName = ""; |
||||
|
private Integer sort = 0; |
||||
|
private String field = ""; |
||||
|
private Integer account; |
||||
|
private Integer type = 13; //类型 |
||||
|
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 CashCollection cashCollection; |
||||
|
} |
||||
@ -0,0 +1,36 @@ |
|||||
|
package com.example.demo.domain.DTO; |
||||
|
|
||||
|
import com.example.demo.domain.vo.cash.CashRecordDTO; |
||||
|
import jakarta.validation.constraints.NotNull; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
/** |
||||
|
* @program: GOLD |
||||
|
* @ClassName FinanceDTO |
||||
|
* @description: |
||||
|
* @author: huangqizhen |
||||
|
* @create: 2025−11-06 21:22 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
public class FinanceDTO { |
||||
|
private String token; |
||||
|
private String url = ""; |
||||
|
private String fileName = ""; |
||||
|
private Integer sort = 0; |
||||
|
private String field = ""; |
||||
|
private Integer account; |
||||
|
private Integer type = 12; //类型 |
||||
|
private Integer state = 0; //状态 |
||||
|
private String text = ""; //关键词搜索 |
||||
|
private Integer dataNum = 0; |
||||
|
private String deptid = ""; |
||||
|
private CashRecordDTO cashRecordDTO; |
||||
|
|
||||
|
@NotNull(message = "page不能为空") |
||||
|
private Integer page = 1; |
||||
|
@NotNull(message = "pageSize不能为空") |
||||
|
private Integer pageSize = 5000; |
||||
|
} |
||||
@ -0,0 +1,66 @@ |
|||||
|
package com.example.demo.domain.vo.cash; |
||||
|
|
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
import java.time.LocalDateTime; |
||||
|
|
||||
|
/** |
||||
|
* 收款消息实体类 |
||||
|
* 用于在收款流程中传递状态变更信息 |
||||
|
*/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
@AllArgsConstructor |
||||
|
public class CashCollectionMessage { |
||||
|
/** |
||||
|
* 订单ID |
||||
|
*/ |
||||
|
private Integer id; |
||||
|
|
||||
|
/** |
||||
|
* 订单编号 |
||||
|
*/ |
||||
|
private String orderCode; |
||||
|
|
||||
|
/** |
||||
|
* 订单状态 |
||||
|
*/ |
||||
|
private Integer status; |
||||
|
|
||||
|
/** |
||||
|
* 状态描述 |
||||
|
*/ |
||||
|
private String statusDescription; |
||||
|
|
||||
|
/** |
||||
|
* 消息内容 |
||||
|
*/ |
||||
|
private String message; |
||||
|
|
||||
|
/** |
||||
|
* 提交人ID |
||||
|
*/ |
||||
|
private Integer submitterId; |
||||
|
|
||||
|
/** |
||||
|
* 提交人姓名 |
||||
|
*/ |
||||
|
private String submitterName; |
||||
|
|
||||
|
/** |
||||
|
* 审核人ID |
||||
|
*/ |
||||
|
private Integer auditId; |
||||
|
|
||||
|
/** |
||||
|
* 审核人姓名 |
||||
|
*/ |
||||
|
private String auditName; |
||||
|
|
||||
|
/** |
||||
|
* 时间戳 |
||||
|
*/ |
||||
|
private LocalDateTime timestamp = LocalDateTime.now(); |
||||
|
} |
||||
@ -0,0 +1,76 @@ |
|||||
|
package com.example.demo.domain.vo.cash; |
||||
|
|
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
import java.time.LocalDateTime; |
||||
|
|
||||
|
/** |
||||
|
* 退款消息实体类 |
||||
|
* 用于在退款流程中传递状态变更信息 |
||||
|
*/ |
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
@AllArgsConstructor |
||||
|
public class CashRefundMessage { |
||||
|
/** |
||||
|
* 订单ID |
||||
|
*/ |
||||
|
private Integer id; |
||||
|
|
||||
|
/** |
||||
|
* 订单编号 |
||||
|
*/ |
||||
|
private String orderCode; |
||||
|
|
||||
|
/** |
||||
|
* 订单状态 |
||||
|
*/ |
||||
|
private Integer status; |
||||
|
|
||||
|
/** |
||||
|
* 状态描述 |
||||
|
*/ |
||||
|
private String statusDescription; |
||||
|
|
||||
|
/** |
||||
|
* 消息内容 |
||||
|
*/ |
||||
|
private String message; |
||||
|
|
||||
|
/** |
||||
|
* 提交人ID |
||||
|
*/ |
||||
|
private Integer submitterId; |
||||
|
|
||||
|
/** |
||||
|
* 提交人姓名 |
||||
|
*/ |
||||
|
private String submitterName; |
||||
|
|
||||
|
/** |
||||
|
* 审核人ID |
||||
|
*/ |
||||
|
private Integer auditId; |
||||
|
|
||||
|
/** |
||||
|
* 审核人姓名 |
||||
|
*/ |
||||
|
private String auditName; |
||||
|
|
||||
|
/** |
||||
|
* 执行人ID |
||||
|
*/ |
||||
|
private Integer executorId; |
||||
|
|
||||
|
/** |
||||
|
* 执行人姓名 |
||||
|
*/ |
||||
|
private String executorName; |
||||
|
|
||||
|
/** |
||||
|
* 时间戳 |
||||
|
*/ |
||||
|
private LocalDateTime timestamp = LocalDateTime.now(); |
||||
|
} |
||||
@ -0,0 +1,24 @@ |
|||||
|
package com.example.demo.domain.vo.cash; |
||||
|
|
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
/** |
||||
|
* @program: GOLD |
||||
|
* @ClassName LhlAudit |
||||
|
* @description: |
||||
|
* @author: huangqizhen |
||||
|
* @create: 2025−11-05 16:45 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Data |
||||
|
@AllArgsConstructor |
||||
|
@NoArgsConstructor |
||||
|
public class LhlAudit { |
||||
|
private Integer id; |
||||
|
private String areaServise;// |
||||
|
private String areaFinance; |
||||
|
private String areaCharge; |
||||
|
private String headFinace; |
||||
|
} |
||||
@ -0,0 +1,13 @@ |
|||||
|
package com.example.demo.domain.vo.coin; |
||||
|
|
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
|
||||
|
@Data |
||||
|
@NoArgsConstructor |
||||
|
@AllArgsConstructor |
||||
|
public class IdName { |
||||
|
private Integer id; |
||||
|
private String name; |
||||
|
} |
||||
@ -0,0 +1,36 @@ |
|||||
|
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 CashListener |
||||
|
* @description: |
||||
|
* @author: huangqizhen |
||||
|
* @create: 2025−11-09 09:42 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Component |
||||
|
public class CashListener extends BaseMessageListener<String> { |
||||
|
@Autowired |
||||
|
private ExportExcelService exportExcelService; |
||||
|
|
||||
|
protected CashListener(RedisUtil redisQueueUtil) { |
||||
|
super(redisQueueUtil, "cash:queue:export_queue"); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
protected void handleMessage(String message) { |
||||
|
validateMessage( message); |
||||
|
try { |
||||
|
Thread.sleep(5000); |
||||
|
exportExcelService.CashExcel(message); |
||||
|
} catch (Exception e) { |
||||
|
handleException(e, message); |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,36 @@ |
|||||
|
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 FinanceListener |
||||
|
* @description: |
||||
|
* @author: huangqizhen |
||||
|
* @create: 2025−11-06 21:35 |
||||
|
* @Version 1.0 |
||||
|
**/ |
||||
|
@Component |
||||
|
public class FinanceListener extends BaseMessageListener<String>{ |
||||
|
@Autowired |
||||
|
private ExportExcelService exportExcelService; |
||||
|
|
||||
|
@Autowired |
||||
|
public FinanceListener(RedisUtil redisQueueUtil) { |
||||
|
super(redisQueueUtil, "finance:queue:export_queue"); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
protected void handleMessage(String message) { |
||||
|
validateMessage( message); |
||||
|
try { |
||||
|
Thread.sleep(5000); |
||||
|
exportExcelService.FinanceExcel(message); |
||||
|
} catch (Exception e) { |
||||
|
handleException(e, message); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue