Browse Source

feat: /api/membership/plans 使用 sys_config 价格 + 推荐标记

FAMILY/PREMIUM 价格从 sys_config 读取,添加 recommended 和 levelDesc 字段
Sisyphus 1 tháng trước cách đây
mục cha
commit
3d1ab8f207

+ 24 - 4
cfc-backend/src/main/java/com/etotem/cfc/controller/MembershipController.java

@@ -9,6 +9,7 @@ import com.etotem.cfc.entity.User;
 import com.etotem.cfc.mapper.MemberUpgradeRecordMapper;
 import com.etotem.cfc.mapper.UserMapper;
 import com.etotem.cfc.service.MembershipService;
+import com.etotem.cfc.service.SysConfigService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.web.bind.annotation.*;
@@ -33,6 +34,9 @@ public class MembershipController {
     @Resource
     private MemberUpgradeRecordMapper memberUpgradeRecordMapper;
 
+    @Resource
+    private SysConfigService sysConfigService;
+
     /**
      * 获取所有会员等级
      */
@@ -213,7 +217,7 @@ public class MembershipController {
     /**
      * 获取任务模板价格列表
      */
-    @Operation(summary = "获取任务模板价格")
+    @Operation(summary = "获取会员方案价格列表")
     @PostMapping("/plans")
     public Result<List<Map<String, Object>>> getPricingPlans() {
         List<MembershipLevelDTO> levels = membershipService.getAllLevels();
@@ -222,9 +226,25 @@ public class MembershipController {
             Map<String, Object> plan = new HashMap<>();
             plan.put("levelCode", level.getLevelCode());
             plan.put("levelName", level.getLevelName());
-            plan.put("monthly", level.getPriceMonthly());
-            plan.put("quarterly", level.getPriceQuarterly());
-            plan.put("yearly", level.getPriceYearly());
+            plan.put("levelDesc", level.getLevelDesc());
+            plan.put("recommended", "FAMILY".equals(level.getLevelCode()));
+            // 付费等级价格从 sys_config 读取
+            if ("FAMILY".equals(level.getLevelCode())) {
+                String yearlyStr = sysConfigService.getValue("member_fee_family");
+                plan.put("yearly", yearlyStr != null ? Integer.parseInt(yearlyStr) : 131400);
+                plan.put("monthly", 0);
+                plan.put("quarterly", 0);
+            } else if ("PREMIUM".equals(level.getLevelCode())) {
+                String yearlyStr = sysConfigService.getValue("member_fee_premium");
+                String monthlyStr = sysConfigService.getValue("member_fee_premium_monthly");
+                plan.put("yearly", yearlyStr != null ? Integer.parseInt(yearlyStr) : 1316800);
+                plan.put("monthly", monthlyStr != null ? Integer.parseInt(monthlyStr) : 131400);
+                plan.put("quarterly", 0);
+            } else {
+                plan.put("monthly", level.getPriceMonthly());
+                plan.put("quarterly", level.getPriceQuarterly());
+                plan.put("yearly", level.getPriceYearly());
+            }
             plans.add(plan);
         }
         return Result.success(plans);