From 128f840f7e5624b5c899ab2b09b125228ed2aaf8 Mon Sep 17 00:00:00 2001 From: ziin Date: Fri, 26 Dec 2025 21:42:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(tenant-balance):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=8F=90=E7=8E=B0=E7=AB=99=E5=86=85=E4=BF=A1=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在提现流程中,向租户联系人发送站内信通知,模板码 tx-001,携带提现金额参数。 --- .../TenantBalanceServiceImpl.java | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/keyboard-server/src/main/java/com/yolo/keyboard/service/tenantbalance/TenantBalanceServiceImpl.java b/keyboard-server/src/main/java/com/yolo/keyboard/service/tenantbalance/TenantBalanceServiceImpl.java index 946f572..cb6f283 100644 --- a/keyboard-server/src/main/java/com/yolo/keyboard/service/tenantbalance/TenantBalanceServiceImpl.java +++ b/keyboard-server/src/main/java/com/yolo/keyboard/service/tenantbalance/TenantBalanceServiceImpl.java @@ -10,6 +10,8 @@ import com.yolo.keyboard.framework.common.util.collection.CollectionUtils; import com.yolo.keyboard.framework.mybatis.core.query.LambdaQueryWrapperX; import com.yolo.keyboard.framework.tenant.core.context.TenantContextHolder; import com.yolo.keyboard.module.infra.api.config.ConfigApi; +import com.yolo.keyboard.module.system.api.notify.NotifyMessageSendApi; +import com.yolo.keyboard.module.system.api.notify.dto.NotifySendSingleToUserReqDTO; import com.yolo.keyboard.utils.BizNoGenerator; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; @@ -59,7 +61,11 @@ public class TenantBalanceServiceImpl implements TenantBalanceService { @Resource private KeyboardTenantWithdrawOrderMapper tenantWithdrawOrderMapper; + @Resource + private NotifyMessageSendApi notifyMessageSendApi; + private static final String WITHDRAW_DAYS_CONFIG_KEY = "WITHDRAW-DAYS"; + private static final String WITHDRAW_NOTIFY_TEMPLATE_CODE = "tx-001"; @Override public Long createTenantBalance(TenantBalanceSaveReqVO createReqVO) { @@ -262,7 +268,7 @@ public class TenantBalanceServiceImpl implements TenantBalanceService { // 6. 创建冻结交易记录 TenantBalanceTransactionDO transaction = TenantBalanceTransactionDO.builder() .bizNo(bizNo) - .points(withdrawAmount.negate()) // 冻结金额(负数表示冻结扣减) + .points(withdrawAmount.negate()) // 冻结金额(负数表示冻结扣减) .balance(newBalance) // 扣减后的余额 .tenantId(tenantId) .type("FREEZE") @@ -300,6 +306,32 @@ public class TenantBalanceServiceImpl implements TenantBalanceService { .updatedAt(now) .build(); tenantWithdrawOrderMapper.insert(withdrawOrder); + + // 8. 发送站内信通知 + sendWithdrawNotify(tenantId, withdrawAmount); + } + + /** + * 发送提现站内信通知 + * + * @param tenantId 租户ID + * @param withdrawAmount 提现金额 + */ + private void sendWithdrawNotify(Long tenantId, BigDecimal withdrawAmount) { + // 获取租户信息,找到联系人用户ID + TenantDO tenant = tenantMapper.selectById(tenantId); + if (tenant == null || tenant.getContactUserId() == null) { + return; + } + + // 构建站内信请求 + NotifySendSingleToUserReqDTO reqDTO = new NotifySendSingleToUserReqDTO(); + reqDTO.setUserId(tenant.getContactUserId()); + reqDTO.setTemplateCode(WITHDRAW_NOTIFY_TEMPLATE_CODE); + reqDTO.setTemplateParams(Map.of("amount", withdrawAmount.toPlainString())); + + // 发送站内信 + notifyMessageSendApi.sendSingleMessageToAdmin(reqDTO); } /**