53 lines
2.5 KiB
Dart
53 lines
2.5 KiB
Dart
import '../hj_model/video_model.dart';
|
|
import '../tools_base/global_store/store.dart';
|
|
import '../tools_base/net/net_manager.dart';
|
|
import 'date_time_util.dart';
|
|
|
|
/// 是否需要开通 VIP 才能看
|
|
bool needVip(VideoModel? model) {
|
|
if (model?.freeArea == true) return false; // 免费区
|
|
// VIP 未过期(比服务端校准时间,防改本地时间);日期为空/解析失败都当过期
|
|
final expire = DateTime.tryParse(globalStore.meInfo?.vipExpireDate ?? '');
|
|
if (expire?.isAfter(netManager.getFixedCurTime()) == true) return false;
|
|
if (model?.isCoinVideo() == true) return false; // 金币视频走金币购买,与 VIP 无关
|
|
if (globalStore.isMe(model?.publisher?.uid)) return false; // 自己发布的
|
|
return true;
|
|
}
|
|
|
|
/*
|
|
会员权益:
|
|
普通会员: VIP长视频 VIP抖音 社区帖子VIP 图集VIP 小说VIP ACGVIP
|
|
高级会员:VIP+金币视频(长视频,抖音),社区VIP帖子。图集金币 小说 金币 ACG 。 暗网视频和社区金币帖子除外
|
|
超级会员: 全网通 包含暗网+社区金币帖子
|
|
黄游单独购买
|
|
* */
|
|
|
|
/// 长视频 / 抖音是否需要花金币购买
|
|
bool needCoin(VideoModel? model) {
|
|
if (model == null) return false;
|
|
final originCoins = model.originCoins ?? 0;
|
|
if (originCoins == 0) return false; // 非金币视频
|
|
if (globalStore.isMe(model.publisher?.uid)) return false; // 自己发布的
|
|
if (model.freeArea == true) return false; // 免费区
|
|
|
|
final isVip = globalStore.isVIP;
|
|
if (isVip && model.coins == 0) return false; // VIP 折后 0 金币
|
|
if (globalStore.isSuperUp) return false; // 超级会员全网通
|
|
// VIP 金币视频限免期内,50 金币以内免费
|
|
if (isVip && DateTimeUtil.calTime3(globalStore.meInfo?.goldVideoFreeExpire) > 0 && originCoins <= 50) return false;
|
|
return !(model.vidStatus?.hasPaid ?? false); // 已购则不用再买
|
|
}
|
|
|
|
/// 社区帖子视频是否需要花金币购买(规则与长视频略有差异)
|
|
bool needPostCoin(VideoModel? model) {
|
|
if (model == null) return false;
|
|
if (globalStore.isMe(model.publisher?.uid)) return false; // 自己发布的
|
|
if (model.freeArea == true) return false; // 免费区
|
|
if (globalStore.isSuperUp) return false; // 超级会员全网通
|
|
|
|
final isVip = globalStore.isVIP;
|
|
if (isVip && (model.originCoins ?? 0) > 0 && model.coins == 0) return false; // VIP 折后 0 金币
|
|
if (isVip && model.originCoins == 0) return false; // VIP 看非金币帖子
|
|
return !(model.vidStatus?.hasPaid ?? false); // 已购则不用再买
|
|
}
|