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