Merge branch 'feature_student' into release/4.9.1.0
# Conflicts: # apps/product/models/detail.js # config/common.js # public/scss/common/_good.css
Showing
7 changed files
with
77 additions
and
359 deletions
@@ -149,6 +149,7 @@ exports.index = (req, res, next) => { | @@ -149,6 +149,7 @@ exports.index = (req, res, next) => { | ||
149 | banner, | 149 | banner, |
150 | icons, | 150 | icons, |
151 | link, | 151 | link, |
152 | + | ||
152 | // url, | 153 | // url, |
153 | // param, | 154 | // param, |
154 | couponids = []; | 155 | couponids = []; |
@@ -398,6 +399,7 @@ exports.detail = (req, res) => { | @@ -398,6 +399,7 @@ exports.detail = (req, res) => { | ||
398 | 399 | ||
399 | exports.isLogin = (req, res, next) => { | 400 | exports.isLogin = (req, res, next) => { |
400 | // let refer = req.cookies.refer; | 401 | // let refer = req.cookies.refer; |
402 | + let url = req.get('referer') || '/activity/student/register'; | ||
401 | 403 | ||
402 | 404 | ||
403 | getPlatForm(req).then((yoho)=>{ | 405 | getPlatForm(req).then((yoho)=>{ |
@@ -415,8 +417,12 @@ exports.isLogin = (req, res, next) => { | @@ -415,8 +417,12 @@ exports.isLogin = (req, res, next) => { | ||
415 | // refer = '/activity/student/register'; | 417 | // refer = '/activity/student/register'; |
416 | // } | 418 | // } |
417 | 419 | ||
420 | + | ||
421 | + if (req.path === '/student/register' && !yoho.isStudent) { | ||
422 | + url = '/activity/student/register'; | ||
423 | + } | ||
418 | res.redirect(helpers.urlFormat('/signin.html', { | 424 | res.redirect(helpers.urlFormat('/signin.html', { |
419 | - refer: req.get('referer') || '/activity/student/register' | 425 | + refer: url |
420 | })); | 426 | })); |
421 | }).catch(next); | 427 | }).catch(next); |
422 | 428 |
doc/code-norm/README.md
deleted
100644 → 0
1 | -# 代码规范说明文档 | ||
2 | - | ||
3 | -开发前请务必仔细阅读,遵守规范,保持团队代码风格统一 | ||
4 | - | ||
5 | -## 文件命名 | ||
6 | -* 中划线分隔小写单词 | ||
7 | -* Ex: `your-file` | ||
8 | - | ||
9 | -## 缩进 | ||
10 | -* 统一4个Space | ||
11 | -* 建议将编辑器Tab映射成4个Space | ||
12 | - | ||
13 | -## 注释 | ||
14 | -* 为每个你创建的JS文件添加注释 | ||
15 | - | ||
16 | -``` | ||
17 | -/** | ||
18 | - * 对文件实现功能的描述 | ||
19 | - * @date: 2016-11-11 | ||
20 | - * @author: name<emial@yoho.cn> | ||
21 | - */ | ||
22 | -``` | ||
23 | - | ||
24 | -* 为重要的函数添加注释 | ||
25 | - | ||
26 | -``` | ||
27 | -/** | ||
28 | - * 对函数功能的说明 | ||
29 | - * @params name paramType 参数描述 | ||
30 | - * @return name returnType 返回值描述 | ||
31 | - */ | ||
32 | -``` | ||
33 | - | ||
34 | -* 为重要的代码、逻辑复杂的代码或者有特殊处理的代码添加注释 | ||
35 | - | ||
36 | -``` | ||
37 | -// Your comments for the code | ||
38 | -``` | ||
39 | -* 减少不必要的注释 | ||
40 | - 类似于:**进入循环**、**循环结束**等垃圾话的注释请谨慎添加,大家都是程序员,不用你注释也能知道的 | ||
41 | - | ||
42 | - | ||
43 | -## html | ||
44 | -* 见名知意,不要有1,2,3这种名字出现 | ||
45 | -* class、id等属性命名为中划线分隔小写单词 | ||
46 | -* html中请不要出现不必要的嵌套以及不要将标签滥用,比如使用`a`标签作为不跳转的按钮的标签 | ||
47 | -* 属性按顺序出现:`id -> class -> name -> data-* -> src,for,type,href -> title,alt -> aria-*,role` | ||
48 | - | ||
49 | -## js | ||
50 | -[Link](doc/code-norm/js.md) | ||
51 | - | ||
52 | -## css | ||
53 | -[Link](doc/code-norm/css.md) |
doc/code-norm/css.md
deleted
100644 → 0
1 | -# css代码规范 | ||
2 | - | ||
3 | -## 选择器 | ||
4 | -* 使用class进行样式匹配,而不是id和标签 | ||
5 | -* 尽量避免使用属性选择器 | ||
6 | -* 尽可能精确的元素定位 | ||
7 | - | ||
8 | -## 规则细节 | ||
9 | - | ||
10 | - .ele-header, /*规则1:每个选择器声明总是使用新的一行*/ | ||
11 | - .ele-body, | ||
12 | - .ele-footer { /*规则2:'{' 前需要添加1个空格*/ | ||
13 | - line-height: 1.2; /*规则3:样式声明以;结束,每个样式声明独占一行*/ | ||
14 | - font-weight: normal; /*规则4:属性声明的:后添加1个空格*/ | ||
15 | - margin: 0; /*规则5:属性值为0时不添加单位*/ | ||
16 | - background-color: #f3d; /*规则6:十六进制小写和缩写*/ | ||
17 | - } | ||
18 | - /*规则7:没组选择器声明之间适用一空行间隔*/ | ||
19 | - .ele2 { | ||
20 | - font-family: "open sans", arial, sans-serif; /*规则8:使用" ",而不是' '*/ | ||
21 | - padding: 0 1em 2em; /*规则9:适当缩写但不滥用*/ | ||
22 | - border-top: 1px; | ||
23 | - background-color: rgba(0,0,0,.5); /*规则10:颜色值rgba等中不需要增加空格,并且去除浮点数前面不必要的0*/ | ||
24 | - } | ||
25 | - | ||
26 | -## 声明顺序(不做强制要求,尽量实现) | ||
27 | -这是一个选择器内书写CSS属性顺序的大致轮廓,作为最佳实践,我们应该遵循以下顺序: | ||
28 | - | ||
29 | -* Position属性 (position,top,right,z-index...) | ||
30 | -* Box Model属性 (display,float,width...) | ||
31 | -* Typographic属性 (font,line-height,color,text-align...) | ||
32 | -* Visual属性 (background,border,border-radius...) | ||
33 | - | ||
34 | -因为Position属性可以是一个元素脱离正常的文本流并可以覆盖盒模型相关样式,所以Position排第一位。盒模型决定一个元素位置和大小紧跟其后。后面属性属于元素内部或不会对前两者产生影响的,排在后面。 | ||
35 | - | ||
36 | -完整属性顺序参考[Recsss](http://twitter.github.com/recess) | ||
37 | - | ||
38 | -## Sass风格 | ||
39 | -* 控制嵌套层级,禁止超过5层,尽量控制在3层以内 |
doc/code-norm/js.md
deleted
100644 → 0
1 | -# JavaScript代码规范 | ||
2 | - | ||
3 | -## 行的长度 | ||
4 | -每行长度不应该超过**120**个字符,如果一行多余120个字符,应该在一个运算符后换行,下一行增加**2**级缩进,即8个空格) | ||
5 | -``` | ||
6 | -doSomething(argument1, argument2, argument3, argument4, | ||
7 | - argument5); | ||
8 | -``` | ||
9 | -## 运算符间距 | ||
10 | -二元运算符前后必须使用一个空格保持表达式的整洁,操作符包括赋值运算符和逻辑运算符 | ||
11 | -``` | ||
12 | -var name = 'xuqi'; // GOOD | ||
13 | -var name='xuqi'; // BAD | ||
14 | -``` | ||
15 | -## 括号间距 | ||
16 | -当使用括号时,紧接左括号之后和紧接右括号之前不应该有空格。 | ||
17 | -``` | ||
18 | -doSomething(arg); // GODD | ||
19 | -doSomething( arg ); // BAD | ||
20 | -``` | ||
21 | -## 变量声明 | ||
22 | -* 所有变量在使用前应该先定义 | ||
23 | -* 变量定义应该放在函数开头 | ||
24 | -* 使用var,const,let表达式定义变量,每行定义一个 | ||
25 | -* 除了首行,所有行都应该多一层缩进使变量声明对齐 | ||
26 | -* 初始化的变量放在未初始化的变量之前 | ||
27 | -* 所有的变量命名必须使用英文单词 | ||
28 | -* 浮点变量必须指明实部(即便以0.开头)和小数点后一位 | ||
29 | - | ||
30 | -``` | ||
31 | -var name = 'xuqi', | ||
32 | - age, | ||
33 | - sex, | ||
34 | - ...; | ||
35 | - | ||
36 | -const $ = require('yoho.jquery'); | ||
37 | - | ||
38 | -let i; | ||
39 | -``` | ||
40 | - | ||
41 | -另外,晦涩的变量名最好给出注释,否则别人很难读懂接下来代码的意思。 | ||
42 | - | ||
43 | -## 函数声明 | ||
44 | -* 函数在使用前应该先定义 | ||
45 | -* 函数名和开始圆括号之间无空格(包括匿名函数的function关键字与圆括号之间) | ||
46 | -* 开始圆括号和结束圆括号之间无空格 | ||
47 | -* 参数名之间应该在逗号之后保留一个空格 | ||
48 | -* 开始花括号应该同function关键字保持同一行,结束圆括号和开始花括号之间应该保留一个空格 | ||
49 | -* 函数体保持一级缩进 | ||
50 | - | ||
51 | -``` | ||
52 | -function doSomething(arg1, arg2) { | ||
53 | - doThing1(); | ||
54 | - doThing2(); | ||
55 | -} | ||
56 | - | ||
57 | -const method = function() { | ||
58 | - doSomething(); | ||
59 | -}; | ||
60 | -``` | ||
61 | -另外,IIFE的标准格式也在这里指出: | ||
62 | -``` | ||
63 | -(function(args) { | ||
64 | - // | ||
65 | -}(args)); //(args)位于外层括号内 | ||
66 | -``` | ||
67 | - | ||
68 | -## 对象直接量 | ||
69 | -* 起始左括号应该与表达式保持一行 | ||
70 | -* 每个属性的键名前保持一个缩进,第一个属性应该在左括号后另一起行 | ||
71 | -* 每个属性的键名不包含引号,其后跟一个冒号(前无空格,后有空格),然后是值 | ||
72 | -* 如果属性值为函数,函数体应该在属性名之下另起一行,并且其前后均应保留一个空行 | ||
73 | -* 一组相关属性的前后插入空行以提高代码的可读性 | ||
74 | -* 结束的右括号独占一行 | ||
75 | - | ||
76 | -``` | ||
77 | -var person = { | ||
78 | - name: 'xuqi', | ||
79 | - age: 25, | ||
80 | - | ||
81 | - groupAttr1: xx1, | ||
82 | - groupAttr2: xx2, | ||
83 | - | ||
84 | - walk: function() { | ||
85 | - //your walk fn | ||
86 | - } | ||
87 | -}; | ||
88 | -``` | ||
89 | - | ||
90 | -* 当对象字面量作为函数参数时,起始括号应该与函数名同行 | ||
91 | - | ||
92 | -``` | ||
93 | -doSomething({ | ||
94 | - //do something | ||
95 | -}); | ||
96 | -``` | ||
97 | - | ||
98 | -## 命名 | ||
99 | -### 变量: | ||
100 | -* 采用小驼峰命名格式 | ||
101 | -* 变量命名为名词(区别函数) | ||
102 | -* 变量中不使用_ | ||
103 | - | ||
104 | -### 函数: | ||
105 | -* 采用小驼峰命名格式 | ||
106 | -* 函数命名为动词(区别变量) | ||
107 | -* 函数名中不使用_ | ||
108 | - | ||
109 | -### 构造函数: | ||
110 | -* 采用大驼峰命名格式 | ||
111 | -* 命名应该是名词 | ||
112 | - | ||
113 | -### 私有成员: | ||
114 | -* 一个对象中不希望外部访问的以下划线开头(约定) | ||
115 | - | ||
116 | -## 等号运算符 | ||
117 | -使用`===`和`!==`,禁止使用`==`和`!=` | ||
118 | - | ||
119 | -## undefined | ||
120 | -禁止使用`name === undefined`判断一个变量是否定义。应该使用`typeof(name) === 'undefined'`; | ||
121 | - | ||
122 | -## 常用语句规范 | ||
123 | -### if语句 | ||
124 | -``` | ||
125 | -if (condition) { | ||
126 | - doSomething(); | ||
127 | -} else if (condition1) { | ||
128 | - doSomething2(); | ||
129 | -} else { | ||
130 | - soOtherThing(); | ||
131 | -} | ||
132 | -``` | ||
133 | -### for语句 | ||
134 | -``` | ||
135 | -// GOOD | ||
136 | -var i; | ||
137 | -for (i = 0; i < len; i++) { | ||
138 | - doSomething(); | ||
139 | -} | ||
140 | -for (i in collection) { | ||
141 | - if (collection.hasOwnProperty(i)) { | ||
142 | - doSomething(); | ||
143 | - } | ||
144 | -} | ||
145 | - | ||
146 | -// BAD | ||
147 | -for (var i = 0; i < len; i++) { | ||
148 | - doSomething(); | ||
149 | -} | ||
150 | -for (i in collection) { | ||
151 | - doSomething(); | ||
152 | -} | ||
153 | -``` | ||
154 | -### while,do语句 | ||
155 | -``` | ||
156 | -while (condition) { | ||
157 | - doSomething(); | ||
158 | -} | ||
159 | - | ||
160 | -do { | ||
161 | - doSomething(); | ||
162 | -} while (condition) | ||
163 | -``` | ||
164 | - | ||
165 | -### switch语句 | ||
166 | -* 每一个case保持一个缩进 | ||
167 | -* 每一组语句都应该以break,return等结尾,或者用一行注释表示跳过(falling through) | ||
168 | -* 无default的情况也要注释特别说明 | ||
169 | - | ||
170 | -``` | ||
171 | -switch (val) { | ||
172 | - case 1: | ||
173 | - //nothing | ||
174 | - case 2: | ||
175 | - doSomething(); | ||
176 | - break; | ||
177 | - default: | ||
178 | - doDefault(); | ||
179 | -} | ||
180 | -``` | ||
181 | - | ||
182 | -### try语句 | ||
183 | -``` | ||
184 | -try { | ||
185 | - doSomething(); | ||
186 | -} catch (err) { | ||
187 | - doSomething2(); | ||
188 | -} finally { | ||
189 | - doSomething3(); | ||
190 | -} | ||
191 | -``` | ||
192 | - | ||
193 | -## 模块化规范 | ||
194 | -* 模块开头require加载所有依赖模块 | ||
195 | - | ||
196 | -``` | ||
197 | -var $ = require('yoho.jquery'), | ||
198 | - flip = require('../plugin/flip'); //普通文件 | ||
199 | - | ||
200 | -require('../plguin/login'); | ||
201 | -``` | ||
202 | - | ||
203 | -* 模块抛出接口应该给予注释说明功能和使用方法 |
doc/fake-data/h5/layout.md
deleted
100644 → 0
1 | var $ = require('yoho-jquery'); | 1 | var $ = require('yoho-jquery'); |
2 | var tip = require('../plugin/tip'); | 2 | var tip = require('../plugin/tip'); |
3 | var AsideSlider = require('./aslider'); | 3 | var AsideSlider = require('./aslider'); |
4 | -var yas = window._yas || { | ||
5 | - sendCustomInfo: function() {} | ||
6 | -}; | 4 | + |
5 | +// var yas = window._yas || { | ||
6 | +// sendCustomInfo: function() {} | ||
7 | +// }; | ||
7 | 8 | ||
8 | var STUDENTCOOKIES = 'STUDENTCOOKIES'; | 9 | var STUDENTCOOKIES = 'STUDENTCOOKIES'; |
9 | 10 | ||
@@ -400,12 +401,15 @@ $(document).on('click', '.s-submit', function() { | @@ -400,12 +401,15 @@ $(document).on('click', '.s-submit', function() { | ||
400 | data: obj.data | 401 | data: obj.data |
401 | }).then(function(data) { | 402 | }).then(function(data) { |
402 | if (+data.code === 200) { | 403 | if (+data.code === 200) { |
403 | - yas.sendCustomInfo({ | ||
404 | - EVENT: 'YB_STUDENT_ATTCT_SUBMIT', | ||
405 | - C_ID: C_ID, | ||
406 | - SRC_ID: 5, | ||
407 | - SUBMIT_RES: 1 | ||
408 | - }, false); | 404 | + if (window._yas && window._yas.sendCustomInfo) { |
405 | + window._yas.sendCustomInfo({ | ||
406 | + EVENT: 'YB_STUDENT_ATTCT_SUBMIT', | ||
407 | + C_ID: C_ID, | ||
408 | + SRC_ID: 5, | ||
409 | + SUBMIT_RES: 1 | ||
410 | + }, false); | ||
411 | + } | ||
412 | + | ||
409 | location.href = data.data; | 413 | location.href = data.data; |
410 | } else { | 414 | } else { |
411 | tip.show(data.message); | 415 | tip.show(data.message); |
@@ -421,13 +425,16 @@ $(document).on('click', '.s-submit', function() { | @@ -421,13 +425,16 @@ $(document).on('click', '.s-submit', function() { | ||
421 | } else { | 425 | } else { |
422 | FAILURE_CAUSE = 2; | 426 | FAILURE_CAUSE = 2; |
423 | } | 427 | } |
424 | - yas.sendCustomInfo({ | ||
425 | - EVENT: 'YB_STUDENT_ATTCT_SUBMIT', | ||
426 | - C_ID: C_ID, | ||
427 | - SRC_ID: 5, | ||
428 | - SUBMIT_RES: 2, | ||
429 | - FAILURE_CAUSE: FAILURE_CAUSE | ||
430 | - }, true); | 428 | + if (window._yas && window._yas.sendCustomInfo) { |
429 | + window._yas.sendCustomInfo({ | ||
430 | + EVENT: 'YB_STUDENT_ATTCT_SUBMIT', | ||
431 | + C_ID: C_ID, | ||
432 | + SRC_ID: 5, | ||
433 | + SUBMIT_RES: 2, | ||
434 | + FAILURE_CAUSE: FAILURE_CAUSE | ||
435 | + }, true); | ||
436 | + } | ||
437 | + | ||
431 | } | 438 | } |
432 | }); | 439 | }); |
433 | 440 | ||
@@ -447,8 +454,14 @@ $('#tb-is-read').change(function() { | @@ -447,8 +454,14 @@ $('#tb-is-read').change(function() { | ||
447 | 454 | ||
448 | 455 | ||
449 | // 埋点 学生认证-信息填写页面 | 456 | // 埋点 学生认证-信息填写页面 |
450 | -yas.sendCustomInfo({ | ||
451 | - EVENT: 'YB_STUDENT_ATTCT_INFO', | ||
452 | - C_ID: C_ID, | ||
453 | - SRC_ID: 5 | ||
454 | -}, true); | 457 | +setTimeout(function() { |
458 | + if (window._yas && window._yas.sendCustomInfo) { | ||
459 | + window._yas.sendCustomInfo({ | ||
460 | + EVENT: 'YB_STUDENT_ATTCT_INFO', | ||
461 | + C_ID: C_ID, | ||
462 | + SRC_ID: 5 | ||
463 | + }, true); | ||
464 | + } | ||
465 | +}, 2000); | ||
466 | + | ||
467 | + |
@@ -6,9 +6,6 @@ var $ = require('yoho-jquery'), | @@ -6,9 +6,6 @@ var $ = require('yoho-jquery'), | ||
6 | 6 | ||
7 | var _weChatInterface = '//m.yohobuy.com/life/getSignPackage', | 7 | var _weChatInterface = '//m.yohobuy.com/life/getSignPackage', |
8 | wx = window.wx, | 8 | wx = window.wx, |
9 | - yas = window.yas || { | ||
10 | - sendCustomInfo: function() {} | ||
11 | - }, | ||
12 | C_ID, | 9 | C_ID, |
13 | getChannel; | 10 | getChannel; |
14 | 11 | ||
@@ -199,22 +196,30 @@ if (typeof wx !== 'undefined') { | @@ -199,22 +196,30 @@ if (typeof wx !== 'undefined') { | ||
199 | wx.onMenuShareWeibo(shareData); | 196 | wx.onMenuShareWeibo(shareData); |
200 | }); | 197 | }); |
201 | } | 198 | } |
202 | -if ($('.s-verify-fail').size()) { | ||
203 | - yas.sendCustomInfo({ | ||
204 | - EVENT: 'YB_STUDENT_ATTCT_RESULT', | ||
205 | - C_ID: C_ID, | ||
206 | - SRC_ID: 5, | ||
207 | - ATTCT_RES: 1, | ||
208 | - FAILURE_CAUSE: '' | ||
209 | - }, true); | ||
210 | -} else { | ||
211 | - // 埋点 学生营销宣传首页 | ||
212 | - yas.sendCustomInfo({ | ||
213 | - EVENT: 'YB_STUDENT_HOME', | ||
214 | - C_ID: C_ID, | ||
215 | - SRC_ID: 1 | ||
216 | - }, true); | ||
217 | -} | 199 | + |
200 | +setTimeout(function() { | ||
201 | + if ($('.s-verify-fail').size()) { | ||
202 | + if (window._yas && window._yas.sendCustomInfo) { | ||
203 | + window._yas.sendCustomInfo({ | ||
204 | + EVENT: 'YB_STUDENT_ATTCT_RESULT', | ||
205 | + C_ID: C_ID, | ||
206 | + SRC_ID: 5, | ||
207 | + ATTCT_RES: 1, | ||
208 | + FAILURE_CAUSE: '' | ||
209 | + }, true); | ||
210 | + } | ||
211 | + } else { | ||
212 | + // 埋点 学生营销宣传首页 | ||
213 | + if (window._yas && window._yas.sendCustomInfo) { | ||
214 | + window._yas.sendCustomInfo({ | ||
215 | + EVENT: 'YB_STUDENT_HOME', | ||
216 | + C_ID: C_ID, | ||
217 | + SRC_ID: 1 | ||
218 | + }, true); | ||
219 | + } | ||
220 | + } | ||
221 | +}, 3000); | ||
222 | + | ||
218 | 223 | ||
219 | 224 | ||
220 | 225 | ||
@@ -234,9 +239,11 @@ $('.swiper-slide', '.banner-top').click(function() { | @@ -234,9 +239,11 @@ $('.swiper-slide', '.banner-top').click(function() { | ||
234 | F_INDEX: 1, | 239 | F_INDEX: 1, |
235 | I_INDEX: index | 240 | I_INDEX: index |
236 | }; | 241 | }; |
237 | - yas.sendCustomInfo(options, false); | 242 | + if (window._yas && window._yas.sendCustomInfo) { |
243 | + window._yas.sendCustomInfo(options, true); | ||
244 | + } | ||
238 | 245 | ||
239 | -// return false; | 246 | + // return false; |
240 | }); | 247 | }); |
241 | $('.s-activity', '.s-section').click(function() { | 248 | $('.s-activity', '.s-section').click(function() { |
242 | var options; | 249 | var options; |
@@ -253,7 +260,9 @@ $('.s-activity', '.s-section').click(function() { | @@ -253,7 +260,9 @@ $('.s-activity', '.s-section').click(function() { | ||
253 | F_INDEX: 3, | 260 | F_INDEX: 3, |
254 | I_INDEX: index | 261 | I_INDEX: index |
255 | }; | 262 | }; |
256 | - yas.sendCustomInfo(options, false); | 263 | + if (window._yas && window._yas.sendCustomInfo) { |
264 | + window._yas.sendCustomInfo(options, true); | ||
265 | + } | ||
257 | }); | 266 | }); |
258 | $('.good-info', '.goods-list').click(function() { | 267 | $('.good-info', '.goods-list').click(function() { |
259 | var options; | 268 | var options; |
@@ -270,5 +279,9 @@ $('.good-info', '.goods-list').click(function() { | @@ -270,5 +279,9 @@ $('.good-info', '.goods-list').click(function() { | ||
270 | F_INDEX: 4, | 279 | F_INDEX: 4, |
271 | I_INDEX: index | 280 | I_INDEX: index |
272 | }; | 281 | }; |
273 | - yas.sendCustomInfo(options, false); | 282 | + if (window._yas && window._yas.sendCustomInfo) { |
283 | + window._yas.sendCustomInfo(options, true); | ||
284 | + } | ||
274 | }); | 285 | }); |
286 | + | ||
287 | + |
-
Please register or login to post a comment