feat(commission): 新增佣金30天提现冻结机制

- KeyboardTenantCommissionDO 增加 withdrawableAt、withdrawableProcessed 字段
- TenantBalanceDO 增加 withdrawableBalance 字段并注释掉 Oracle 自增序列
- 计算任务在结算时写入可提现时间并默认未处理
- 新增 CommissionWithdrawableJob 定时把到期佣金从冻结余额转到可提现余额
- TenantServiceImpl 创建代理租户时调用 TenantBalanceApi 初始化钱包
- 提供 TenantBalanceApi 及实现,支持初始化与余额转换
This commit is contained in:
2025-12-30 16:06:31 +08:00
parent baf38df6c3
commit 98e427c65a
7 changed files with 217 additions and 2 deletions

View File

@@ -0,0 +1,17 @@
package com.yolo.keyboard.module.system.api.tenantbalance;
/**
* 租户余额 API 接口
*
* @author ziin
*/
public interface TenantBalanceApi {
/**
* 初始化租户钱包
*
* @param tenantId 租户ID
*/
void initTenantBalance(Long tenantId);
}

View File

@@ -22,6 +22,7 @@ import com.yolo.keyboard.module.system.dal.dataobject.tenant.TenantDO;
import com.yolo.keyboard.module.system.dal.dataobject.tenant.TenantPackageDO;
import com.yolo.keyboard.module.system.dal.mysql.tenant.TenantMapper;
import com.yolo.keyboard.module.system.api.invitecode.UserInviteCodeApi;
import com.yolo.keyboard.module.system.api.tenantbalance.TenantBalanceApi;
import com.yolo.keyboard.module.system.enums.permission.RoleCodeEnum;
import com.yolo.keyboard.module.system.enums.permission.RoleTypeEnum;
import com.yolo.keyboard.module.system.service.permission.MenuService;
@@ -79,6 +80,9 @@ public class TenantServiceImpl implements TenantService {
@Autowired(required = false)
private UserInviteCodeApi userInviteCodeApi;
@Autowired(required = false)
private TenantBalanceApi tenantBalanceApi;
@Override
public List<Long> getTenantIdList() {
List<TenantDO> tenants = tenantMapper.selectList();
@@ -143,6 +147,10 @@ public class TenantServiceImpl implements TenantService {
if ("代理".equals(createReqVO.getTenantType()) && userInviteCodeApi != null) {
userInviteCodeApi.createInviteCodeForAgent(userId, tenant.getId());
}
// 为代理租户初始化钱包
if ("代理".equals(createReqVO.getTenantType()) && tenantBalanceApi != null) {
tenantBalanceApi.initTenantBalance(tenant.getId());
}
});
return tenant.getId();
}