diff --git a/packageB/pages/AI-test-skin/analyse/analyse.js b/packageB/pages/AI-test-skin/analyse/analyse.js index aa452f4..0023c27 100644 --- a/packageB/pages/AI-test-skin/analyse/analyse.js +++ b/packageB/pages/AI-test-skin/analyse/analyse.js @@ -29,7 +29,11 @@ Page({ this.timer(); //接口开始分析 setTimeout(function () { - th.analysis_img(); + //th.analysis_img(); + //先检验一下图片 + th.img_check(function () { + + }); },800) }, @@ -195,31 +199,186 @@ Page({ }, - analysis_img:function () { + //检查图片有没有OK + img_check:function (func) { var th=this; var data={ "appid": "25521854", "image": getApp().globalData.face_SourceImg, - "face_field": "color,smooth,acnespotmole,wrinkle,eyesattr,blackheadpore,skinface,skinquality", + "face_field": "age,expression,face_shape,gender,glasses,landmark,landmark150,quality,eye_status,emotion,face_type,mask,spoofing", "image_type": "URL" } + //开始调用接口,进行对图片进行判断是否符合标准 + this.json_post("/api/weshop/baidubce/face/skindetect",data,function (res) { + if(res.data.code==0){ + //检查的字段存储 + var check_data=th.data.check_data=res.data.data; + check_data=check_data.face_list[0]; + console.log(check_data); + //检查睁眼闭眼 + var eye_status=check_data.eye_status; + if(eye_status.left_eye>0.1 || eye_status.right_eye>0.1) { + var msg="未闭眼拍照"; + th.go_error(msg); + return false; + } + //检查是不是有带眼镜 + if(check_data.glasses.type!='none'){ + var msg="有佩戴眼镜"; + th.go_error(msg); + return false; + } + //检查头部的角度 + var angle=check_data.angle; + if(Math.abs(angle.Pitch)>20) { + var msg="头部的俯仰角度过大"; + th.go_error(msg); + return false; + } + if(Math.abs(angle.Roll)>20) { + var msg="头部的平面角度过大"; + th.go_error(msg); + return false; + } + if(Math.abs(angle.Yaw)>20) { + var msg="头部的左右角度过大"; + th.go_error(msg); + return false; + } + var quality=check_data.quality; + if(quality.blur>0.7){ + var msg="图片模糊"; + th.go_error(msg); + return false; + } + //开始检查遮挡 + var occlusion=check_data.quality.occlusion; + if(occlusion.left_eye >0.6){ + var msg="左眼被遮挡"; + th.go_error(msg); + return false; + } + if(occlusion.right_eye>0.6){ + var msg="右眼被遮挡"; + th.go_error(msg); + return false; + } + if(occlusion.nose>0.7){ + var msg="鼻子被遮挡"; + th.go_error(msg); + return false; + } + if(occlusion.mouth>0.7){ + var msg="嘴巴被遮挡"; + th.go_error(msg); + return false; + } + if(occlusion.left_cheek >0.8){ + var msg="左脸颊被遮挡"; + th.go_error(msg); + return false; + } + if(occlusion.right_cheek >0.8){ + var msg="右脸颊被遮挡"; + th.go_error(msg); + return false; + } + if(occlusion.chin_contour >0.6){ + var msg="下巴颊被遮挡"; + th.go_error(msg); + return false; + } + if(quality.illumination<40){ + var msg="图像光照不足"; + th.go_error(msg); + return false; + } + if(quality.completeness=0){ + var msg="人脸未显示完整"; + th.go_error(msg); + return false; + } + //-- 开始调用分析的接口 -- + var face_token=check_data.face_token; + var data={ + "image": face_token, + "face_field": "color,smooth,acnespotmole,wrinkle,eyesattr,blackheadpore,skinface,skinquality", + "image_type": "FACE_TOKEN" + } + th.analysis_img(data); + }else{ + var msg=th.data.err_map[res.data.code+""]; + th.go_error(msg); + } + }) + }, + + //跳转到错误页面 + go_error:function (msg) { + let url = "/packageB/pages/AI-test-skin/fail_result/fail_result?msg="+msg; //跳到分析页 + wx.redirectTo({ + url: url + }); + }, + analysis_img:function (data) { + var th=this; //开始调用接口,进行分析 - getApp().request.json_post("/api/weshop/baidubce/face/skinAnalyze",data,function (res) { + this.json_post("/api/weshop/baidubce/face/skinAnalyze",data,function (res) { if(res.data.code==0){ - wx.showToast({ - title: "分析成功", - icon: 'success', - duration: 2000 - }); getApp().globalData.face_result=res.data.data; + var req_data={ + store_id:setting.stoid, + user_id:getApp().globalData.user_id, + img:getApp().globalData.face_img, + sourceimg:getApp().globalData.face_SourceImg, + addtime:ut.gettimestamp(), + resultjson:JSON.stringify(res.data.data), + detectjson:JSON.stringify(th.data.check_data) + } + //要保存一下分析的结果 + th.json_post("/api/weshop/face/storeSkinface/save",req_data,function (res) { + if(res.data.code==0){ + let url = "/packageB/pages/AI-test-skin/success_result/success_result?id="+res.data.data.id; //跳到分析页 + wx.redirectTo({ + url: url + }) + }else{ + getApp().showWarning("保存失败"); + } + }) }else{ var msg=th.data.err_map[res.data.code+""]; let url = "/packageB/pages/AI-test-skin/fail_result/fail_result?msg="+msg; //跳到分析页 - app.goto(url); + wx.redirectTo({ + url: url + }) } }) - } + }, + + /** + * @param {Object} url //url地址 + * @param {Object} data //data入参 + * @param {Object} succ //成功的回调 + * @param {Object} fail //失败的回调 + */ + json_post:function(url,data,succ,fail,mathod){ + var Mathod="POST"; + if (mathod) Mathod = mathod; + if(url.indexOf("http")==-1) url=getApp().globalData.setting.url +url; + var str = JSON.stringify(data); + wx.request({ + url: url, + data: str, + method: Mathod, + header: { + 'content-type': 'application/json' + },// 设置请求的 header + success: function (res) {succ(res); }, + fail:function(res){fail(res);} + }) + }, }) \ No newline at end of file diff --git a/packageB/pages/AI-test-skin/fail_result/fail_result.js b/packageB/pages/AI-test-skin/fail_result/fail_result.js index 6488014..3a0769c 100644 --- a/packageB/pages/AI-test-skin/fail_result/fail_result.js +++ b/packageB/pages/AI-test-skin/fail_result/fail_result.js @@ -1,25 +1,34 @@ -// packageB/pages/AI-test-skin/fail_result/fail_result.js +/* + * @Author: your name + * @Date: 2022-02-15 10:01:57 + * @LastEditTime: 2022-02-16 15:40:54 + * @LastEditors: Please set LastEditors + * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AEet urkl + * @FilePath: \MShopWeApp\packageB\pages\AI-test-skin\shoot_notice\shoot_notice.js + */ +// packageB/pages/AI-test-skin/shoot_notice/shoot_notice.js +const app = getApp(); +const request = app.request; +const os = app.globalData; +const setting = os.setting; +const ut = require('../../../../utils/util'); Page({ /** * 页面的初始数据 */ data: { - + iurl: setting.imghost, + msg:null, }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { - - }, - - /** - * 生命周期函数--监听页面初次渲染完成 - */ - onReady: function () { - + var msg=options.msg; + msg=decodeURIComponent(msg); + this.setData({msg:msg}); }, /** @@ -37,30 +46,18 @@ Page({ }, /** - * 生命周期函数--监听页面卸载 + * 页面上拉触底事件的处理函数 */ - onUnload: function () { + onReachBottom: function () { }, - - /** - * 页面相关事件处理函数--监听用户下拉动作 - */ - onPullDownRefresh: function () { - + //从相册中选择图片 + back_to:function () { + let url = "/packageB/pages/AI-test-skin/shoot_notice/shoot_notice"; + app.goto(url); }, - /** - * 页面上拉触底事件的处理函数 - */ - onReachBottom: function () { - }, - /** - * 用户点击右上角分享 - */ - onShareAppMessage: function () { - } }) \ No newline at end of file diff --git a/packageB/pages/AI-test-skin/fail_result/fail_result.json b/packageB/pages/AI-test-skin/fail_result/fail_result.json index 8835af0..79a65ac 100644 --- a/packageB/pages/AI-test-skin/fail_result/fail_result.json +++ b/packageB/pages/AI-test-skin/fail_result/fail_result.json @@ -1,3 +1,4 @@ { - "usingComponents": {} + "usingComponents": {}, + "navigationBarTitleText": "分析结果" } \ No newline at end of file diff --git a/packageB/pages/AI-test-skin/fail_result/fail_result.wxml b/packageB/pages/AI-test-skin/fail_result/fail_result.wxml index 2407db6..6849bab 100644 --- a/packageB/pages/AI-test-skin/fail_result/fail_result.wxml +++ b/packageB/pages/AI-test-skin/fail_result/fail_result.wxml @@ -1,2 +1,27 @@ - -packageB/pages/AI-test-skin/fail_result/fail_result.wxml + + + + + + + + + 上传图片符合要求 + 请重新更换图片获取相关检测 + + + + + 失败原因: + + + {{msg}} + + + + + + + 重新拍照 + + \ No newline at end of file diff --git a/packageB/pages/AI-test-skin/fail_result/fail_result.wxss b/packageB/pages/AI-test-skin/fail_result/fail_result.wxss index d2da816..d09a20f 100644 --- a/packageB/pages/AI-test-skin/fail_result/fail_result.wxss +++ b/packageB/pages/AI-test-skin/fail_result/fail_result.wxss @@ -1 +1,103 @@ -/* packageB/pages/AI-test-skin/fail_result/fail_result.wxss */ \ No newline at end of file +/* packageB/pages/AI-test-skin/shoot_notice/shoot_notice.wxss */ +page { + width: 100vw; + height: 100%; + padding: 40rpx 30rpx 0 30rpx; + box-sizing: border-box; + background-color: #e7f5fb; +} + +.content { + width: 100%; + /* height: 100%; */ + border-radius: 25rpx; + /* padding: 30rpx; */ + background-color: #fff; +} + + + + +.btn { + + /* height: 150rpx; */ + /* margin-left: 50%; */ + margin: 70rpx 0 30rpx 50%; + transform: translateX(-50%); + background: #4bd6df; + padding: 20rpx; + width: 50%; + text-align: center; + border-radius: 40rpx; + color: #fff; +} +.btn_fixed { + width: 100%; + bottom: 0; + height: 300rpx; + background: #e7f5fb; +} +.notice { + text-align: center; + color: red; + font-size: 28rpx; +} + +.cover-layer { + position: fixed; + left: 0; + top: 0; + right: 0; + bottom: 0; + z-index: 11; + background: rgba(0,0,0,0.4); + width: 100%; + height: 100%; +} + +.flex{display: flex} +.jc-center{ + justify-content: center; +} +.ac{align-items: center} + +@font-face { + font-family: 'iconfont'; + /* project id 2125414 */ + src: url('//at.alicdn.com/t/font_2125414_o4quhtfqnbr.eot'); + src: url('//at.alicdn.com/t/font_2125414_o4quhtfqnbr.eot?#iefix') format('embedded-opentype'), + url('//at.alicdn.com/t/font_2125414_o4quhtfqnbr.woff2') format('woff2'), + url('//at.alicdn.com/t/font_2125414_o4quhtfqnbr.woff') format('woff'), + url('//at.alicdn.com/t/font_2125414_o4quhtfqnbr.ttf') format('truetype'), + url('//at.alicdn.com/t/font_2125414_o4quhtfqnbr.svg#iconfont') format('svg'); +} + +.icon-pic:before { + content: "\e620"; +} + +.t_c{text-align: center} + + +@font-face { + font-family: "iconfont"; /* Project id 3188718 */ + src: url('iconfont.woff2?t=1645080046840') format('woff2'), + url('iconfont.woff?t=1645080046840') format('woff'), + url('iconfont.ttf?t=1645080046840') format('truetype'); +} + +.icon-tupian:before { + content: "\e997"; +} + +.icon-account:before { + content: "\e6a3"; +} + +.icon-prompt-filling:before { + content: "\e68b"; +} + + + + diff --git a/packageB/pages/AI-test-skin/fail_result/iconfont.ttf b/packageB/pages/AI-test-skin/fail_result/iconfont.ttf new file mode 100644 index 0000000..5d2b39e --- /dev/null +++ b/packageB/pages/AI-test-skin/fail_result/iconfont.ttf diff --git a/packageB/pages/AI-test-skin/fail_result/iconfont.woff b/packageB/pages/AI-test-skin/fail_result/iconfont.woff new file mode 100644 index 0000000..fe37de2 --- /dev/null +++ b/packageB/pages/AI-test-skin/fail_result/iconfont.woff diff --git a/packageB/pages/AI-test-skin/fail_result/iconfont.woff2 b/packageB/pages/AI-test-skin/fail_result/iconfont.woff2 new file mode 100644 index 0000000..bda85ff --- /dev/null +++ b/packageB/pages/AI-test-skin/fail_result/iconfont.woff2 diff --git a/packageB/pages/AI-test-skin/index/aiskin.js b/packageB/pages/AI-test-skin/index/aiskin.js index 613b2bc..d5350c4 100644 --- a/packageB/pages/AI-test-skin/index/aiskin.js +++ b/packageB/pages/AI-test-skin/index/aiskin.js @@ -25,7 +25,11 @@ Page({ * 生命周期函数--监听页面加载 */ onLoad: function (options) { - + var user=getApp().globalData.userInfo; + if(!user){ + let url = "/pages/togoin/togoin"; + app.goto(url); + } }, /** @@ -50,6 +54,21 @@ Page({ }, goto(e) { + var user=getApp().globalData.userInfo; + if(!user){ + wx.showToast({ + title: "请先授权登陆", + icon: 'none', + duration: 2000 + }); + + setTimeout(function () { + let url = "/pages/togoin/togoin"; + app.goto(url); + },1000) + return false; + } + let url = e.currentTarget.dataset.url; app.goto(url); }, diff --git a/packageB/pages/AI-test-skin/select_photo/select_photo.js b/packageB/pages/AI-test-skin/select_photo/select_photo.js index 1abde09..cd1872c 100644 --- a/packageB/pages/AI-test-skin/select_photo/select_photo.js +++ b/packageB/pages/AI-test-skin/select_photo/select_photo.js @@ -72,7 +72,7 @@ Page({ } else { wx.showToast({ title: e.data.msg, - icon: 'success', + icon: 'none', duration: 2000 }); }; diff --git a/packageB/pages/AI-test-skin/success_result/acne/acne.js b/packageB/pages/AI-test-skin/success_result/acne/acne.js new file mode 100644 index 0000000..1120535 --- /dev/null +++ b/packageB/pages/AI-test-skin/success_result/acne/acne.js @@ -0,0 +1,34 @@ +module.exports = { + //把组合购的商品价格计算出来,同时每个会员都有购买组合商品的上限!ladder_b_num是已经购买了多少件 + get_goods: function(th,stoid) { + var r_code='03'; + //获取痘痘的类型 + var list=th.data.face_data.acnespotmole.acne_list; + //把所有的斑的类型拿出来 + var arr=[]; + for(var i in list){ + arr.push(list[i].type); + } + //去掉重复 + var set= arr.filter(function (element, index, self) { + return self.indexOf(element) === index; + }) + var re_word=set.join(','); + //-- 服务卡 -- + var url="/api/weshop/serviceCard/page?orderField=RAND()&recommend_code="+r_code+"&store_id="+stoid+"&recommend_word="+re_word+"&pageSize=1000"; + getApp().request.promiseGet(url, {}).then(res=>{ + if(res.data.code==0 && res.data.data && res.data.data.pageData && res.data.data.pageData.length>0){ + th.setData({acne_fuwu:res.data.data.pageData}) + } + }) + + //-- 商品 -- + var url="/api/weshop/goods/page?orderField=RAND()&recommend_code="+r_code+"&store_id="+stoid+"&recommend_word="+re_word+"&pageSize=1000"; + getApp().request.promiseGet(url, {}).then(res=>{ + if(res.data.code==0 && res.data.data && res.data.data.pageData && res.data.data.pageData.length>0){ + th.setData({acne_goods:res.data.data.pageData}) + } + }) + + }, +} diff --git a/packageB/pages/AI-test-skin/success_result/acne/acne.wxml b/packageB/pages/AI-test-skin/success_result/acne/acne.wxml new file mode 100644 index 0000000..6fea6ea --- /dev/null +++ b/packageB/pages/AI-test-skin/success_result/acne/acne.wxml @@ -0,0 +1,124 @@ + + + + + #06 + + 痤疮 + + 问题标注 + + + + + + + + + + + 程度情况 + I级 + + + + + + + + 痤疮个数 + 100个 + + + + + + + 囊肿 + 健康 + + + + + + 丘疹 + 健康 + + + + + + 粉刺 + 健康 + + + + + + 痘印 + 健康 + + + + + 明显可见毛孔或内含小于毛孔大小角栓 + + + + + 原因分析 + + + + 皮脂腺分泌旺盛 + + + + 皮脂腺分泌旺盛 + + + + 皮脂腺分泌旺盛 + + + + + + 护理建议 + + + 01 日常防晒 + 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 + + + 02 补水保湿 + 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 + + + 03 早晚清洁 + 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 + + + + + + + + + + 痤疮问题的疗程 + + + + + + + 适合痤疮问题的护肤品 + + + + + + + + \ No newline at end of file diff --git a/packageB/pages/AI-test-skin/success_result/blackhead/blackhead.js b/packageB/pages/AI-test-skin/success_result/blackhead/blackhead.js new file mode 100644 index 0000000..b1e7876 --- /dev/null +++ b/packageB/pages/AI-test-skin/success_result/blackhead/blackhead.js @@ -0,0 +1,29 @@ +module.exports = { + //把组合购的商品价格计算出来,同时每个会员都有购买组合商品的上限!ladder_b_num是已经购买了多少件 + get_goods: function(th,stoid) { + var r_code='10'; + //获取黑头的类型 + var blackhead_segs_type=th.data.face_data.blackheadpore.blackhead_segs_type; + //去掉重复 + var set= blackhead_segs_type.filter(function (element, index, self) { + return self.indexOf(element) === index; + }) + var re_word=set.join(','); + //-- 服务卡 -- + var url="/api/weshop/serviceCard/page?orderField=RAND()&recommend_code="+r_code+"&store_id="+stoid+"&recommend_word="+re_word+"&pageSize=1000"; + getApp().request.promiseGet(url, {}).then(res=>{ + if(res.data.code==0 && res.data.data && res.data.data.pageData && res.data.data.pageData.length>0){ + th.setData({blackhead_fuwu:res.data.data.pageData}) + } + }) + + //-- 商品 -- + var url="/api/weshop/goods/page?orderField=RAND()&recommend_code="+r_code+"&store_id="+stoid+"&recommend_word="+re_word+"&pageSize=1000"; + getApp().request.promiseGet(url, {}).then(res=>{ + if(res.data.code==0 && res.data.data && res.data.data.pageData && res.data.data.pageData.length>0){ + th.setData({blackhead_goods:res.data.data.pageData}) + } + }) + + }, +} diff --git a/packageB/pages/AI-test-skin/success_result/blackhead/blackhead.wxml b/packageB/pages/AI-test-skin/success_result/blackhead/blackhead.wxml new file mode 100644 index 0000000..22be09b --- /dev/null +++ b/packageB/pages/AI-test-skin/success_result/blackhead/blackhead.wxml @@ -0,0 +1,92 @@ + + + + + #01 + + 黑头 + + 问题标注 + + + + + + + + + + 程度情况 + 待确定 + + + + + + + + 粗大区域 + 待确定 + + + + 隐约可见明显黑头 + + + + + 原因分析 + + + + 清洁不够 + + + + 皮脂腺分泌过多 + + + + 护肤品不当 + + + + + + 护理建议 + + + 01 日常防晒 + 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 + + + 02 补水保湿 + 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 + + + 03 早晚清洁 + 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 + + + + + + + + + 黑头问题的疗程 + + + + + + + 适合黑头问题的护肤品 + + + + + + + + \ No newline at end of file diff --git a/packageB/pages/AI-test-skin/success_result/dark/dark.js b/packageB/pages/AI-test-skin/success_result/dark/dark.js new file mode 100644 index 0000000..abe6b75 --- /dev/null +++ b/packageB/pages/AI-test-skin/success_result/dark/dark.js @@ -0,0 +1,32 @@ +module.exports = { + //把组合购的商品价格计算出来,同时每个会员都有购买组合商品的上限!ladder_b_num是已经购买了多少件 + get_goods: function(th,stoid) { + var r_code='08'; + + var arr1=th.data.face_data.eyesattr.dark_circle_left_type; + var arr2=th.data.face_data.eyesattr.dark_circle_right_type; + var arr=[...arr1,...arr2]; + //去掉重复 + var set= arr.filter(function (element, index, self) { + return self.indexOf(element) === index; + }) + var re_word=set.join(','); + //获取黑眼圈的类型 + var re_word= arr.join(',') + //-- 服务卡 -- + var url="/api/weshop/serviceCard/page?orderField=RAND()&recommend_code="+r_code+"&store_id="+stoid+"&recommend_word="+re_word+"&pageSize=1000"; + getApp().request.promiseGet(url, {}).then(res=>{ + if(res.data.code==0 && res.data.data && res.data.data.pageData && res.data.data.pageData.length>0){ + th.setData({dark_fuwu:res.data.data.pageData}) + } + }) + + //-- 商品 -- + var url="/api/weshop/goods/page?orderField=RAND()&recommend_code="+r_code+"&store_id="+stoid+"&recommend_word="+re_word+"&pageSize=1000"; + getApp().request.promiseGet(url, {}).then(res=>{ + if(res.data.code==0 && res.data.data && res.data.data.pageData && res.data.data.pageData.length>0){ + th.setData({dark_goods:res.data.data.pageData}) + } + }) + }, +} diff --git a/packageB/pages/AI-test-skin/success_result/dark/dark.wxml b/packageB/pages/AI-test-skin/success_result/dark/dark.wxml new file mode 100644 index 0000000..52c2b65 --- /dev/null +++ b/packageB/pages/AI-test-skin/success_result/dark/dark.wxml @@ -0,0 +1,111 @@ + + + + + #05 + + 黑眼圈 + + 问题标注 + + + + + + + + + + 程度情况 + {{s_filter.get_dark_type(dark_type)}} + + + + + + + + + 黑眼圈类型 + 3种 + + + + + + + + + + + 色素性-中度 + + + + 血管性-轻度 + + + + 阴影型-无 + + + + + 明显可见毛孔或内含小于毛孔大小角栓 + + + + + 原因分析 + + + + 眼皮色素沉着增加 + + + + 眼皮静脉血流淤积 + + + + 不良生活习惯 + + + + + + 护理建议 + + + 01 日常防晒 + 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 + + + 02 补水保湿 + 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 + + + 03 早晚清洁 + 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 + + + + + + + + 黑眼圈问题的疗程 + + + + + + 适合黑眼圈问题的护肤品 + + + + + + + + \ No newline at end of file diff --git a/packageB/pages/AI-test-skin/success_result/fuwu.wxml b/packageB/pages/AI-test-skin/success_result/fuwu.wxml new file mode 100644 index 0000000..23b7d6d --- /dev/null +++ b/packageB/pages/AI-test-skin/success_result/fuwu.wxml @@ -0,0 +1,12 @@ + + + + + + {{item.serviceName}} + + {{item.serviceSn}} + + ¥{{item.money}} + + \ No newline at end of file diff --git a/packageB/pages/AI-test-skin/success_result/goods.wxml b/packageB/pages/AI-test-skin/success_result/goods.wxml new file mode 100644 index 0000000..0de5dee --- /dev/null +++ b/packageB/pages/AI-test-skin/success_result/goods.wxml @@ -0,0 +1,39 @@ + + + + + {{item.goods_name}} + + {{s_filter.guige(item)}} + + + + + {{item.prom_integral}}积分 + + + ¥{{item.shop_price}} + + + + + + + ¥{{item.shop_price}} + + + ¥{{item.shop_price}} + + + + ¥{{item.shop_price}} + + + + ¥{{item.shop_price}} + + + + + + + \ No newline at end of file diff --git a/packageB/pages/AI-test-skin/success_result/pore/pore.js b/packageB/pages/AI-test-skin/success_result/pore/pore.js new file mode 100644 index 0000000..efee409 --- /dev/null +++ b/packageB/pages/AI-test-skin/success_result/pore/pore.js @@ -0,0 +1,29 @@ +module.exports = { + //把组合购的商品价格计算出来,同时每个会员都有购买组合商品的上限!ladder_b_num是已经购买了多少件 + get_goods: function(th,stoid) { + var r_code='11'; + //获取毛孔的类型 + var pore_segs_type=th.data.face_data.blackheadpore.pore_segs_type; + //去掉重复 + var set= pore_segs_type.filter(function (element, index, self) { + return self.indexOf(element) === index; + }) + var re_word=set.join(','); + //-- 服务卡 -- + var url="/api/weshop/serviceCard/page?orderField=RAND()&recommend_code="+r_code+"&store_id="+stoid+"&recommend_word="+re_word+"&pageSize=1000"; + getApp().request.promiseGet(url, {}).then(res=>{ + if(res.data.code==0 && res.data.data && res.data.data.pageData && res.data.data.pageData.length>0){ + th.setData({pore_fuwu:res.data.data.pageData}) + } + }) + + //-- 商品 -- + var url="/api/weshop/goods/page?orderField=RAND()&recommend_code="+r_code+"&store_id="+stoid+"&recommend_word="+re_word+"&pageSize=1000"; + getApp().request.promiseGet(url, {}).then(res=>{ + if(res.data.code==0 && res.data.data && res.data.data.pageData && res.data.data.pageData.length>0){ + th.setData({pore_goods:res.data.data.pageData}) + } + }) + + }, +} diff --git a/packageB/pages/AI-test-skin/success_result/pore/pore.wxml b/packageB/pages/AI-test-skin/success_result/pore/pore.wxml new file mode 100644 index 0000000..cc860e5 --- /dev/null +++ b/packageB/pages/AI-test-skin/success_result/pore/pore.wxml @@ -0,0 +1,93 @@ + + + + + #01 + + 毛孔 + + 问题标注 + + + + + + + + + + 程度情况 + 待确定 + + + + + + + + 粗大区域 + 待确定 + + + + 明显可见毛孔或内含小于毛孔大小角栓 + + + + + 原因分析 + + + + 皮脂腺分泌旺盛 + + + + 日光暴晒过度 + + + + 护肤不当清洁不足 + + + + + + 护理建议 + + + 01 日常防晒 + 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 + + + 02 补水保湿 + 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 + + + 03 早晚清洁 + 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 + + + + + + + + + + 毛孔问题的疗程 + + + + + + + 适合毛孔问题的护肤品 + + + + + + + + \ No newline at end of file diff --git a/packageB/pages/AI-test-skin/success_result/s_filter.wxs b/packageB/pages/AI-test-skin/success_result/s_filter.wxs new file mode 100644 index 0000000..c1b0971 --- /dev/null +++ b/packageB/pages/AI-test-skin/success_result/s_filter.wxs @@ -0,0 +1,120 @@ +//获取样式 +var get_dark_type = function(column) { + switch(column){ + case 0:return "轻度"; + case 1:return "中度"; + case 2:return "重度"; + } +} + +//跳转的接口 +var get_goods_url=function(item){ + var url1="/pages/goods/goodsInfo/goodsInfo?goods_id="+item.goods_id + + if(item.prom_type == 9) { + url1 = '/packageC/pages/luckyGo/luckyGo_goodsInfo/luckyGo_goodsInfo?goods_id=' + item.goods_id + '&group_id=' + item.prom_id; + } + if(item.prom_type==8){ + url1="/packageC/pages/presell/goodsInfo/goodsInfo?goods_id="+item.goods_id+"&prom_id="+item.prom_id + } + if(item.prom_type==1 && item.prom_id>0 ){ + url1="/pages/goods/goodsInfo/goodsInfo?goods_id="+item.goods_id+"&prom_id="+item.prom_id+"&prom_type=1"; + } + return url1; + } +var guige=function(item){ + var gg=''; + if (item.goods_spec != "" && item.goods_color != "") { + gg = item.goods_spec + "/" + item.goods_color; + } else if (item.goods_spec != "" || item.goods_color != "") { + gg = item.goods_spec + item.goods_color; + } else { + gg = "规格1"; + } + return gg; +} + +var dryoil_check=function(skin_dryoil_check){ + var num_all=skin_dryoil_check[0]+skin_dryoil_check[1]+skin_dryoil_check[2]+skin_dryoil_check[3]+skin_dryoil_check[4]; + num_all= num_all/5; + switch(num_all){ + case 0:return '干性'; + case 1:return '中性'; + case 2:return '油性'; + } + return ''; +} + + +//-- 判断是不是有等级价 -- +var is_has_rank=function(rank_switch,item){ + if(!rank_switch) return false; + if(item.cardprice1 || item.cardprice2 || item.cardprice3) {return true} + return false; + } + + //-- 判断,不是等级会员时候,要显示的最低等级价和名称 -- +var get_card_price=function(goods,all_card,type){ + var price1=parseFloat(goods['cardprice1']); + var price2 = parseFloat(goods['cardprice2']); + var price3 = parseFloat(goods['cardprice3']); + if(!all_card){ + if(type==0) return 0; + return ""; + } + + var min_price=null; + var min_name=null; + //---设置对应的价格名字---- + for(var i=0;i<3;i++) { + var vl=all_card[i]; + if(!vl) continue; + + if(vl['CorrPrice']=="Price1" && price1>0) + { + if(min_price==null) { + min_price=price1;min_name=vl['CardName']; + } + else if(price10) + { + if(min_price==null) { + min_price=price2;min_name=vl['CardName']; + } + else if(price20) + { + if(min_price==null) { + min_price=price3;min_name=vl['CardName']; + } + else if(price34 ) min_name=min_name.substring(0, 8); + return min_name; + } + +module.exports = { + get_dark_type: get_dark_type, + get_goods_url: get_goods_url, + guige:guige, + dryoil_check:dryoil_check, + is_has_rank:is_has_rank, + get_card_price:get_card_price +} diff --git a/packageB/pages/AI-test-skin/success_result/speckle/speckle.js b/packageB/pages/AI-test-skin/success_result/speckle/speckle.js new file mode 100644 index 0000000..bc97456 --- /dev/null +++ b/packageB/pages/AI-test-skin/success_result/speckle/speckle.js @@ -0,0 +1,34 @@ +module.exports = { + //把组合购的商品价格计算出来,同时每个会员都有购买组合商品的上限!ladder_b_num是已经购买了多少件 + get_goods: function(th,stoid) { + var r_code='07'; + //获取斑的类型 + var list=th.data.face_data.acnespotmole.speckle_list; + //把所有的斑的类型拿出来 + var arr=[]; + for(var i in list){ + arr.push(list[i].type); + } + //去掉重复 + var set= arr.filter(function (element, index, self) { + return self.indexOf(element) === index; + }) + var re_word=set.join(','); + //-- 服务卡 -- + var url="/api/weshop/serviceCard/page?orderField=RAND()&recommend_code="+r_code+"&store_id="+stoid+"&recommend_word="+re_word+"&pageSize=1000"; + getApp().request.promiseGet(url, {}).then(res=>{ + if(res.data.code==0 && res.data.data && res.data.data.pageData && res.data.data.pageData.length>0){ + th.setData({speckle_fuwu:res.data.data.pageData}) + } + }) + + //-- 商品 -- + var url="/api/weshop/goods/page?orderField=RAND()&recommend_code="+r_code+"&store_id="+stoid+"&recommend_word="+re_word+"&pageSize=1000"; + getApp().request.promiseGet(url, {}).then(res=>{ + if(res.data.code==0 && res.data.data && res.data.data.pageData && res.data.data.pageData.length>0){ + th.setData({speckle_goods:res.data.data.pageData}) + } + }) + + }, +} diff --git a/packageB/pages/AI-test-skin/success_result/speckle/speckle.wxml b/packageB/pages/AI-test-skin/success_result/speckle/speckle.wxml new file mode 100644 index 0000000..5083db6 --- /dev/null +++ b/packageB/pages/AI-test-skin/success_result/speckle/speckle.wxml @@ -0,0 +1,92 @@ + + + + + #01 + + 色斑 + + 问题标注 + + + + + + + + + + 程度情况 + 待确定 + + + + + + + + 色斑个数 + {{speckle_num}} + + + + 隐约可见面积小且分散的色斑 + + + + + 原因分析 + + + + 皮肤炎症反应 + + + + 内分泌失衡 + + + + 紫外线照射过量 + + + + + + 护理建议 + + + 01 日常防晒 + 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 + + + 02 补水保湿 + 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 + + + 03 早晚清洁 + 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 + + + + + + + + + 色斑问题的疗程 + + + + + + + 适合色斑问题的护肤品 + + + + + + + + \ No newline at end of file diff --git a/packageB/pages/AI-test-skin/success_result/success_result.js b/packageB/pages/AI-test-skin/success_result/success_result.js index 610b79c..e0254b6 100644 --- a/packageB/pages/AI-test-skin/success_result/success_result.js +++ b/packageB/pages/AI-test-skin/success_result/success_result.js @@ -12,6 +12,13 @@ const request = app.request; const os = app.globalData; const setting = os.setting; const ut = require('../../../../utils/util'); +//毛孔 +const acne = require('acne/acne'); +const blackhead = require('blackhead/blackhead'); +const dark = require('dark/dark'); +const pore = require('pore/pore'); +const speckle = require('speckle/speckle'); +const wrinkle = require('wrinkle/wrinkle'); Page({ /** * 页面的初始数据 @@ -31,6 +38,67 @@ Page({ * 生命周期函数--监听页面加载 */ onLoad: function (options) { + var th=this; + //初始化一下,获取商品的价格 + this.init(); + //var face_result=getApp().globalData.face_result; + //var face_data=face_result.face_list[0]; + this.data.id=options.id; + this.get_data(function (json,img) { + //-- 数据先存着 -- + var face_data=th.data.face_data=json.face_list[0]; + //痤疮数 + var acne_num=face_data.acnespotmole.acne_num; + //色斑数 + var speckle_num=face_data.acnespotmole.speckle_num; + //皱纹数 + var wrinkle_num=face_data.wrinkle.wrinkle_num; + //黑头数 + var blackhead_num=face_data.blackheadpore.blackhead_num; + //毛孔数 + var pore_num=face_data.blackheadpore.pore_num; + //黑眼圈的严重程度 + var dark_type=face_data.eyesattr.dark_circle_left_type.length>0?face_data.eyesattr.dark_circle_left_type[0]:-1; + var dark_type1=face_data.eyesattr.dark_circle_right_type.length>0?face_data.eyesattr.dark_circle_right_type[0]:-1; + if(dark_type1>dark_type){ + dark_type=dark_type1; + } + var skin_sensitive_check=face_data.skinquality.skin_sensitive_check[0]; + var skin_dryoil_check=face_data.skinquality.skin_dryoil_check; + + th.setData({ + acne_num:acne_num, + speckle_num:speckle_num, + wrinkle_num:wrinkle_num, + blackhead_num:blackhead_num, + pore_num:pore_num, + dark_type:dark_type, + skin_sensitive_check:skin_sensitive_check, + skin_dryoil_check:skin_dryoil_check, + face_img:img + }) + //-- 调用毛孔的推荐函数 -- + if(pore_num>0) + pore.get_goods(th,setting.stoid); + //-- 调用黑头的推荐函数 -- + if(blackhead_num>0) + blackhead.get_goods(th,setting.stoid); + //-- 调用色斑的推荐函数 -- + if(speckle_num>0) + speckle.get_goods(th,setting.stoid); + //-- 调用皱纹的推荐函数 -- + if(wrinkle_num>0) + wrinkle.get_goods(th,setting.stoid); + //-- 黑眼圈 -- + if(dark_type>-1) + dark.get_goods(th,setting.stoid); + //-- 黑眼圈 -- + if(acne_num>-0) + acne.get_goods(th,setting.stoid); + }) + + + }, lo(){ @@ -44,19 +112,80 @@ Page({ }) }, + //-- 初始等级卡 -- + init: function () { + var th = this; + if (!getApp().globalData.user_id) return false; + getApp().request.get("/api/weshop/users/get/" + os.stoid + "/" + getApp().globalData.user_id, { + isShowLoading: false, + success: function (e) { + if (e.data.code == 0 && e.data && e.data.data) { + getApp().globalData.userInfo = e.data.data; + getApp().getConfig2(function (e) { + var swithc_list = e.switch_list; + var sw_arr = JSON.parse(swithc_list); + //---如果后台有开等级卡的开关--- + if (sw_arr.rank_switch && sw_arr.rank_switch == "2") { + th.setData({ + rank_switch: true + }); + //---回调卡的列表--- + th.getPlusCardType(function (ob) { + th.setData({ + card_list: ob.card_list + }); + var ti = setInterval(function () { + var user = getApp().globalData.userInfo; + if (!user) return false; + clearInterval(ti); + if (user.card_field && user['card_expiredate']) { + var str = user['card_expiredate'].replace(/-/g, '/'); + var end = new Date(str); + end = Date.parse(end) / 1000; + var now = ut.gettimestamp(); + //--- 判断是等级会员,且在有效期范围内 --- + if (user.card_field && now < end) { + var card_name = ob.name_map.get(user.card_field); + if (card_name.length > 4) card_name = card_name.substring(0, 8); + th.setData({ + card_field: user.card_field, + card_name: card_name, + card_list: ob.card_list + }); + } + } + }, 500) + }) + } + }) + + } + } + }) + }, + //-- 获取json数据 -- + get_data:function (func) { + var url="/api/weshop/face/storeSkinface/get/"+setting.stoid+"/"+this.data.id; + getApp().request.promiseGet(url, {}).then(res=>{ + if(res.data.code==0){ + var json=JSON.parse(res.data.data.resultjson); + func(json,res.data.data.img) + }else{ + getApp().showWarning("获取数据失败"); + } + }) + }, + /** * 生命周期函数--监听页面初次渲染完成 */ - onReady: function () { - - }, + onReady: function () {}, /** * 生命周期函数--监听页面显示 */ - onShow: function () { + onShow: function () {}, - }, clickTab(e) { let { index, tab_id } = e.currentTarget.dataset; this.setData({ @@ -127,5 +256,51 @@ Page({ */ onShareAppMessage: function () { - } + }, + + //商品页面跳转 + go_url:function (e) { + var url=e.currentTarget.dataset.url; + getApp().goto(url); + }, + + //--- 获取卡类列表 --- + getPlusCardType: function (func) { + var storid = o.stoid; + var th = this; + getApp().request.promiseGet("/api/weshop/plus/vip/mem/bership/list?" + "storeId=" + storid, {}).then(res => { + + if (res.data.code != 0 || !res.data.data) { + var ob = { + "card_list": [], + "name_map": "" + }; + func(ob); + return false; + } + + var plusCard = res.data.data; + var arr = [1219, 2089, 3031]; + var new_arr = new Array(); + var card_name_map = new Map(); + + var user = getApp().globalData.userInfo; + if (plusCard) { + for (var i = 0; i < plusCard.length; i++) { + if ((!user || user.card_field == null || user.card_field == "") && (plusCard[i].IsStopBuy == true)) { + continue; + } + var name = "card" + plusCard[i].CorrPrice.toLowerCase(); + card_name_map.set(name, plusCard[i].CardName); + new_arr.push(plusCard[i]); + + } + } + var ob = { + "card_list": new_arr, + "name_map": card_name_map + }; + func(ob); + }) + }, }) \ No newline at end of file diff --git a/packageB/pages/AI-test-skin/success_result/success_result.wxml b/packageB/pages/AI-test-skin/success_result/success_result.wxml index b27b1fe..54b6a84 100644 --- a/packageB/pages/AI-test-skin/success_result/success_result.wxml +++ b/packageB/pages/AI-test-skin/success_result/success_result.wxml @@ -1,3 +1,5 @@ + + @@ -8,39 +10,39 @@ - + - 毛孔 较粗大 - 色斑 轻度 - 黑眼圈 轻度 + 毛孔 {{pore_num}} + 色斑 {{speckle_num}} + 黑眼圈 {{s_filter.get_dark_type(dark_type)}} - 黑头 轻度 - 皱纹 轻度 - 痤疮 轻度 + 黑头 {{blackhead_num}} + 皱纹 {{wrinkle_num}} + 痤疮 {{acne_num}} 综合得分 - 70 + 待确定 肤况 - 待改善 + 待确定 - + @@ -49,7 +51,7 @@ - 油性肌肤 + 待确定 干性区 油性区 @@ -62,567 +64,37 @@ - - - - - - #01 - - 毛孔 - - 问题标注 - - - - - - - - - - 程度情况 - 较粗大 - - - - - - - - 粗大区域 - 右脸颊 - - - - 明显可见毛孔或内含小于毛孔大小角栓 - - - - - 原因分析 - - - - 皮脂腺分泌旺盛 - - - - 皮脂腺分泌旺盛 - - - - 皮脂腺分泌旺盛 - - - - - - 护理建议 - - - 01 日常防晒 - 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 - - - 02 补水保湿 - 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 - - - 03 早晚清洁 - 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 - - - - - - - - 毛孔问题的疗程 - - - - - - 小气泡疗程 - - 祛斑 - 抗丑 - - ¥100 - - - - - 适合毛孔问题的护肤品 - - - - - - 的功夫岁的功夫岁的法国的功夫岁的法国的功夫岁的法国的法国 - - - 祛斑 - 抗丑 - - - ¥100 - - - - - - - - - 的功夫岁的功夫岁的法国的功夫岁的法国的功夫岁的法国的法国 - - 祛痘修护 - - - ¥100 - - - - - - - - - - - - #04 - - 色斑 - - 问题标注 - - - - - - - - - - 程度情况 - 较粗大 - - - - - - 眼周 - 鱼尾纹 - 眼部皱纹 - 泪沟(健康) - - - - - - - - - - - 额头 - 抬头皱纹(健康) - 眉间纹(健康) - - - 嘴周 - 法令纹 - 口角纹 - - - - - 明显可见毛孔或内含小于毛孔大小角栓 - - - - - 原因分析 - - - - 皮脂腺分泌旺盛 - - - - 皮脂腺分泌旺盛 - - - - - - 护理建议 - - - 01 日常防晒 - 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 - - - 02 补水保湿 - 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 - - - 03 早晚清洁 - 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 - - - - - - - - 毛孔问题的疗程 - - - - - - 小气泡疗程 - - 祛斑 - 抗丑 - - ¥100 - - - - - 适合毛孔问题的护肤品 - - - - - - 的功夫岁的功夫岁的法国的功夫岁的法国的功夫岁的法国的法国 - - - 祛斑 - 抗丑 - - - ¥100 - - - - - - - - - 的功夫岁的功夫岁的法国的功夫岁的法国的功夫岁的法国的法国 - - 祛痘修护 - - - ¥100 - - - - - - - - - - - - #05 - - 黑眼圈 - - 问题标注 - - - - - - - - - - 程度情况 - 较粗大 - - - - - - - - - - 色素性-中度 - - - - 血管性-轻度 - - - - 阴影型-无 - - - - - 明显可见毛孔或内含小于毛孔大小角栓 - - - - - 原因分析 - - - - 皮脂腺分泌旺盛 - - - - 皮脂腺分泌旺盛 - - - - - - - 护理建议 - - - 01 日常防晒 - 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 - - - 02 补水保湿 - 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 - - - 03 早晚清洁 - 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 - - - - - - - - 毛孔问题的疗程 - - - - - - 小气泡疗程 - - 祛斑 - 抗丑 - - ¥100 - - - - - 适合毛孔问题的护肤品 - - - - - - 的功夫岁的功夫岁的法国的功夫岁的法国的功夫岁的法国的法国 - - - 祛斑 - 抗丑 - - - ¥100 - - - - - - - - - 的功夫岁的功夫岁的法国的功夫岁的法国的功夫岁的法国的法国 - - 祛痘修护 - - - ¥100 - - - - - - - - - - - - #06 - - 痤疮 - - 问题标注 - - - - - - - - - - - 程度情况 - 较粗大 - - - - - - - - 痤疮个数 - 100个 - - - - - - - 囊肿 - 健康 - - - - - - 丘疹 - 健康 - - - - - - 粉刺 - 健康 - - - - - - 痘印 - 健康 - - - - - 明显可见毛孔或内含小于毛孔大小角栓 - - - - - 原因分析 - - - - 皮脂腺分泌旺盛 - - - - 皮脂腺分泌旺盛 - - - - - - 护理建议 - - - 01 日常防晒 - 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 - - - 02 补水保湿 - 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 - - - 03 早晚清洁 - 用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根使用的公司大股东是公司山豆根山豆根收到二十个的山豆根山豆根大股东是公司山豆根山豆根收到二十个的山豆根山豆根 - - - - - - - - 毛孔问题的疗程 - - - - - - 小气泡疗程 - - 祛斑 - 抗丑 - - ¥100 - - - - - 适合毛孔问题的护肤品 - - - - - - 的功夫岁的功夫岁的法国的功夫岁的法国的功夫岁的法国的法国 - - - 祛斑 - 抗丑 - - - ¥100 - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - 的功夫岁的功夫岁的法国的功夫岁的法国的功夫岁的法国的法国 - - 祛痘修护 - - - ¥100 - - - - - - - +