Просмотр исходного кода

fix(backend): 会员接口匿名访问返回 FREE 空数据 + getMemberLevel 查询 LIMIT 1

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Xiaogang Liao 1 месяц назад
Родитель
Сommit
d49700f09d

+ 14 - 3
cfc-backend/src/main/java/com/etotem/cfc/controller/MembershipController.java

@@ -61,13 +61,24 @@ public class MembershipController {
     @Operation(summary = "获取我的会员信息")
     @PostMapping("/my")
     public Result<Map<String, Object>> getMyMembership(@RequestAttribute("userId") Long userId) {
-        if (userId == null) {
-            return Result.error("用户未登录");
+        // 匿名用户(userId <= 0)返回空会员数据,不报错
+        if (userId == null || userId <= 0) {
+            Map<String, Object> emptyResult = new HashMap<>();
+            emptyResult.put("memberLevel", "FREE");
+            emptyResult.put("memberExpireTime", null);
+            emptyResult.put("membership", null);
+            emptyResult.put("totalConsumption", 0);
+            return Result.success(emptyResult);
         }
 
         User user = userMapper.selectById(userId);
         if (user == null) {
-            return Result.error("用户不存在");
+            Map<String, Object> emptyResult = new HashMap<>();
+            emptyResult.put("memberLevel", "FREE");
+            emptyResult.put("memberExpireTime", null);
+            emptyResult.put("membership", null);
+            emptyResult.put("totalConsumption", 0);
+            return Result.success(emptyResult);
         }
 
         Long familyId = user.getFamilyId();

+ 1 - 0
cfc-backend/src/main/java/com/etotem/cfc/service/MembershipService.java

@@ -236,6 +236,7 @@ public class MembershipService implements MembershipServiceInterface {
         MembershipLevel level = levelMapper.selectOne(
                 new LambdaQueryWrapper<MembershipLevel>()
                         .eq(MembershipLevel::getLevelCode, levelCode)
+                        .last("LIMIT 1")
         );
 
         if (level == null) {