feat(tenant-balance): 新增租户积分记录管理接口

新增租户积分记录(TenantBalanceTransaction)的完整 CRUD 接口,包括分页查询、创建、更新、删除及批量操作,并补充对应错误码。
This commit is contained in:
2025-12-26 18:19:47 +08:00
parent 1694603465
commit 419d9a930c
5 changed files with 174 additions and 0 deletions

View File

@@ -1,5 +1,6 @@
package com.yolo.keyboard.controller.admin.tenantbalance;
import com.yolo.keyboard.dal.dataobject.tenantbalancetransaction.TenantBalanceTransactionDO;
import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@@ -125,4 +126,56 @@ public class TenantBalanceController {
return success(BeanUtils.toBean(tenantBalancePage, TenantBalanceRespVO.class));
}
// ==================== 子表(租户积分记录) ====================
@GetMapping("/tenant-balance-transaction/page")
@Operation(summary = "获得租户积分记录分页")
@Parameter(name = "tenantId", description = "租户 Id")
@PreAuthorize("@ss.hasPermission('keyboard:tenant-balance:query')")
public CommonResult<PageResult<TenantBalanceTransactionDO>> getTenantBalanceTransactionPage(PageParam pageReqVO,
@RequestParam("tenantId") Long tenantId) {
return success(tenantBalanceService.getTenantBalanceTransactionPage(pageReqVO, tenantId));
}
@PostMapping("/tenant-balance-transaction/create")
@Operation(summary = "创建租户积分记录")
@PreAuthorize("@ss.hasPermission('keyboard:tenant-balance:create')")
public CommonResult<Long> createTenantBalanceTransaction(@Valid @RequestBody TenantBalanceTransactionDO tenantBalanceTransaction) {
return success(tenantBalanceService.createTenantBalanceTransaction(tenantBalanceTransaction));
}
@PutMapping("/tenant-balance-transaction/update")
@Operation(summary = "更新租户积分记录")
@PreAuthorize("@ss.hasPermission('keyboard:tenant-balance:update')")
public CommonResult<Boolean> updateTenantBalanceTransaction(@Valid @RequestBody TenantBalanceTransactionDO tenantBalanceTransaction) {
tenantBalanceService.updateTenantBalanceTransaction(tenantBalanceTransaction);
return success(true);
}
@DeleteMapping("/tenant-balance-transaction/delete")
@Parameter(name = "id", description = "编号", required = true)
@Operation(summary = "删除租户积分记录")
@PreAuthorize("@ss.hasPermission('keyboard:tenant-balance:delete')")
public CommonResult<Boolean> deleteTenantBalanceTransaction(@RequestParam("id") Long id) {
tenantBalanceService.deleteTenantBalanceTransaction(id);
return success(true);
}
@DeleteMapping("/tenant-balance-transaction/delete-list")
@Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除租户积分记录")
@PreAuthorize("@ss.hasPermission('keyboard:tenant-balance:delete')")
public CommonResult<Boolean> deleteTenantBalanceTransactionList(@RequestParam("ids") List<Long> ids) {
tenantBalanceService.deleteTenantBalanceTransactionListByIds(ids);
return success(true);
}
@GetMapping("/tenant-balance-transaction/get")
@Operation(summary = "获得租户积分记录")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('keyboard:tenant-balance:query')")
public CommonResult<TenantBalanceTransactionDO> getTenantBalanceTransaction(@RequestParam("id") Long id) {
return success(tenantBalanceService.getTenantBalanceTransaction(id));
}
}

View File

@@ -1,9 +1,14 @@
package com.yolo.keyboard.dal.mysql.tenantbalancetransaction;
import com.yolo.keyboard.dal.dataobject.tenantbalancetransaction.TenantBalanceTransactionDO;
import com.yolo.keyboard.framework.common.pojo.PageParam;
import com.yolo.keyboard.framework.common.pojo.PageResult;
import com.yolo.keyboard.framework.mybatis.core.mapper.BaseMapperX;
import com.yolo.keyboard.framework.mybatis.core.query.LambdaQueryWrapperX;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 租户积分记录 Mapper
*
@@ -11,4 +16,18 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface TenantBalanceTransactionMapper extends BaseMapperX<TenantBalanceTransactionDO> {
default PageResult<TenantBalanceTransactionDO> selectPage(PageParam reqVO, Long tenantId) {
return selectPage(reqVO, new LambdaQueryWrapperX<TenantBalanceTransactionDO>()
.eq(TenantBalanceTransactionDO::getTenantId, tenantId)
.orderByDesc(TenantBalanceTransactionDO::getId));
}
default int deleteByTenantId(Long tenantId) {
return delete(TenantBalanceTransactionDO::getTenantId, tenantId);
}
default int deleteByTenantIds(List<Long> tenantIds) {
return deleteBatch(TenantBalanceTransactionDO::getTenantId, tenantIds);
}
}

View File

