From c2c74747119e45185b8e1621583954418dfbcd27 Mon Sep 17 00:00:00 2001 From: aojiaotage Date: Sun, 1 Sep 2019 02:46:05 +0800 Subject: [PATCH] Add recommendation/delivery api --- app/controller/site.js | 72 ++++++++++++++++++++++++++++++++++++++++-- app/model/cart.js | 3 +- app/router/site.js | 6 ++++ 3 files changed, 76 insertions(+), 5 deletions(-) diff --git a/app/controller/site.js b/app/controller/site.js index c55fc9f..62873ea 100644 --- a/app/controller/site.js +++ b/app/controller/site.js @@ -91,11 +91,11 @@ class SiteController extends Controller { const recList = products.map(p => { return { 'action': { - 'type': 'product', + 'type': 'product', 'path': p.id, 'log_code': 'recom_list_0-1#eid=force_15:0:0:0:0:0:0:0:0:7354&tid=BlankRec-78cpaAwFqwUTL0eVFuqCzg==&page=list&pid=7354', 'recommend_code': 'recom_list_0-1#eid=force_15:0:0:0:0:0:0:0:0:7354&tid=BlankRec-78cpaAwFqwUTL0eVFuqCzg==&page=list&pid=7354', - }, + }, 'image_url': '//i8.mifile.cn/v1/a1/48af122b-362c-dae5-8305-899805faf635.webp', 'is_multi_price': false, 'market_price': '799', @@ -104,7 +104,7 @@ class SiteController extends Controller { 'product_desc': `${p.product_desc}`, 'product_tag': '', }; - }) + }); this.ctx.body = { code: 0, @@ -134,6 +134,72 @@ class SiteController extends Controller { }; } + async recommend() { + + const products = await this.ctx.service.product.listProducts({ limit: 10 }); + + const recList = products.map(p => { + return { + action: { + type: 'product', + path: p.id, + log_code: 'recom_list_0-1#eid=force_15:0:0:0:0:0:0:0:0:7354&tid=BlankRec-78cpaAwFqwUTL0eVFuqCzg==&page=list&pid=7354', + recommend_code: 'recom_list_0-1#eid=force_15:0:0:0:0:0:0:0:0:7354&tid=BlankRec-78cpaAwFqwUTL0eVFuqCzg==&page=list&pid=7354', + }, + image_url: '//i8.mifile.cn/v1/a1/48af122b-362c-dae5-8305-899805faf635.webp', + big_image_url: '//i8.mifile.cn/v1/a1/48af122b-362c-dae5-8305-899805faf635.webp', + is_multi_price: false, + market_price: '799', + name: p.name, + price: '699', + product_desc: `${p.product_desc}`, + product_tag: '', + }; + }); + + this.ctx.body = { + code: 0, + data: { + recommend_list: recList, + title: '为你推荐', + }, + }; + } + + async estDelivery() { + + let address = { + address: '北京市 西城区', + id: '', + }; + + const userId = this.ctx.session.user && this.ctx.session.user.id; + + if (userId) { + address = (await this.ctx.service.address.listAddresses( + { userIds: [userId] }))[0]; + } + + this.ctx.body = { + code: 0, + data: { + address: { + address: address.address, + }, + address_info: { + address: address.address, + address_id: address.id, + }, + datas: [ + { + stock_status: '有现货', + }, + ], + title: '为你推荐', + }, + }; + } + async category() { this.ctx.body = { code: 0, diff --git a/app/model/cart.js b/app/model/cart.js index a461cc7..0172615 100644 --- a/app/model/cart.js +++ b/app/model/cart.js @@ -59,13 +59,12 @@ module.exports = app => { if (found) { found.nums += item.nums; - await Model.update(found, { + await Model.update(found.toJSON(), { where: { id: { [Op.eq]: found.id, }, }, - values: found, }); return found; } else { diff --git a/app/router/site.js b/app/router/site.js index 11c1179..ad9532d 100644 --- a/app/router/site.js +++ b/app/router/site.js @@ -34,6 +34,12 @@ module.exports = app => { router.get('/api/v1/site/nav', controller.site.navList); router.get('/api/v1/site/home', controller.site.homePage); router.get('/api/v1/site/category', controller.site.category); + // 购物车中推荐 router.get('/api/v1/site/forRecommend', controller.site.forRecommend); + // 商品页面推荐 + router.get('/api/v1/site/recommend', controller.site.recommend); + + router.get('/api/v1/site/estDelivery', controller.site.estDelivery); + };