Преглед на файлове

feat: include vendorType/activityProviderStatus in login response for frontend permission check

iwt преди 5 дни
родител
ревизия
4c7943d3d7

+ 2 - 0
cfc-backend/src/main/java/com/etotem/cfc/dto/LoginResultDTO.java

@@ -19,4 +19,6 @@ public class LoginResultDTO {
     private String teacherStatus; // 成长规划师审核状态: pending/approved/rejected
     private String teacherRejectReason; // 成长规划师审核拒绝原因
     private Boolean hasTeacherRole; // 用户是否拥有teacher角色
+    private String vendorType; // 服务商类型: planner/activity_provider/product_supplier
+    private String activityProviderStatus; // 活动提供商审核状态: pending/approved/rejected
 }

+ 7 - 0
cfc-backend/src/main/java/com/etotem/cfc/service/UserService.java

@@ -168,6 +168,7 @@ private FamilyInvitationService familyInvitationService;
         result.setNeedsRoleSelect(isNewUser);
         result.setNeedsFamily(user.getFamilyId() == null || user.getFamilyId() == 0L);
         populateTeacherFields(result, user);
+        populateActivityProviderFields(result, user);
 
         return result;
     }
@@ -1532,6 +1533,7 @@ FamilyMember child = familyMemberMapper.selectById(memberId);
             result.setIsNewUser(true);
             result.setNeedsFamily(user.getFamilyId() == null || user.getFamilyId() == 0L);
             populateTeacherFields(result, user);
+            populateActivityProviderFields(result, user);
             return result;
         }
 
@@ -1770,6 +1772,11 @@ FamilyMember child = familyMemberMapper.selectById(memberId);
         result.setHasTeacherRole(hasTeacher);
     }
 
+    private void populateActivityProviderFields(LoginResultDTO result, User user) {
+        result.setVendorType(user.getVendorType());
+        result.setActivityProviderStatus(user.getActivityProviderStatus());
+    }
+
     /**
      * 获取用户有效的 familyId 集合:自己的 familyId + teacherFamilyIds 中关联的家庭。
      * @param userId 用户ID

+ 1 - 1
cfc-frontend/pages/login/login.vue

@@ -210,7 +210,7 @@ export default {
       uni.setStorageSync('isSwitchedTeacher', false)
       if (data.openid) uni.setStorageSync('openid', data.openid)
       // familyId 必须持久化:家庭在注册时已由后端创建,缺失会导致页面误判无家庭而重复创建
-      uni.setStorageSync('userInfo', { nickname: data.nickname, userId: data.userId, familyId: data.familyId })
+      uni.setStorageSync('userInfo', { nickname: data.nickname, userId: data.userId, familyId: data.familyId, vendorType: data.vendorType, activityProviderStatus: data.activityProviderStatus })
       if (data.phone) uni.setStorageSync('phone', data.phone)
       if (data.teacherStatus) uni.setStorageSync('teacherStatus', data.teacherStatus)
       if (data.teacherRejectReason) uni.setStorageSync('teacherRejectReason', data.teacherRejectReason)