Files
huangguo_android/lib/hj_utils/buy_util.dart
T
2026-09-15 15:44:13 +07:00

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); // 已购则不用再买
}