ngbootcamp.factory("apiService", function($http, $q) { let constParams = null; let companyItems = []; let companyMap = {}; let shopItems = []; let shopMap = {}; let accountList = []; let accountMap = {}; let categoryItems = []; let categoryMap = {}; let categoryGenres = []; let items = []; let itemMap = {}; let itemTagMap = {}; let itemTagCategoryNameMap = []; let brandItems = []; let tweetItems = []; let tweetMap = {}; let priceUnit = "¥"; let priceUnitSuffix = ""; let taxType = null; let taxCalcType = null; let s3SubDomain = "asset"; // 商品単価にオプション価格も加算して計算 let setCartPrice = (cartJS, discounts) => { console.log("apiService.setCartPrice taxType=", taxType, taxCalcType) let data = { price:0, price_str:null, tax:0, taxed_price:0, taxed_price_str:null, sum_price_str:null, sum_taxed_price_str:null, price_per_tax:{}, item_count:0, discount_price:0, discount_price_str:null, } if (!cartJS) return data; let pricePerTax = data.price_per_tax switch (taxCalcType) { case "taxed_unit_total_round": { for (let i of cartJS) { let itemTax = taxType ? i[taxType] : i.tax let ppt = pricePerTax[itemTax] if (!ppt) { ppt = {price:0,discount_price:0,taxed_price:0} pricePerTax[itemTax] = ppt } let p = 0 if (i.has_tax) { p = i.price / (1 + itemTax) * i.count // p = Math.round(i.price / (1 + itemTax)) * i.count ppt.price += p data.price += p if (i.option_js) { for (let o of i.option_js) { let op = 0 let optTax = taxType ? o[taxType] : o.tax if (!optTax) optTax = itemTax ppt = pricePerTax[optTax] if (!ppt) { ppt = {price:0,discount_price:0,taxed_price:0} pricePerTax[optTax] = ppt } if (o.has_tax) { op = o.price / (1 + optTax) * i.count // op = Math.round(o.price / (1 + optTax)) * i.count ppt.price += op data.price += op } else { op = o.price * i.count ppt.price += op data.price += op } p += op console.log(p, op, optTax, data.price, ppt.price) } } } else { p = i.price * i.count ppt.price += p data.price += p if (i.option_js) { for (let o of i.option_js) { let op = 0 let optTax = taxType ? o[taxType] : o.tax if (!optTax) optTax = itemTax ppt = pricePerTax[optTax] if (!ppt) { ppt = {price:0,discount_price:0,taxed_price:0} pricePerTax[optTax] = ppt } if (o.has_tax) { op = o.price / (1 + optTax) * i.count ppt.price += op data.price += op } else { op = o.price * i.count ppt.price += op data.price += op } p += op console.log(p, op, optTax, data.price, ppt.price) } } } data.item_count += i.count; i.sumTaxedPrice = Math.round(p * (1 + itemTax)) i.sumTaxedPriceStr = priceUnit + ("" + i.sumTaxedPrice).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; console.log(i.sumTaxedPrice, i.sumTaxedPriceStr) } break } case "total_ceil": { // カート内単一税率(V1) // カート内複数税率を考慮(V2) let itemTax = null for (let i of cartJS) { itemTax = taxType ? i[taxType] : i.tax let ppt = pricePerTax[itemTax] if (!ppt) { ppt = {price:0,discount_price:0,taxed_price:0} pricePerTax[itemTax] = ppt } if (i.has_tax) { let tax = i.price > 0 ? Math.ceil(i.price / (1 + itemTax)) : 0; tax = i.price - tax let p = (i.price - tax) * i.count; ppt.price += p data.price += p } else { let p = i.price * i.count; ppt.price += p data.price += p } data.item_count += i.count; } break; } case "total_floor": { // カート内単一税率(V1) // カート内複数税率を考慮(V2) let itemTax = null for (let i of cartJS) { let itemTax = taxType ? i[taxType] : i.tax let ppt = pricePerTax[itemTax] if (!ppt) { ppt = {price:0,discount_price:0,taxed_price:0} pricePerTax[itemTax] = ppt } if (i.has_tax) { let tax = i.price > 0 ? Math.floor(i.price / (1 + itemTax)) : 0; tax = i.price - tax let p = (i.price - tax) * i.count; ppt.price += p data.price += p } else { let p = i.price * i.count; ppt.price += p data.price += p } data.item_count += i.count; } break; } case "unit_ceil": { for (let i of cartJS) { let itemTax = taxType ? i[taxType] : i.tax let ppt = pricePerTax[itemTax] if (!ppt) { ppt = {price:0,discount_price:0,taxed_price:0} pricePerTax[itemTax] = ppt } if (i.has_tax) { let tax = i.price > 0 ? Math.ceil(i.price / (1 + itemTax)) : 0; tax = i.price - tax let p = (i.price - tax) * i.count; ppt.price += p data.price += p } else { let p = i.price * i.count; ppt.price += p data.price += p } data.item_count += i.count; } break; } case "unit_floor": { for (let i of cartJS) { let itemTax = taxType ? i[taxType] : i.tax let ppt = pricePerTax[itemTax] if (!ppt) { ppt = {price:0,discount_price:0,taxed_price:0} pricePerTax[itemTax] = ppt } if (i.has_tax) { let tax = i.price > 0 ? Math.floor(i.price / (1 + itemTax)) : 0; tax = i.price - tax let p = (i.price - tax) * i.count; ppt.price += p data.price += p } else { let p = i.price * i.count; ppt.price += p data.price += p } data.item_count += i.count; } break; } default: break; } console.log("apiService.setCartPrice", JSON.parse(JSON.stringify(data)), JSON.parse(JSON.stringify(pricePerTax))) let keys = Object.keys(pricePerTax) let total = 0 for (let k of keys) { total += pricePerTax[k].price; } for (let k of keys) { pricePerTax[k].rate = pricePerTax[k].price / total } if (discounts) { let time = new Date().getTime() for (let d of discounts) { if (!d) continue; for (let k of keys) { pricePerTax[k].discount_price = d.discount_price * pricePerTax[k].rate data.discount_price += pricePerTax[k].discount_price } } } data.taxed_price = 0 console.log("apiService.setCartPrice", JSON.parse(JSON.stringify(data)), JSON.parse(JSON.stringify(pricePerTax))) switch (taxCalcType) { case "taxed_unit_total_round": { for (let k of keys) { let ppt = pricePerTax[k] // ppt.tax = Math.round((ppt.price - ppt.discount_price) * k) ppt.tax = Math.round((ppt.price) * parseFloat(k)) console.log(ppt.tax, data.tax, ppt.discount_price) // data.discount_price += ppt.discount_price data.tax += ppt.tax data.taxed_price += Math.round(ppt.price * (1 + parseFloat(k))) - ppt.discount_price ppt.price = Math.round(ppt.price) data.price = Math.round(data.price) console.log(ppt.price, k, ppt) } break; } case "total_ceil": { for (let k of keys) { let ppt = pricePerTax[k] // ppt.tax = Math.ceil((ppt.price - ppt.discount_price) * k) ppt.tax = Math.ceil((ppt.price) * parseFloat(k)) // data.discount_price += ppt.discount_price data.tax += ppt.tax data.taxed_price += Math.round(ppt.price * (1 + parseFloat(k))) - ppt.discount_price ppt.price = Math.ceil(ppt.price) data.price = Math.ceil(data.price) } break; } case "total_floor": { for (let k of keys) { let ppt = pricePerTax[k] // ppt.tax = Math.floor((ppt.price - ppt.discount_price) * k) ppt.tax = Math.floor((ppt.price) * parseFloat(k)) // data.discount_price += ppt.discount_price data.tax += ppt.tax data.taxed_price += Math.round(ppt.price * (1 + parseFloat(k))) - ppt.discount_price ppt.price = Math.floor(ppt.price) data.price = Math.floor(data.price) } break; } case "unit_ceil": { for (let k of keys) { let ppt = pricePerTax[k] // ppt.tax = Math.ceil((ppt.price - ppt.discount_price) * k) ppt.tax = Math.ceil((ppt.price) * parseFloat(k)) // data.discount_price += ppt.discount_price data.tax += ppt.tax data.taxed_price += Math.round(ppt.price * (1 + parseFloat(k))) - ppt.discount_price ppt.price = Math.ceil(ppt.price) data.price = Math.ceil(data.price) } break; } case "unit_floor": { for (let k of keys) { let ppt = pricePerTax[k] // ppt.tax = Math.floor((ppt.price - ppt.discount_price) * k) ppt.tax = Math.floor((ppt.price) * parseFloat(k)) // data.discount_price += ppt.discount_price data.tax += ppt.tax data.taxed_price += Math.round(ppt.price * (1 + parseFloat(k))) - ppt.discount_price ppt.price = Math.floor(ppt.price) data.price = Math.floor(data.price) } break; } default: break; } console.log("apiService.setCartPrice", data, pricePerTax) data.price_str = priceUnit + ("" + (data.price - data.discount_price)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; data.tax_str = priceUnit + ("" + data.tax).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; data.taxed_price_str = priceUnit + ("" + data.taxed_price).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; data.sum_price_str = priceUnit + ("" + (data.price)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; data.sum_taxed_price_str = priceUnit + ("" + (data.taxed_price + data.discount_price)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; data.discount_price_str = priceUnit + ("" + (data.discount_price * -1)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; return data } // 商品限定でオプションの価格計算は含まない let setItemPrice = (d) => { let tax = !taxType || taxType == "tax" ? d.tax : d[taxType] // console.log("税率", taxCalcType, taxType, tax, d) if (d.price != null) { if (d.has_tax) { switch (taxCalcType) { case "taxed_unit_total_round": { d.priceStr = priceUnit + ("" + Math.round(d.price / (1 + tax))).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sellPriceStr = priceUnit + ("" + Math.round(d.sell_price / (1 + tax))).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.specialSellPriceStr = priceUnit + ("" + Math.round(d.special_sell_price / (1 + tax))).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.timeSellPriceStr = priceUnit + ("" + Math.round(d.time_sell_price / (1 + tax))).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumPriceStr = priceUnit + ("" + Math.round(d.price / (1 + tax)) * d.count).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumSellPriceStr = priceUnit + ("" + Math.round(d.sell_price / (1 + tax)) * d.count).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumSpecialSellPriceStr = priceUnit + ("" + Math.round(d.special_sell_price / (1 + tax)) * d.count).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumTimeSellPriceStr = priceUnit + ("" + Math.round(d.time_sell_price / (1 + tax)) * d.count).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.taxedPrice = d.price d.taxedPriceStr = priceUnit + ("" + d.price).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; if (d.count) { d.sumTaxedPriceStr = priceUnit + ("" + d.price * d.count).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; } else { d.sumTaxedPriceStr = priceUnit + ("" + d.price).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; } return } case "taxed_unit_total_ceil": case "total_ceil": case "unit_ceil": { d.priceStr = priceUnit + ("" + Math.ceil(d.price / (1 + tax))).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sellPriceStr = priceUnit + ("" + Math.ceil(d.sell_price / (1 + tax))).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.specialSellPriceStr = priceUnit + ("" + Math.ceil(d.special_sell_price / (1 + tax))).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.timeSellPriceStr = priceUnit + ("" + Math.ceil(d.time_sell_price / (1 + tax))).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumPriceStr = priceUnit + ("" + Math.ceil(d.price / (1 + tax)) * d.count).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumSellPriceStr = priceUnit + ("" + Math.ceil(d.sell_price / (1 + tax)) * d.count).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumSpecialSellPriceStr = priceUnit + ("" + Math.ceil(d.special_sell_price / (1 + tax)) * d.count).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumTimeSellPriceStr = priceUnit + ("" + Math.ceil(d.time_sell_price / (1 + tax)) * d.count).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; break; } case "taxed_unit_total_floor": case "total_floor": case "unit_floor": default: { d.priceStr = priceUnit + ("" + Math.floor(d.price / (1 + tax))).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sellPriceStr = priceUnit + ("" + Math.floor(d.sell_price / (1 + tax))).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.specialSellPriceStr = priceUnit + ("" + Math.floor(d.special_sell_price / (1 + tax))).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.timeSellPriceStr = priceUnit + ("" + Math.floor(d.time_sell_price / (1 + tax))).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumPriceStr = priceUnit + ("" + Math.floor(d.price / (1 + tax))).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumSellPriceStr = priceUnit + ("" + Math.floor(d.sell_price / (1 + tax))).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumSpecialSellPriceStr = priceUnit + ("" + Math.floor(d.special_sell_price / (1 + tax))).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumTimeSellPriceStr = priceUnit + ("" + Math.floor(d.time_sell_price / (1 + tax))).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; break; } } d.taxedPrice = d.price; d.taxedSellPrice = d.sell_price; d.taxedSpecialSelPrice = d.special_sell_price; d.taxedTimeSellPrice = d.time_sell_price; } else { switch (taxCalcType) { case "taxed_unit_total_round": { d.priceStr = priceUnit + ("" + d.price).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sellPriceStr = priceUnit + ("" + d.sell_price).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.specialSellPriceStr = priceUnit + ("" + d.special_sell_price).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.timeSellPriceStr = priceUnit + ("" + d.time_sell_price).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumPriceStr = priceUnit + ("" + (Math.round(d.price) * d.count)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumSellPriceStr = priceUnit + ("" + Math.round(d.sell_price)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumSpecialSellPriceStr = priceUnit + ("" + Math.round(d.special_sell_price) / 10).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumTimeSellPriceStr = priceUnit + ("" + Math.round(d.time_sell_price)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.taxedPrice = Math.round(d.price * (1 + tax)) d.taxedPriceStr = priceUnit + ("" + Math.round(d.price * (1 + tax))).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; if (d.count) { d.sumTaxedPriceStr = priceUnit + ("" + Math.round(d.price * (1 + tax)) * d.count).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; } else { d.sumTaxedPriceStr = priceUnit + ("" + Math.round(d.price * (1 + tax))).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; } return } case "taxed_unit_total_ceil": case "total_ceil": case "unit_ceil": { d.taxedPrice = Math.ceil(d.price * (1 + tax)); d.taxedSellPrice = Math.ceil(d.sell_price * (1 + tax)); d.taxedSpecialSelPrice = Math.ceil(d.special_sell_price * (1 + tax)); d.taxedTimeSellPrice = Math.ceil(d.time_sell_price * (1 + tax)); break; } case "taxed_unit_total_floor": case "total_floor": case "unit_floor": default: { d.taxedPrice = Math.floor(d.price * (1 + tax)); d.taxedSellPrice = Math.floor(d.sell_price * (1 + tax)); d.taxedSpecialSelPrice = Math.floor(d.special_sell_price * (1 + tax)); d.taxedTimeSellPrice = Math.floor(d.time_sell_price * (1 + tax)); break; } } d.priceStr = priceUnit + ("" + d.price).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sellPriceStr = priceUnit + ("" + d.sell_price).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.specialSellPriceStr = priceUnit + ("" + d.special_sell_price).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.timeSellPriceStr = priceUnit + ("" + d.time_sell_price).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumPriceStr = priceUnit + ("" + d.price * d.count).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumSellPriceStr = priceUnit + ("" + d.sell_price * d.count).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumSpecialSellPriceStr = priceUnit + ("" + d.special_sell_price * d.count).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumTimeSellPriceStr = priceUnit + ("" + d.time_sell_price * d.count).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; } if (d.count) { d.sumTaxedPriceStr = priceUnit + ("" + d.taxedPrice * d.count).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumTaxedSellPriceStr = priceUnit + ("" + d.taxedSellPrice * d.count).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumTaxedSpecialSelPriceStr = priceUnit + ("" + d.taxedSpecialSelPrice * d.count).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sumTaxedTimeSellPriceStr = priceUnit + ("" + d.taxedTimeSellPrice * d.count).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; } else { d.taxedPriceStr = priceUnit + ("" + d.taxedPrice).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.taxedSellPriceStr = priceUnit + ("" + d.taxedSellPrice).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.taxedSpecialSelPriceStr = priceUnit + ("" + d.taxedSpecialSelPrice).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.taxedTimeSellPriceStr = priceUnit + ("" + d.taxedTimeSellPrice).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; } } } let setEcItemParams = ($scope, d) => { d.checked = false; if (d.category_id1) d.category1 = categoryMap[d.category_id1]; if (d.category_id2) d.category2 = categoryMap[d.category_id2]; if (d.category_id3) d.category3 = categoryMap[d.category_id3]; d.company = companyMap[d.company_id]; if (d.staff_sell_start != null) d.staff_sell_start = new Date(d.staff_sell_start + " 00:00"); if (d.staff_sell_end != null) d.staff_sell_end = new Date(d.staff_sell_end + " 00:00"); if (d.imgs && d.imgs.length > 0) { d.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/thumb/' + d.imgs[0].item_id + '_' + d.imgs[0].img_prifix; d.img_url_def = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/' + d.imgs[0].item_id + '_' + d.imgs[0].img_prifix; d.img_url_large = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/large/' + d.imgs[0].item_id + '_' + d.imgs[0].img_prifix; if (d.imgs[0].format) { d.img_url += d.imgs[0].format; d.img_url_def += d.imgs[0].format; d.img_url_large += d.imgs[0].format; } else { d.img_url += ".jpg"; d.img_url_def += ".jpg"; d.img_url_large += ".jpg"; } for (let i2 of d.imgs) { i2.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/thumb/' + i2.item_id + '_' + i2.img_prifix + i2.format; i2.img_url_def = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/' + i2.item_id + '_' + i2.img_prifix + i2.format; i2.img_url_large = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/large/' + i2.item_id + '_' + i2.img_prifix + i2.format; } } else if (d.img_prifix) { d.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/thumb/' + d.id + '_' + d.img_prifix + '.jpg'; d.img_url_def = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/' + d.id + '_' + d.img_prifix + '.jpg'; d.img_url_large = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/large/' + d.id + '_' + d.img_prifix + '.jpg'; } else { d.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/thumb/' + d.jan + '.jpg'; d.img_url_def = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/' + d.jan + '.jpg'; d.img_url_large = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/large/' + d.jan + '.jpg'; } setItemPrice(d) if (d.sections && $scope && $scope.$parent && $scope.$parent.scaleTypeMap) { for (let s of d.sections) { let st = $scope.$parent.scaleTypeMap[s.scale_type] if (!st) continue; s.scale_type = st s.img_url = "https://" + s3SubDomain + "." + BASE_DOMAIN + "/item/thumb/" + s.id + "_" + s.file_prifix + s.format; s.img_url_def = "https://" + s3SubDomain + "." + BASE_DOMAIN + "/item/" + s.id + "_" + s.file_prifix + s.format; s.img_url_large = "https://" + s3SubDomain + "." + BASE_DOMAIN + "/item/large/" + s.id + "_" + s.file_prifix + s.format; } } if (d.enabled_shop_ids) { d.enabled_shop_ids = d.enabled_shop_ids.split(","); d.enabled_shops = []; for (let i of d.enabled_shop_ids) { d.enabled_shops.push(shopMap[i]); } } if (d.disabled_shop_ids) { d.disabled_shop_ids = d.disabled_shop_ids.split(","); d.disabled_shops = []; for (let i of d.disabled_shop_ids) { d.disabled_shops.push(shopMap[i]); } } }; let getSvgImage = function($scope, list, callback) { if (list.length == 0) { callback(true) return; } let img = list.shift(); img.img_url = 'get/data/?id=' + img.id + '&prifix=' + img.prifix + "&format=" + img.format + "&type=shop"; console.log("Service.getSvgImage", img.img_url) $http.get(BASE_API + img.img_url).success(function(data) { if (!data) { getSvgImage($scope, list, callback) return; } data = data.replace(/\n/g, ""); img.img.img_url = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(data) img.img.img_url_def = img.img.img_url img.img.img_url_large = img.img.img_url getSvgImage($scope, list, callback) }).error(function(data, status) { console.log(data); getSvgImage($scope, list, callback) }); } return { getConst: function () { if (constParams) return constParams; constParams = { languages: [ {id:"",name:"未設定"}, {id:"ja",name:"日本語"}, {id:"en",name:"English"}, ], languageMap:{}, genders: [ {id:0,name:"未設定"}, {id:1,name:"男性"}, {id:2,name:"女性"}, {id:3,name:"その他"}, ], genderMap:{}, deliveryProviders: [ {id:"yamato", name:"ヤマト運輸"}, {id:"sagawa", name:"佐川急便"}, {id:"japan_post", name:"日本郵便"}, ], deliveryProviderMap:{}, accountTypes: [ {id:"user", name:"一般ユーザー"}, {id:"sales", name:"店舗ユーザー"}, ], accountTypeMap:{}, inquiryTypes: [ {id:"error",name:"エラー報告"}, {id:"ec_purchase",name:"商品購入"}, {id:"ec_sell",name:"商品販売"}, {id:"trouble",name:"トラブル"}, {id:"other",name:"その他"}, ], inquiryTypeMap:{}, notificationTypes: [ {id:"important",name:"重要なお知らせ"}, {id:"new_arrival",name:"新商品情報"}, {id:"news",name:"ニュース"}, {id:"media",name:"メディア"}, {id:"release",name:"リリース"}, {id:"maintenance",name:"メンテナンス"}, ], notificationTypeMap:{}, tweetTypes: [ {id:"main_feature",name:"メイン特集"}, {id:"sub_feature",name:"サブ特集"}, {id:"column",name:"コラム・特集"}, {id:"blog",name:"ブログ"}, {id:"menu",name:"メニュー紹介"}, ], tweetTypeMap:{}, scaleTypes: [ {id:"cover",name:"カバー"}, {id:"contain",name:"フィット"}, ], scaleTypeMap:{}, couponUseTypes: [ {id:"",name:"未設定"}, {id:"select_in_ec",name:"EC決済時に選択"}, {id:"show_in_shop",name:"店舗で提示"}, ], couponUseTypeMap:{}, couponAvailableTypes: [ {id:"",name:"未設定"}, {id:"ec",name:"EC注文時に選択してネット決済(EC限定)"}, {id:"ec_auto",name:"EC注文時に自動利用(EC限定)"}, {id:"morder",name:"モバイルオーダー会計時に選択(モバイルオーダー限定)"}, {id:"shop",name:"店舗で決済(店舗限定、店舗提示不要)"}, {id:"shop_check_staff",name:"店舗で決済(店舗限定、店舗提示必要)"}, {id:"shop_ec",name:"EC注文時に選択してネット決済、店舗で提示"}, {id:"shop_ec_morder",name:"EC注文時に選択してネット決済、モバイルオーダー会計時に選択、店舗で提示"}, ], couponAvailableTypeMap:{}, couponDistTypes: [ {id:"",name:"未設定"}, {id:"dist_all",name:"自動付与"}, {id:"check_code",name:"コード入力"}, ], couponDistTypeMap:{}, purchaseTypes: [ {id:"self",name:"個人"}, {id:"business",name:"店舗仕入"}, {id:"store_sales",name:"店舗販売"}, {id:"staff",name:"スタッフ仕入/購入"}, ], purchaseTypeMap:{}, notificationTemplateTypes: [ {id:"ec_purchase",name:"EC購入"}, {id:"ec_purchase_com",name:"EC購入(事業者向け)"}, {id:"ec_billing",name:"EC決済"}, {id:"ec_billing_com",name:"EC決済(事業者向け)"}, {id:"ec_accept",name:"EC受付"}, {id:"ec_accept_com",name:"EC受付(事業者向け)"}, {id:"ec_fix",name:"EC注文確定"}, {id:"ec_fix_com",name:"EC注文確定(事業者向け)"}, {id:"ec_fix_delivery",name:"EC注文確定(配送向け)"}, {id:"ec_preparing",name:"EC注文準備開始"}, {id:"ec_prepared",name:"EC注文準備完了"}, {id:"call_delivery",name:"配達員呼出し"}, {id:"call_cancel_delivery",name:"配達員呼出しキャンセル"}, {id:"ec_shipping",name:"EC発送"}, {id:"ec_shipping_com",name:"EC発送(事業者向け)"}, {id:"ec_delivery_stay_robot",name:"EC注文先到着(ロボット配送)"}, {id:"ec_delivery_locker",name:"EC注文先到着(ロッカー)"}, {id:"ec_delivery",name:"EC取引完了"}, {id:"ec_delivery_com",name:"EC取引完了(事業者向け)"}, {id:"ec_cancel",name:"ECキャンセル"}, {id:"ec_cancel_com",name:"ECキャンセル(事業者向け)"}, {id:"signup",name:"会員登録"}, {id:"signin",name:"ログイン"}, {id:"forget_pass",name:"パスワード忘れ"}, {id:"update_pass",name:"パスワード変更"}, {id:"inquiry",name:"お問い合わせ受付"}, {id:"attach_mail",name:"添付メール"}, {id:"reserve_accept",name:"予約受付承認メール"}, {id:"reserve_remind",name:"予約リマインドメール"}, {id:"reserve_rejected",name:"予約拒否メール"}, ], notificationTemplateTypeMap:{}, }; console.log("SERVICE:", BASE_DOMAIN) if (BASE_DOMAIN.indexOf("salon.town") >= 0) { constParams.tweetTypes = [ {id:"main_feature",name:"メイン"}, {id:"sub_feature",name:"特集"}, {id:"new",name:"新着"}, {id:"recommended",name:"おすすめ"}, {id:"popular",name:"人気"}, ] } let initMap = (list, map) => { for (let i of list) { map[i.id] = i; } } initMap(constParams.languages, constParams.languageMap); initMap(constParams.genders, constParams.genderMap); initMap(constParams.deliveryProviders, constParams.deliveryProviderMap); initMap(constParams.accountTypes, constParams.accountTypeMap); initMap(constParams.inquiryTypes, constParams.inquiryTypeMap); initMap(constParams.notificationTypes, constParams.notificationTypeMap); initMap(constParams.tweetTypes, constParams.tweetTypeMap); initMap(constParams.scaleTypes, constParams.scaleTypeMap); initMap(constParams.couponUseTypes, constParams.couponUseTypeMap); initMap(constParams.couponAvailableTypes, constParams.couponAvailableTypeMap); initMap(constParams.purchaseTypes, constParams.purchaseTypeMap); initMap(constParams.notificationTemplateTypes, constParams.notificationTemplateTypeMap); return constParams; }, companyItems: function() { return companyItems; }, companyMap: function() { return companyMap; }, shopItems: function() { return shopItems; }, shopMap: function() { return shopMap; }, accountItems: function(){ return accountList; }, accountMap: function() { return accountMap; }, setPriceUnit: (u) => { priceUnit = u }, setPriceUnitSuffix: (u) => { priceUnitSuffix = u }, setS3SubDomain: (d) => { s3SubDomain = d }, getS3SubDomain: () => { return s3SubDomain }, categoryGenreItems: function(kwd) { let list = []; let reg = kwd ? new RegExp(kwd, "ig") : null; for (let c of categoryItems) { if (!c.parent_id) { if (!kwd) { list.push(c); continue; } reg.lastIndex = 0; if (reg.test(c.name)) { list.push(c); continue; } reg.lastIndex = 0; if (reg.test(c.code)) { list.push(c); continue; } } } return list; }, categoryItems: function(parentId, kwd) { let list = []; let reg = kwd ? new RegExp(kwd, "ig") : null; for (let c of categoryItems) { if (parentId == c.parent_id) { if (!kwd) { list.push(c); continue; } reg.lastIndex = 0; if (reg.test(c.name)) { list.push(c); continue; } reg.lastIndex = 0; if (reg.test(c.code)) { list.push(c); continue; } } } return list; }, categoryMap: function() { return categoryMap; }, categoryGenres: function() { return categoryGenres; }, items: function() { return items; }, itemMap: function() { return itemMap; }, itemTagMap: function() { return itemTagMap; }, brandItems: function() { return brandItems; }, tweetItems: function() { return tweetItems; }, tweetMap: function() { return tweetMap; }, checkHoliday: function($scope, params, filter, callback) { $http.post(BASE_API + "check/holiday", { date:params.date, }).success(function(data) { console.log("checkHoliday", data); callback(data); }).error(function(data, status) { console.log("checkHoliday", data); callback(data); }); }, checkHolidayMonthly: function($scope, params, filter, callback) { $http.post(BASE_API + "check/holiday/monthly", { date:params.date, }).success(function(data) { console.log("checkHolidayMonthly", data); callback(data); }).error(function(data, status) { console.log("checkHolidayMonthly", data); callback(data); }); }, getSettings: ($scope, params, filter, callback) => { let loginData = $scope.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "get/settings", { user_id:loginData.id, token:loginData.token, }).success(function(data) { console.log("Service.getSettings", JSON.parse(JSON.stringify(data))); if ($scope.$parent) $scope.$parent.showProgressModal = false; callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log("Service.getSettings", data); callback(data); }); }, getArea: function($scope, params, filter, callback) { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; $http.post(BASE_API + "get/area", { user_id:loginData.id, token:loginData.token, filter:filter, add_irregular_date:params ? params.add_irregular_date : false, offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log("apiService.getArea", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log("apiService.getArea", data); callback(data); }); }, getAsyncCompany: async ($scope, kwd) => { return await $http.post(BASE_API + "get/company", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:{kwd:kwd}, }).then((response) => { console.log("#######1", response, $q); return response.data.data; }, (response) => { console.log("#######2", response); return []; }); }, getCompany: function($scope, params, filter, callback) { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; $http.post("./get/company", { user_id:loginData.id, token:loginData.token, filter:filter, offset:params ? params.offset : 0, }).success(function(data) { console.log("apiService.getCompany", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { companyItems = data.data; companyMap = {}; for (let d of data.data) { d.checked = false; companyMap[d.id] = d; if (d.is_maker) { } if (d.is_dealer) { } } } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log("apiService.getCompany", data); callback(data); }); }, getShop: function($scope, params, filter, cache, callback) { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; $http.post(BASE_API + "get/shop", { user_id:loginData.id, token:loginData.token, filter:filter, add_mobile_order_setting:params ? params.add_mobile_order_setting : false, add_service_setting:params ? params.add_service_setting : false, add_info:params ? params.add_info : false, add_area:params ? params.add_area : false, add_dealer:params ? params.add_dealer : false, add_mall:params ? params.add_mall : false, add_company:params ? params.add_comapny : false, add_img:params ? params.add_img : false, add_irregular_date:params ? params.add_irregular_date : false, add_distance:params ? params.add_distance : false, // filter.check_distance_shop_idsに距離を調べたい店舗IDの配列を設定 add_latlon:params ? params.add_latlon : false, add_favo:params ? params.add_favo : false, add_shop_genre:params ? params.add_shop_genre : false, add_shop_table:params ? params.add_shop_table : false, add_item_count:params ? params.add_item_count : false, add_review_count:params ? params.add_review_count : false, add_payment_params:params ? params.add_payment_params : false, add_delivery_params:params ? params.add_delivery_params : false, add_printer:params ? params.add_printer : false, add_budget:params ? params.add_budget : false, offset:params ? params.offset : 0, limit:params ? params.limit : 20, review_sort:params ? params.review_sort : "newest", }).success(function(data) { console.log("Service.getShop", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; let imgs = []; if (data.result) { shopMap = {}; shopItems = data.data; for (let i of shopItems) { shopMap[i.id] = i; if (i.img_prifix) i.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/shop/thumb/' + i.id + '_' + i.img_prifix + '.jpg'; i.img_url_def = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/shop/' + i.id + '_' + i.img_prifix + '.jpg'; i.img_url_large = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/shop/large/' + i.id + '_' + i.img_prifix + '.jpg'; if (i.imgs && i.imgs.length > 0) { for (let img of i.imgs) { img.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/shop/thumb/' + img.shop_id + '_' + img.img_prifix; img.img_url_def = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/shop/' + img.shop_id + '_' + img.img_prifix; img.img_url_large = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/shop/large/' + img.shop_id + '_' + img.img_prifix; if (img.format) { if (img.format == ".svg") { // imgs.push({ // id:img.shop_id, // prifix:img.img_prifix, // format:img.format, // type:"shop", // img:img, // }); img.img_url += img.format; } else { img.img_url += img.format; } } else { img.img_url += ".jpg"; } console.log(img.format, img.img_url) } } } } if (imgs.length == 0) { callback(data); return; } getSvgImage($scope, imgs, () => { callback(data); }) }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log("Service.getShop", data); callback(data); }); }, getAsyncShop: async ($scope, kwd, filter, params) => { if (!filter) filter = {kwd:kwd} else filter.kwd = kwd; return await $http.post(BASE_API + "get/shop", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, add_mobile_order_setting:params ? params.add_mobile_order_setting : false, add_area:params ? params.add_area : false, add_dealer:params ? params.add_dealer : false, add_mall:params ? params.add_mall : false, add_company:params ? params.add_comapny : false, add_img:params ? params.add_img : false, add_irregular_date:params ? params.add_irregular_date : false, add_distance:params ? params.add_distance : false, // filter.check_distance_shop_idsに距離を調べたい店舗IDの配列を設定 add_latlon:params ? params.add_latlon : false, add_favo:params ? params.add_favo : false, add_shop_genre:params ? params.add_shop_genre : false, add_item_count:params ? params.add_item_count : false, add_review_count:params ? params.add_review_count : false, filter:filter, }).then((response) => { console.log("#######1", response, $q); return response.data.data; }, (response) => { console.log("#######2", response); return []; }); }, getAsyncShop2: async ($scope, params, filter) => { return await $http.post(BASE_API + "get/shop", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, add_mobile_order_setting:params ? params.add_mobile_order_setting : false, add_area:params ? params.add_area : false, add_dealer:params ? params.add_dealer : false, add_mall:params ? params.add_mall : false, add_company:params ? params.add_comapny : false, add_img:params ? params.add_img : false, add_irregular_date:params ? params.add_irregular_date : false, add_distance:params ? params.add_distance : false, // filter.check_distance_shop_idsに距離を調べたい店舗IDの配列を設定 add_latlon:params ? params.add_latlon : false, add_favo:params ? params.add_favo : false, add_shop_genre:params ? params.add_shop_genre : false, add_item_count:params ? params.add_item_count : false, add_review_count:params ? params.add_review_count : false, filter:filter, }).then((response) => { console.log("#######1", response, $q); return response.data.data; }, (response) => { console.log("#######2", response); return []; }); }, getAsyncAccount: async ($scope, params, filter, addClearStr) => { return await $http.post(BASE_API + "get/account", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, not_join_company:params ? params.not_join_company : false, not_join_shop:params ? params.not_join_shop : false, join_invite_shop:params ? params.join_invite_shop : false, add_name:params ? params.add_name : false, add_company_info:params ? params.add_company_info : false, add_shop_info:params ? params.add_shop_info : false, filter:filter, }).then((response) => { console.log("#######1", response, $q); if (addClearStr) { response.data.data.unshift({id:null,open_name:addClearStr}) } return response.data.data; }, (response) => { if (addClearStr) { return [{id:null,open_name:addClearStr}] } return []; }); }, saveAccount: ($scope, params, callback) => { $http.post(BASE_API + "save/account", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, data:params, }).success((data) => { console.log("ApiService.saveAccount", data); callback(data); }).error((data, status) => { console.log("ApiService.saveAccount", data); callback(data); }); }, getAccount: ($scope, params, filter, cache, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post("./get/account", { user_id:loginData.id, token:loginData.token, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, is_all:params ? params.is_all : false, not_join_company:params ? params.not_join_company : false, not_join_shop:params ? params.not_join_shop : false, join_invite_shop:params ? params.join_invite_shop : false, add_name:params ? params.add_name : false, add_name_kana:params ? params.add_name_kana : false, add_phone:params ? params.add_phone : false, add_mail:params ? params.add_mail : false, add_company_info:params ? params.add_company_info : false, add_shop_info:params ? params.add_shop_info : false, add_invite_account:params ? params.add_invite_account : false, add_img:params ? params.add_img : false, //複数画像追加 save_view_log:params ? params.save_view_log : false, // 閲覧履歴への追加 add_new_view_log_count:params ? params.add_new_view_log_count : false, //新規閲覧数(取得アカウント数1のときのみ有効) add_favo_count:params ? params.add_favo_count : false, //被お気に入り数 add_tag:params ? params.add_tag : false, //タグ追加 }).success(function(data) { console.log("ApiService.getAccount", data); if (data.result) { accountList = data.data; accountMap = {}; for (let d of data.data) { if (d.img_prifix) d.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/account/thumb/' + d.id + '_' + d.img_prifix + '.jpg'; if (d.permission != null) { d.permission = $scope.$parent.permissionMap[d.permission]; } if (d.affilicated_maker_id != null) { d.affilicated_maker = companyMap[d.affilicated_maker_id]; if (d.affilicated_maker == null) { d.affilicated_maker = { id:d.affilicated_maker_id, name:"削除済み", } } } if (d.affilicated_dealer_id != null) { d.affilicated_dealer = companyMap[d.affilicated_dealer_id]; if (d.affilicated_dealer == null) { d.affilicated_dealer = { id:d.affilicated_dealer_id, name:"削除済み", } } } if (d.affilicated_company_id != null) { d.affilicated_company = companyMap[d.affilicated_company_id]; if (d.affilicated_company == null) { d.affilicated_company = { id:d.affilicated_company_id, name:"削除済み", } } } if (d.affilicated_shop_id != null) { d.affilicated_shop = shopMap[d.affilicated_shop_id]; if (d.affilicated_shop == null) { d.affilicated_shop = { id:d.affilicated_shop_id, name:"削除済み", } } } if (d.invite_shop_id != null) { d.invite_shop = shopMap[d.invite_shop_id]; if (d.invite_shop = null) { d.invite_shop = { id:d.invite_shop_id, name:"削除済み", } } } if (d.invite_account_id != null) { // d.inviteAccount = accountMap[d.invite_account_id]; // if (d.inviteAccount == null) { // d.inviteAccount = { // id:d.invite_account_id, // name:"削除済み", // } // } } if (d.type) d.type = constParams.accountTypeMap[d.type]; if (d.gender) d.gender = constParams.genderMap[d.gender]; if (d.lang) d.lang = constParams.languageMap[d.lang]; accountMap[d.id] = d; d.checked = false; } } callback(data); }).error(function(data, status) { console.log("ApiService.getAccount", data); callback(data); }); }, getAccountPrivateInfo: function($scope, params, filter, callback) { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post("./get/account/private/info", { user_id:loginData.id, token:loginData.token, generate_pdf:params ? params.generate_pdf : false, send_mail:params ? params.send_mail : false, filter:filter, }).success(function(data) { console.log("Service.getAccountPrivateInfo", data); callback(data); }).error(function(data, status) { console.log("Service.getAccountPrivateInfo", data); callback(data); }); }, getAccountCount: function($scope, filter, callback) { if ($scope.$parent) $scope.$parent.showProgressModal = true; $http.post("./get/account/count", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:filter, }).success(function(data) { console.log("Service.getAccountCount", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log("Service.getAccountCount", data); callback(data); }); }, getAccountStaff: function($scope, callback) { $scope.$parent.showProgressModal = true; $http.post(BASE_API + "get/account/shop/staff", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, }).success(function(data) { console.log("Service.getAccountStaff", data); $scope.$parent.showProgressModal = false; callback(data); }).error(function(data, status) { console.log("Service.getAccountStaff", data); callback(data); }); }, getAccountCustomer: function($scope, callback) { $scope.$parent.showProgressModal = true; $http.post(BASE_API + "get/account/shop/customer", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, }).success(function(data) { console.log(data); $scope.$parent.showProgressModal = false; callback(data); }).error(function(data, status) { console.log(data); callback(data); }); }, saveAccountTagCategory: ($scope, params, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "save/account/tag/category", { user_id:loginData.id, token:loginData.token, data:params, // 新規タグカテゴリ保存 }).success(function(data) { console.log("ApiService.saveAccountTagCategory", data); callback(data); }).error(function(data, status) { console.log("ApiService.saveAccountTagCategory", data); callback(data); }); }, deleteAccountTagCategory: ($scope, params, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "delete/account/tag/category", { user_id:loginData.id, token:loginData.token, tag_category_id:params ? params.tag_category_id : null, }).success(function(data) { console.log("ApiService.deleteAccountTagCategory", data); callback(data); }).error(function(data, status) { console.log("ApiService.deleteAccountTagCategory", data); callback(data); }); }, getAccountTagCategory: ($scope, params, filter, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "get/account/tag/category", { user_id:loginData.id, token:loginData.token, filter:filter, }).success(function(data) { console.log("ApiService.getAccountTagCategory", data); callback(data); }).error(function(data, status) { console.log("ApiService.getAccountTagCategory", data); callback(data); }); }, saveAccountTagItem: ($scope, params, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "save/account/tag/item", { user_id:loginData.id, token:loginData.token, data:params, // 新規タグ保存 account_id:params ? params.account_id : null, // アカウントにタグ追加 tags:params ? params.tags : null, // アカウントのタグ設定 }).success(function(data) { console.log("ApiService.saveAccountTagItem", data); callback(data); }).error(function(data, status) { console.log("ApiService.saveAccountTagItem", data); callback(data); }); }, deleteAccountTagItem: ($scope, params, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "delete/account/tag/item", { user_id:loginData.id, token:loginData.token, tag_id:params ? params.tag_id : null, }).success(function(data) { console.log("ApiService.deleteAccountTagItem", data); callback(data); }).error(function(data, status) { console.log("ApiService.deleteAccountTagItem", data); callback(data); }); }, getAccountTagItem: ($scope, params, filter, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "get/account/tag/item", { user_id:loginData.id, token:loginData.token, filter:filter, }).success(function(data) { console.log("ApiService.getAccountTagItem", data); callback(data); }).error(function(data, status) { console.log("ApiService.getAccountTagItem", data); callback(data); }); }, saveAccountTag: ($scope, params, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "save/account/tag", { user_id:loginData.id, token:loginData.token, data:params, // 新規タグ保存 account_id:params ? params.account_id : null, // アカウントにタグ追加 tags:params ? params.tags : null, // アカウントのタグ設定 }).success(function(data) { console.log("ApiService.saveAccountTag", data); callback(data); }).error(function(data, status) { console.log("ApiService.saveAccountTag", data); callback(data); }); }, deleteAccountTag: ($scope, params, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "delete/account/tag", { user_id:loginData.id, token:loginData.token, tag_id:params ? params.tag_id : null, }).success(function(data) { console.log("ApiService.deleteAccountTag", data); callback(data); }).error(function(data, status) { console.log("ApiService.deleteAccountTag", data); callback(data); }); }, getAccountTag: ($scope, params, filter, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "get/account/tag", { user_id:loginData.id, token:loginData.token, filter:filter, }).success(function(data) { console.log("ApiService.getAccountTag", data); callback(data); }).error(function(data, status) { console.log("ApiService.getAccountTag", data); callback(data); }); }, saveAccountFavo: ($scope, params, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "save/account/favo", { user_id:loginData.id, token:loginData.token, account_id:params ? params.account_id : null, is_favo:params ? params.is_favo : null, }).success(function(data) { console.log("ApiService.saveAccountFavo", data); callback(data); }).error(function(data, status) { console.log("ApiService.saveAccountFavo", data); callback(data); }); }, getAccountFavo: ($scope, params, filter, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "get/account/favo", { user_id:loginData.id, token:loginData.token, filter:filter, }).success(function(data) { console.log("ApiService.getAccountFavo", data); callback(data); }).error(function(data, status) { console.log("ApiService.getAccountFavo", data); callback(data); }); }, getAccountViewLog: ($scope, params, filter, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "get/account/view/log", { user_id:loginData.id, token:loginData.token, filter:filter, }).success(function(data) { console.log("ApiService.getAccountViewLog", data); callback(data); }).error(function(data, status) { console.log("ApiService.getAccountViewLog", data); callback(data); }); }, checkItemCount: ($scope, filter, updateFilter, callback) => { filter = JSON.parse(JSON.stringify(filter)); if (filter.category_genre) filter.category_genre = {id:filter.category_genre.id} if (filter.category) filter.category = {id:filter.category.id} $http.post(BASE_API + "get/ec/item", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, search_check:true, filter: filter, }).success(function(data) { console.log("Service.checkItemCount", data); if (data.result) { $scope.searchCount = data.data.count; /* if (filter.category_genre) { for (let c of filter.category_genre.categories) { c.enabled = false; if (data.data.categories) { for (let i of data.data.categories) { if (c.id == i.id) { c.enabled = true; break; } } } } } */ for (let c of brandItems) { c.enabled = false; if (data.data.brands) { for (let i of data.data.brands) { if (c.name == i) { c.enabled = true; break; } } } } let tagCategoryNames = Object.keys(itemTagMap); for (let tagCategoryName of tagCategoryNames) { let keys = Object.keys(itemTagMap[tagCategoryName]); for (let k of keys) { let c = itemTagMap[tagCategoryName][k]; c.enabled = c.selected; } } if (updateFilter) { // 選択項目更新 itemTagMap = {}; if (data.data.item_tags) { for (let i of data.data.item_tags) { let tags = itemTagMap[i.tag_category_name]; if (!tags) { tags = []; itemTagMap[i.tag_category_name] = tags; } i.enabled = true; i.selected = false; tags.push(i); if (filter.item_tag[i.tag_category_name]) { if (filter.item_tag[i.tag_category_name][i.name]) { i.selected = true; filter.item_tag[i.tag_category_name][i.name] = i; } } } } if (callback) callback(data); } else { // 選択可能項目更新 let keys = Object.keys(itemTagMap); for (let k of keys) { let tags = itemTagMap[k]; for (let tag of tags) { tag.enabled = false; } } if (data.data.item_tags) { for (let i of data.data.item_tags) { let tags = itemTagMap[i.tag_category_name]; console.log(tags, i); if (!tags) { tags = []; itemTagMap[i.tag_category_name] = tags; } for (let tag of tags) { if (tag.name == i.name) { tag.enabled = true; } } } } if (callback) callback(data); } } }).error(function(data, status) { console.log("Service.checkItemCount", data); if (callback) callback(null); }); }, getCategory: function($scope, params, filter, cache, callback) { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; $http.post(BASE_API + "get/ec/category", { user_id:loginData.id, token:loginData.token, filter:filter, category_id:params ? params.id : null, add_shop_js:params ? params.add_shop_js : false, add_shop:params ? params.add_shop : false, add_company:params ? params.add_company : false, offset:params ? params.offset : 0, limit:params ? params.limit : 20, item_category:params ? params.item_category : null, }).success(function(data) { console.log("apiService.getCategory", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { // if (cache) { categoryItems = data.data; categoryMap = {}; categoryGenres = []; let categoryGenreMap = {}; if (params && params.item_category) { for (let d of data.data) { categoryMap[d.id] = d; d.checked = false; if (!d.category_genre_id) continue; let cg = categoryGenreMap[d.category_genre_id]; if (!cg) { cg = { id:d.category_genre_id, name:d.category_genre_name, checked:false, categories:[], } categoryGenreMap[d.category_genre_id] = cg; categoryGenres.push(cg); } cg.categories.push(d); } } else { for (let d of data.data) { categoryMap[d.id] = d; d.checked = false; if (!d.parent) continue; let cg = categoryGenreMap[d.parent.id]; if (!cg) { cg = { id:d.parent.id, name:d.parent.name, checked:false, categories:[], } categoryGenreMap[d.parent.id] = cg; categoryGenres.push(cg); } cg.categories.push(d); } } console.log(categoryMap, categoryGenres) // } for (let i of data.data) { if (i.parent_id != null) { i.parent = categoryMap[i.parent_id]; if (!i.parent) { i.parent = { id:i.parent_id, name:"削除済みカテゴリー", } } } if (i.img_prifix) { i.img_url = "https://" + s3SubDomain + "." + BASE_DOMAIN + "/category/thumb/" + i.id + "_" + i.img_prifix + ".jpg"; i.img_url_def = "https://" + s3SubDomain + "." + BASE_DOMAIN + "/category/" + i.id + "_" + i.img_prifix + ".jpg"; i.img_url_large = "https://" + s3SubDomain + "." + BASE_DOMAIN + "/category/large/" + i.id + "_" + i.img_prifix + ".jpg"; } } } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log("apiService.getCategory", data); callback(data); }); }, getMakerBrand: function($scope, params, filter, callback) { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; $http.post(BASE_API + "get/ec/item/brand", { user_id:loginData.id, token:loginData.token, is_maker:true, filter:filter, }).success(function(data) { console.log(data); brandItems = []; for (let d of data.data) { let brand = { name:d, enabled:true, }; brandItems.push(brand); if ($scope.filter.brand && $scope.filter.brand.name == d) { $scope.filter.brand = brand; } } if ($scope.$parent) $scope.$parent.showProgressModal = false; callback(data); }).error(function(data, status) { console.log(data); callback(data); }); }, getItemTag: function($scope, params, filter, callback) { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; $http.post(BASE_API + "get/ec/item/tag", { user_id:loginData.id, token:loginData.token, only_name:params ? params.only_name : false, filter:filter, }).success(function(data) { console.log("apiService.getItemTag", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; itemTagMap = {}; for (let d of data.data) { let tags = itemTagMap[d.tag_category_name]; if (!tags) { tags = []; itemTagMap[d.tag_category_name] = tags; } d.enabled = true; d.selected = false; tags.push(d); itemTagMap[d.name] = d; // if ($scope.$parent.filter.item_tag[d.tag_category_name] && $scope.$parent.filter.item_tag[d.tag_category_name][d.name]) { // $scope.$parent.filter.item_tag[d.tag_category_name][d.name] = d; // } } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log("apiService.getItemTag", data); callback(data); }); }, getItemTagAll: function($scope, callback) { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; $http.post(BASE_API + "get/ec/item/tag", { user_id:loginData.id, token:loginData.token, item_id:id, }).success(function(data) { console.log(data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { for (let d of data.data) { let m = itemTagCategoryNameMap[d.tag_category_name]; if (!m) { m = []; itemTagCategoryNameMap[d.tag_category_name] = m; } m.push(d.name); } } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getAsyncEcCategory: async ($scope, params, kwd) => { return await $http.post(BASE_API + "get/ec/category", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, option_only:params ? params.option_only : false, filter:{kwd:kwd}, }).then((response) => { console.log("#######1", response, $q); return response.data.data; }, (response) => { console.log("#######2", response); return []; }); }, getAsyncFilteredEcCategory: async ($scope, params, filter) => { return await $http.post(BASE_API + "get/ec/category", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:filter, }).then((response) => { console.log("#######1", response, $q); return response.data.data; }, (response) => { console.log("#######2", response); return []; }); }, getAsyncEcItem: async ($scope, kwd) => { return await $http.post(BASE_API + "get/ec/item", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, complement:true, filter:{kwd:kwd}, }).then((response) => { console.log("#######1", response, $q); return response.data.data; }, (response) => { console.log("#######2", response); return []; }); }, getAsyncFilteredEcItem: async ($scope, params, filter) => { return await $http.post(BASE_API + "get/ec/item", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, complement:true, filter:filter, }).then((response) => { console.log("#######1", response, $q); return response.data.data; }, (response) => { console.log("#######2", response); return []; }); }, // filter.itemtag : {'item_tag_category':['item_tag','item_tag',...],'item_tag_category':[]} getItem: function($scope, params, filter, cache, callback) { let loginData = $scope.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "get/ec/item", { user_id:loginData.id, token:loginData.token, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, home:params ? params.home : null, search_check:params ? params.search_check : false, add_img:params ? params.add_img : false, add_favo:params ? params.add_favo : false, add_review:params ? params.add_review : false, // 最新情報取得 add_review_content:params ? params.add_review_content : false, // 最新レビューコンテンツ取得(add_review=trueのみ) add_review_rate:params ? params.add_review_rate: false, // バッチ情報 add_review_count:params ? params.add_review_count: false, // バッチ情報 add_tag:params ? params.add_tag : false, add_description:params ? params.add_description: false, add_memo:params ? params.add_memo: false, add_fee_rate:params ? params.add_fee_rate: false, add_shop_location:params ? params.add_shop_location: false, add_enabled_shops:params ? params.add_enabled_shops: false, add_market:params ? params.add_market: false, add_pickup:params ? params.add_pickup: false, add_allergy:params ? params.add_allergy: false, add_maker:params ? params.add_maker: false, add_shop_js:params ? params.add_shop_js: false, add_set_item_ids:params ? params.add_set_item_ids : false, add_option:params ? params.add_option: false, add_unit_name:params ? params.add_unit_name: false, add_shop_item:params ? params.add_shop_item: false, calc_distance:params ? params.calc_distance: false, check_date:params ? params.check_date: false, review_sort:params ? params.review_sort : "newest", sort_list:params ? params.sort_list : null, }).success(function(data) { console.log("Service.getItem", JSON.parse(JSON.stringify(data)), categoryMap); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (params.search_check) { callback(data); return; } if (data.result) { itemMap = {}; if (!params.home) { for (let d of data.data) { itemMap[d.id] = d; setEcItemParams($scope, d); if (d.option_js) { for (let od of d.option_js) { if (!od || !od.items) continue; for (let iod of od.items) { setEcItemParams($scope, iod); } } } } } else { if (data.data.favorite_items) { for (let d of data.data.favorite_items) { itemMap[d.id] = d; setEcItemParams($scope, d); } } if (data.data.recommend_items) { for (let d of data.data.recommend_items) { itemMap[d.id] = d; setEcItemParams($scope, d); } } if (data.data.repurchase_items) { for (let d of data.data.repurchase_items) { itemMap[d.id] = d; setEcItemParams($scope, d); } } if (data.data.sales_rank_items) { for (let d of data.data.sales_rank_items) { itemMap[d.id] = d; setEcItemParams($scope, d); } } } } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log("Service.getItem", data); callback(data); }); }, checkItemLimit: function($scope, params, filter, callback) { let id = $scope.$parent && $scope.$parent.loginData ? $scope.$parent.loginData.id : $scope.loginData.id let token = $scope.$parent && $scope.$parent.loginData ? $scope.$parent.loginData.token : $scope.loginData.token if (filter) { if (filter.start_date) { filter.start_date = filter.start_date.replace(/年|月/g, "-").replace(/日/g, "") } if (filter.end_date) { filter.end_date = filter.end_date.replace(/年|月/g, "-").replace(/日/g, "") } } if ($scope.$parent) $scope.$parent.showProgressModal = true; $http.post(BASE_API + "check/ec/item/limit", { user_id:id, token:token, filter:filter, // {item_ids:[],shop_ids:[],start_date:YYYY-MM-DD,end_date:YYYY-MM-DD} offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log("apiService.checkItemLimit", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getEcItemReview: ($scope, params, filter, callback) => { let id = $scope.$parent && $scope.$parent.loginData ? $scope.$parent.loginData.id : $scope.loginData.id let token = $scope.$parent && $scope.$parent.loginData ? $scope.$parent.loginData.token : $scope.loginData.token $http.post(BASE_API + "get/ec/item/review", { user_id:id, token:token, filter:filter, // {item_id:"newest=falseのみ有効",addr_state:"店舗都道府県"} newest:params ? params.newest : false, add_item_info:params ? params.add_item_info : false, offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log("apiService.getEcItemReview", data); callback(data); }).error(function(data, status) { console.log(data); callback(data); }); }, getEcItemBrand: ($scope, params, filter, callback) => { let id = $scope.$parent && $scope.$parent.loginData ? $scope.$parent.loginData.id : $scope.loginData.id let token = $scope.$parent && $scope.$parent.loginData ? $scope.$parent.loginData.token : $scope.loginData.token $http.post(BASE_API + "get/ec/item/brand", { user_id:id, token:token, filter:filter, // {item_id:"newest=falseのみ有効",addr_state:"店舗都道府県"} }).success(function(data) { console.log("apiService.getEcItemBrand", data); callback(data); }).error(function(data, status) { console.log(data); callback(data); }); }, getEcItemKeyword: ($scope, params, filter, callback) => { let id = $scope.$parent && $scope.$parent.loginData ? $scope.$parent.loginData.id : $scope.loginData.id let token = $scope.$parent && $scope.$parent.loginData ? $scope.$parent.loginData.token : $scope.loginData.token $http.post(BASE_API + "get/ec/item/keyword", { user_id:id, token:token, sort_list:params ? params.sort_list : null, filter:filter, // {item_id:"newest=falseのみ有効",addr_state:"店舗都道府県"} offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log("apiService.getEcItemKeyword", data); callback(data); }).error(function(data, status) { console.log(data); callback(data); }); }, setTaxSetting: (params) => { taxType = params.tax_type taxCalcType = params.tax_calc_type }, requestEcTableOrder: (params, callback) => { if (!params || !params.shop_id || !params.qr_id || !params.cart_js || params.cart_js.length == 0) { callback(false, null) return } $http.post(BASE_API + "request/ec/table/order", { shop_id:params.shop_id, qr_id:params.qr_id, cart_js:params.cart_js, }).success(function(data) { console.log("apiService.requestEcTableOrder", data); callback(data.result, data); }).error(function(data, status) { console.log(data); callback(false, data); }); }, checkEcTableOrder: (params, filter, callback) => { if (!params || !params.shop_id || !params.qr_id) { callback(false, null) return } $http.post(BASE_API + "check/ec/table/order", { shop_id:params.shop_id, qr_id:params.qr_id, add_description:params ? params.add_description : false, add_memo:params ? params.add_memo : false, add_shop_js:params ? params.add_shop_js : false, add_allergy:params ? params.add_allergy : false, add_option:params ? params.add_option: false, filter:filter, }).success(function(data) { console.log("apiService.checkEcTableOrder", data); if (data.result) { for (let d of data.data) { itemMap[d.id] = d; setEcItemParams(null, d); if (d.option_js) { for (let od of d.option_js) { if (!od || !od.items) continue; for (let iod of od.items) { setEcItemParams(null, iod); } } } } } callback(data.result, data); }).error(function(data, status) { console.log(data); callback(false, data); }); }, getEcTableOrder: ($scope, params, filter, cache, callback) => { let loginData = $scope.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "get/ec/table/order", { user_id:loginData.id, token:loginData.token, filter:filter, }).success(function(data) { console.log("apiService.getTableOrder", data); callback(data.result, data); }).error(function(data, status) { console.log(data); callback(false, data); }); }, // parmas.cart_js 指定でカート内容の送信、未指定で保存されたカートを決済 [{item_id:xxxx,count:0,option_js:[]},] // params.check_price 保存されたカートの価格を確認 // delivery.shop 店頭受取・モバイルオーダー // payment.shop 店頭支払い・モバイルオーダー // --------------------------- // 実装サンプル // --------------------------- // let d = new Date(); // d.setDate(d.getDate()+7); // let params = { // delivery:{ // shop:$scope.$parent.loginData.shop, // phone:"000-0000-0000", // name:"受取人名", // }, // delivery_date:getDateStr(d), // EC、テイクアウト、デリバリーで指定 // reserve_date:getDateStr(d), // 予約 // memo:"テスト用", // payment:{shop:$scope.$parent.loginData.shop}, // purcahse_type:"self", // check_price:false, // cart_js:[ // {id:"20220524220841149KMOfacE",option_js:null,count:1}, // ], // } // apiService.requestEcOrder($scope, params, (data) => { // if (!data.result) { // $scope.$parent.modalConfirmMessage = data.msg ? data.msg : "注文できませんでした。"; // } // }); // --------------------------- // tax_type:(tax/null:税制1,tax2) // tax_calc_type:(unit_floor/null:単価に対して税計算切り捨て,unit_ceil:単価に対して税計算切り上げ,total_floor:合計に対して税計算切り捨て,total_ceil:合計に対して税計算切り上げ) requestEcOrder: function($scope, params, callback) { // 配送情報 // 配送先のインデックスを検索(店舗か配送先を未選択のとき) let deliveryIdx = -1; if (params.deliveries && !params.delivery) { for (let i of params.deliveries) { if (i.selected) { params.delivery = i; break; } deliveryIdx++; } } if (!params.delivery && !params.check_price) { $scope.modalMsg = "お届け先を指定してください。"; console.log($scope.modalMsg) callback({result:false}); return; } // 支払情報 // 支払い方法リストのインデックスを検索(店舗支払いかそれ以外) let paymentIdx = -1; if (params.payments && !params.payment) { for (let i of params.payments) { if (i.selected) { params.payment = i; break; } paymentIdx++; } } console.log("apiService.requestEcOrder", params); if (!params.payment && !params.check_price) { $scope.modalMsg = "支払い方法を指定してください。"; console.log($scope.modalMsg) callback({result:false}); return; } // if ($scope.loginData.type != "user" && !$scope.purchase_type) { // $scope.modalMsg = "購入種別を指定してください。"; // callback({result:false}); // return; // } let loginData = $scope.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "request/ec/order", { user_id:loginData.id, token:loginData.token, shop_id:params.shop_id, customer_id:params.customer ? params.customer.id : params.customer_id ? params.customer_id : null, not_auto_set_customer:params ? params.not_auto_set_customer : false, // customer_idを指定しない場合に自動でログインユーザーをcustomerとする処理のスキップ customer_open_name:params.customer ? params.customer.open_name : null, random_order_num:params ? params.random_order_num : false, delivery_request_date:params.delivery_request_date, // 配送希望日時 reserve_date:params.reserve_date, // 予約日時 delivery_addr_js:params.delivery, // 配送先 delivery_idx:deliveryIdx, // 配送先 discount_use_account_ids:params.discount_use_account_ids, // ディスカウント payment:params.payment, payment_idx:paymentIdx, purchase_type:params.purchase_type == null ? "self" : params.purchase_type.id, check_price:params.check_price, cart_js:params.cart_js, info:params.info, param_js:params.param_js, memo:params.memo, takeout_shop_id:params.takeout_shop_id, // 受取店舗(招待店舗上書き) order_id:params.order_id, // 購入時に認証が必要になった時に使用 order_num:params.order_num, // order_numを指定する場合 billing_id:params.billing_id, purchase_pass:params.purchase_pass, tax_type:params.tax_type ? params.tax_type : taxType, // 税種別 tax_calc_type:params.tax_calc_type ? params.tax_calc_type : taxCalcType, // 税率計算方法 price_type:params.price_type ? params.price_type : "price", // 購入価格種別 add_shop_cart:params.add_shop_cart ? params.add_shop_cart : false, // 店舗ごとの注文情報の付与 purchase_shop_id:params.purchase_shop_id ? params.purchase_shop_id : null, // 購入店舗ID(カート内に複数店舗の商品があった場合) not_reset_cart:params.not_reset_cart ? params.not_reset_cart : false, // 購入後のカートリセットを禁止するフラグ not_notify:params ? params.not_notify : false, // 購入後の通知をしない send_prepare_order_mail:params ? params.send_prepare_order_mail : false, // 送信カートデータを店舗ごとのデータを基準にする check_in_console:params ? params.check_in_console : false, // 確認を管理画面で行う session:params.session, pay_money:params.pay_money, pay_coupon:params.pay_coupon, pay_point:params.pay_point, pay_credit:params.pay_credit, pay_emoney:params.pay_emoney, pay_transfer:params.pay_transfer, pay_receivable:params.pay_receivable, package_price:params.package_price, service_price:params.service_price, group_order_id:params.group_order_id, relation_order_id:params.relation_order_id, }).success(function(data) { console.log("requestEcOrder", data); if ($scope.$parent) $scope.$parent.showProgressModal = true; if (data.result) { if (!data.data.discount) data.data.discount = 0 if (!data.data.service) data.data.service = 0 data.discount_price_str = priceUnit + ("" + data.data.discount).replace(/(\d)(?=(\d{3})+$)/g , '$1,'); data.total_tax_str = priceUnit + ("" + data.data.tax).replace(/(\d)(?=(\d{3})+$)/g , '$1,'); data.total_price_str = priceUnit + ("" + data.data.price).replace(/(\d)(?=(\d{3})+$)/g , '$1,'); data.total_taxed_price_str = priceUnit + ("" + (data.data.price + data.data.tax - data.data.discount)).replace(/(\d)(?=(\d{3})+$)/g , '$1,'); data.service_price_str = priceUnit + ("" + data.data.service).replace(/(\d)(?=(\d{3})+$)/g , '$1,'); if (!data.data.delivery) data.data.delivery = 0 data.delivery_price_str = priceUnit + ("" + data.data.delivery).replace(/(\d)(?=(\d{3})+$)/g , '$1,'); data.total_service_taxed_price_str = priceUnit + ("" + (data.data.price + data.data.tax + data.data.service + data.data.delivery - data.data.discount)).replace(/(\d)(?=(\d{3})+$)/g , '$1,'); data.sub_total_taxed_price_str = priceUnit + ("" + (data.data.price + data.data.tax)).replace(/(\d)(?=(\d{3})+$)/g , '$1,'); callback(data); } else { $scope.modalMsg = data.msg != null ? data.msg : "購入できませんでした。"; callback(data); } }).error(function(data, status) { console.log(data); if ($scope.$parent) $scope.$parent.showProgressModal = true; $scope.modalMsg = "通信できませんでした。"; callback({result:false}); }); }, updateEcOrder: function($scope, params, callback) { let loginData = $scope.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "update/ec/order", { user_id:loginData.id, token:loginData.token, customer_id:params.customer ? params.customer.id : null, customer_open_name:params.customer ? params.customer.open_name : null, delivery_request_date:params.delivery_request_date, // 配送希望日時 reserve_date:params.reserve_date, // 予約日時 delivery_addr_js:params.delivery, // 配送先 cart_js:params.cart_js, info:params.info, param_js:params.param_js, memo:params.memo, takeout_shop_id:params.takeout_shop_id, // 受取店舗(招待店舗上書き) order_id:params.order_id, // 購入時に認証が必要になった時に使用 pay_money:params.pay_money, pay_coupon:params.pay_coupon, pay_point:params.pay_point, pay_credit:params.pay_credit, pay_emoney:params.pay_emoney, pay_receivable:params.pay_receivable, package_price:params.package_price, service_price:params.service_price, }).success(function(data) { console.log("updateEcOrder", data); if ($scope.$parent) $scope.$parent.showProgressModal = true; callback(data); }).error(function(data, status) { console.log(data); if ($scope.$parent) $scope.$parent.showProgressModal = true; $scope.modalMsg = "通信できませんでした。"; callback({result:false}); }); }, // カートにいれる addEcCart: function ($scope, item, deliveryRequestDate, callback) { let id = $scope.$parent ? $scope.$parent.loginData.id : $scope.loginData.id let token = $scope.$parent ? $scope.$parent.loginData.token : $scope.loginData.token if ($scope.$parent) $scope.$parent.showProgressModal = true; else $scope.showProgressModal = true; $http.post(BASE_API + "save/ec/cart", { user_id:id, token:token, item:item, delivery_request_date:deliveryRequestDate, }).success(function(data) { if ($scope.$parent) $scope.$parent.showProgressModal = false; else $scope.showProgressModal = false; console.log("addEcCart", data); callback(true, data, null); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; else $scope.showProgressModal = false; console.log(data); callback(false, data, status); }); }, // カートにいれる(レスポンスでの情報取得を強化) addEcCart2: function ($scope, params, item, deliveryRequestDate, callback) { let id = $scope.$parent ? $scope.$parent.loginData.id : $scope.loginData.id let token = $scope.$parent ? $scope.$parent.loginData.token : $scope.loginData.token if ($scope.$parent) $scope.$parent.showProgressModal = true; else $scope.showProgressModal = true; $http.post(BASE_API + "save/ec/cart", { user_id:id, token:token, add_img:params ? params.add_img : false, add_category:params ? params.add_category : false, add_pickup:params ? params.add_pickup : false, add_count:params ? params.add_count : false, delivery_type:params ? params.delivery_type : null, item:item, delivery_request_date:deliveryRequestDate, filter:{}, }).success(function(data) { if ($scope.$parent) $scope.$parent.showProgressModal = false; else $scope.showProgressModal = false; console.log("addEcCart2", data); callback(true, data, null); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; else $scope.showProgressModal = false; console.log(data); callback(false, data, status); }); }, // カートにいれる(レスポンスでの情報取得を強化、自動付与クーポン対応) addEcCart3: ($scope, params, filter, item, deliveryRequestDate, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; else $scope.showProgressModal = true; $http.post(BASE_API + "save/ec/cart", { user_id:loginData.id, token:loginData.token, add_img:params ? params.add_img : false, add_category:params ? params.add_category : false, add_pickup:params ? params.add_pickup : false, add_count:params ? params.add_count : false, delivery_type:params ? params.delivery_type : null, item:item, delivery_request_date:deliveryRequestDate, filter:filter, }).success(function(data) { if ($scope.$parent) $scope.$parent.showProgressModal = false; else $scope.showProgressModal = false; console.log("addEcCart3", data); if (data.result) { for (let d of data.data) { setEcItemParams($scope, d); } } callback(true, data, null); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; else $scope.showProgressModal = false; console.log(data); callback(false, data, status); }); }, // 複数商品をカートにいれる(レスポンスでの情報取得を強化、自動付与クーポン対応) addEcCart4: ($scope, params, filter, items, deliveryRequestDate, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; else $scope.showProgressModal = true; $http.post(BASE_API + "save/ec/cart", { user_id:loginData.id, token:loginData.token, add_img:params ? params.add_img : false, add_category:params ? params.add_category : false, add_pickup:params ? params.add_pickup : false, add_count:params ? params.add_count : false, delivery_type:params ? params.delivery_type : null, check_stock_shop_id:params ? params.check_stock_shop_id : null, // 個別に在庫チェックをする店舗 items:items, delivery_request_date:deliveryRequestDate, filter:filter, }).success(function(data) { if ($scope.$parent) $scope.$parent.showProgressModal = false; else $scope.showProgressModal = false; console.log("addEcCart4", data); if (data.result) { for (let d of data.data) { setEcItemParams($scope, d); } } callback(true, data, null); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; else $scope.showProgressModal = false; console.log(data); callback(false, data, status); }); }, // getEcCartの結果のtax_typeを使う場合はsetTaxSettingのあとでこれを呼ぶ setEcCartParams: ($scope, data) => { if (data.result) { for (let d of data.data) { setEcItemParams($scope, d); } } }, // カート取得 getEcCart: function ($scope, params, callback) { if (!params) params = {add_img:false}; let loginData = $scope.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "get/ec/cart", { user_id:loginData.id, token:loginData.token, add_img:params.add_img, add_category:params.add_category, add_pickup:params.add_pickup, add_item_info:params.add_item_info, // add/ec/cartでcart_jsに商品情報を入れていない場合でも商品情報を連携させる }).success(function(data) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log("apiSerivice.getEcCart", JSON.parse(JSON.stringify(data))); if (data.result) { for (let d of data.data) { setEcItemParams($scope, d); } } if (callback) callback( data.result, data, null); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); if (callback) callback(false, data, status); }); }, calcItemPrice: (item) => { switch (taxCalcType) { case "taxed_unit_total_round": { let t = item.price let tax = taxType ? item[taxType] : item.tax if (item.has_tax) { t = (item.price / (1 + tax)) if (item.option_js) { for (let o of item.option_js) { if (!o || !o.items) continue; for (let io of o.items) { if (io.checked) { if (io.has_tax) { t += (io.price / (1 + tax)) } else { t += io.price } } } } } } else { t = item.price if (item.option_js) { for (let o of item.option_js) { if (!o || !o.items) continue; for (let io of o.items) { if (io.checked) { if (io.has_tax) { t += (io.price / (1 + tax)) } else { t += io.price } } } } } } t *= item.count item.sumPrice = t item.sumPriceStr = priceUnit + ("" + item.sumPrice).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix item.sumTaxedPrice = Math.round(t * (1 + tax)) item.sumTaxedPriceStr = priceUnit + ("" + (item.sumTaxedPrice)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') +priceUnitSuffix; break } default: break } }, calcCartPrice: (cartJS, discounts) => { return setCartPrice(cartJS, discounts) }, // 配送先取得 getEcDeliveryAddr: function ($scope, params, callback) { if ($scope.$parent) $scope.$parent.showProgressModal = true; $http.post(BASE_API + "get/ec/delivery", { user_id:$scope.loginData.id, token:$scope.loginData.token, }).success(function(data) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log("getEcDeliveryAddr", data); if (callback) callback(true, data, null); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); if (callback) callback(false, data, status); }); }, // 支払情報取得 getEcPayment: function ($scope, params, callback) { if ($scope.$parent) $scope.$parent.showProgressModal = true; $http.post(BASE_API + "get/ec/payment", { user_id:$scope.loginData.id, token:$scope.loginData.token, }).success(function(data) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); if (callback) callback(true, data, null); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); if (callback) callback(false, data, status); }); }, // ステータス変更 saveEcOrderState: function($scope, params, callback) { if ($scope.$parent) $scope.$parent.showProgressModal = true; let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "save/ec/order/state", { user_id:loginData.id, token:loginData.token, order_id:params.order_id, is_accept:params.is_accept, // 受付完了 is_fix_request:params.is_fix_request, // 購入確定リクエスト is_call_pickup:params.is_call_pickup, // 配送呼び出し is_shipping:params.is_shipping, // 配達開始 is_delivery:params.is_delivery, // 配達完了 is_claim:params.is_claim, // 請求完了 is_receipt:params.is_receipt, // 領収完了 update_only_status_key:params.update_only_status_key, // ステータス変更のみ delivery_provider:params.delivery_provider, // 初回is_shipping=trueのみ delivery_num:params.delivery_num, // 初回is_shipping=trueのみ }).success(function(data) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data) }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); $scope.modalMsg = "通信できませんでした。"; callback({result:false}); }); }, // ステータス変更 saveEcOrderPrepareState: ($scope, params, callback) => { if ($scope.$parent) $scope.$parent.showProgressModal = true; let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "save/ec/order/prepare/state", { user_id:loginData.id, token:loginData.token, order_id:params.order_id, delivery_type:params.delivery_type, // is_call_delivery=trueのときは必須 location_id:params.location_id, shop_id:params.shop_id, purchase:params.purchase, // 決済フラグ is_accept:params.is_accept, // 受付完了 is_fix_request:params.is_fix_request, // 購入確定リクエスト is_preparing:params.is_preparing, // 準備開始 is_prepared:params.is_prepared, // 準備完了 is_cancel_prepared:params.is_cancel_prepared, // 準備完了キャンセル is_shipping:params.is_shipping, // 配達開始 is_delivery:params.is_delivery, // 配達完了 is_call_pickup:params.is_call_pickup, // 配送呼び出し (location_id必須) is_set_person:params.is_set_person, // 配送担当設定 (location_id必須) is_cancel_shipping:params.is_cancel_shipping, // 配送中止 (location_id必須) is_container_unlock:params.is_container_unlock, // コンテナアンロック (location_id必須) is_cancel:params.is_cancel, // キャンセル is_claim:params.is_claim, // 請求完了 is_receipt:params.is_receipt, // 領収完了 update_only_status_key:params.update_only_status_key, // ステータス変更のみ delivery_account_id:params.delivery_account_id, delivery_provider:params.delivery_provider, // 初回is_shipping=trueのみ delivery_num:params.delivery_num, // 初回is_shipping=trueのみ dropoff_id:params.dropoff_id, // is_call_delivery=trueのみ pincode:params.pincode, // is_call_delivery=trueのみ }).success(function(data) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data) }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); $scope.modalMsg = "通信できませんでした。"; callback({result:false}); }); }, // 注文キャンセル cancelEcOrder: function($scope, params, callback) { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; $http.post(BASE_API + "cancel/ec/order", { user_id:loginData.id, token:loginData.token, order_id:params.order_id, shop_id:params.shop_id, release_discount:params ? params.release_discount : false, }).success(function(data) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); $scope.modalMsg = "通信できませんでした。"; callback({result:false}); }); }, // 注文キャンセル cancelEcOrderPrepare: function($scope, params, callback) { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; $http.post(BASE_API + "cancel/ec/order/prepare", { user_id:loginData.id, token:loginData.token, order_id:params.order_id, shop_id:params.shop_id, all_cancel:params.all_cancel, // 買い周りした他店舗分もキャンセル }).success(function(data) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); $scope.modalMsg = "通信できませんでした。"; callback({result:false}); }); }, // filter.idを指定すると履歴内のcart_jsを取得できる getEcOrder: ($scope, params, filter, callback) => { if ($scope.$parent) $scope.$parent.showProgressModal = true; if (filter) { if (filter.company) filter.company_id = filter.company.id; if (filter.shop) filter.shop_id = filter.shop.id; } let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "get/ec/order", { user_id:loginData.id, token:loginData.token, company_id:$scope.$parent.loginData.affilicated_dealer_id, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, add_img:params ? params.add_img : false, account_info:params ? params.account_info : false, customer_info:params ? params.customer_info : false, invite_shop_info:params ? params.invite_shop_info : false, price_info:params ? params.price_info : false, delivery_info:params ? params.delivery_info : false, sales_info:params ? params.sales_info : false, self_info:params ? params.self_info : false, param_info:params ? params.param_info : false, add_memo:params ? params.add_memo : false, add_prepare:params ? params.add_prepare : false, add_cart:params ? params.add_cart : false, cart_src_data:params ? params.cart_src_data : false, // 保持しているカートデータ(falseでキャッシュした商品データと結合) add_prepare_cart:params ? params.add_prepare_cart : false, add_discount:params ? params.add_discount : false, add_delivery_status:params ? params.add_delivery_status : false, calc_cart:params ? params.calc_cart : false, // add_cart=true もしくは add_prepare_cart=true のみ有効 latest:params ? params.latest : true, }).success(function(data) { console.log("getEcOrder", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { for (let d of data.data) { d.price_str = priceUnit + ("" + parseInt(d.price)).replace( /(\d)(?=(\d{3})+\b)/g, "$1,"); d.service_price_str = priceUnit + ("" + parseInt(d.service_price)).replace( /(\d)(?=(\d{3})+\b)/g, "$1,"); if (!d.delivery_price) d.delivery_price = 0 d.delivery_price_str = priceUnit + ("" + parseInt(d.delivery_price)).replace( /(\d)(?=(\d{3})+\b)/g, "$1,"); d.sub_price_str = priceUnit + ("" + parseInt(d.price - d.service_price)).replace( /(\d)(?=(\d{3})+\b)/g, "$1,"); if (d.cart_js) { for (let c of d.cart_js) { setItemPrice(c); if (c.option_js) { for (let o of c.option_js) { setItemPrice(o); } } if (c.imgs) { for (let i of c.imgs) { i.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/thumb/' + i.item_id + '_' + i.img_prifix + i.format; i.img_url_def = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/' + i.item_id + '_' + i.img_prifix + i.format; i.img_url_large = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/large/' + i.item_id + '_' + i.img_prifix + i.format; } } else if (c.img_prifix) { } else { c.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/thumb/' + c.jan + ".jpg" c.img_url_def = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/' + c.jan + ".jpg" c.img_url_large = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/large/' + c.jan + ".jpg" } } } if (d.prepare) { for (let p of d.prepare) { if (!p.cart_js) continue if (p.price) p.price_str = priceUnit + ("" + p.price).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix if (p.discount_price) p.discount_price_str = priceUnit + ("" + Math.round(p.discount_price)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; for (let c of p.cart_js) { setItemPrice(c); if (c.calced_price) c.calced_price_str = priceUnit + ("" + Math.round(c.calced_price)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; if (c.calced_tax_price) c.calced_tax_price_str = priceUnit + ("" + Math.round(c.calced_tax_price)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; if (c.option_js) { for (let o of c.option_js) { setItemPrice(o); } } if (c.imgs) { for (let i of c.imgs) { i.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/thumb/' + i.item_id + '_' + i.img_prifix + i.format; i.img_url_def = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/' + i.item_id + '_' + i.img_prifix + i.format; i.img_url_large = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/large/' + i.item_id + '_' + i.img_prifix + i.format; } } else if (c.img_prifix) { } else { c.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/thumb/' + c.jan + ".jpg" c.img_url_def = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/' + c.jan + ".jpg" c.img_url_large = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/item/large/' + c.jan + ".jpg" } } } } if (d.delivery_provider) d.delivery_provider = $scope.$parent.deliveryProviderMap[d.delivery_provider]; } } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, calcEcOrderData: (data) => { let price = { sub:0, // 税抜小計 tax:0, // 税 total:0, // 税込小計 discount:0, // 値引き service_total:0, // 請求額 } for (let d of data.data) { if (d.prepare) { for (let dp of d.prepare) { price.discount += dp.discount_price let tax = null switch (dp.delivery_type) { case "takeout": case "takeout_single": case "takeout_multh": case "delivery": case "delivery_staff": case "delivery_robot": tax = "tax2" break case "shop": case "marche": case "food_court": default: tax = "tax" break } for (let c of dp.cart_js) { price.sub += c.calced_price price.tax += Math.round(c.calced_price * c[tax]) c.calced_price_str = priceUnit + ("" + Math.round(c.calced_price)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix c.calced_tax_price_str = priceUnit + ("" + Math.round(c.calced_tax_price)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix } } } if (d.discounts) { for (let dd of d.discounts) { if (dd.discount_price) price.discount += dd.discount_price } } } switch (taxCalcType) { case "taxed_unit_total_round": default: { price.total = Math.round(price.total) price.sub = Math.round(price.sub) price.tax = Math.round(price.tax) price.discount = Math.round(price.discount) price.service_total = Math.round(price.service_total) break } } price.total = price.sub + price.tax price.service_total = price.total - price.discount price.sub_str = priceUnit + ("" + price.sub).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix price.tax_str = priceUnit + ("" + price.tax).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix price.discount_str = priceUnit + ("" + price.discount).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix price.total_str = priceUnit + ("" + price.total).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix price.service_total_str = priceUnit + ("" + price.service_total).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix return price }, getEcOrderPrepareNotProgress: function($scope, params, filter, callback) { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "get/ec/order/prepare", { user_id:loginData.id, token:loginData.token, filter:filter, account_info:params ? params.account_info : false, offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log("getEcOrderPrepareNotProgress", data); callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getEcOrderPrepare: function($scope, params, filter, callback) { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; console.log(params, filter) $http.post(BASE_API + "get/ec/order/prepare", { user_id:loginData.id, token:loginData.token, filter:filter, account_info:params ? params.account_info : false, account_id:params ? params.account_id : false, account_name:params ? params.account_name : false, account_name_kana:params ? params.account_name_kana : false, account_mail:params ? params.account_mail : false, account_phone:params ? params.account_phone : false, shop_info:params ? params.shop_info : false, table_info:params ? params.table_info : false, add_cart:params ? params.add_cart : false, add_delivery_status:params ? params.add_delivery_status : false, self_status_check:params ? params.self_status_check : false, add_discount:params ? params.add_discount : false, calc_cart:params ? params.calc_cart : false, // add_cart=trueのみ有効 offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log("getEcOrderPrepare", data); if (data.result) { for (let d of data.data) { if (d.shop) { if (d.shop.imgs) { for (let i of d.shop.imgs) { i.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/shop/thumb/' + i.shop_id + '_' + i.img_prifix + i.format; i.img_url_def = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/shop/' + i.shop_id + '_' + i.img_prifix + i.format; i.img_url_large = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/shop/large/' + i.shop_id + '_' + i.img_prifix + i.format; } } } d.sum_price = 0 d.calced_price = 0 d.calced_tax_price = 0 if (params.add_cart) { for (let c of d.cart_js) { if (c.price) { c.price_str = priceUnit + ("" + c.price).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; c.sum_price_str = priceUnit + ("" + (c.price * c.count)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.sum_price += c.price * c.count } if (c.taxed_price) c.taxed_price_str = priceUnit + ("" + c.taxed_price).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; if (c.calced_price) { c.calced_price_str = priceUnit + ("" + Math.round(c.calced_price)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.calced_price += c.calced_price } if (c.calced_tax_price) { c.calced_tax_price_str = priceUnit + ("" + Math.round(c.calced_tax_price)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.calced_tax_price += c.calced_tax_price } } } d.sum_price_str = priceUnit + ("" + d.sum_price).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.calced_price_str = priceUnit + ("" + Math.round(d.calced_price)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.calced_tax_price_str = priceUnit + ("" + Math.round(d.calced_tax_price)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.discount_price_str = priceUnit + ("" + Math.round(d.discount_price)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; d.total_calced_tax_price_str = priceUnit + ("" + Math.round(d.calced_tax_price - d.discount_price)).replace(/(\d)(?=(\d{3})+$)/g , '$1,') + priceUnitSuffix; } } if ($scope.$parent) $scope.$parent.showProgressModal = false; callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, salesEcOrderPrepare: function($scope, params, filter, callback) { if ($scope.$parent) $scope.$parent.showProgressModal = true; $http.post(BASE_API + "sales/ec/order/prepare", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, type:params ? params.type : null, format:params ? params.format : null, add_total:params.add_total, ver:params ? params.ver : null, }).success(function(data) { console.log("apiService.salesEcOrderPrepare", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.total) { let total = {price:0, count:0, purchase_count:0} for (let bt in data.total.billing_type) { let m = data.total.billing_type[bt] m.price_str = priceUnit + ("" + m.price).replace(/(\d)(?=(\d{3})+$)/g , '$1,'); total.price += m.price total.count += m.count total.purchase_count += m.purchase_count } for (let bt in data.total.market) { let m = data.total.market[bt] m.price_str = priceUnit + ("" + m.price).replace(/(\d)(?=(\d{3})+$)/g , '$1,'); } total.price_str = priceUnit + ("" + total.price).replace(/(\d)(?=(\d{3})+$)/g , '$1,'); data.total.data = total } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getEcDiscount: function($scope, params, filter, callback) { if ($scope.$parent) $scope.$parent.showProgressModal = true; if (filter) { } $http.post(BASE_API + "get/ec/discount", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, add_item_info:params ? params.add_item_info : false, add_shop_info:params ? params.add_shop_info : false, }).success(function(data) { console.log("getEcDiscount", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { for (let d of data.data) { if (d.img_prifix) { d.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/discount_item/thumb/' + d.id + '_' + d.img_prifix + '.jpg'; d.img_url_def = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/discount_item/' + d.id + '_' + d.img_prifix + '.jpg'; d.img_url_large = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/discount_item/large/' + d.id + '_' + d.img_prifix + '.jpg'; } if (d.use_type) d.use_type = constParams.couponUseTypeMap[d.use_type]; if (d.available_type) d.available_type = constParams.couponAvailableTypeMap[d.available_type]; if (d.discount_price) d.discount_str = priceUnit + ("" + d.discount_price).replace(/(\d)(?=(\d{3})+$)/g , '$1,'); else if (d.discount_rate) d.discount_str = d.discount_rate + "%" } } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getEcDiscountAccount: function($scope, params, filter, callback) { if ($scope.$parent) $scope.$parent.showProgressModal = true; if (filter) { } $http.post(BASE_API + "get/ec/discount/account", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log("getEcDiscountAccount", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { for (let d of data.data) { if (d.img_prifix) { d.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/discount_item/thumb/' + d.discount_id + '_' + d.img_prifix + '.jpg'; d.img_url_def = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/discount_item/' + d.discount_id + '_' + d.img_prifix + '.jpg'; d.img_url_large = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/discount_item/large/' + d.discount_id + '_' + d.img_prifix + '.jpg'; } if (d.use_type) d.use_type = constParams.couponUseTypeMap[d.use_type]; if (d.available_type) d.available_type = constParams.couponAvailableTypeMap[d.available_type]; if (d.discount_price) d.discount_str = priceUnit + ("" + d.discount_price).replace(/(\d)(?=(\d{3})+$)/g , '$1,'); else if (d.discount_rate) d.discount_str = d.discount_rate + "%" } } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getEcEvent: function($scope, params, filter, callback) { if ($scope.$parent) $scope.$parent.showProgressModal = true; if (filter) { } $http.post(BASE_API + "get/ec/event", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, add_item_info:params ? params.add_item_info : false, add_shop_info:params ? params.add_shop_info : false, }).success(function(data) { console.log("getEcEvent", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { for (let d of data.data) { if (d.img_prifix) { d.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/event_item/thumb/' + d.id + '_' + d.img_prifix + '.jpg'; d.img_url_def = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/event_item/' + d.id + '_' + d.img_prifix + '.jpg'; d.img_url_large = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/event_item/large/' + d.id + '_' + d.img_prifix + '.jpg'; } d.is_discount_price = d.discount_price > 0; d.is_discount_rate = d.discount_rate > 0; if (d.use_type) d.use_type = constParams.couponUseTypeMap[d.use_type]; if (d.available_type) d.available_type = constParams.couponAvailableTypeMap[d.available_type]; } } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getEcAllergy: function($scope, params, filter, callback) { if ($scope.$parent) $scope.$parent.showProgressModal = true; filter = JSON.parse(JSON.stringify(filter)); if (filter.type && filter.type.id) filter.type = filter.type.id; let loginData = $scope.$parent ? $scope.$parent.loginData : $scope.loginData; $http.post(BASE_API + "get/ec/allergy", { user_id:loginData ? loginData.id : null, token:loginData ? loginData.token : null, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log("apiService.getEcAllergy", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { for (let d of data.data) { } } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, checkEcMarketOrderLimit: ($scope, params, filter, callback) => { let loginData = $scope.$parent ? $scope.$parent.loginData : $scope.loginData; $http.post(BASE_API + "check/ec/market/order/limit", { user_id:loginData ? loginData.id : null, token:loginData ? loginData.token : null, check_item_count_limit:params ? params.check_item_count_limit : false, check_item_kind_limit:params ? params.check_item_kind_limit : false, item_count:params ? params.item_count : null, check_item_ids:params ? params.check_item_ids : null, filter:filter, }).success((data) => { console.log("apiService.checkEcMarketOrderLimit", data); if (data.result) { } callback(data); }).error((data, status) => { console.log(data); callback(data); }); }, getEcMarket: function($scope, params, filter, callback) { if ($scope.$parent) $scope.$parent.showProgressModal = true; let loginData = $scope.$parent ? $scope.$parent.loginData : $scope.loginData; filter = JSON.parse(JSON.stringify(filter)); if (filter.type && filter.type.id) filter.type = filter.type.id; $http.post(BASE_API + "get/ec/market", { user_id:loginData ? loginData.id : null, token:loginData ? loginData.token : null, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log("apiService.getEcMarket", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getAnalyticsEcSales: function($scope, params, filter, callback) { if ($scope.$parent) $scope.$parent.showProgressModal = true; $http.post(BASE_API + "get/analytics/ec/sales", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, type:params ? params.type : null, filter:filter, }).success(function(data) { console.log("apiService.getAnalyticsEcSales", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getEcShopStock: ($scope, params, filter, callback) => { $http.post(BASE_API + "get/ec/shop/stock", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, add_shop_info:params ? params.add_shop_info : false, newest_stock:params ? params.newest_stock : false, filter:filter, }).success(function(data) { console.log("apiService.getEcShopStock", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getEcStock: ($scope, params, filter, callback) => { $http.post(BASE_API + "get/ec/stock", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, add_item_js:params ? params.add_item_js : false, add_item_data:params ? params.add_item_data : false, add_account:params ? params.add_account : false, filter:filter, }).success(function(data) { console.log(data); if ($scope.$parent) $scope.$parent.showProgressModal = false; callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getAsyncEcStock: async ($scope, kwd, filter, params) => { if (!filter) filter = {kwd:kwd} else filter.kwd = kwd; return await $http.post(BASE_API + "get/ec/stock", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:filter, }).then((response) => { console.log("#######1", response, $q); return response.data.data ? response.data.data : []; }, (response) => { console.log("#######2", response); return []; }); }, commitEcShopSales: ($scope, params, callback) => { if (!params.start_date) { let sd = getDateStr(new Date()) params.start_date = sd } if (!params.end_date) { let ed = new Date() ed.setDate(ed.getDate() + 1) params.end_date = getDateStr(ed) } let loginData = $scope.$parent ? $scope.$parent.loginData : $scope.loginData; $http.post("./commit/ec/shop/sales", { user_id:loginData ? loginData.id : null, token:loginData ? loginData.token : null, shop_id:params ? params.shop_id : null, start_date:params ? params.start_date : null, end_date:params ? params.end_date : null, check:params ? params.check : false, closed:params ? params.closed : false, not_include_receivable:params ? params.not_include_receivable : false, }).success(function(data) { console.log("apiService.commitEcShopSales", JSON.parse(JSON.stringify(data))) callback(data) }).error(function(data, status) { console.log("apiService.commitEcShopSales", data) callback(data); }) }, generateEcHash: ($scope, params, filter, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "generate/ec/hash", { user_id:loginData.id, token:loginData.token, data:params ? params.data : null, }).success(function(data) { console.log("apiService.generateEcHash", data); callback(data); }).error(function(data, status) { console.log("apiService.generateEcHash", data); callback(data); }); }, getReservation: ($scope, params, filter, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post("./get/reservation", { user_id:loginData ? loginData.id : null, token:loginData ? loginData.token : null, add_info:params ? params.add_info : false, add_private:params ? params.add_private : false, add_billing_date:params ? params.add_billing_date : false, add_account:params ? params.add_account : false, add_account_name:params ? params.add_account_name : false, add_shop:params ? params.add_shop : false, add_date:params ? params.add_date : false, filter:filter, }).success(function(data) { console.log("apiService.getReservation", JSON.parse(JSON.stringify(data))) callback(data) }).error(function(data, status) { console.log("apiService.getReservation", data) callback(data); }) }, getTweet: function($scope, params, filter, cache, callback) { let loginData = $scope.loginData if ($scope.$parent) $scope.$parent.showProgressModal = true; if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "get/tweet", { user_id:loginData.id, token:loginData.token, filter:filter, only_count:params ? params.only_count : false, contain_self:params ? params.contain_self : false, add_sections:params ? params.add_sections : false, }).success(function(data) { console.log("apiService.getTweet", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { tweetItems = data.data; tweetMap = {}; for (let i of data.data) { tweetMap[i.id] = i; i.checked = false; if (i.type) i.type = constParams.tweetTypeMap[i.type]; if (i.img_prifix) { i.img_thumb_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/tweet/thumb/' + i.id + '_' + i.img_prifix + i.format; i.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/tweet/' + i.id + '_' + i.img_prifix + i.format; } if (i.sections) { for (let s of i.sections) { s.scale_type = constParams.scaleTypeMap[s.scale_type]; s.img_url = "https://asset." + BASE_DOMAIN + "/tweet/" + s.id + "_" + s.file_prifix + s.format; s.img_thumb_url = "https://asset." + BASE_DOMAIN + "/tweet/thumb/" + s.id + "_" + s.file_prifix + s.format; } } } } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getShopTweet: ($scope, params, filter, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "get/shop/tweet", { user_id:loginData.id, token:loginData.token, filter:filter, only_shop_data:params ? params.only_shop_data : false, }).success(function(data) { console.log("apiService.getShopTweet", data); if (data.result) { } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getInquiry: function($scope, params, filter, callback) { if ($scope.$parent) $scope.$parent.showProgressModal = true; $http.post(BASE_API + "get/inquiry", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log(data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { if (Array.isArray(data.data)) { for (let d of data.data) { if (d.type) d.type = $scope.$parent.inquiryTypeMap[d.type]; } } else { if (data.data.type) data.data.type = $scope.$parent.inquiryTypeMap[data.data.type]; } } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getChatRoomCompany: function($scope, filter, companyId, offset, limit, callback) { if ($scope.$parent) $scope.$parent.showProgressModal = true; $http.post(BASE_API + "get/chat/room/company", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, company_id:companyId, filter:filter, offset:offset, limit:limit, }).success(function(data) { console.log(data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getChatRoom: ($scope, params, filter, callback) => { if ($scope.$parent) $scope.$parent.showProgressModal = true; let loginData = null if (!$scope.$parent) { loginData = $scope.loginData } else { loginData = $scope.$parent.loginData if (!loginData) loginData = $scope.loginData } $http.post(BASE_API + "get/chat/room", { user_id:loginData.id, token:loginData.token, add_account:params ? params.add_account : false, offset:params ? params.offset : 0, limit:params ? params.limit : 20, filter:filter, }).success(function(data) { console.log("apiService.getChatRoom", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getChat: ($scope, params, filter, callback) => { let loginData = null if (!$scope.$parent) { loginData = $scope.loginData } else { loginData = $scope.$parent.loginData if (!loginData) loginData = $scope.loginData } $http.post(BASE_API + "get/chat", { user_id:loginData.id, token:loginData.token, offset:params ? params.offset : 0, limit:params ? params.limit : 20, type:params ? params.type : null, is_read:params ? params.is_read : false, filter:filter, }).success(function(data) { console.log(data); if (data.result) { } callback(data); }).error(function(data, status) { console.log(data); callback(data); }); }, getChatNewMessage: ($scope, params, filter, callback) => { let loginData = null if (!$scope.$parent) { loginData = $scope.loginData } else { loginData = $scope.$parent.loginData if (!loginData) loginData = $scope.loginData } $http.post(BASE_API + "get/chat/new/message", { user_id:loginData.id, token:loginData.token, check_count:params ? params.check_count : false, filter:filter, }).success(function(data) { console.log(data); if (data.result) { } callback(data); }).error(function(data, status) { console.log(data); callback(data); }); }, getNotification: function($scope, params, filter, callback) { if ($scope.$parent) $scope.$parent.showProgressModal = true; filter = JSON.parse(JSON.stringify(filter)); if (filter.type && filter.type.id) filter.type = filter.type.id; $http.post(BASE_API + "get/notification", { user_id:$scope.$parent.loginData ? $scope.$parent.loginData.id : null, token:$scope.$parent.loginData ? $scope.$parent.loginData.token : null, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log(data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { for (let d of data.data) { if (d.img_prifix) { d.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/notification/thumb/' + d.id + '_' + d.img_prifix + '.jpg'; d.img_url_def = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/notification/' + d.id + '_' + d.img_prifix + '.jpg'; d.img_url_large = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/notification/large/' + d.id + '_' + d.img_prifix + '.jpg'; } d.type = constParams.notificationTypeMap[d.type]; } } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getNotificationTemplate: function($scope, params, filter, callback) { if ($scope.$parent) $scope.$parent.showProgressModal = true; filter = JSON.parse(JSON.stringify(filter)); if (filter.type && filter.type.id) filter.type = filter.type.id; $http.post(BASE_API + "get/notification/template", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log(data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { for (let d of data.data) { d.type = $scope.$parent.notificationTemplateTypeMap[d.type]; } } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getChef: function($scope, params, filter, cache, callback) { if ($scope.$parent) $scope.$parent.showProgressModal = true; $http.post(BASE_API + "get/chef", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log(data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { for (let i of data.data) { if (i.img_prifix) { i.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/chef/thumb/' + i.id + '_' + i.img_prifix + '.jpg'; i.img_url_def = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/chef/' + i.id + '_' + i.img_prifix + '.jpg'; i.img_url_large = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/chef/large/' + i.id + '_' + i.img_prifix + '.jpg'; } } } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getStorage: function($scope, params, filter, callback) { if ($scope.$parent) $scope.$parent.showProgressModal = true; filter = JSON.parse(JSON.stringify(filter)); $http.post(BASE_API + "get/strage", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log("apiService.getStorage", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { for (let d of data.data) { d.img_url = 'https://' + s3SubDomain + "." + BASE_DOMAIN + '/storage/' + d.id + '_' + d.file_prifix + d.format; d.closed_img_url = "get/storage/data/?thumb=ture&data_id=" + d.id + "&user_id=" + $scope.$parent.loginData.id + "&token=" + $scope.$parent.loginData.token; } } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, // filter.signage_idを指定すると最新タグを返す // filter.signage_idを指定しない場合はキャッシュタグを返す getSignage: function($scope, params, filter, callback) { if (!$scope.$parent) return; if ($scope.$parent) $scope.$parent.showProgressModal = true; filter = JSON.parse(JSON.stringify(filter)); $http.post(BASE_API + "get/signage", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:filter, join_company:params ? params.join_company : false, join_shop:params ? params.join_shop : false, offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log("apiService.getSignage", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { for (let d of data.data) { if (d.tags) { let tags = [] for (let t of d.tags) { tags.push({ name:t, selected:true, }) } d.tags = tags } } } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getAsyncSignage: async ($scope, kwd, filter) => { if (!filter) filter = {kwd:kwd} else filter.kwd = kwd; return await $http.post(BASE_API + "get/signage", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:filter, }).then((response) => { console.log("#######1", response, $q); return response.data.data; }, (response) => { console.log("#######2", response); return []; }); }, // filter.video_idを指定すると最新タグを返す // filter.video_idを指定しない場合はキャッシュタグを返す getVideo: function($scope, params, filter, callback) { if (!$scope.$parent) return; if ($scope.$parent) $scope.$parent.showProgressModal = true; filter = JSON.parse(JSON.stringify(filter)); $http.post(BASE_API + "get/video", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log("apiService.getVideo", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { for (let d of data.data) { d.img_url = "https://" + s3SubDomain + "." + BASE_DOMAIN + "/video/thumb/" + d.id + "_" + d.file_prifix + ".jpg"; d.url = "https://" + s3SubDomain + "." + BASE_DOMAIN + "/video/" + d.id + "_" + d.file_prifix + "." + d.file_format; if (d.tags) { let tags = [] for (let t of d.tags) { tags.push({ name:t, selected:true, }) } d.tags = tags } } } callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); callback(data); }); }, getSignageLayoutDisplay: function($scope, params, filter, callback) { let loginData = null if (!$scope.$parent) { if (!$scope.loginData) { console.log("apiService.getSignageLayoutDisplay not set loginData"); if (callback) callback(null) return } loginData = $scope.loginData } else { loginData = $scope.$parent.loginData if (!loginData) loginData = $scope.loginData } if (!loginData) { console.log("apiService.getSignageLayoutDisplay not set loginData"); if (callback) callback(null) return } if ($scope.$parent) $scope.$parent.showProgressModal = true; filter = JSON.parse(JSON.stringify(filter)); $http.post(BASE_API + "get/signage/layout/display", { user_id:loginData.id, signage_id:loginData.signage_id, token:loginData.token, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log("apiService.getSignageLayoutDisplay", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { for (let d of data.data) { } } if (callback) callback(data) }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log("apiService.getSignageLayoutDisplay", data); if (callback) callback(data) }); }, getAsyncSignageLayoutDisplay: async ($scope, kwd, filter) => { if (!filter) filter = {kwd:kwd} else filter.kwd = kwd; return await $http.post(BASE_API + "get/signage/layout/display", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:filter, }).then((response) => { console.log("#######1", response, $q); return response.data.data; }, (response) => { console.log("#######2", response); return []; }); }, getVideoLayout: function($scope, params, filter, callback) { let loginData = null if (!$scope.$parent) { if (!$scope.loginData) { if (callback) callback(null) return } loginData = $scope.loginData } else { loginData = $scope.$parent.loginData if (!loginData) loginData = $scope.loginData } if (!loginData) { if (callback) callback(null) return } if ($scope.$parent) $scope.$parent.showProgressModal = true; filter = JSON.parse(JSON.stringify(filter)); $http.post(BASE_API + "get/video/layout", { user_id:loginData.id, signage_id:loginData.signage_id, token:loginData.token, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log("apiService.getVideoLayout", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { for (let d of data.data) { // d.img_url = "https://" + s3SubDomain + "." + BASE_DOMAIN + "/video/thumb/" + d.id + "_" + d.file_prifix + ".jpg"; // d.url = "https://" + s3SubDomain + "." + BASE_DOMAIN + "/video/" + d.id + "_" + d.file_prifix + "." + d.file_format; } } if (callback) callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); if (callback) callback(data); }); }, getAsyncVideoLayout: async ($scope, kwd, filter) => { if (!filter) filter = {kwd:kwd} else filter.kwd = kwd; return await $http.post(BASE_API + "get/video/layout", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:filter, }).then((response) => { console.log("#######1", response, $q); return response.data.data; }, (response) => { console.log("#######2", response); return []; }); }, getVideoChannel: function($scope, params, filter, callback) { let loginData = null if (!$scope.$parent) { if (!$scope.loginData) { if (callback) callback(null) return } loginData = $scope.loginData } else { loginData = $scope.$parent.loginData if (!loginData) loginData = $scope.loginData } if (!loginData) { if (callback) callback(null) return } if ($scope.$parent) $scope.$parent.showProgressModal = true; filter = JSON.parse(JSON.stringify(filter)); $http.post(BASE_API + "get/video/channel", { user_id:loginData.id, token:loginData.token, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log("apiService.getVideoChannel", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { for (let d of data.data) { // d.img_url = "https://" + s3SubDomain + "." + BASE_DOMAIN + "/video/thumb/" + d.id + "_" + d.file_prifix + ".jpg"; // d.url = "https://" + s3SubDomain + "." + BASE_DOMAIN + "/video/" + d.id + "_" + d.file_prifix + "." + d.file_format; } } if (callback) callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); if (callback) callback(data); }); }, getAsyncVideoChannel: async ($scope, kwd, filter) => { if (!filter) filter = {kwd:kwd} else filter.kwd = kwd; return await $http.post(BASE_API + "get/video/channel", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:filter, }).then((response) => { console.log("#######1", response, $q); return response.data.data; }, (response) => { console.log("#######2", response); return []; }); }, getVideoPlaylist: function($scope, params, filter, callback) { let loginData = null if (!$scope.$parent) { if (!$scope.loginData) { if (callback) callback(null) return } loginData = $scope.loginData } else { loginData = $scope.$parent.loginData if (!loginData) loginData = $scope.loginData } if (!loginData) { if (callback) callback(null) return } if ($scope.$parent) $scope.$parent.showProgressModal = true; filter = JSON.parse(JSON.stringify(filter)); $http.post(BASE_API + "get/video/playlist", { user_id:loginData.id, signage_id:loginData.signage_id, token:loginData.token, filter:filter, offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log("apiService.getVideoPlaylist", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { for (let d of data.data) { // d.img_url = "https://" + s3SubDomain + "." + BASE_DOMAIN + "/video/thumb/" + d.id + "_" + d.file_prifix + ".jpg"; // d.url = "https://" + s3SubDomain + "." + BASE_DOMAIN + "/video/" + d.id + "_" + d.file_prifix + "." + d.file_format; } } if (callback) callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log(data); if (callback) callback(data); }); }, getVideoPlaylistDetail: function($scope, params, filter, callback) { let loginData = null if (!$scope.$parent) { if (!$scope.loginData) { if (callback) callback(null) return } loginData = $scope.loginData } else { loginData = $scope.$parent.loginData if (!loginData) loginData = $scope.loginData } if (!loginData) { if (callback) callback(null) return } if ($scope.$parent) $scope.$parent.showProgressModal = true; filter = JSON.parse(JSON.stringify(filter)); $http.post(BASE_API + "get/video/playlist/detail", { user_id:loginData.id, signage_id:loginData.signage_id, token:loginData.token, filter:filter, }).success(function(data) { console.log("apiService.getVideoPlaylistDetail", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { for (let d of data.data) { d.img_url = "https://" + s3SubDomain + "." + BASE_DOMAIN + "/video/thumb/" + d.video_id + "_" + d.file_prifix + ".jpg"; d.url = "https://" + s3SubDomain + "." + BASE_DOMAIN + "/video/" + d.video_id + "_" + d.file_prifix + "." + d.file_format; } } if (callback) callback(data); }).error(function(data, status) { console.log("apiService.getVideoPlaylistDetail", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (callback) callback(data); }); }, getVideoRole: function($scope, params, filter, callback) { let loginData = null if (!$scope.$parent) { if (!$scope.loginData) { if (callback) callback(null) return } loginData = $scope.loginData } else { loginData = $scope.$parent.loginData if (!loginData) loginData = $scope.loginData } if (!loginData) { if (callback) callback(null) return } if ($scope.$parent) $scope.$parent.showProgressModal = true; filter = JSON.parse(JSON.stringify(filter)); $http.post(BASE_API + "get/video/role", { user_id:loginData.id, signage_id:loginData.signage_id, token:loginData.token, auto:params ? params.auto : false, add_detail:params ? params.add_detail : false, filter:filter, }).success(function(data) { console.log("apiService.getVideoRoll", data); if ($scope.$parent) $scope.$parent.showProgressModal = false; if (data.result) { for (let d of data.data) { d.url = "https://" + s3SubDomain + "." + BASE_DOMAIN + "/video/" + d.video_id + "_" + d.file_prifix + "." + d.file_format; } } if (callback) callback(data); }).error(function(data, status) { if ($scope.$parent) $scope.$parent.showProgressModal = false; console.log("apiService.getVideoRoll", data); if (callback) callback(data); }); }, getCallHistory: ($scope, params, filter, callback) => { if (!$scope.$parent) return; filter = JSON.parse(JSON.stringify(filter)); $http.post(BASE_API + "get/call/history", { user_id:$scope.$parent.loginData.id, token:$scope.$parent.loginData.token, filter:filter, join_from_account:params ? params.join_from_account : false, join_to_account:params ? params.join_to_account : false, join_from_signage:params ? params.join_from_signage : false, join_to_signage:params ? params.join_to_signage : false, join_accept_account:params ? params.join_accept_account : false, join_complete_account:params ? params.join_complete_account : false, offset:params ? params.offset : 0, limit:params ? params.limit : 20, }).success(function(data) { console.log(data); if (data.result) { for (let d of data.data) { } } callback(data); }).error(function(data, status) { console.log(data); callback(data); }); }, getPoint: ($scope, params, filter, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "get/point", { user_id:loginData.id, token:loginData.token, filter:filter, account_id:params ? params.account_id : null, }).success(function(data) { console.log("apiService.getPoint", data); callback(data); }).error(function(data, status) { console.log(data); callback(data); }); }, getCoupon: ($scope, params, filter, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "get/coupon", { user_id:loginData.id, token:loginData.token, add_img:params ? params.add_img : false, add_use_count:params ? params.add_use_count : false, add_history:params ? params.add_history : false, filter:filter, }).success(function(data) { console.log("apiService.getCoupon", data); for (let d of data.data) { if (d.imgs) { for (let i of d.imgs) { i.img_url = "https://asset." + BASE_DOMAIN + "/coupon/" + i.coupon_id + "_" + i.img_prifix + i.format } } } callback(data); }).error(function(data, status) { console.log("apiService.getCoupon", data); callback(data); }); }, getCouponHistory: ($scope, params, filter, callback) => { let loginData = $scope.loginData if (!loginData) loginData = $scope.$parent.loginData $http.post(BASE_API + "get/coupon/history", { user_id:loginData.id, token:loginData.token, add_img:params ? params.add_img : false, filter:filter, }).success(function(data) { console.log("apiService.getCouponHistory", data); for (let d of data.data) { if (d.imgs) { for (let i of d.imgs) { i.img_url = "https://asset." + BASE_DOMAIN + "/coupon/" + i.coupon_id + "_" + i.img_prifix + i.format } } } callback(data); }).error(function(data, status) { console.log("apiService.getCouponHistory", data); callback(data); }); }, } });