a31560d3cf5613d4bR1027">1027
+            // Gallery starts closing
1028
+            gallery.listen('close', function() {
1029
+                $('#mask-thump').hide();
1030
+            });
1031
+        })
1032
+    })
1033
+</script>
1034
+<script type="text/javascript" src="//res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
1035
+<script type="text/javascript" src="{% static 'pai2/js/jswe-0.0.4.js' %}"></script>
1036
+<script>
1037
+    V.initWxData({
1038
+        imgUrl: "http://pai.ai/static/pai2/img/paiai_96_96.png",
1039
+        link: 'http://pai.ai/w/o?r=http%3A%2F%2Fpai.ai%2Fp%2Floginqr',
1040
+        desc: "授权登录",
1041
+        title: "授权登录",
1042
+        timeLine: ""
1043
+    }, true);
1044
+    V.hideOptionMenu();
1045
+</script>
1046
+</body>
1047
+</html>

+ 1 - 0
page/urls.py

@@ -33,4 +33,5 @@ urlpatterns += [
33 33
 # 小程序相关
34 34
 urlpatterns += [
35 35
     url(r'^mini$', mini_views.mini_preview, name='mini_preview'),  #
36
+    url(r'^mini2$', mini_views.mini_preview2, name='mini_preview2'),  #
36 37
 ]

+ 1 - 1
pai2/urls.py

@@ -86,7 +86,7 @@ urlpatterns += [
86 86
     url(r'^uniapi/', include('django_uniapi.urls', namespace='uniapi')),
87 87
     url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
88 88
 
89
-    url(r'^p/', include('page.urls', namespace='shortpage')),
89
+    # url(r'^p/', include('page.urls', namespace='shortpage')),
90 90
     url(r'^page/', include('page.urls', namespace='page')),
91 91
 
92 92
     url(r'^w/', include('django_we.urls', namespace='shortwechat')),

+ 2 - 1
requirements_dj.txt

@@ -11,11 +11,12 @@ django-mobi2==1.0.2
11 11
 django-models-ext==1.1.6
12 12
 django-multidomain==1.1.4
13 13
 django-paginator2==1.0.4
14
+django-query==1.0.3
14 15
 django-redis-connector==1.0.1
15 16
 django-response==1.1.1
16 17
 django-rlog==1.0.7
17 18
 django-shortuuidfield==0.1.3
18 19
 django-six==1.0.4
19
-django-uniapi==1.0.4
20
+django-uniapi==1.0.5
20 21
 django-we==1.4.2
21 22
 djangorestframework==3.7.7

+ 2 - 2
requirements_pywe.txt

@@ -1,8 +1,8 @@
1 1
 pywe-jssdk==1.1.0
2 2
 pywe-membercard==1.0.0
3
-pywe-miniapp==1.0.2
3
+pywe-miniapp==1.1.0
4 4
 pywe-oauth==1.0.6
5
-pywe-pay==1.0.11
5
+pywe-pay==1.0.12
6 6
 pywe-pay-notify==1.0.4
7 7
 pywe-response==1.0.1
8 8
 pywe-sign==1.0.8

+ 77 - 0
utils/home_photo_utils.py

@@ -0,0 +1,77 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from __future__ import division
4
+
5
+import itertools
6
+
7
+from django.conf import settings
8
+from django.db import connection
9
+from django_query import get_query_value
10
+from paginator import pagination
11
+
12
+from group.models import GroupPhotoInfo
13
+from utils.qiniucdn import qiniu_file_url
14
+from utils.redis.rgroup import get_group_photo_thumbup_flag
15
+from utils.redis.rorder import get_lensman_order_record
16
+from utils.sql.raw import PAI2_HOME_API, PAI2_HOME_WX_API
17
+from utils.time_utils import origin_expired_stamps
18
+from utils.url_utils import share_url
19
+
20
+
21
+def get_home_photos(request):
22
+    user_id = get_query_value(request, 'user_id')
23
+    page = get_query_value(request, 'page', default=1, val_cast_func=int)
24
+    num = get_query_value(request, 'num', default=settings.PAI2_HOME_PER_PAGE, val_cast_func=int)
25
+
26
+    # 执行原生 SQL 语句,获取首页照片列表
27
+    cursor = connection.cursor()
28
+    cursor.execute((PAI2_HOME_WX_API if request.weixin else PAI2_HOME_API).format(
29
+        user_id=user_id,
30
+        offset=0,
31
+        rows=settings.PAI2_HOME_MAX_ROWS,
32
+    ))
33
+    rows = cursor.fetchall()
34
+
35
+    # 首页照片分页
36
+    rows, left = pagination(rows, page, num)
37
+
38
+    # 首页照片信息
39
+    rows = [{
40
+        'group_id': row[0],
41
+        'group_name': row[1],
42
+        'group_default_avatar': row[2],
43
+        'group_avatar': row[3],
44
+        'group_from': row[4],
45
+        'photo_id': row[5],
46
+        'photo_url': qiniu_file_url(row[6], bucket='watermark' if row[7] else 'photo'),
47
+        'photo_w': row[8],
48
+        'photo_h': row[9],
49
+        'photo_thumbnail_url': qiniu_file_url(row[10], bucket='thumbnail'),
50
+        'photo_thumbnail_w': row[11],
51
+        'photo_thumbnail_h': row[12],
52
+        'photo_thumbnail2_url': qiniu_file_url(row[13], bucket='thumbnail2'),
53
+        'photo_thumbnail2_w': row[14],
54
+        'photo_thumbnail2_h': row[15],
55
+        'photo_share_url': share_url(row[5]),  # Warning: Index of This Line is 5
56
+        'user_id': row[16],
57
+        'nickname': row[17],
58
+        'avatar': row[18],
59
+        'comment_num': row[19],
60
+        'thumbup_num': row[20],
61
+        'photo_from': row[21],
62
+        'session_id': row[22],
63
+        'nomark': row[23],
64
+        'origin': row[24],
65
+        'created_at': row[25],
66
+        'origin_expired_stamps': origin_expired_stamps(row[25], row[16]),
67
+        'thumbup': get_group_photo_thumbup_flag(row[5], user_id),
68
+        'porder': get_lensman_order_record(row[5], user_id) if row[21] == GroupPhotoInfo.SESSION_GROUP else {},
69
+        'display_payment_btn': row[21] == GroupPhotoInfo.SESSION_GROUP and row[27] not in [GroupPhotoInfo.OUTTAKE],
70
+        'longitude': row[28],
71
+        'latitude': row[29],
72
+        'location': row[30],
73
+    } for row in rows]
74
+
75
+    session_photos = map(lambda x: {'session_id': x[0], 'photos': list(x[1])}, itertools.groupby(rows, lambda x: x.get('session_id', '')))
76
+
77
+    return rows, session_photos, left

kodo - Gogs: Go Git Service

No Description

Brightcells: ac895ae2cd Add new api get_userinfo_api 9 years ago
account 42f466c0a5 Change to use django-ip to get client ip 9 years ago
api ac895ae2cd Add new api get_userinfo_api 9 years ago
geo 246a9ff4b8 Change to 'from utils.redis.connect import r' 9 years ago
group 90fd7187d8 file md5 9 years ago
message dd0d652498 Change to use 'from paginator import pagination' 9 years ago
miniapp ac895ae2cd Add new api get_userinfo_api 9 years ago
operation 96f741a814 Update upload_path 9 years ago
page 0a58248c81 Realize tour guide upload photo when auth in FE 9 years ago
pai2 ac895ae2cd Add new api get_userinfo_api 9 years ago
pay dd0d652498 Change to use 'from paginator import pagination' 9 years ago
photo 90fd7187d8 file md5 9 years ago
utils 435363c27a file md5 error 9 years ago
website 8263625d9c new website 10 years ago
wechat 2d6faa5600 Add WECHAT_OAUTH2_RETRY_REDIRECT_URI 9 years ago
.editorconfig 4defb80fdc gogs first init 10 years ago
.gitignore 2f29afecbd modify version in operation 10 years ago
.isort.cfg afcdf74a49 add api group_data_api 10 years ago
TODO.md d31ffaa118 Update TODO 9 years ago
check.sh 95c1d32792 put isort and pep8 in check.sh 10 years ago
isort.sh 6626af8a8d add api lensman_wx_authorize_api 9 years ago
manage.py fabef63211 set line_length=200 for isort 10 years ago
pep8.sh 4defb80fdc gogs first init 10 years ago
requirements.txt ac895ae2cd Add new api get_userinfo_api 9 years ago