owl-cli 7.19.0 → 7.20.0

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.
Files changed (60) hide show
  1. package/examples/models/owlsys/user/org_user/api/src/plugins/addToOrgUser.jsx +0 -1
  2. package/examples/owlsysApps/owlService/build.xml +29 -0
  3. package/examples/owlsysApps/owlService/src/handlers/getSensitiveWord.jsx +25 -0
  4. package/examples/owlsysApps/owlService/src/icon.png +0 -0
  5. package/examples/owlsysApps/owlService/src/meta.json +58 -0
  6. package/examples/owlsysApps/owlService/src/pages/home.jsx +16 -0
  7. package/examples/owlsysApps/owlService/src/pages/home.jsxp +27 -0
  8. package/examples/owlsysApps/owlService/src/services/cart/CartService.jsx +25 -0
  9. package/examples/owlsysApps/owlService/src/services/cart/CartUtil.jsx +421 -0
  10. package/examples/owlsysApps/owlService/src/services/cart/OrderService.jsx +15 -0
  11. package/examples/owlsysApps/owlService/src/services/cart/OrderUtil.jsx +122 -0
  12. package/examples/owlsysApps/owlService/src/services/common/CommonUtil.jsx +257 -0
  13. package/examples/owlsysApps/owlService/src/services/common/IdCardService.jsx +42 -0
  14. package/examples/owlsysApps/owlService/src/services/common/ImageUtil.jsx +69 -0
  15. package/examples/owlsysApps/owlService/src/services/common/OwlDigestUtil.jsx +35 -0
  16. package/examples/owlsysApps/owlService/src/services/common/SearchUtil.jsx +212 -0
  17. package/examples/owlsysApps/owlService/src/services/common/SettingUtil.jsx +38 -0
  18. package/examples/owlsysApps/owlService/src/services/datacenter/BuyCouponOrderUtil.jsx +20 -0
  19. package/examples/owlsysApps/owlService/src/services/datacenter/PointCouponOrderUtil.jsx +20 -0
  20. package/examples/owlsysApps/owlService/src/services/ewallet/AigcEWalletUtil.jsx +96 -0
  21. package/examples/owlsysApps/owlService/src/services/ewallet/AigcOrgEWalletUtil.jsx +77 -0
  22. package/examples/owlsysApps/owlService/src/services/ewallet/EWalletUtil.jsx +87 -0
  23. package/examples/owlsysApps/owlService/src/services/ewallet/OrgEWalletUtil.jsx +77 -0
  24. package/examples/owlsysApps/owlService/src/services/history/ProductHistoryUtil.jsx +24 -0
  25. package/examples/owlsysApps/owlService/src/services/lottery/LotteryUtil.jsx +563 -0
  26. package/examples/owlsysApps/owlService/src/services/message/MessageUtil.jsx +34 -0
  27. package/examples/owlsysApps/owlService/src/services/message/WxMessageUtil.jsx +32 -0
  28. package/examples/owlsysApps/owlService/src/services/order/OrderAddHelper.jsx +111 -0
  29. package/examples/owlsysApps/owlService/src/services/order/OrderLogUtil.jsx +57 -0
  30. package/examples/owlsysApps/owlService/src/services/order/OrderRefundUtil.jsx +138 -0
  31. package/examples/owlsysApps/owlService/src/services/order/OrderUseDcTicketHelper.jsx +153 -0
  32. package/examples/owlsysApps/owlService/src/services/order/OrderUseTicketHelper.jsx +161 -0
  33. package/examples/owlsysApps/owlService/src/services/order/OrderUtil.jsx +139 -0
  34. package/examples/owlsysApps/owlService/src/services/order/PayRecordHelper.jsx +212 -0
  35. package/examples/owlsysApps/owlService/src/services/order/RefundOrderHelper.jsx +36 -0
  36. package/examples/owlsysApps/owlService/src/services/order/RefundRecordHelper.jsx +69 -0
  37. package/examples/owlsysApps/owlService/src/services/order/ReturnOrderHelper.jsx +61 -0
  38. package/examples/owlsysApps/owlService/src/services/order/ValidateCodeHelper.jsx +20 -0
  39. package/examples/owlsysApps/owlService/src/services/org/OrgUtil.jsx +408 -0
  40. package/examples/owlsysApps/owlService/src/services/permission/permissionHelper.jsx +0 -0
  41. package/examples/owlsysApps/owlService/src/services/product/PriceUtil.jsx +19 -0
  42. package/examples/owlsysApps/owlService/src/services/product/ProductCategoryUtil.jsx +37 -0
  43. package/examples/owlsysApps/owlService/src/services/product/ProductLogUtil.jsx +52 -0
  44. package/examples/owlsysApps/owlService/src/services/product/ProductUtil.jsx +392 -0
  45. package/examples/owlsysApps/owlService/src/services/product/SkuSearchUtil.jsx +71 -0
  46. package/examples/owlsysApps/owlService/src/services/product/SkuUtil.jsx +75 -0
  47. package/examples/owlsysApps/owlService/src/services/region/RegionUtil.jsx +46 -0
  48. package/examples/owlsysApps/owlService/src/services/resell/ResellBrokerageUtil.jsx +151 -0
  49. package/examples/owlsysApps/owlService/src/services/resell/ResellerUtil.jsx +107 -0
  50. package/examples/owlsysApps/owlService/src/services/user/InvoiceService.jsx +59 -0
  51. package/examples/owlsysApps/owlService/src/services/user/LoginService.jsx +46 -0
  52. package/examples/owlsysApps/owlService/src/services/user/OrgInvoiceService.jsx +59 -0
  53. package/examples/owlsysApps/owlService/src/services/user/OrgUserAddressService.jsx +99 -0
  54. package/examples/owlsysApps/owlService/src/services/user/UserAddressService.jsx +85 -0
  55. package/examples/owlsysApps/owlService/src/services/user/UserCategoryUtil.jsx +46 -0
  56. package/examples/owlsysApps/owlService/src/services/user/UserLogUtil.jsx +27 -0
  57. package/examples/owlsysApps/owlService/src/services/user/UserThirdUtil.jsx +22 -0
  58. package/examples/owlsysApps/owlService/src/services/user/UserUtil.jsx +76 -0
  59. package/examples/owlsysApps/owlShell/src/handlers/changePassword.jsx +1 -1
  60. package/package.json +1 -1
