@ozdao/martyrs 0.2.473 → 0.2.474
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Media-DW8RLbfM.js → Media-_vz04tII.js} +1 -1
- package/dist/{Media-y_TX6us_.mjs → Media-sGk7Bp9b.mjs} +1 -1
- package/dist/auth.server.js +6 -2
- package/dist/auth.server.mjs +6 -2
- package/dist/authJwt-CELQKF2s.js +82 -0
- package/dist/authJwt-DnXu3BFq.mjs +83 -0
- package/dist/builder.js +7 -4
- package/dist/builder.mjs +7 -4
- package/dist/chats.server.js +1 -1
- package/dist/chats.server.mjs +1 -1
- package/dist/community.server.js +4 -4
- package/dist/community.server.mjs +4 -4
- package/dist/events.server.js +4 -4
- package/dist/events.server.mjs +4 -4
- package/dist/files.server.js +1 -1
- package/dist/files.server.mjs +1 -1
- package/dist/gallery.server.js +3 -3
- package/dist/gallery.server.mjs +3 -3
- package/dist/{globals.abac-DT0VjfaZ.js → globals.abac-Bn-4tbX8.js} +110 -16
- package/dist/{globals.abac-CvmZM8XG.mjs → globals.abac-DZpTRxKR.mjs} +110 -16
- package/dist/globals.server.js +70 -10
- package/dist/globals.server.mjs +70 -10
- package/dist/{globals.verifier-C_VZYebB.mjs → globals.verifier-BdJxc8-8.mjs} +34 -0
- package/dist/{globals.verifier-ChDpCdy_.js → globals.verifier-CKYpYfQl.js} +34 -0
- package/dist/{index-CVXl1rB5.js → index-BOmxJQ5W.js} +7 -86
- package/dist/{index-Df8vtZx7.mjs → index-C_Fw0Umg.mjs} +7 -86
- package/dist/{main-CgmHzhq5.mjs → main-CqMtW7Hq.mjs} +274 -276
- package/dist/{main-CCfQH-Dd.js → main-CsGkbSyK.js} +2 -2
- package/dist/martyrs/src/components/Select/Select.vue.cjs +4 -4
- package/dist/martyrs/src/components/Select/Select.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Select/Select.vue.js +4 -4
- package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/community.client.js +27 -27
- package/dist/martyrs/src/modules/community/community.client.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs +2 -3
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js +2 -3
- package/dist/martyrs/src/modules/community/components/sections/HotPosts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs +88 -27
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +89 -28
- package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/store/shopcart.cjs +1 -0
- package/dist/martyrs/src/modules/orders/store/shopcart.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/store/shopcart.js +1 -0
- package/dist/martyrs/src/modules/orders/store/shopcart.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +19 -0
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +19 -0
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs +1 -0
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +1 -0
- package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/store/categories.cjs +2 -0
- package/dist/martyrs/src/modules/products/store/categories.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/store/categories.js +2 -0
- package/dist/martyrs/src/modules/products/store/categories.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +30 -24
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +30 -24
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +807 -0
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +807 -0
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js.map +1 -0
- package/dist/martyrs/src/modules/spots/store/spots.cjs +4 -1
- package/dist/martyrs/src/modules/spots/store/spots.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/store/spots.js +4 -1
- package/dist/martyrs/src/modules/spots/store/spots.js.map +1 -1
- package/dist/martyrs.cjs.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/notifications.server.js +1 -1
- package/dist/notifications.server.mjs +1 -1
- package/dist/orders.server.js +5 -4
- package/dist/orders.server.mjs +5 -4
- package/dist/organizations.server.js +120 -47
- package/dist/organizations.server.mjs +120 -47
- package/dist/{ownership.schema-C0w02Vw1.mjs → ownership.schema-CNCotD3D.mjs} +10 -4
- package/dist/{ownership.schema-Ck2H9clB.js → ownership.schema-MxfJlPtq.js} +10 -4
- package/dist/products.server.js +415 -149
- package/dist/products.server.mjs +415 -149
- package/dist/{profile.schema-h61hhB2w.js → profile.schema-BLSuV_VC.js} +0 -4
- package/dist/{profile.schema-kP_zKXNt.mjs → profile.schema-BRuvQ7QV.mjs} +0 -4
- package/dist/{queryProcessor-CWnMIe2U.mjs → queryProcessor-CVKI651_.mjs} +62 -8
- package/dist/{queryProcessor-D6GuKfTV.js → queryProcessor-DSUqSk3I.js} +62 -8
- package/dist/rents.server.js +4 -4
- package/dist/rents.server.mjs +4 -4
- package/dist/spots.server.js +162 -8
- package/dist/spots.server.mjs +162 -8
- package/dist/style.css +27 -4
- package/dist/wallet.server.js +2 -2
- package/dist/wallet.server.mjs +2 -2
- package/package.json +1 -1
- package/src/builder/rspack/rspack.config.base.js +1 -1
- package/src/builder/rspack/rspack.config.client.js +13 -5
- package/src/components/Select/Select.vue +4 -2
- package/src/modules/auth/models/user.model.js +4 -1
- package/src/modules/community/components/sections/HotPosts.vue +1 -1
- package/src/modules/globals/controllers/classes/globals.abac.js +148 -23
- package/src/modules/globals/controllers/classes/globals.validator.js +37 -0
- package/src/modules/globals/controllers/classes/globals.verifier.js +2 -0
- package/src/modules/globals/controllers/policies/globals.policies.js +91 -74
- package/src/modules/globals/controllers/utils/queryProcessor.js +59 -11
- package/src/modules/globals/models/schemas/ownership.schema.js +11 -6
- package/src/modules/globals/models/schemas/profile.schema.js +0 -4
- package/src/modules/music/components/layouts/MusicLayout.vue +10 -58
- package/src/modules/music/components/pages/MusicHome.vue +5 -5
- package/src/modules/orders/components/pages/OrderCreate.vue +85 -12
- package/src/modules/orders/controllers/orders.controller.js +3 -0
- package/src/modules/orders/store/shopcart.js +1 -0
- package/src/modules/organizations/models/schemas/accesses.schema.js +18 -0
- package/src/modules/organizations/policies/organizations.policies.js +117 -61
- package/src/modules/products/components/pages/CategoryEdit.vue +27 -2
- package/src/modules/products/components/pages/Product.vue +1 -0
- package/src/modules/products/components/pages/ProductEdit.vue +2 -2
- package/src/modules/products/controllers/categories.controller.js +297 -133
- package/src/modules/products/middlewares/categories.verifier.js +177 -0
- package/src/modules/products/models/category.model.js +12 -14
- package/src/modules/products/routes/categories.routes.js +50 -11
- package/src/modules/products/store/categories.js +2 -0
- package/src/modules/spots/components/pages/SpotEdit.vue +21 -17
- package/src/modules/spots/components/sections/WorktimeEdit.vue +840 -0
- package/src/modules/spots/controllers/queries/getIsOpenNowStage.js +109 -0
- package/src/modules/spots/controllers/spots.controller.js +2 -1
- package/src/modules/spots/models/spot.model.js +59 -13
- package/src/modules/spots/store/spots.js +4 -1
- package/src/modules/products/middlewares/index.js +0 -11
- package/src/modules/products/middlewares/verifyCategory.js +0 -25
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// getIsOpenNowStage.js
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Создает шаг агрегации для расчета поля isOpenNow
|
|
5
|
+
* @returns {Object} Объект этапа агрегации MongoDB
|
|
6
|
+
*/
|
|
7
|
+
module.exports = function getIsOpenNowStage() {
|
|
8
|
+
const now = new Date();
|
|
9
|
+
const currentDay = now.getDay();
|
|
10
|
+
const currentTime = `${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}`;
|
|
11
|
+
|
|
12
|
+
return {
|
|
13
|
+
$addFields: {
|
|
14
|
+
isOpenNow: {
|
|
15
|
+
$let: {
|
|
16
|
+
vars: {
|
|
17
|
+
// Найдем особую дату на сегодня, если она есть
|
|
18
|
+
specialDay: {
|
|
19
|
+
$filter: {
|
|
20
|
+
input: { $ifNull: ["$worktime.special", []] },
|
|
21
|
+
as: "special",
|
|
22
|
+
cond: {
|
|
23
|
+
$eq: [
|
|
24
|
+
{ $dateToString: { format: "%Y-%m-%d", date: "$$special.date" } },
|
|
25
|
+
{ $dateToString: { format: "%Y-%m-%d", date: new Date() } }
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
in: {
|
|
32
|
+
$cond: {
|
|
33
|
+
if: { $gt: [{ $size: "$$specialDay" }, 0] },
|
|
34
|
+
then: {
|
|
35
|
+
$let: {
|
|
36
|
+
vars: { day: { $arrayElemAt: ["$$specialDay", 0] } },
|
|
37
|
+
in: {
|
|
38
|
+
$cond: {
|
|
39
|
+
if: "$$day.isOpen",
|
|
40
|
+
then: {
|
|
41
|
+
$anyElementTrue: {
|
|
42
|
+
$map: {
|
|
43
|
+
input: { $ifNull: ["$$day.periods", []] },
|
|
44
|
+
as: "period",
|
|
45
|
+
in: {
|
|
46
|
+
$and: [
|
|
47
|
+
{ $lte: ["$$period.open", currentTime] },
|
|
48
|
+
{ $gt: ["$$period.close", currentTime] }
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
else: false
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
else: {
|
|
60
|
+
$let: {
|
|
61
|
+
vars: {
|
|
62
|
+
regularDay: {
|
|
63
|
+
$filter: {
|
|
64
|
+
input: { $ifNull: ["$worktime.regular", []] },
|
|
65
|
+
as: "day",
|
|
66
|
+
cond: { $eq: ["$$day.dayOfWeek", currentDay] }
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
in: {
|
|
71
|
+
$cond: {
|
|
72
|
+
if: { $gt: [{ $size: "$$regularDay" }, 0] },
|
|
73
|
+
then: {
|
|
74
|
+
$let: {
|
|
75
|
+
vars: { day: { $arrayElemAt: ["$$regularDay", 0] } },
|
|
76
|
+
in: {
|
|
77
|
+
$cond: {
|
|
78
|
+
if: "$$day.isOpen",
|
|
79
|
+
then: {
|
|
80
|
+
$anyElementTrue: {
|
|
81
|
+
$map: {
|
|
82
|
+
input: { $ifNull: ["$$day.periods", []] },
|
|
83
|
+
as: "period",
|
|
84
|
+
in: {
|
|
85
|
+
$and: [
|
|
86
|
+
{ $lte: ["$$period.open", currentTime] },
|
|
87
|
+
{ $gt: ["$$period.close", currentTime] }
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
else: false
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
else: false
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const queryProcessorGlobals = require('@martyrs/src/modules/globals/controllers/utils/queryProcessor');
|
|
2
|
-
|
|
2
|
+
const getIsOpenNowStage = require('./queries/getIsOpenNowStage');
|
|
3
3
|
|
|
4
4
|
const controllerFactory = (db) => {
|
|
5
5
|
const Spot = db.spot;
|
|
@@ -10,6 +10,7 @@ const controllerFactory = (db) => {
|
|
|
10
10
|
...queryProcessorGlobals.getBasicOptions(
|
|
11
11
|
req.query
|
|
12
12
|
),
|
|
13
|
+
getIsOpenNowStage(),
|
|
13
14
|
// Tags
|
|
14
15
|
...queryProcessorGlobals.getTagsOptions(req.query.tags),
|
|
15
16
|
// For creator
|
|
@@ -34,13 +34,29 @@ module.exports = (db) => {
|
|
|
34
34
|
required: true
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
// Обновленная структура для часов работы
|
|
38
|
+
worktime: {
|
|
39
|
+
// Стандартные часы работы
|
|
40
|
+
regular: [{
|
|
41
|
+
// 0 = воскресенье, 6 = суббота (соответствует JavaScript Date.getDay())
|
|
42
|
+
dayOfWeek: { type: Number, min: 0, max: 6, required: true },
|
|
43
|
+
isOpen: { type: Boolean, default: true },
|
|
44
|
+
periods: [{
|
|
45
|
+
open: { type: String, required: true }, // формат "HH:MM" 24-часовой
|
|
46
|
+
close: { type: String, required: true } // формат "HH:MM" 24-часовой
|
|
47
|
+
}]
|
|
48
|
+
}],
|
|
49
|
+
// Особые даты (праздники, особые события и т.д.)
|
|
50
|
+
special: [{
|
|
51
|
+
date: { type: Date, required: true },
|
|
52
|
+
isOpen: { type: Boolean, default: false },
|
|
53
|
+
periods: [{
|
|
54
|
+
open: { type: String }, // формат "HH:MM" 24-часовой
|
|
55
|
+
close: { type: String } // формат "HH:MM" 24-часовой
|
|
56
|
+
}],
|
|
57
|
+
description: { type: String } // описание особого дня (например, "Новый год")
|
|
58
|
+
}]
|
|
59
|
+
},
|
|
44
60
|
// Marketplace options
|
|
45
61
|
delivery: [String],
|
|
46
62
|
payment: [String],
|
|
@@ -63,13 +79,43 @@ module.exports = (db) => {
|
|
|
63
79
|
},
|
|
64
80
|
],
|
|
65
81
|
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
82
|
+
|
|
83
|
+
// Индексы
|
|
84
|
+
spotSchema.index({ organization: 1 });
|
|
69
85
|
spotSchema.index({ location: '2dsphere' });
|
|
86
|
+
|
|
87
|
+
// Виртуальное свойство для проверки открыт ли спот в данный момент
|
|
88
|
+
spotSchema.virtual('isOpenNow').get(function() {
|
|
89
|
+
const now = new Date();
|
|
90
|
+
const currentDay = now.getDay();
|
|
91
|
+
const currentTime = `${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}`;
|
|
92
|
+
|
|
93
|
+
// Проверка особых дат
|
|
94
|
+
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
|
95
|
+
const specialDay = this.worktime?.special?.find(special =>
|
|
96
|
+
special.date.getTime() === today.getTime()
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
if (specialDay) {
|
|
100
|
+
if (!specialDay.isOpen) return false;
|
|
101
|
+
return specialDay.periods.some(period =>
|
|
102
|
+
period.open <= currentTime && period.close > currentTime
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Проверка обычных часов работы
|
|
107
|
+
const regularHours = this.worktime?.regular?.find(day => day.dayOfWeek === currentDay);
|
|
108
|
+
if (!regularHours || !regularHours.isOpen) return false;
|
|
109
|
+
|
|
110
|
+
return regularHours.periods.some(period =>
|
|
111
|
+
period.open <= currentTime && period.close > currentTime
|
|
112
|
+
);
|
|
113
|
+
});
|
|
70
114
|
|
|
115
|
+
spotSchema.set('toJSON', { virtuals: true });
|
|
116
|
+
spotSchema.set('toObject', { virtuals: true });
|
|
71
117
|
|
|
118
|
+
|
|
72
119
|
const Spot = db.mongoose.model('Spot', spotSchema);
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
120
|
+
return Spot;
|
|
121
|
+
};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
// middlewareFactory.js
|
|
2
|
-
const middlewareFactory = (db) => {
|
|
3
|
-
const Category = db.category;
|
|
4
|
-
|
|
5
|
-
const checkCategoryExistOrNot = async (req, res, next) => {
|
|
6
|
-
try {
|
|
7
|
-
const category = await Category.findOne({ url: req.body.url });
|
|
8
|
-
|
|
9
|
-
if (category) {
|
|
10
|
-
res.status(400).send({ message: "Failed! Category with this URL is already in use!" });
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
next();
|
|
15
|
-
} catch (err) {
|
|
16
|
-
res.status(500).send({ message: err });
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
return {
|
|
21
|
-
checkCategoryExistOrNot
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
module.exports = middlewareFactory;
|