membershipGate.js 1.1 KB

123456789101112131415161718192021222324252627
  1. /**
  2. * 会员有效态(前端入口可见性统一判据)
  3. *
  4. * 唯一判据 = POST /api/ai/gate 返回 data.isActive === true。
  5. * 刻意不使用 canUse / status:运营开关 ai.coach.member_gate_enabled 关闭时,
  6. * 后端会把未付费用户的 status 也置为 ALLOW / canUse=true,用它判入口会放行非会员。
  7. * isActive 在开关判断之前按真实付费记录填充
  8. * (users.member_expire_time > now 或 family_memberships payment_status='paid' 且 end_date > now),
  9. * 不受运营开关影响,也不受当日 AI 配额影响。
  10. *
  11. * 过期会员 isActive=false,按需求一律隐藏入口、不补历史入口。
  12. * fail-closed:无 token 直接 false(不发请求);接口异常/超时/字段缺失一律 false。
  13. *
  14. * @returns {Promise<boolean>} 是否为有效付费会员
  15. */
  16. import { aiGateStatus } from './api.js'
  17. export const isActiveMember = () => {
  18. if (!uni.getStorageSync('token')) {
  19. return Promise.resolve(false)
  20. }
  21. return aiGateStatus().then(function(res) {
  22. return !!(res && res.data && res.data.isActive === true)
  23. }).catch(function() {
  24. return false
  25. })
  26. }