@@ -0,0 +1,392 @@
1
+ //#import Util.js
2
+ //#import $owl_mall_sku_inventory:services/modelService.jsx
3
+ //#import $owl_mall_category:services/modelService.jsx
4
+ //#import $owlService:services/product/PriceUtil.jsx
5
+ //#import pigeon.js
6
+
7
+ var ProductUtil = (function () {
8
+ var f = {
9
+ getProductLogo: function (jProduct) {
10
+ if (jProduct && jProduct.images_info) {
11
+ var preview_images = jProduct.images_info.preview_images;
12
+ if (preview_images && preview_images.length > 0) {
13
+ return preview_images[0];
14
+ }
15
+ }
16
+ return null;
17
+ },
18
+ getProductLogoUrl: function (jProduct, width, height) {
19
+ var jImage = f.getProductLogo(jProduct);
20
+ if (jImage) {
21
+ return jImage.url + "?x-oss-process=image/resize,w_" + width + ",h_" + height;
22
+ }
23
+ return "";
24
+ },
25
+ getProductLogoUrlEx: function (jProduct, spex) {
26
+ var imageSize = spex.split("X");
27
+
28
+ return f.getProductLogoUrl(jProduct, imageSize[0], imageSize[1]);
29
+ },
30
+ getImageUrl: function (jImage, width, height) {
31
+ if (jImage) {
32
+ return jImage.url + "?x-oss-process=image/resize,w_" + width + ",h_" + height;
33
+ }
34
+ return "";
35
+ },
36
+ getImageList: function (jProduct, key, spex) {
37
+ var resultImages = [];
38
+ var images_info = jProduct.images_info;
39
+ if (images_info) {
40
+ var images = images_info[key];
41
+ if (images) {
42
+ var imageSize = spex.split("X");
43
+ images.map(function (jImage) {
44
+ var img = {
45
+ relUrl: f.getImageUrl(jImage, imageSize[0], imageSize[1]),
46
+ fullUrl: jImage.url
47
+ };
48
+ resultImages.push(img);
49
+ });
50
+ }
51
+ }
52
+ return resultImages;
53
+ },
54
+ getSkuAttrs: function (jSku) {
55
+ var value = "";
56
+ if (jSku) {
57
+ if (jSku.attr_color) {
58
+ value = jSku.attr_color;
59
+ }
60
+ if (jSku.attr_spec) {
61
+ if (value == "") {
62
+ value = jSku.attr_spec;
63
+ } else {
64
+ value += "," + jSku.attr_spec;
65
+ }
66
+ }
67
+ }
68
+ return value;
69
+ },
70
+ getSkuBySkuId: function (jProduct, skuId) {
71
+ if (jProduct) {
72
+ if (jProduct.skus && jProduct.skus.length > 0) {
73
+ for (var i = 0; i < jProduct.skus.length; i++) {
74
+ var sku = jProduct.skus[i];
75
+ if (sku.sku_id == skuId) {
76
+ return sku;
77
+ }
78
+ }
79
+ return jProduct.skus[0];
80
+ }
81
+ }
82
+ return null;
83
+ },
84
+ /**
85
+ * 获取商品的所有sku的总可卖数
86
+ * @param skus
87
+ * @returns {number}
88
+ */
89
+ getTotalProductAvailableInventory: function (skus) {
90
+ var totalInventory = 0;
91
+ if (skus) {
92
+ if (skus && skus.length > 0) {
93
+ for (var i = 0; i < skus.length; i++) {
94
+ var sku = skus[i];
95
+ totalInventory += f.getSkuAvailableInventory(sku);
96
+ }
97
+ }
98
+ }
99
+ return totalInventory;
100
+ },
101
+ /**
102
+ * 获取单个sku的可卖数
103
+ * @param sku
104
+ * @returns {number}
105
+ */
106
+ getSkuAvailableInventory: function (sku) {
107
+ var id = "owl_mall_sku_inventory_" + sku.id;
108
+ var jInventory = owl_mall_sku_inventoryService.get(id);
109
+ if (jInventory) {
110
+ return Number((jInventory.real_inventory || 0) - (Number(jInventory.lock_number || 0)));
111
+ }
112
+ return 0;
113
+ },
114
+ /**
115
+ * 起订量
116
+ * @param sku
117
+ * @returns {number}
118
+ */
119
+ getSkuOnceMinBuy: function (sku) {
120
+ if (sku && sku.once_min_buy) {
121
+ return Number(sku.once_min_buy);
122
+ }
123
+ return 0;
124
+ },
125
+ /**
126
+ * 每单限购数量
127
+ * @param sku
128
+ * @returns {string|number}
129
+ */
130
+ getSkuOnceLimitBuy: function (sku) {
131
+ if (sku && sku.once_limit_buy) {
132
+ return Number(sku.once_limit_buy);
133
+ }
134
+ return "";
135
+ },
136
+ getProductMarketPrice: function (jProduct, jSku) {
137
+ if (jSku) {
138
+ if (jSku.price_info && jSku.price_info.market_price) {
139
+ return PriceUtil.toYuan(jSku.price_info.market_price);
140
+ }
141
+ }
142
+ // return PriceUtil.toYuan((jProduct && jProduct.price_info && jProduct.price_info.market_price) || "");
143
+ return "";//2025-01-03,改成当sku未设置市场价,则返回为空,不返回商品的了
144
+ },
145
+ getSkuMinPrice: function (jProduct, jSku) {
146
+ if (jSku) {
147
+ if (jSku.price_info && jSku.price_info.min_price) {
148
+ return PriceUtil.toYuan(jSku.price_info.min_price);
149
+ }
150
+ }
151
+ return PriceUtil.toYuan((jProduct && jProduct.price_info && jProduct.price_info.min_price) || "");
152
+ },
153
+ getSkuMaxPrice: function (jProduct, jSku) {
154
+ if (jSku) {
155
+ if (jSku.price_info && jSku.price_info.max_price) {
156
+ return PriceUtil.toYuan(jSku.price_info.max_price);
157
+ }
158
+ }
159
+ return PriceUtil.toYuan((jProduct && jProduct.price_info && jProduct.price_info.max_price) || "");
160
+ },
161
+ getSupplyPrice: function (jProduct, jSku) {
162
+ if (jSku) {
163
+ if (jSku.price_info && jSku.price_info.supply_price) {
164
+ return PriceUtil.toYuan(jSku.price_info.supply_price);
165
+ }
166
+ }
167
+ return PriceUtil.toYuan((jProduct && jProduct.price_info && jProduct.price_info.supply_price) || "");
168
+ },
169
+ getSecurityPrice: function (jProduct, jSku) {
170
+ return f.getSkuMinPrice(jProduct, jSku);
171
+ },
172
+ getProductDealPrice: function (jProduct, jSku) {
173
+ if (jSku) {
174
+ if (jSku.price_info && jSku.price_info.sell_price) {
175
+ return PriceUtil.toYuan(jSku.price_info.sell_price);
176
+ }
177
+ }
178
+ return "";
179
+ },
180
+ getInventoryAttrs: function (jProduct, skus) {
181
+ var inventoryAttrs = [];
182
+ var sku_attrs = jProduct.sku_attrs;
183
+ if (sku_attrs) {
184
+ for (var i = 0; i < sku_attrs.length; i++) {
185
+ var jAttr = sku_attrs[i];
186
+ var attr_id = jAttr.attr_id;
187
+ var attr_name = jAttr.attr_name;
188
+ var attr_choice = jAttr.attr_choice;
189
+ if (skus) {
190
+ attr_choice = f.filterAttrChoice(attr_id, attr_choice, skus);
191
+ }
192
+
193
+ var standardValues = [];
194
+ if (attr_choice) {
195
+ var values = attr_choice.split(",");
196
+ for (var k = 0; k < values.length; k++) {
197
+ standardValues.push({id: values[k], name: values[k]});
198
+ }
199
+ }
200
+
201
+ var jRecord = {};
202
+ jRecord.id = attr_id;
203
+ jRecord.name = attr_name;
204
+ jRecord.attr_choice = attr_choice;
205
+ jRecord.standardValues = standardValues;
206
+ inventoryAttrs.push(jRecord);
207
+ }
208
+ }
209
+ return inventoryAttrs;
210
+ },
211
+ filterAttrChoice: function (attrId, attr_choice, skus) {
212
+ var result = "";
213
+ if (attr_choice) {
214
+ var values = attr_choice.split(",");
215
+ for (var k = 0; k < values.length; k++) {
216
+ var v = values[k];
217
+ if (!f.checkAttrValueIsExistSku(skus, attrId, v)) {
218
+ continue;
219
+ }
220
+ if (f.isExistStandValue(result, v)) {
221
+ continue;
222
+ }
223
+ if (result != "") {
224
+ result += ",";
225
+ }
226
+ result += v;
227
+ }
228
+ }
229
+ return result;
230
+ },
231
+ isExistStandValue: function (attr_choice, value) {
232
+ if (attr_choice) {
233
+ var values = attr_choice.split(",");
234
+ for (var k = 0; k < values.length; k++) {
235
+ var v = values[k];
236
+ if (v == value) {
237
+ return true;
238
+ }
239
+ }
240
+ }
241
+ return false;
242
+ },
243
+ checkAttrValueIsExistSku: function (skus, attrId, value) {
244
+ if (skus) {
245
+ for (var i = 0; i < skus.length; i++) {
246
+ var jSku = skus[i];
247
+ var attrs = jSku.attrs;
248
+ if (attrs) {
249
+ if (attrs[attrId] == value) {
250
+ return true;
251
+ }
252
+ }
253
+ }
254
+ }
255
+ return false;
256
+ },
257
+ getPlatformCategoryId: function (jProduct) {
258
+ var platform_category = jProduct.platform_category;
259
+ if (platform_category) {
260
+ for (var i = 0; i < platform_category.length; i++) {
261
+ return platform_category[0].id;
262
+ }
263
+ }
264
+ return "";
265
+ },
266
+ getPlatformCategoryName: function (jProduct) {
267
+ var platform_category = jProduct.platform_category;
268
+ if (platform_category) {
269
+ for (var i = 0; i < platform_category.length; i++) {
270
+ return platform_category[0].name;
271
+ }
272
+ }
273
+ return "";
274
+ },
275
+ addProcessLog: function (jProduct, userId, userName, memo) {
276
+ var process_memos = jProduct.process_memos;
277
+ if (!process_memos) {
278
+ process_memos = [];
279
+ jProduct.process_memos = process_memos;
280
+ }
281
+ process_memos.push({
282
+ time: new Date().getTime(),
283
+ userId: userId,
284
+ userName: userName,
285
+ memo: memo
286
+ });
287
+ },
288
+ /**
289
+ * 获取商品的税费
290
+ * 根据跨境电子商务零售进口税收政策(财关税〔2016〕18号、财关税〔2018〕49号等),个人单次交易限值为人民币5000元,个人年度交易限值为人民币26000元。
291
+ * 在限值以内进口的跨境电子商务零售进口商品,关税税率暂设为0%,进口环节增值税、消费税取消免征税额,暂按法定应纳税额的70%征收,计算规则如下:
292
+ * 应纳税额 = 进口货物完税价格 x [(增值税税率+消费税税率 )/ (1-消费税税率) ] x 70%
293
+ * 进口货物完税价格超过5000元单次交易限值但低于26000元年度交易限值,且订单下仅一件商品时,可以自跨境电商零售渠道进口,按照货物税率全额征收关税和进口环节增值税、消费税,交易额计入年度交易总额。计算规则如下:
294
+ * 个人年度超过后,按一般贸易来,26000不是江豚网一家,而是这个人全年在海关的记录
295
+ * 一般贸易应纳税额=完税价格 × 关税税率 +(完税价格 + 关税税额)× 增值税税率+〔(完税价格 + 关税税额)÷(1 - 消费税税率)〕× 消费税税率
296
+ * *注:进口货物完税价格 = 商品零售价格 + 运费 + 保险费
297
+ */
298
+ getTaxPrice: function (jProduct, jUser, dutiablePrice, rateInfo) {
299
+ if (jProduct.cb_rate_type == "2") {
300
+ //价格已含税
301
+ return 0;
302
+ }
303
+ dutiablePrice = Number(dutiablePrice || 0);
304
+ if (dutiablePrice <= 0) {
305
+ return 0;
306
+ }
307
+ if(!rateInfo) {
308
+ rateInfo = f.getProductCrossBorderRateInfo(jProduct);
309
+ }
310
+ $.log("ProductUtil.jsx...productId=" + jProduct.id + "...rateInfo=" + JSON.stringify(rateInfo) + "...dutiablePrice=" + dutiablePrice);
311
+ if (!rateInfo) {
312
+ return 0;
313
+ }
314
+ if (!rateInfo.cb_vat_rate || !rateInfo.cb_tax_rate || !rateInfo.cb_tariff_rate || !rateInfo.cb_total_rate) {
315
+ return 0;
316
+ }
317
+ var cb_vat_rate = Number(rateInfo.cb_vat_rate)/100;
318
+ var cb_tax_rate = Number(rateInfo.cb_tax_rate)/100;
319
+ var cb_tariff_rate = Number(rateInfo.cb_tariff_rate)/100;
320
+ var cb_total_rate = Number(rateInfo.cb_total_rate)/100;
321
+
322
+ if (dutiablePrice <= 5000) {
323
+ return Number(Number(dutiablePrice * ((cb_vat_rate + cb_tax_rate) / (1 - cb_tax_rate)) * 0.7).toFixed(2));
324
+ }
325
+
326
+ //todo:大于5000的后面要加上规则
327
+ return Number(Number(dutiablePrice * ((cb_vat_rate + cb_tax_rate) / (1 - cb_tax_rate)) * 0.7).toFixed(2));
328
+ },
329
+ /**
330
+ * 获取商品的的跨境税率
331
+ */
332
+ getProductCrossBorderRateInfo: function (jProduct) {
333
+ $.log("ProductUtil.jsx...productId=" + jProduct.id + "...jProduct.cb_rate_type=" + jProduct.cb_rate_type);
334
+ if (jProduct.cb_rate_type == "2") {
335
+ //价格已含税
336
+ return {
337
+ "cb_vat_rate": 0,
338
+ "cb_tax_rate": 0,
339
+ "cb_tariff_rate": 0,
340
+ "cb_total_rate": 0
341
+ };
342
+ }
343
+ if (jProduct.cb_rate_type == "1") {
344
+ //以商品设置为准
345
+ return {
346
+ "cb_vat_rate": jProduct.cb_vat_rate,
347
+ "cb_tax_rate": jProduct.cb_tax_rate,
348
+ "cb_tariff_rate": jProduct.cb_tariff_rate,
349
+ "cb_total_rate": jProduct.cb_total_rate
350
+ };
351
+ }
352
+ var platformCatId = f.getPlatformCategoryId(jProduct);
353
+ if (!platformCatId) {
354
+ $.log("ProductUtil.jsx...productId=" + jProduct.id + "...platformCatId is null");
355
+ return null;
356
+ }
357
+ var jCategory = owl_mall_categoryService.get(platformCatId);
358
+ if (!jCategory) {
359
+ $.log("ProductUtil.jsx...productId=" + jProduct.id + "...jCategory is null");
360
+ return null;
361
+ }
362
+ if(jCategory.cb_vat_rate || jCategory.cb_tax_rate || jCategory.cb_total_rate) {
363
+ return {
364
+ "cb_vat_rate": jCategory.cb_vat_rate,
365
+ "cb_tax_rate": jCategory.cb_tax_rate,
366
+ "cb_tariff_rate": jCategory.cb_tariff_rate,
367
+ "cb_total_rate": jCategory.cb_total_rate
368
+ };
369
+ }
370
+ //todo:该方法后面看看怎么做缓存加速
371
+ var parentPathIds = jCategory.parentPathIds;
372
+ if (parentPathIds && parentPathIds.length > 0) {
373
+ for (var i = parentPathIds.length - 1; i >= 0; i--) {
374
+ var tempCatId = parentPathIds[i];
375
+ jCategory = owl_mall_categoryService.get(tempCatId);
376
+ if (!jCategory) {
377
+ continue;
378
+ }
379
+
380
+ return {
381
+ "cb_vat_rate": jCategory.cb_vat_rate,
382
+ "cb_tax_rate": jCategory.cb_tax_rate,
383
+ "cb_tariff_rate": jCategory.cb_tariff_rate,
384
+ "cb_total_rate": jCategory.cb_total_rate
385
+ };
386
+ }
387
+ }
388
+ return null;
389
+ }
390
+ };
391
+ return f;
392
+ })();
@@ -0,0 +1,71 @@
1
+ //#import $owl_mall_sku:services/modelService.jsx
2
+
3
+ var SkuSearchUtil = (function () {
4
+ var f = {
5
+ /**
6
+ * 获取商品的所有sku
7
+ */
8
+ getSkuList: function (productId) {
9
+ var searchArgs = {
10
+ "product_id": productId
11
+ }
12
+ var skuResult = owl_mall_skuService.search("", searchArgs, "", 0, 1000, null);
13
+ if (skuResult.state == 'ok') {
14
+ return skuResult.list;
15
+ }
16
+ return [];
17
+ },
18
+ /**
19
+ * 根据sku编码获取sku
20
+ */
21
+ getSkuByCode: function (merchantId, code) {
22
+ var searchArgs = {
23
+ "_orgId": merchantId
24
+ }
25
+ searchArgs["code"] = code;
26
+ var skuResult = owl_mall_skuService.search("", searchArgs, "", 0, 1, null);
27
+ if (skuResult.state == 'ok') {
28
+ var skuList = skuResult.list;
29
+ if (skuList.length > 0) {
30
+ return skuList[0];
31
+ }
32
+ }
33
+ return null;
34
+ },
35
+ /**
36
+ * 根据条形码获取sku
37
+ */
38
+ getSkuByBarcode: function (merchantId, barcode) {
39
+ var searchArgs = {
40
+ "_orgId": merchantId
41
+ }
42
+ searchArgs["barcode"] = barcode;
43
+ var skuResult = owl_mall_skuService.search("", searchArgs, "", 0, 1, null);
44
+ if (skuResult.state == 'ok') {
45
+ var skuList = skuResult.list;
46
+ if (skuList.length > 0) {
47
+ return skuList[0];
48
+ }
49
+ }
50
+ return null;
51
+ },
52
+ /**
53
+ * 判断sku编码或者条形码在商家中是否已经存在
54
+ */
55
+ checkIsExist: function (merchantId, key, value) {
56
+ var searchArgs = {
57
+ "_orgId": merchantId
58
+ }
59
+ searchArgs[key] = value;
60
+ var skuResult = owl_mall_skuService.search("", searchArgs, "", 0, 1, null);
61
+ if (skuResult.state == 'ok') {
62
+ var skuList = skuResult.list;
63
+ if (skuList.length > 0) {
64
+ return true;
65
+ }
66
+ }
67
+ return false;
68
+ }
69
+ };
70
+ return f;
71
+ })();
@@ -0,0 +1,75 @@
1
+ //#import $owl_mall_sku_inventory:services/modelService.jsx
2
+
3
+ var SkuUtil = (function () {
4
+ var f = {
5
+ getSkuAttrs: function (jProduct, jSku) {
6
+ var attrs = "";
7
+ var sku_attrs = jProduct.sku_attrs;
8
+ if (sku_attrs) {
9
+ for (var i = 0; i < sku_attrs.length; i++) {
10
+ var jAttr = sku_attrs[i];
11
+ if (attrs != "") {
12
+ attrs += ","
13
+ }
14
+ attrs += jAttr.attr_id + ":" + (jSku[jAttr.attr_id] || "");
15
+ }
16
+ }
17
+ return attrs;
18
+ },
19
+ getSkuAttrsName: function (jProduct, jSku) {
20
+ var attrs = "";
21
+ var sku_attrs = jProduct.sku_attrs;
22
+ if (sku_attrs) {
23
+ for (var i = 0; i < sku_attrs.length; i++) {
24
+ var jAttr = sku_attrs[i];
25
+ if (attrs != "") {
26
+ attrs += ","
27
+ }
28
+ attrs += jAttr.attr_name + ":" + (jSku[jAttr.attr_id] || "");
29
+ }
30
+ }
31
+ return attrs;
32
+ },
33
+ getSkuAttrValues: function (jProduct, jSku) {
34
+ var attrs = "";
35
+ var sku_attrs = jProduct.sku_attrs;
36
+ if (sku_attrs) {
37
+ for (var i = 0; i < sku_attrs.length; i++) {
38
+ var jAttr = sku_attrs[i];
39
+ if (attrs != "") {
40
+ attrs += ","
41
+ }
42
+ attrs += (jSku[jAttr.attr_id] || "");
43
+ }
44
+ }
45
+ return attrs;
46
+ },
47
+ getSkuBySkuId: function (skus, skuId) {
48
+ if (skus) {
49
+ for (var i = 0; i < skus.length; i++) {
50
+ if (skus[i].id === skuId) {
51
+ return skus[i];
52
+ }
53
+ }
54
+ }
55
+ return null;
56
+ },
57
+ updateSkuRealInventory: function (jSku, amount) {
58
+ var jSkuInventory = owl_mall_sku_inventoryService.get("owl_mall_sku_inventory_" + jSku.id);
59
+ if (jSkuInventory) {
60
+ jSkuInventory.real_inventory = Number(amount);
61
+ owl_mall_sku_inventoryService.update(jSkuInventory);
62
+ } else {
63
+ jSkuInventory = {};
64
+ jSkuInventory.product_id = jSku.product_id;
65
+ jSkuInventory.skuId = jSku.id;
66
+ jSkuInventory.real_inventory = Number(amount);
67
+ jSkuInventory.lock_number = 0;
68
+ jSkuInventory._orgId = jSku._orgId;
69
+ jSkuInventory._orgIds = jSku._orgIds;
70
+ owl_mall_sku_inventoryService.add(jSkuInventory);
71
+ }
72
+ }
73
+ };
74
+ return f;
75
+ })();
@@ -0,0 +1,46 @@
1
+ //#import $owl_mall_region:services/modelService.jsx
2
+
3
+ var RegionUtil = (function () {
4
+ var f = {
5
+ hasChildren: function (parentId) {
6
+ var searchArgs = {
7
+ parent_id: parentId
8
+ }
9
+
10
+ var searchResult = owl_mall_regionService.search('0', searchArgs, null, 0, 1, null);
11
+ if (searchResult.state === 'ok') {
12
+ if (searchResult.list.length > 0) {
13
+ return true;
14
+ }
15
+ }
16
+ return false;
17
+ },
18
+ getRegionPathName: function (jRegion, spex) {
19
+ var parentPathNames = jRegion.parentPathNames;
20
+
21
+ var namePath = "";
22
+ if (parentPathNames) {
23
+ if(parentPathNames.length > 1) {
24
+ for (var i = parentPathNames.length - 2; i >= 0; i--) {
25
+ var rid = parentPathNames[i];
26
+ if (!rid) {
27
+ continue;
28
+ }
29
+
30
+ if (namePath != "") {
31
+ namePath += spex;
32
+ }
33
+ namePath += parentPathNames[i];
34
+ }
35
+ }
36
+ }
37
+ if (namePath != "") {
38
+ namePath += spex;
39
+ }
40
+ namePath += jRegion.name;
41
+
42
+ return namePath;
43
+ }
44
+ };
45
+ return f;
46
+ })();