feat(system): 新增代理租户套餐管理模块
- 新增 TenantAgencyPackage 实体、Mapper、Service 及 Controller 全套后端 - 新增租户余额消费接口及 VO(预留实现) - 移除废弃的社交登录相关错误码,补充代理套餐错误码 TENANT_AGENCY_PACKAGE_NOT_EXISTS - 配置文件增加 system_tenant_agency_package 缓存忽略 共 15 个文件,+578 −7 行,复杂度:非常复杂
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.tenantagencypackage;
|
||||
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.tenantagencypackage.TenantAgencyPackageDO;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
|
||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||
|
||||
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
|
||||
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
|
||||
|
||||
import cn.iocoder.yudao.module.system.controller.admin.tenantagencypackage.vo.*;
|
||||
import cn.iocoder.yudao.module.system.service.tenantagencypackage.TenantAgencyPackageService;
|
||||
|
||||
@Tag(name = "管理后台 - 代理租户套餐")
|
||||
@RestController
|
||||
@RequestMapping("/system/tenant-agency-package")
|
||||
@Validated
|
||||
public class TenantAgencyPackageController {
|
||||
|
||||
@Resource
|
||||
private TenantAgencyPackageService tenantAgencyPackageService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建代理租户套餐")
|
||||
@PreAuthorize("@ss.hasPermission('system:tenant-agency-package:create')")
|
||||
public CommonResult<Long> createTenantAgencyPackage(@Valid @RequestBody TenantAgencyPackageSaveReqVO createReqVO) {
|
||||
return success(tenantAgencyPackageService.createTenantAgencyPackage(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新代理租户套餐")
|
||||
@PreAuthorize("@ss.hasPermission('system:tenant-agency-package:update')")
|
||||
public CommonResult<Boolean> updateTenantAgencyPackage(@Valid @RequestBody TenantAgencyPackageSaveReqVO updateReqVO) {
|
||||
tenantAgencyPackageService.updateTenantAgencyPackage(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除代理租户套餐")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('system:tenant-agency-package:delete')")
|
||||
public CommonResult<Boolean> deleteTenantAgencyPackage(@RequestParam("id") Long id) {
|
||||
tenantAgencyPackageService.deleteTenantAgencyPackage(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete-list")
|
||||
@Parameter(name = "ids", description = "编号", required = true)
|
||||
@Operation(summary = "批量删除代理租户套餐")
|
||||
@PreAuthorize("@ss.hasPermission('system:tenant-agency-package:delete')")
|
||||
public CommonResult<Boolean> deleteTenantAgencyPackageList(@RequestParam("ids") List<Long> ids) {
|
||||
tenantAgencyPackageService.deleteTenantAgencyPackageListByIds(ids);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得代理租户套餐")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('system:tenant-agency-package:query')")
|
||||
public CommonResult<TenantAgencyPackageRespVO> getTenantAgencyPackage(@RequestParam("id") Long id) {
|
||||
TenantAgencyPackageDO tenantAgencyPackage = tenantAgencyPackageService.getTenantAgencyPackage(id);
|
||||
return success(BeanUtils.toBean(tenantAgencyPackage, TenantAgencyPackageRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得代理租户套餐分页")
|
||||
@PreAuthorize("@ss.hasPermission('system:tenant-agency-package:query')")
|
||||
public CommonResult<PageResult<TenantAgencyPackageRespVO>> getTenantAgencyPackagePage(@Valid TenantAgencyPackagePageReqVO pageReqVO) {
|
||||
PageResult<TenantAgencyPackageDO> pageResult = tenantAgencyPackageService.getTenantAgencyPackagePage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, TenantAgencyPackageRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@Operation(summary = "导出代理租户套餐 Excel")
|
||||
@PreAuthorize("@ss.hasPermission('system:tenant-agency-package:export')")
|
||||
@ApiAccessLog(operateType = EXPORT)
|
||||
public void exportTenantAgencyPackageExcel(@Valid TenantAgencyPackagePageReqVO pageReqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
List<TenantAgencyPackageDO> list = tenantAgencyPackageService.getTenantAgencyPackagePage(pageReqVO).getList();
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "代理租户套餐.xls", "数据", TenantAgencyPackageRespVO.class,
|
||||
BeanUtils.toBean(list, TenantAgencyPackageRespVO.class));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.tenantagencypackage.vo;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
@Schema(description = "管理后台 - 代理租户套餐分页 Request VO")
|
||||
@Data
|
||||
public class TenantAgencyPackagePageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "套餐名", example = "芋艿")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "租户状态(0正常 1停用)", example = "2")
|
||||
private Integer status;
|
||||
|
||||
@Schema(description = "备注", example = "你猜")
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "关联的菜单编号")
|
||||
private String menuIds;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
@Schema(description = "套餐天数")
|
||||
private Integer days;
|
||||
|
||||
@Schema(description = "套餐价格", example = "22890")
|
||||
private Integer price;
|
||||
|
||||
@Schema(description = "爬主播客户端 0 关闭 1 开启")
|
||||
private Integer hostslClient;
|
||||
|
||||
@Schema(description = "爬大哥客户端 0 关闭 1 开启")
|
||||
private Integer brotherClient;
|
||||
|
||||
@Schema(description = "AI 客户端 0 关闭 1 开启")
|
||||
private Integer aiClient;
|
||||
|
||||
@Schema(description = "套餐类型", example = "2")
|
||||
private Integer packageType;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.tenantagencypackage.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import com.alibaba.excel.annotation.*;
|
||||
|
||||
@Schema(description = "管理后台 - 代理租户套餐 Response VO")
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class TenantAgencyPackageRespVO {
|
||||
|
||||
@Schema(description = "套餐编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20125")
|
||||
@ExcelProperty("套餐编号")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "套餐名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
|
||||
@ExcelProperty("套餐名")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "租户状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
||||
@ExcelProperty("租户状态(0正常 1停用)")
|
||||
private Integer status;
|
||||
|
||||
@Schema(description = "备注", example = "你猜")
|
||||
@ExcelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "关联的菜单编号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("关联的菜单编号")
|
||||
private String menuIds;
|
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "套餐天数", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("套餐天数")
|
||||
private Integer days;
|
||||
|
||||
@Schema(description = "套餐价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "22890")
|
||||
@ExcelProperty("套餐价格")
|
||||
private Integer price;
|
||||
|
||||
@Schema(description = "爬主播客户端 0 关闭 1 开启")
|
||||
@ExcelProperty("爬主播客户端 0 关闭 1 开启")
|
||||
private Integer hostslClient;
|
||||
|
||||
@Schema(description = "爬大哥客户端 0 关闭 1 开启")
|
||||
@ExcelProperty("爬大哥客户端 0 关闭 1 开启")
|
||||
private Integer brotherClient;
|
||||
|
||||
@Schema(description = "AI 客户端 0 关闭 1 开启")
|
||||
@ExcelProperty("AI 客户端 0 关闭 1 开启")
|
||||
private Integer aiClient;
|
||||
|
||||
@Schema(description = "套餐类型", example = "2")
|
||||
@ExcelProperty("套餐类型")
|
||||
private Integer packageType;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.tenantagencypackage.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import javax.validation.constraints.*;
|
||||
|
||||
@Schema(description = "管理后台 - 代理租户套餐新增/修改 Request VO")
|
||||
@Data
|
||||
public class TenantAgencyPackageSaveReqVO {
|
||||
|
||||
@Schema(description = "套餐编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20125")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "套餐名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
|
||||
@NotEmpty(message = "套餐名不能为空")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "租户状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
||||
@NotNull(message = "租户状态(0正常 1停用)不能为空")
|
||||
private Integer status;
|
||||
|
||||
@Schema(description = "备注", example = "你猜")
|
||||
private String remark;
|
||||
|
||||
@Schema(description = "关联的菜单编号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "关联的菜单编号不能为空")
|
||||
private String menuIds;
|
||||
|
||||
@Schema(description = "套餐天数", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "套餐天数不能为空")
|
||||
private Integer days;
|
||||
|
||||
@Schema(description = "套餐价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "22890")
|
||||
@NotNull(message = "套餐价格不能为空")
|
||||
private Integer price;
|
||||
|
||||
@Schema(description = "爬主播客户端 0 关闭 1 开启")
|
||||
private Integer hostslClient;
|
||||
|
||||
@Schema(description = "爬大哥客户端 0 关闭 1 开启")
|
||||
private Integer brotherClient;
|
||||
|
||||
@Schema(description = "AI 客户端 0 关闭 1 开启")
|
||||
private Integer aiClient;
|
||||
|
||||
@Schema(description = "套餐类型", example = "2")
|
||||
private Integer packageType;
|
||||
|
||||
}
|
||||
@@ -133,4 +133,6 @@ public class TenantBalanceController {
|
||||
PageResult<TenantBalanceRespVO> tenantBalancePage = tenantBalanceService.getSelfSubordinateTenantBalancePage(pageReqVO);
|
||||
return success(BeanUtils.toBean(tenantBalancePage, TenantBalanceRespVO.class));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.tenantbalance.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
/*
|
||||
* @author: ziin
|
||||
* @date: 2025/11/24 15:32
|
||||
*/
|
||||
@Schema(description = "管理后台 - 租户余额消费")
|
||||
@Data
|
||||
public class TenantBalanceConsumptionReqVO {
|
||||
|
||||
@Schema( description = "套餐编号")
|
||||
private Long id;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.tenantagencypackage;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
|
||||
/**
|
||||
* 代理租户套餐 DO
|
||||
*
|
||||
* @author 总后台
|
||||
*/
|
||||
@TableName("system_tenant_agency_package")
|
||||
@KeySequence("system_tenant_agency_package_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class TenantAgencyPackageDO extends BaseDO {
|
||||
|
||||
/**
|
||||
* 套餐编号
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 套餐名
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 租户状态(0正常 1停用)
|
||||
*/
|
||||
private Integer status;
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
/**
|
||||
* 关联的菜单编号
|
||||
*/
|
||||
private String menuIds;
|
||||
/**
|
||||
* 套餐天数
|
||||
*/
|
||||
private Integer days;
|
||||
/**
|
||||
* 套餐价格
|
||||
*/
|
||||
private Integer price;
|
||||
/**
|
||||
* 爬主播客户端 0 关闭 1 开启
|
||||
*/
|
||||
private Integer hostslClient;
|
||||
/**
|
||||
* 爬大哥客户端 0 关闭 1 开启
|
||||
*/
|
||||
private Integer brotherClient;
|
||||
/**
|
||||
* AI 客户端 0 关闭 1 开启
|
||||
*/
|
||||
private Integer aiClient;
|
||||
/**
|
||||
* 套餐类型
|
||||
*/
|
||||
private Integer packageType;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package cn.iocoder.yudao.module.system.dal.mysql.tenantagencypackage;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.tenantagencypackage.TenantAgencyPackageDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.tenantagencypackage.vo.*;
|
||||
|
||||
/**
|
||||
* 代理租户套餐 Mapper
|
||||
*
|
||||
* @author 总后台
|
||||
*/
|
||||
@Mapper
|
||||
public interface TenantAgencyPackageMapper extends BaseMapperX<TenantAgencyPackageDO> {
|
||||
|
||||
default PageResult<TenantAgencyPackageDO> selectPage(TenantAgencyPackagePageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<TenantAgencyPackageDO>()
|
||||
.likeIfPresent(TenantAgencyPackageDO::getName, reqVO.getName())
|
||||
.eqIfPresent(TenantAgencyPackageDO::getStatus, reqVO.getStatus())
|
||||
.eqIfPresent(TenantAgencyPackageDO::getRemark, reqVO.getRemark())
|
||||
.eqIfPresent(TenantAgencyPackageDO::getMenuIds, reqVO.getMenuIds())
|
||||
.betweenIfPresent(TenantAgencyPackageDO::getCreateTime, reqVO.getCreateTime())
|
||||
.eqIfPresent(TenantAgencyPackageDO::getDays, reqVO.getDays())
|
||||
.eqIfPresent(TenantAgencyPackageDO::getPrice, reqVO.getPrice())
|
||||
.eqIfPresent(TenantAgencyPackageDO::getHostslClient, reqVO.getHostslClient())
|
||||
.eqIfPresent(TenantAgencyPackageDO::getBrotherClient, reqVO.getBrotherClient())
|
||||
.eqIfPresent(TenantAgencyPackageDO::getAiClient, reqVO.getAiClient())
|
||||
.eqIfPresent(TenantAgencyPackageDO::getPackageType, reqVO.getPackageType())
|
||||
.orderByDesc(TenantAgencyPackageDO::getId));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -136,19 +136,12 @@ public interface ErrorCodeConstants {
|
||||
ErrorCode TENANT_BALANCE_TRANSFER_ERROR_TARGET_NOT_SUBORDINATE = new ErrorCode(1_003_017_012, "转账目标租户不是当前租户的下级");
|
||||
|
||||
|
||||
// ================= 租户套餐 1-003-018-000 ==================
|
||||
ErrorCode TENANT_AGENCY_PACKAGE_NOT_EXISTS = new ErrorCode(1_003_018_000, "代理租户套餐不存在");
|
||||
|
||||
|
||||
|
||||
// ========== 社交用户 1-002-018-000 ==========
|
||||
ErrorCode SOCIAL_USER_AUTH_FAILURE = new ErrorCode(1_002_018_000, "社交授权失败,原因是:{}");
|
||||
ErrorCode SOCIAL_USER_NOT_FOUND = new ErrorCode(1_002_018_001, "社交授权失败,找不到对应的用户");
|
||||
|
||||
ErrorCode SOCIAL_CLIENT_WEIXIN_MINI_APP_PHONE_CODE_ERROR = new ErrorCode(1_002_018_200, "获得手机号失败");
|
||||
ErrorCode SOCIAL_CLIENT_WEIXIN_MINI_APP_QRCODE_ERROR = new ErrorCode(1_002_018_201, "获得小程序码失败");
|
||||
ErrorCode SOCIAL_CLIENT_WEIXIN_MINI_APP_SUBSCRIBE_TEMPLATE_ERROR = new ErrorCode(1_002_018_202, "获得小程序订阅消息模版失败");
|
||||
ErrorCode SOCIAL_CLIENT_WEIXIN_MINI_APP_SUBSCRIBE_MESSAGE_ERROR = new ErrorCode(1_002_018_203, "发送小程序订阅消息失败");
|
||||
ErrorCode SOCIAL_CLIENT_WEIXIN_MINI_APP_ORDER_UPLOAD_SHIPPING_INFO_ERROR = new ErrorCode(1_002_018_204, "上传微信小程序发货信息失败");
|
||||
ErrorCode SOCIAL_CLIENT_WEIXIN_MINI_APP_ORDER_NOTIFY_CONFIRM_RECEIVE_ERROR = new ErrorCode(1_002_018_205, "上传微信小程序订单收货信息失败");
|
||||
ErrorCode SOCIAL_CLIENT_NOT_EXISTS = new ErrorCode(1_002_018_210, "社交客户端不存在");
|
||||
ErrorCode SOCIAL_CLIENT_UNIQUE = new ErrorCode(1_002_018_211, "社交客户端已存在配置");
|
||||
|
||||
// ========== OAuth2 客户端 1-002-020-000 =========
|
||||
ErrorCode OAUTH2_CLIENT_NOT_EXISTS = new ErrorCode(1_002_020_000, "OAuth2 客户端不存在");
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
package cn.iocoder.yudao.module.system.service.tenantagencypackage;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.tenantagencypackage.vo.*;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.tenantagencypackage.TenantAgencyPackageDO;
|
||||
|
||||
/**
|
||||
* 代理租户套餐 Service 接口
|
||||
*
|
||||
* @author 总后台
|
||||
*/
|
||||
public interface TenantAgencyPackageService {
|
||||
|
||||
/**
|
||||
* 创建代理租户套餐
|
||||
*
|
||||
* @param createReqVO 创建信息
|
||||
* @return 编号
|
||||
*/
|
||||
Long createTenantAgencyPackage(@Valid TenantAgencyPackageSaveReqVO createReqVO);
|
||||
|
||||
/**
|
||||
* 更新代理租户套餐
|
||||
*
|
||||
* @param updateReqVO 更新信息
|
||||
*/
|
||||
void updateTenantAgencyPackage(@Valid TenantAgencyPackageSaveReqVO updateReqVO);
|
||||
|
||||
/**
|
||||
* 删除代理租户套餐
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
void deleteTenantAgencyPackage(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除代理租户套餐
|
||||
*
|
||||
* @param ids 编号
|
||||
*/
|
||||
void deleteTenantAgencyPackageListByIds(List<Long> ids);
|
||||
|
||||
/**
|
||||
* 获得代理租户套餐
|
||||
*
|
||||
* @param id 编号
|
||||
* @return 代理租户套餐
|
||||
*/
|
||||
TenantAgencyPackageDO getTenantAgencyPackage(Long id);
|
||||
|
||||
/**
|
||||
* 获得代理租户套餐分页
|
||||
*
|
||||
* @param pageReqVO 分页查询
|
||||
* @return 代理租户套餐分页
|
||||
*/
|
||||
PageResult<TenantAgencyPackageDO> getTenantAgencyPackagePage(TenantAgencyPackagePageReqVO pageReqVO);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
package cn.iocoder.yudao.module.system.service.tenantagencypackage;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.tenantagencypackage.TenantAgencyPackageDO;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.util.*;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.tenantagencypackage.vo.*;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.tenantagencypackage.TenantAgencyPackageMapper;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
|
||||
|
||||
/**
|
||||
* 代理租户套餐 Service 实现类
|
||||
*
|
||||
* @author 总后台
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class TenantAgencyPackageServiceImpl implements TenantAgencyPackageService {
|
||||
|
||||
@Resource
|
||||
private TenantAgencyPackageMapper tenantAgencyPackageMapper;
|
||||
|
||||
@Override
|
||||
public Long createTenantAgencyPackage(TenantAgencyPackageSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
TenantAgencyPackageDO tenantAgencyPackage = BeanUtils.toBean(createReqVO, TenantAgencyPackageDO.class);
|
||||
tenantAgencyPackageMapper.insert(tenantAgencyPackage);
|
||||
// 返回
|
||||
return tenantAgencyPackage.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateTenantAgencyPackage(TenantAgencyPackageSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validateTenantAgencyPackageExists(updateReqVO.getId());
|
||||
// 更新
|
||||
TenantAgencyPackageDO updateObj = BeanUtils.toBean(updateReqVO, TenantAgencyPackageDO.class);
|
||||
tenantAgencyPackageMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteTenantAgencyPackage(Long id) {
|
||||
// 校验存在
|
||||
validateTenantAgencyPackageExists(id);
|
||||
// 删除
|
||||
tenantAgencyPackageMapper.deleteById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteTenantAgencyPackageListByIds(List<Long> ids) {
|
||||
// 校验存在
|
||||
validateTenantAgencyPackageExists(ids);
|
||||
// 删除
|
||||
tenantAgencyPackageMapper.deleteByIds(ids);
|
||||
}
|
||||
|
||||
private void validateTenantAgencyPackageExists(List<Long> ids) {
|
||||
List<TenantAgencyPackageDO> list = tenantAgencyPackageMapper.selectByIds(ids);
|
||||
if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
|
||||
throw exception(TENANT_AGENCY_PACKAGE_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
private void validateTenantAgencyPackageExists(Long id) {
|
||||
if (tenantAgencyPackageMapper.selectById(id) == null) {
|
||||
throw exception(TENANT_AGENCY_PACKAGE_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public TenantAgencyPackageDO getTenantAgencyPackage(Long id) {
|
||||
return tenantAgencyPackageMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<TenantAgencyPackageDO> getTenantAgencyPackagePage(TenantAgencyPackagePageReqVO pageReqVO) {
|
||||
return tenantAgencyPackageMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -66,4 +66,6 @@ public interface TenantBalanceService {
|
||||
TenantBalanceDO getSelfBalance();
|
||||
|
||||
PageResult<TenantBalanceRespVO> getSelfSubordinateTenantBalancePage(@Valid TenantBalancePageReqVO pageReqVO);
|
||||
|
||||
Boolean consumption(@Valid TenantBalanceConsumptionReqVO consumptionReqVO);
|
||||
}
|
||||
@@ -294,4 +294,25 @@ public class TenantBalanceServiceImpl implements TenantBalanceService {
|
||||
return new PageResult<>(tenantBalanceRespVOIPage.getRecords(),tenantBalanceRespVOIPage.getTotal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean consumption(TenantBalanceConsumptionReqVO consumptionReqVO) {
|
||||
|
||||
Long tenantId = TenantContextHolder.getTenantId();
|
||||
// TenantBalanceDO tenantBalance = tenantBalanceMapper.selectById(tenantId);
|
||||
// if (tenantBalance == null) {
|
||||
// throw exception(TENANT_WALLET_NOT_EXISTS);
|
||||
// }
|
||||
// if (tenantBalance.getBalance() < consumptionReqVO.getAmount()) {
|
||||
// throw exception(TENANT_WALLET_NOT_ENOUGH);
|
||||
// }
|
||||
// Integer updateCount = tenantBalanceMapper.updateBalanceWithVersion(tenantId, -consumptionReqVO.getAmount(), tenantBalance.getVersion());
|
||||
// if (updateCount == 0) {
|
||||
// throw exception(TENANT_BALANCE_CONSUMPTION_OPERATION_ERROR);
|
||||
// }
|
||||
return true;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="cn.iocoder.yudao.module.system.dal.mysql.tenantagencypackage.TenantAgencyPackageMapper">
|
||||
|
||||
<!--
|
||||
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
|
||||
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
|
||||
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
|
||||
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
||||
-->
|
||||
|
||||
</mapper>
|
||||
@@ -195,6 +195,7 @@ yudao:
|
||||
- ai_language
|
||||
- system_tenant_balance
|
||||
- system_tenant_points
|
||||
- system_tenant_agency_package
|
||||
ignore-caches:
|
||||
- user_role_ids
|
||||
- permission_menu_ids
|
||||
|
||||
Reference in New Issue
Block a user