电商的会员系统—-动态平衡
前提:电商的会员系统与QQ会员系统不同,荣誉激励因素于小。
目的:用户分层运营,将全方位用户体系划分成一个金字塔结构,给大值之用户提供更上的劳务。
怎分层,如何判定一个用户是青出于蓝价值用户?
- 消费
- 请频度高
- 用户自己素质强,无恶意退换货等
- 帮忙平台构建产品形象
- 平台忠实度
京东底政策:
成人值=(登录+购物+购物天数+评价+晒单)*成长系数
- 登录、评价及晒单 = 对平台的忠实度
- 购物 = 消费
- 每月购物天数 = 购买频度
- 晒单和评论 = 帮助平台构建产品形态
- 用户素质 = 成长系数
ps:京东在策略选择上,也考虑了针对性用户作为的导。
成长系数
场面:有些用户虽然交易量高,但是时使用无理由退货权益,乱买商品,造成运营本钱居高不下。成长系数即是一个神作,把这些用户区分了下。在尚未京东经济的私家体系之前,根据用户的退换货的百分比,系统开展确定;现在金融做起来后,直接运用小白信用作为指标。
会员权益:
- 下单优惠: 金银铜会员价
- 配送优惠/及时:免运费门槛
- 售后:单免/双免
- 客服服务:VIP专线
- 结关怀:生日礼包
关于谁阶段应该分享及啦种程度的活,需要展开资金测算后,进行确定。具体数值其他组曾分析的慌详细了。
优化趋势:
- 活动丰富:借鉴淘宝之急促退款。京东竟是可以完成急速退款货,购物体验好再压阿里系一筹。
- 正好多荣誉感:除了专属的寿辰礼包外,情感化比较少。建议在京东618预热阶段送小礼什么的。
- 增进会员的感知度:目前京东非钻会员权益于鸡肋。组内就有人吐槽,京东就生零星栽会员,钻石和非钻石。京东钻石会员的诀窍是30000人民币之根基消费,每年1000说到底花费,门槛太胜。看是否生其它权益(需要展开资金计算)
会员plus
会员plus:用户直接付费证明自己是赛值用户,要求享受强价值用户之活动。
优势:用户如购买会员,用户更加卖越经济,京东之交易额也再也胜似。
PS:京东中用户评价体系
相传京东其中还打盖了一波评体系,主要用来促销活动之用户选择与售后服务及。不知道诸位小伙伴来没有发生高达京东之地下名单。
本条首稿子主要实现两只职能:
积分系统–进出平衡
目的:通过利益奖励,引导用户作为,构建产品生态。
指望为带的行为
- 保日活
- 授消费金额
- 协完善商品数量
- 造就用户移动端采用习惯
- 呢其他业务线引流等
积分的获
- 登录 = 日活
- 购奖励 = 消费金额
- 讲评与晒单 = 完善商品数量
- 动端签到 =
培养移动端应用习惯(当时京东还有更残酷之法:移动端商品还有利于) - 兑换钢镚、兑换读书券 = 为其他业务线引流
积分消耗
困难:积分兑换的货色价值高,运营成本高;赠送兑换的货物价值不及,难以吸引用户。所以积分的兑换核心是以小博大,小积分大用处才能够吸引用户。
- 换钱优惠卷 –> 侧面曝光了货,所以折扣可更小,更经济
- 大乐斗 –> 典型的坐小博大
- 京豆+现金 –> 直接换高价值的货物
- 换算现金 –> 提交订单时100=1初次抵充现金。
- 其它:例如兑换钢镚,为金融引流;10京豆=50首位安卓读书券,为京东书籍引流。
- 机动失效
题目考虑
成长值为什么而定期减,而且因会员等减不同的额度
- 用户是产生生命周期的,是一个动态的。通过减弱去化长值,让会员系统流动起来。沉默用户权益下降,让位于新入的过人值用户。
- 为什么不同阶段需要减小不同额度:保持一个金字塔结构,越顶层用户要进一步少。
- 产生没有发出任何方式保障金字塔结构:支付宝会员简单粗暴的之所以topN的主意划定权益。
- 有了权益会更加不思去,促使用户不断活跃。
何以京豆使用是1000底翻番?
- 京东之退款是遵照百分比较退还的,如果允许个各数京东,退货时会见来大量小数
京豆会什么使失效?
- 顿时回收京豆,防止京豆累积太多,京东交易额4000亿+,按1‰换算就是40亿,这是计提的工本,累积个几十年,财务审计是资本不克掩盖这有的财力就会来问题,国外有航空企业就是吃了这个亏,最后黄。
- 反面促进用户积极消费京豆,减少京豆的积淀
- 撤消部分的营业成本
会员和积分系统以电商产品中真正很要紧吗?
- 当前用户的购物行为,以前是圈价格,谁好买哪个的。现在或许在了配送速度等因素。但是多数消费者见面因为升级会员/积分选择企业为?整个电商的会员/积分系统,用户之感知度都比较没有,很麻烦成为用户购买决策的重中之重元素。
- 会员系统是用户分层的玩法,对于B2C端主要汇集在活及。B2B可能会见提到返点和价格梯度,直接以会员系统及异常好,不然手动筛选高价值商户人力财力比较高。
- 积分系统要用于用户维系的营业。优惠力度不酷,用户与度会大打折扣,需要量力而为
1、点击屏幕下方签到悬浮按钮;
积分及会员系统之前程提高
- 长积分的玩法:刮刮乐等,积分兑换其他平台活动
- 连为另外产品线引流:京东经济、京东读书、京东至小等等。
- 个性化推荐:根据不同用户喜好好,倾向性的引进不同权益,提高会员系统之存在感。
2、弹出幸运大转盘,转盘抽奖签到
京东以防刷做的努力
咱们永恒向往美好,但世界上到底起坏人。
- 装有的优惠券必须铜牌以上会员才能够取,防止优惠券被恶意占
- 会员plus,必须要求小白评分超自然数值,防止恶意用户。
- 退货后,已经沾之成长值和积分进行扣除
- 曝单获取京东,越为人家认可获得京东更加多,利用群众监督
- 单个货获得的京豆存在上限
- 提请退款时,若京豆不足扣除,直接减半退款
- 京豆支付不得跨每笔订单结算金额的50%
- 用户只能评价该用户名下购买了之货,且该商品优惠后金额超过或等于20老大。因为货物评价取得之京豆为20独。
- 意识一个坑填一个坑,等等
搭建积分系统的小建议
- 积分系统是一个日益确立之过程,非常适合初期推出MVP的版本,后续根据运营需求不断完善。
- 选品问题:中小型企业预算少,可以品尝还多发生特点之粗礼物,例如pmcaff的定制鼠标垫,或者跟其余货品/商家合作,例如优酷金币和京东的做法。
- 预算问题:初期预算不足时,可以与任何店铺合作,曝光其他局之货,要求还不比的价。双方互利。
效益使图:
当网上检索了成千上万运动端拖拽的js实现方式,大部分且是随即等同种植,html5的touch事件,但是没有找到点击按钮可以于星星度贴边的拖拽,所以集中网上查阅到的相干材料自己小修改了一点。代码如下:
1 $(function(){
2
3 //签到按钮拖拽
4 //首先,设置cookie值,使到不同的页面刷新拖拽的按钮位置不会变
5 function setCookie(name,value,expires){
6 var oDate=new Date();
7 oDate.setDate(oDate.getDate()+expires);
8 document.cookie=name+'='+value+';expires='+oDate;
9 }
10 function getCookie(name){
11 var arr=new Array();
12 arr=document.cookie.split("; ");
13 var i=0;
14 for(i=0; i<arr.length;i++){
15 arr2=arr[i].split("=");
16 if(arr2[0]==name)
17 {
18 return arr2[1];
19 }
20 }
21 return '';
22 }
23 function removeCookie(name){
24 setCookie(name,'随便什么值,反正都要被删除了',-1);
25 }
26 //判断a和b的原因是第一次打开,cookie中并没有相应的参数,所以当有参数时执行,
27 // a和b只需要判断一个就好了
28 var oDiv=document.getElementById('signCorner');
29
30 var a=getCookie('xPosition');
31 var b=getCookie('yPosition');
32 if(a){
33 oDiv.style.left=a+'px';
34 oDiv.style.top=b+'px';
35 }
36
37 var dragBox = document.getElementById('signCorner');
38
39 //拖拽中
40 dragBox.addEventListener('touchmove', function(event) {
41 event.preventDefault();//阻止其他事件
42 // 如果这个元素的位置内只有一个手指的话
43 if (event.targetTouches.length == 1) {
44 var touch = event.targetTouches[0];
45 // 元素与手指位置同步
46 dragBox.style.left = touch.clientX + 'px';
47 dragBox.style.top = touch.clientY + 'px';
48 //由于页面中会有滚动,所以在这不能用pageX和pageY,要用clientX clientY
49
50 }
51 }, false);
52
53 //拖拽结束,放手
54 dragBox.addEventListener('touchend',function(event) {
55 // 如果这个元素的位置内只有一个手指的话
56 //拖拽结束,changedTouches列表是涉及当前事件的列表
57 if (event.changedTouches.length == 1) {
58 var touch = event.changedTouches[0];
59 // 判断手指位置,放置元素,如果大于浏览器宽度的一半,则右贴边,小于等于则左贴边
60 var halfViewWidth=window.innerWidth/2;
61 var halfWidth=$(dragBox).width()/2;
62 // 手指位置判断,竖直方向,超出屏幕的贴边,水平方向,超出屏幕贴边,
63 //左边左贴边,右边右贴边
64 if((touch.clientX<0)||(touch.clientX>=0&&touch.clientX<=(halfViewWidth-halfWidth))){
65 dragBox.style.left = 20 + 'px';
66 }else if(touch.clientX>=(halfViewWidth-halfWidth)){
67 dragBox.style.left = (window.innerWidth-20-$(dragBox).width()) + 'px';
68 }
69 if(touch.clientY<0){
70 dragBox.style.top = 20 + 'px';
71 }else if(touch.clientY>=window.innerHeight-$(dragBox).height()){
72 dragBox.style.top = (window.innerHeight-$(dragBox).height()-20) + 'px';
73 }
74 }
75 dragBox.touchmove=null;
76 dragBox.touchend=null;
77 setCookie('xPosition',oDiv.offsetLeft,1);
78 setCookie('yPosition',oDiv.offsetTop,1);
79 },false);
签证到转盘代码如下:
1 //如果未签到 或者 未登录 显示签到
2 if(IS_SIGN == 1 || UID == '' || UID == 0){
3 $("#signCorner").show();
4 }
5
6 //点击签到图标
7 $("#signCorner").click(function () {
8 if(UID == undefined || UID == 0 || UID == ""){
9 //未登录跳转登录页
10 window.location.href='/index.php?app=wap&mod=Public&act=login';
11 return false;
12 }else{
13 $("#signCorner").hide();
14 $("#signInDrawStart").show();
15 $("#mask").show();
16 }
17 });
18 //点击X关闭
19 $(".signInDraw-close").click(function () {
20 $(this).parent(".signInDraw-turntablebg").hide();
21 $("#mask").hide();
22 location.reload();
23 });
24 //点击遮罩关闭
25 /*$("#mask").click(function(){
26 $(".signInDraw-turntablebg").hide();
27 $("#mask").hide();
28 location.reload();
29 });*/
30 //大弹窗转盘
31 $(function (){
32 var rotateTimeOut = function (){
33 $('#rotate').rotate({
34 angle:0,
35 animateTo:2160,
36 duration:8000,
37 callback:function (){
38 alert('网络超时,请检查您的网络设置!');
39 }
40 });
41 };
42 var bRotate = false;
43 var rotateFn = function (awards, angles, txt){
44 bRotate = !bRotate;
45 $('#rotate').stopRotate();
46 $('#rotate').rotate({
47 angle:0,
48 animateTo:angles+1800,
49 duration:8000,
50 callback:function (){
51 $.post(U('activity/Activity/queUserSign'),{uid:awards.uid},function(result){
52 var results = eval('('+result+')');
53 var attrs = '';
54 var succession_sign = results.data.succession_sign;
55 if(succession_sign == 0){
56 succession_sign = 7;
57 }else{
58 var endsuc = 7 - succession_sign;
59 }
60 if (results.status == 1)
61 {
62 if(awards.name == "积分"){
63 $(".signInDraw-Congratulate").html(txt);
64 $('#kaquan').hide();
65 $('#hongbao').hide();
66 }else if(awards.name == "现金红包"){
67 $(".signInDraw-Congratulate").html(txt);
68 $('#jifen').hide();
69 $('#kaquan').hide();
70 }else{
71 $(".signInDraw-Congratulate").html(txt);
72 $('#jifen').hide();
73 $('#hongbao').hide();
74 }
75 if(succession_sign == 7){
76 $('#signInDraw-tips1').show();
77 $('#signInDraw-tips').hide();
78 }else{
79 $('#signInDraw-tips1').hide();
80 $("#sSuc").html(succession_sign);
81 $("#endSuc").html(endsuc);
82 }
83 $('#signInDrawLast').show();
84 }else {
85 $(".signInDrawLast").hide();
86 }
87 });
88 bRotate = !bRotate;
89 }
90 })
91 };
92
93 $('#signInDraw-pointer').click(function (){
94 if(bRotate)return;
95 if(UID == undefined || UID == 0 || UID == ""){
96 //未登录跳转登录页
97 // var url = "<?php echo base64_encode(U('public/Finance/index'));?>";
98 setTimeout(function () {window.location.href='/index.php?app=wap&mod=Public&act=login';}, "0");
99 return false;
100 }
101 var attrs = '';
102 $.post(U('activity/Activity/signInActivity'),{uid:UID},function(result){
103 var results = eval('('+result+')');
104 if (results.status == 1)
105 {
106 //奖品id,需指定
107
108 switch (results.data.id) {
109 //普通奖励
110 case 0:
111 rotateFn(results.data, 67, results.info.title);
112 break;
113 case 109:
114 rotateFn(results.data, 220, results.info.title);
115 break;
116 case 110:
117 rotateFn(results.data, 220, results.info.title);
118 break;
119 case 43:
120 rotateFn(results.data, 139, results.info.title);
121 break;
122 case 26:
123 rotateFn(results.data, 139, results.info.title);
124 break;
125
126 //宝箱奖励
127 //积分
128 case 1:
129 rotateFn(results.data, 280, results.info.title);
130 break;
131 case 114:
132 rotateFn(results.data, 280, results.info.title);
133 break;
134 case 89:
135 rotateFn(results.data, 280, results.info.title);
136 break;
137 case 115:
138 rotateFn(results.data, 280, results.info.title);
139 break;
140 case 6:
141 rotateFn(results.data, 280, results.info.title);
142 break;
143 case 66:
144 rotateFn(results.data, 280, results.info.title);
145 break;
146 case 109:
147 rotateFn(results.data, 280, results.info.title);
148 break;
149 case 109:
150 rotateFn(results.data, 280, results.info.title);
151 break;
152 case 109:
153 rotateFn(results.data, 280, results.info.title);
154 break;
155 }
156 }else {
157 $("#headerSignPopUp").show();
158 location.reload();
159 }
160 });
161 });
162 });
163 });
})
要提要:
常见js宽度获取:
1 网页可见区域宽:document.body.clientWidth
2 网页可见区域高:document.body.clientHeight
3 网页可见区域宽:document.body.offsetWidth (包括边线和滚动条的宽)
4 网页可见区域高:document.body.offsetHeight(包括边线的宽)
5 网页正文全文宽:document.body.scrollWidth
6 网页正文全文高:document.body.scrollHeight
7 网页被卷去的高(ff):document.body.scrollTop
8 网页被卷去的高(ie):document.documentElement.scrollTop
9 网页被卷去的左:document.body.scrollLeft
10 网页正文部分上:window.screenTop
11 网页正文部分左:window.screenLeft
12 屏幕分辨率的高:window.screen.height
13 屏幕分辨率的宽:window.screen.width
14 屏幕可用工作区高度:window.screen.availHeight
15 屏幕可用工作区宽度:window.screen.availWidth
16 你的屏幕设置是:window.screen.colorDepth 位彩色
17 你的屏幕设置:window.screen.deviceXDPI 像素/英寸
18
19 window的页面可视部分实际高度(ff):window.innerHeight //常用
20 window的页面可视部分实际高度(ff):window.innerWidth //常用
21
22 某个元素的宽度:obj.offsetWidth //常用
23 某个元素的高度:obj.offsetHeight //常用
24
25 某个元素的上边界到body最顶部的距离:obj.offsetTop(在元素的包含元素不含滚动条的情况下)
26 某个元素的左边界到body最左边的距离:obj.offsetLeft(在元素的包含元素不含滚动条的情况下)
27 返回当前元素的上边界到它的包含元素的上边界的偏移量:obj.offsetTop(在元素的包含元素含滚动条的情况下)
28 返回当前元素的左边界到它的包含元素的左边界的偏移量:obj.offsetLeft(在元素的包含元素含滚动条的情况下)
js获取Html元素的莫过于增长率高度:
1、#div1.style.width
2、#div1.offsetWidth
宽高且勾于体制表里,就按#div1{width:120px;}。这遭到状态经#div1.style.width以不顶步长,而由此#div1.offsetWidth才得博得到步长;宽和赛是描摹以行内中,比如style=”width:120px;”,这遭到状态通过上述2独主意都能将到步长。
小结,因为id.offsetWidth和id.offsetHeight无视样式写在样式表还是行内,所以我们赢得元素宽和赛的时候太好用这2只属性。注意要无是描摹在行内style中之习性都未克由此id.style.atrr来获取。
touch事件
touch事件模型时规定了好多种类型的触摸事件,以下三栽是采取最普遍的:
1. Touchstart:手指刚放到屏幕及有DOM元素里的时候该因素触发
2. Touchmove:指紧贴屏幕的时节总是触发
3. Touchend:手指从屏幕及抬起底早晚接触
每当PC触发啊以下三个事件:
1.mouseup**
2.mousemove(一次)**
3.mousedown**
这些个事件都见面顺DOM树向上冒泡,并发出一个触摸事件对象。
Touches:代表手上居屏幕上的具备手指动作之列表,是一个TouchList类型的目标,TouchList是一个类数组对象,它里面装的凡Touch对象。表示目前跟踪的触摸操作的touch对象的数组。
targetTouches:特定于波目标的Touch对象的数组。
changeTouches:代表于上次触摸以来发生了呀改观之Touch对象的数组。
每个Touch对象涵盖的习性如下。
clientX:触摸目标在视口中的x坐标。
clientY:触摸目标在视口中的y坐标。
identifier:标识触摸的唯一ID。
pageX:触摸目标在页面中之x坐标。(触摸点相对于页面的职位)
pageY:触摸目标以页面中之y葡京签到送彩金坐标。
screenX:触摸目标在屏幕中之x坐标。
screenY:触摸目标在屏幕被的y坐标。
target:触目的DOM节点目标。
1 $(document).bind(touchEvents.touchstart, function (event) {
2 event.preventDefault();
3 });
4 $(document).bind(touchEvents.touchmove, function (event) {
5 event.preventDefault();
6 });
7 $(document).bind(touchEvents.touchend, function (event) {
8 event.preventDefault();
9 });
touches是于屏幕及之富有手指列表,targetTouches是时DOM上之手指头列表,所以当手指移开触发touchend事件频仍,event.originalEvent是未曾这个targetTouches列表的,而changedTouches列表是关联当前事件之列表,例如touchend事件中,手指移开。touchend事件备受应有是光发生只changedTouches触摸实例列表的。
参照链接:原生js完美拖拽,每次刷新可以记住上次拖拽的职务