This commit is contained in:
payacom
2026-09-24 21:00:07 +03:30
parent 1954b2661d
commit 7f0ddfde70
113 changed files with 570 additions and 5049 deletions

View File

@@ -40,7 +40,7 @@ const giftSchema = new mongoose.Schema({
},
paymentMethod: {
type: String,
enum: ['online', 'wallet'],
enum: ['online', 'wallet', 'mixed'],
default: 'online'
},
viaChatMessage: {

View File

@@ -23,6 +23,12 @@ const offerSchema = new mongoose.Schema({
ref: 'Payment',
default: null
},
// مبلغی که فرستنده با تیکِ «استفاده از کیف پول» از سبدِ charged پرداخت کرده (نگاه کن
// به utils/walletSplit.js) — بقیه‌ی مبلغ (اگه مونده باشه) از درگاه گرفته شده
walletAmountUsed: {
type: Number,
default: 0
},
// سهم ۳۰٪ گیرنده که فقط با پاسخ‌گویی ظرف ۱۲ ساعت به اولین پیام دایرکت واریز می‌شود —
pendingCommissionAmount: {
type: Number,

View File

@@ -107,6 +107,12 @@ const orderSchema = new mongoose.Schema({
type: String,
default: null
},
// مبلغی که کاربر با تیکِ «استفاده از کیف پول» قرار بود از سبدِ charged کسر بشه —
// فقط در لحظه‌ی موفقیتِ قطعیِ پرداخت واقعاً کسر می‌شه (نگاه کن به utils/walletSplit.js)
walletAmountUsed: {
type: Number,
default: 0
},
buyerAddressSnapshot: {
type: buyerAddressSnapshotSchema,
default: null

View File

@@ -572,13 +572,31 @@ const userSchema = new mongoose.Schema({
maxLength: 512,
default: null
},
// کد یکتای معرفی‌کننده — با اولین درخواستِ GET /users/referral-code به‌صورت lazy
// ساخته می‌شه (referralController.js)، نه از قبل برای همه‌ی کاربرها. unique+sparse
// چون این کد توی لینکِ عمومیِ اشتراک‌گذاری میره و باید واقعاً غیرتکراری باشه
referral_code: {
type: String,
trim: true,
minLength: 1,
maxLength: 512,
default: null,
unique: true,
sparse: true
},
// کاربری که این کاربر رو با لینکِ معرفی‌اش وارد اپ کرده — فقط توی اولین مرحله‌ی
// ثبت‌نام (POST /register با mobile) ست می‌شه، دیگه هیچ‌جا عوض نمی‌شه
referred_by: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
default: null
},
// جلوگیری از پرداخت دوباره‌ی پاداشِ معرفی — با تکمیلِ ثبت‌نام (userTypeController)
// یک‌بار true می‌شه؛ اگه این مرحله به هر دلیلی دوباره صدا زده بشه، پرداختِ تکراری نمی‌شه
referral_rewarded: {
type: Boolean,
default: false
},
shop_id: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Shop',
@@ -643,6 +661,13 @@ const userSchema = new mongoose.Schema({
type: Date,
default: null
},
// تعداد بیلبورد رایگانی که این کاربر تا الان ثبت کرده — سقف کلی (نه روزانه) طبق
// utils/billboardFreeLimit.js، مستقل از daily_free_request که بین پروژه/بیلبورد/
// درخواست مشترکه
free_billboard_count: {
type: Number,
default: 0
},
blocked_by: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'User'