package com.ai.da.controller; import com.ai.da.common.response.Response; import com.ai.da.mapper.primary.entity.SubscriptionPlan; import com.ai.da.model.dto.SubscriptionPlanDTO; import com.ai.da.model.dto.SubscriptionPlanPageQuery; import com.ai.da.model.dto.UpdateSubscriptionPlanDTO; import com.ai.da.model.vo.SubscriptionPlanVO; import com.ai.da.service.SubscriptionPlanService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import java.util.List; @Tag(name = "订阅计划模块") @Slf4j @RequiredArgsConstructor @RestController @RequestMapping("/api/subscription_plan") public class SubscriptionPlanController { private final SubscriptionPlanService subscriptionPlanService; @Operation(summary = "创建订阅计划") @PostMapping("/createPlan") public Response createPlan(@Valid @RequestBody SubscriptionPlanDTO subscriptionPlanDTO) { subscriptionPlanService.createPlan(subscriptionPlanDTO); return Response.success(); } @Operation(summary = "更新订阅计划") @PostMapping("/updatePlan") public Response updatePlan(@Valid @RequestBody UpdateSubscriptionPlanDTO updateDTO) { subscriptionPlanService.updatePlan(updateDTO); return Response.success(); } @Operation(summary = "搜索订阅计划") @PostMapping("/searchByOrganizationIdAndStatus") public Response> searchByOrganizationIdAndStatus(@Valid @RequestBody SubscriptionPlanPageQuery subscriptionPlanPageQuery) { return Response.success(subscriptionPlanService.searchByOrganizationIdAndStatus(subscriptionPlanPageQuery)); } @Operation(summary = "分页搜索订阅计划") @PostMapping("/searchByPage") public Response> searchByPage(@Valid @RequestBody SubscriptionPlanPageQuery subscriptionPlanPageQuery) { IPage subscriptionPlanVOIPage = subscriptionPlanService.searchByPage(subscriptionPlanPageQuery); return Response.success(subscriptionPlanVOIPage); } @Operation(summary = "删除订阅计划") @GetMapping("/deletePlan") public Response deletePlan(@RequestParam Long id) { subscriptionPlanService.deletePlan(id); return Response.success(); } @Operation(summary = "管理员切换订阅计划") @GetMapping("/switchSubscriptionPlan") public Response switchSubscriptionPlan(@RequestParam Long targetSubscriptionPlanId, @RequestParam(required = false) Long adminAccId) { subscriptionPlanService.switchSubscriptionPlan(targetSubscriptionPlanId, adminAccId); return Response.success(); } @Operation(summary = "子账号切换订阅计划") @GetMapping("/switchSubAccSubscriptionPlan") public Response switchSubAccSubscriptionPlan(@RequestParam Long targetSubscriptionPlanId, @RequestParam Long subAccId) { subscriptionPlanService.switchSubAccSubscriptionPlan(targetSubscriptionPlanId, subAccId); return Response.success(); } @Operation(summary = "activeSubscriptionPlan") @GetMapping("/activeSubscriptionPlan") public Response activeSubscriptionPlan() { subscriptionPlanService.activeSubscriptionPlan(); return Response.success(); } @Operation(summary = "expireSubscription") @GetMapping("/expireSubscription") public Response expireSubscription() { subscriptionPlanService.expireSubscription(); return Response.success(); } }