feat: add smart_mode_free toggle — all users get smart mode when enabled
Server: subscription API returns active when smart_mode_free is true. Admin console: add toggle switch in settings page under feature flags. Default: true (free for all users during promotion period).
这个提交包含在:
@@ -105,6 +105,15 @@
|
|||||||
<view class="toggle-dot"></view>
|
<view class="toggle-dot"></view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
<view class="toggle-item">
|
||||||
|
<view class="toggle-info">
|
||||||
|
<text class="toggle-label">智能模式免费</text>
|
||||||
|
<text class="toggle-desc">开启后所有用户可免费使用智能模式</text>
|
||||||
|
</view>
|
||||||
|
<view class="toggle-switch" :class="{ on: settings.smart_mode_free }" @click="settings.smart_mode_free = !settings.smart_mode_free">
|
||||||
|
<view class="toggle-dot"></view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
<view class="toggle-item">
|
<view class="toggle-item">
|
||||||
<view class="toggle-info">
|
<view class="toggle-info">
|
||||||
<text class="toggle-label">维护模式</text>
|
<text class="toggle-label">维护模式</text>
|
||||||
@@ -142,6 +151,7 @@ export default {
|
|||||||
enable_register: true,
|
enable_register: true,
|
||||||
enable_binding: true,
|
enable_binding: true,
|
||||||
enable_free_mode: true,
|
enable_free_mode: true,
|
||||||
|
smart_mode_free: true,
|
||||||
maintenance_mode: false
|
maintenance_mode: false
|
||||||
},
|
},
|
||||||
timezoneOptions: ['Asia/Shanghai', 'Asia/Tokyo', 'America/New_York', 'Europe/London'],
|
timezoneOptions: ['Asia/Shanghai', 'Asia/Tokyo', 'America/New_York', 'Europe/London'],
|
||||||
|
|||||||
@@ -28,6 +28,10 @@ router.get('/subscription/plans', wrap(async (req, res) => {
|
|||||||
}))
|
}))
|
||||||
|
|
||||||
router.get('/subscription', requireUser, wrap(async (req, res) => {
|
router.get('/subscription', requireUser, wrap(async (req, res) => {
|
||||||
|
const settings = await getSettings()
|
||||||
|
if (settings.smart_mode_free === true || settings.smart_mode_free === 'true') {
|
||||||
|
return res.json(ok({ status: 'active', plan: 'free', remaining_days: 9999, trial_used: false }))
|
||||||
|
}
|
||||||
const sub = await subscriptionDao.findActive(req.user.user_id)
|
const sub = await subscriptionDao.findActive(req.user.user_id)
|
||||||
const trialUsed = await subscriptionDao.findTrial(req.user.user_id)
|
const trialUsed = await subscriptionDao.findTrial(req.user.user_id)
|
||||||
if (!sub) return res.json(ok({ status: 'inactive', plan: 'none', remaining_days: 0, trial_used: !!trialUsed }))
|
if (!sub) return res.json(ok({ status: 'inactive', plan: 'none', remaining_days: 0, trial_used: !!trialUsed }))
|
||||||
|
|||||||
在新工单中引用
屏蔽一个用户