@@ -1,6 +1,8 @@
package com.yolo.keyboard.service.tenantbalance;
import java.util.*;
import com.yolo.keyboard.dal.dataobject.tenantbalancetransaction.TenantBalanceTransactionDO;
import jakarta.validation.*;
import com.yolo.keyboard.controller.admin.tenantbalance.vo.*;
import com.yolo.keyboard.dal.dataobject.tenantbalance.TenantBalanceDO;
@@ -81,4 +83,51 @@ public interface TenantBalanceService {
*/
PageResult<TenantBalanceRespVO> getSelfSubordinateTenantBalancePage(TenantBalancePageReqVO pageReqVO);
/**
* 获得租户积分记录分页
*
* @param pageReqVO 分页查询
* @param tenantId 租户 Id
* @return 租户积分记录分页
*/
PageResult<TenantBalanceTransactionDO> getTenantBalanceTransactionPage(PageParam pageReqVO, Long tenantId);
/**
* 创建租户积分记录
*
* @param tenantBalanceTransaction 创建信息
* @return 编号
*/
Long createTenantBalanceTransaction(@Valid TenantBalanceTransactionDO tenantBalanceTransaction);
/**
* 更新租户积分记录
*
* @param tenantBalanceTransaction 更新信息
*/
void updateTenantBalanceTransaction(@Valid TenantBalanceTransactionDO tenantBalanceTransaction);
/**
* 删除租户积分记录
*
* @param id 编号
*/
void deleteTenantBalanceTransaction(Long id);
/**
* 批量删除租户积分记录
*
* @param ids 编号
*/
void deleteTenantBalanceTransactionListByIds(List<Long> ids);
/**
* 获得租户积分记录
*
* @param id 编号
* @return 租户积分记录
*/
TenantBalanceTransactionDO getTenantBalanceTransaction(Long id);
}

View File

@@ -28,6 +28,7 @@ import static com.yolo.keyboard.framework.common.exception.util.ServiceException
import static com.yolo.keyboard.framework.common.util.collection.CollectionUtils.convertList;
import static com.yolo.keyboard.framework.common.util.collection.CollectionUtils.diffList;
import static com.yolo.keyboard.module.infra.enums.ErrorCodeConstants.TENANT_BALANCE_NOT_EXISTS;
import static com.yolo.keyboard.module.infra.enums.ErrorCodeConstants.TENANT_BALANCE_TRANSACTION_NOT_EXISTS;
/**
* 租户余额 Service 实现类
@@ -160,4 +161,55 @@ public class TenantBalanceServiceImpl implements TenantBalanceService {
return BeanUtils.toBean(pageResult, TenantBalanceRespVO.class);
}
@Override
public PageResult<TenantBalanceTransactionDO> getTenantBalanceTransactionPage(PageParam pageReqVO, Long tenantId) {
return tenantBalanceTransactionMapper.selectPage(pageReqVO, tenantId);
}
@Override
public Long createTenantBalanceTransaction(TenantBalanceTransactionDO tenantBalanceTransaction) {
tenantBalanceTransactionMapper.insert(tenantBalanceTransaction);
return tenantBalanceTransaction.getId();
}
@Override
public void updateTenantBalanceTransaction(TenantBalanceTransactionDO tenantBalanceTransaction) {
// 校验存在
validateTenantBalanceTransactionExists(tenantBalanceTransaction.getId());
// 更新
tenantBalanceTransactionMapper.updateById(tenantBalanceTransaction);
}
@Override
public void deleteTenantBalanceTransaction(Long id) {
// 删除
tenantBalanceTransactionMapper.deleteById(id);
}
@Override
public void deleteTenantBalanceTransactionListByIds(List<Long> ids) {
// 删除
tenantBalanceTransactionMapper.deleteByIds(ids);
}
@Override
public TenantBalanceTransactionDO getTenantBalanceTransaction(Long id) {
return tenantBalanceTransactionMapper.selectById(id);
}
private void validateTenantBalanceTransactionExists(Long id) {
if (tenantBalanceTransactionMapper.selectById(id) == null) {
throw exception(TENANT_BALANCE_TRANSACTION_NOT_EXISTS);
}
}
private void deleteTenantBalanceTransactionByTenantId(Long tenantId) {
tenantBalanceTransactionMapper.deleteByTenantId(tenantId);
}
private void deleteTenantBalanceTransactionByTenantIds(List<Long> tenantIds) {
tenantBalanceTransactionMapper.deleteByTenantIds(tenantIds);
}
}

View File

@@ -86,6 +86,7 @@ public interface ErrorCodeConstants {
ErrorCode USER_CHARACTER_NOT_EXISTS = new ErrorCode(1_001_202_012, "用户人设管理不存在");
ErrorCode USER_THEMES_NOT_EXISTS = new ErrorCode(1_001_202_013, "用户主题不存在");
ErrorCode TENANT_BALANCE_NOT_EXISTS = new ErrorCode(1_001_202_014, "租户余额不存在");
ErrorCode TENANT_BALANCE_TRANSACTION_NOT_EXISTS = new ErrorCode(1_001_202_015, "租户积分记录不存在");
}