From 6bd88bdb765c1ecc0518abeca77eca25bde2857b Mon Sep 17 00:00:00 2001 From: "HATEC\\SPVDEV001" Date: Tue, 17 Oct 2023 14:57:48 +0700 Subject: add lebel product terjual di product card dan product detail, bugfix queri solr untuk filter brand --- src/pages/api/shop/search.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/pages') diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index fd7a215a..31497c51 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -13,7 +13,7 @@ export default async function handler(req, res) { orderBy = '', operation = 'AND', fq = '', - limit = 0, + limit = 30, stock = '' } = req.query @@ -41,7 +41,7 @@ export default async function handler(req, res) { let offset = (page - 1) * limit let parameter = [ - 'facet.field=manufacture_name', + 'facet.field=manufacture_name_s', 'facet.field=category_name', 'facet=true', 'indent=true', @@ -49,7 +49,7 @@ export default async function handler(req, res) { `q.op=${operation}`, `q=${escapeSolrQuery(q)}`, 'qf=name_s', - `start=${offset}`, + `start=${parseInt(offset)}`, `rows=${limit}`, `sort=${paramOrderBy}`, `fq=-publish_b:false` -- cgit v1.2.3 From 38101ad7264905d0c45c333acd0a6bb3ee7d03ba Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Wed, 18 Oct 2023 11:57:15 +0700 Subject: Fix flash sale sort on search api --- src/pages/api/shop/search.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/pages') diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index 31497c51..ce2f7e03 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -20,10 +20,10 @@ export default async function handler(req, res) { let paramOrderBy = '' switch (orderBy) { case 'price-asc': - paramOrderBy += 'price_discount_f ASC' + paramOrderBy += 'price_tier1_v2_f ASC' break case 'price-desc': - paramOrderBy += 'price_discount_f DESC' + paramOrderBy += 'price_tier1_v2_f DESC' break case 'popular': paramOrderBy += 'search_rank_i DESC' @@ -34,6 +34,9 @@ export default async function handler(req, res) { case 'stock': paramOrderBy += 'stock_total_f DESC' break + case 'flashsale-price-asc': + paramOrderBy += 'flashsale_price_f ASC' + break default: paramOrderBy += 'product_rating_f DESC, price_discount_f DESC' break -- cgit v1.2.3 From 95e29bc42afd5d4ce2edec877fec6005c40182d3 Mon Sep 17 00:00:00 2001 From: "HATEC\\SPVDEV001" Date: Wed, 18 Oct 2023 14:15:39 +0700 Subject: query default search --- src/pages/api/shop/search.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/pages') diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index ce2f7e03..b4d67c5d 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -26,7 +26,7 @@ export default async function handler(req, res) { paramOrderBy += 'price_tier1_v2_f DESC' break case 'popular': - paramOrderBy += 'search_rank_i DESC' + paramOrderBy += 'product_rating_f DESC, search_rank_i DESC,' break case 'popular-weekly': paramOrderBy += 'search_rank_weekly_i DESC' -- cgit v1.2.3 From b4b17e22832a4665042a45030b77c3744fe61534 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Wed, 18 Oct 2023 14:43:26 +0700 Subject: Add category name on google merchant product xml --- src/pages/google_merchant/products/[page].js | 45 ++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 3 deletions(-) (limited to 'src/pages') diff --git a/src/pages/google_merchant/products/[page].js b/src/pages/google_merchant/products/[page].js index d6309090..c8b4079b 100644 --- a/src/pages/google_merchant/products/[page].js +++ b/src/pages/google_merchant/products/[page].js @@ -2,6 +2,7 @@ import { createSlug } from '@/core/utils/slug' import toTitleCase from '@/core/utils/toTitleCase' import productSearchApi from '@/lib/product/api/productSearchApi' import variantSearchApi from '@/lib/product/api/variantSearchApi' +import axios from 'axios' import _ from 'lodash-contrib' import { create } from 'xmlbuilder' @@ -21,8 +22,11 @@ export async function getServerSideProps({ res, query }) { } const products = await variantSearchApi({ query: _.toQuery(queries) }) + const brandsData = {} + const categoriesData = {} + const productItems = [] - products.response.products.forEach((product) => { + for (const product of products.response.products) { const productUrl = createSlug('/shop/product/variant/', product.name, product.id, true) const productId = product.code != '' ? product.code : product.id const regexHtmlTags = /(<([^>]+)>)/gi @@ -34,6 +38,27 @@ export async function getServerSideProps({ res, query }) { product.description = defaultProductDescription } + let categoryName = null + + let brandId = product.manufacture?.id ?? null + let categoryId = null + + if (brandId && brandId in brandsData) { + categoryId = brandsData[brandId].category_ids?.[0] ?? null + } else { + const solrBrand = await getBrandById(brandId) + brandsData[brandId] = solrBrand + categoryId = solrBrand?.category_ids?.[0] ?? null + } + + if (categoryId && categoryId in categoriesData) { + categoryName = categoriesData[categoryId].name_s ?? null + } else { + const solrCategory = await getCategoryById(categoryId) + categoriesData[categoryId] = solrCategory + categoryName = solrCategory?.name_s ?? null + } + const availability = 'in_stock' const item = { @@ -47,20 +72,24 @@ export async function getServerSideProps({ res, query }) { 'g:brand': { '#text': product.manufacture?.name || '' }, 'g:price': { '#text': `${Math.round(product.lowestPrice.price * 1.11)} IDR` } } - + if (product.stockTotal == 0) { item['g:custom_label_0'] = { '#text': 'Stok Tidak Tersedia' } } else { item['g:custom_label_1'] = { '#text': 'Stok Tersedia' } } + if (categoryName) { + item['g:custom_label_2'] = { '#text': categoryName } + } + if (product.lowestPrice.discountPercentage > 0) { item['g:sale_price'] = { '#text': `${Math.round(product.lowestPrice.priceDiscount * 1.11)} IDR` } } productItems.push(item) - }) + } const googleMerchant = { rss: { @@ -82,6 +111,16 @@ export async function getServerSideProps({ res, query }) { return { props: {} } } +const getBrandById = async (id) => { + const brand = await axios(`${process.env.SOLR_HOST}/solr/brands/select?q=id:${id}`) + return brand.data.response.docs[0] ?? null +} + +const getCategoryById = async (id) => { + const category = await axios(`${process.env.SOLR_HOST}/solr/categories/select?q=id:${id}`) + return category.data.response.docs[0] ?? null +} + export default function GoogleMerchantPage() { return null } -- cgit v1.2.3