This commit is contained in:
payacom
2026-10-09 15:44:47 +03:30
parent 367416d419
commit e5dcd0f1b2
14 changed files with 282 additions and 197 deletions

View File

@@ -1,4 +1,7 @@
const express = require('express')
const multer = require('multer')
const fs = require('fs')
const path = require('path')
const blockCheck = require('../../../middlewares/blockCheck')
const { createAdvertisingValidationRules, createAdvertising, getAdvertisingTypes, getAdvertisingCategory, getSingleAdvertising, getAdvertisingFeatures, getAdvertisings, toggleLike, addComment, getComments, rateAdvertising, getUserAdvertisings, getAdvertisingAnalytics, editAdvertising, getUserSingleAdvertising, getUserAdvertisingProfile, updateUserAdvertisingProfile, getAdvertisingsWeb, getSingleAdvertisingWeb, getUserAdvertisingProfileWeb, recordAdvertisingView, getUserLikedAdvertisings, getUserAdvertisingComments } = require('../../../controllers/application/advertising/advertisingController')
const auth = require('../../../middlewares/auth')
@@ -6,16 +9,38 @@ const requireSubUserPermission = require('../../../middlewares/requireSubUserPer
const { initiateAdvertisingPayment, handleAdvertisingPaymentCallback, handleAdvertisingRepublishPaymentCallback, republishAdvertisingPayment } = require('../../../controllers/application/payment/paymentController')
const { initiateAdvertisingPaymentWeb, handleAdvertisingPaymentCallbackWeb, republishAdvertisingPaymentWeb, handleAdvertisingRepublishPaymentCallbackWeb } = require('../../../controllers/application/payment/paymentControllerWeb')
const router = express.Router()
// قبلاً express-form-data به‌صورتِ global این فیلدها رو تویِ req.files پر می‌کرد؛
// وقتی اون middleware حذف شد (تداخل با multer توی posts/chat)، این روت‌ها بدونِ هیچ
// parserِ جایگزینی موندن — یعنی آپلودِ عکسِ بیلبورد/خدمات/پروفایلِ ویترین همیشه
// خاموش بودن (createAdvertising حتی بدون خطا، فقط عکس‌ها رو نادیده می‌گرفت)
const advertisingTmpDir = '/tmp/modstagram-uploads'
if (!fs.existsSync(advertisingTmpDir)) {
fs.mkdirSync(advertisingTmpDir, { recursive: true })
}
const advertisingTmpUpload = multer({
storage: multer.diskStorage({
destination: (req, file, cb) => cb(null, advertisingTmpDir),
filename: (req, file, cb) => {
cb(null, `${Date.now()}-${Math.round(Math.random() * 1e9)}${path.extname(file.originalname || '')}`)
}
}),
limits: { fileSize: 50 * 1024 * 1024 }
})
// اسمِ فیلدِ عکسِ هر خدمت پویاست (serviceImages[id])، پس .any() به‌جای .fields()
// با لیستِ ثابت — کنترلر با file.fieldname تشخیص می‌ده مالِ کدوم خدمت/بخشه
const advertisingImagesUpload = advertisingTmpUpload.any()
const advertisingProfileImageUpload = advertisingTmpUpload.single('profile_image')
router.get('/', [auth], getAdvertisings)
router.get('/web', getAdvertisingsWeb)
router.get('/profile', [auth], getUserAdvertisingProfile)
router.get('/profile-web', getUserAdvertisingProfileWeb)
router.patch('/profile', [auth], [blockCheck], updateUserAdvertisingProfile)
router.patch('/profile', [auth], [blockCheck], advertisingProfileImageUpload, updateUserAdvertisingProfile)
router.get('/user-advertising', [auth], getUserAdvertisings)
router.get('/analytics', [auth], getAdvertisingAnalytics)
router.get('/user-liked', [auth], getUserLikedAdvertisings)
router.get('/user-comments', [auth], getUserAdvertisingComments)
router.post('/create', [auth], [blockCheck], requireSubUserPermission('billboards'), createAdvertisingValidationRules(), createAdvertising)
router.post('/create', [auth], [blockCheck], requireSubUserPermission('billboards'), advertisingImagesUpload, createAdvertisingValidationRules(), createAdvertising)
router.get('/types', [auth], getAdvertisingTypes)
router.get('/categories', getAdvertisingCategory)
router.get('/features', [auth], getAdvertisingFeatures)
@@ -35,6 +60,6 @@ router.post('/like', [blockCheck], [auth], toggleLike)
router.post('/comment', [blockCheck], [auth], addComment)
router.get('/comments', getComments)
router.post('/rate', [blockCheck], [auth], rateAdvertising)
router.post('/edit/:id', [blockCheck], [auth], requireSubUserPermission('billboards'), editAdvertising)
router.post('/edit/:id', [blockCheck], [auth], requireSubUserPermission('billboards'), advertisingImagesUpload, editAdvertising)
module.exports = router