@@ -2,6 +2,7 @@ |
||
2 | 2 |
|
3 | 3 |
from __future__ import division |
4 | 4 |
|
5 |
+from django.conf import settings |
|
5 | 6 |
from logit import logit |
6 | 7 |
|
7 | 8 |
from account.models import TourGuideInfo, UserInfo |
@@ -77,3 +78,13 @@ def tourguide_wx_authorize_api(request): |
||
77 | 78 |
set_profile_info(user) |
78 | 79 |
|
79 | 80 |
return response(200, 'Tour Guide Login Success', u'导游登录成功', user.data) |
81 |
+ |
|
82 |
+ |
|
83 |
+@logit |
|
84 |
+def tourguide_guest_login_api(request): |
|
85 |
+ try: |
|
86 |
+ user = UserInfo.objects.get(unionid=settings.PAI2_TOURGUIDE_GUEST_UNIONID, istourguide=True, status=True) |
|
87 |
+ except UserInfo.DoesNotExist: |
|
88 |
+ return response(TourGuideStatusCode.TOURGUIDE_NOT_FOUND) |
|
89 |
+ |
|
90 |
+ return response(200, 'Tour Guide Login Success', u'导游登录成功', user.data) |
@@ -26,7 +26,7 @@ def lensman_login_api(request): |
||
26 | 26 |
password = request.POST.get('password', '') |
27 | 27 |
|
28 | 28 |
try: |
29 |
- lensman = LensmanInfo.objects.get(username=username) |
|
29 |
+ lensman = LensmanInfo.objects.get(username=username, status=True) |
|
30 | 30 |
except LensmanInfo.DoesNotExist: |
31 | 31 |
return response(LensmanStatusCode.LENSMAN_NOT_FOUND) |
32 | 32 |
|
@@ -40,8 +40,10 @@ def lensman_login_api(request): |
||
40 | 40 |
|
41 | 41 |
@logit |
42 | 42 |
def user_is_registered_api(request): |
43 |
+ username = request.POST.get('username', '') |
|
44 |
+ |
|
43 | 45 |
return response(200, data={ |
44 |
- 'registered': UserInfo.objects.filter(username=request.POST.get('username', '')).exists(), |
|
46 |
+ 'registered': UserInfo.objects.filter(username=username).exists(), |
|
45 | 47 |
}) |
46 | 48 |
|
47 | 49 |
|
@@ -59,7 +61,7 @@ def user_signup_api(request): |
||
59 | 61 |
signup_ip, signup_at = client_ip(request), tc.utc_datetime() |
60 | 62 |
|
61 | 63 |
try: |
62 |
- user = UserInfo.objects.select_for_update().get(user_id=user_id) |
|
64 |
+ user = UserInfo.objects.select_for_update().get(user_id=user_id, status=True) |
|
63 | 65 |
except UserInfo.DoesNotExist: |
64 | 66 |
user = None |
65 | 67 |
|
@@ -92,7 +94,7 @@ def user_login_api(request): |
||
92 | 94 |
password = request.POST.get('password', '') |
93 | 95 |
|
94 | 96 |
try: |
95 |
- user = UserInfo.objects.select_for_update().get(username=username) |
|
97 |
+ user = UserInfo.objects.select_for_update().get(username=username, status=True) |
|
96 | 98 |
except UserInfo.DoesNotExist: |
97 | 99 |
return response(UserStatusCode.USER_NOT_FOUND) |
98 | 100 |
|
@@ -199,33 +201,8 @@ def user_wx_authorize_api(request): |
||
199 | 201 |
|
200 | 202 |
|
201 | 203 |
@logit |
202 |
-def guest_status_api(request): |
|
203 |
- """ 游客状态 """ |
|
204 |
- gen = get_guest_entrance_control() |
|
205 |
- |
|
206 |
- # 是否配置游客入口控制信息 |
|
207 |
- if not gen: |
|
208 |
- return response(UserStatusCode.GUEST_NOT_ALLOWED) |
|
209 |
- |
|
210 |
- # 平台校验 |
|
211 |
- platform = gen.get('platform', '') |
|
212 |
- if request.Android: |
|
213 |
- if platform not in [GuestEntranceControlInfo.ADR, GuestEntranceControlInfo.BOTH]: |
|
214 |
- return response(UserStatusCode.GUEST_NOT_ALLOWED) |
|
215 |
- else: |
|
216 |
- if platform not in [GuestEntranceControlInfo.IOS, GuestEntranceControlInfo.BOTH]: |
|
217 |
- return response(UserStatusCode.GUEST_NOT_ALLOWED) |
|
218 |
- |
|
219 |
- # 版本校验 |
|
220 |
- if not is_version_match(request, gen): |
|
221 |
- return response(UserStatusCode.GUEST_NOT_ALLOWED) |
|
222 |
- |
|
223 |
- return response(200, 'Guest Login Allowed', u'游客登录开启') |
|
224 |
- |
|
225 |
- |
|
226 |
-@logit |
|
227 | 204 |
@transaction.atomic |
228 |
-def guest_login_api(request): |
|
205 |
+def user_guest_login_api(request): |
|
229 | 206 |
""" 游客登录 """ |
230 | 207 |
gen = get_guest_entrance_control() |
231 | 208 |
|
@@ -25,8 +25,8 @@ urlpatterns = [ |
||
25 | 25 |
|
26 | 26 |
url(r'^u/wx/authorize$', account_views.user_wx_authorize_api, name='user_wx_authorize_api'), # 用户端 - 微信用户授权 |
27 | 27 |
|
28 |
- url(r'^u/guest/status$', account_views.guest_status_api, name='guest_status_api'), # 游客状态(是否开启) |
|
29 |
- url(r'^u/guest/login$', account_views.guest_login_api, name='guest_login_api'), # 游客登录 |
|
28 |
+ url(r'^u/guest/status$', op_views.guest_api, name='user_guest_status_api'), # 用户端 - 微游客状态(是否开启) |
|
29 |
+ url(r'^u/guest/login$', account_views.user_guest_login_api, name='user_guest_login_api'), # 用户端 - 微游客登录 |
|
30 | 30 |
] |
31 | 31 |
|
32 | 32 |
# 摄影师相关 |
@@ -50,6 +50,9 @@ urlpatterns += [ |
||
50 | 50 |
url(r'^t/submit$', tourguide_views.tourguide_submit_api, name='tourguide_submit_api'), # 导游信息提交 |
51 | 51 |
|
52 | 52 |
url(r'^t/wx/authorize$', tourguide_views.tourguide_wx_authorize_api, name='tourguide_wx_authorize_api'), # 导游端 - 微信用户授权 |
53 |
+ |
|
54 |
+ url(r'^t/guest/status$', op_views.guest_api, name='tourguide_guest_status_api'), # 游端 - 游客状态(是否开启) |
|
55 |
+ url(r'^t/guest/login$', tourguide_views.tourguide_guest_login_api, name='tourguide_guest_login_api'), # 游端 - 游客登录 |
|
53 | 56 |
] |
54 | 57 |
|
55 | 58 |
# 群组相关 |
@@ -136,6 +139,7 @@ urlpatterns += [ |
||
136 | 139 |
url(r'^op/upgrade$', op_views.upgrade_api, name='upgrade_api'), # APP 升级 |
137 | 140 |
url(r'^op/patch$', op_views.patch_api, name='patch_api'), # APP 补丁 |
138 | 141 |
url(r'^op/online$', op_views.online_api, name='online_api'), # 是否上线 |
142 |
+ url(r'^op/guest$', op_views.guest_api, name='guest_api'), # 游客状态(是否开启) |
|
139 | 143 |
url(r'^op/splash$', op_views.splash_api, name='splash_api'), # 启动页面 |
140 | 144 |
url(r'^op/feedback$', op_views.feedback_api, name='feedback_api'), # 用户反馈 |
141 | 145 |
url(r'^op/download$', op_views.download_api, name='download_api'), # 下载接口 |
@@ -25,13 +25,13 @@ def group_user_join_api(request): |
||
25 | 25 |
|
26 | 26 |
# 用户校验 |
27 | 27 |
try: |
28 |
- user = UserInfo.objects.get(user_id=user_id) |
|
28 |
+ user = UserInfo.objects.get(user_id=user_id, status=True) |
|
29 | 29 |
except UserInfo.DoesNotExist: |
30 | 30 |
return response(UserStatusCode.USER_NOT_FOUND) |
31 | 31 |
|
32 | 32 |
# 群组校验 |
33 | 33 |
try: |
34 |
- group = GroupInfo.objects.get(group_id=group_id) |
|
34 |
+ group = GroupInfo.objects.get(group_id=group_id, status=True) |
|
35 | 35 |
except GroupInfo.DoesNotExist: |
36 | 36 |
return response(GroupStatusCode.GROUP_NOT_FOUND) |
37 | 37 |
|
@@ -83,7 +83,7 @@ def group_user_remove_api(request): |
||
83 | 83 |
|
84 | 84 |
# 群组校验 |
85 | 85 |
try: |
86 |
- group = GroupInfo.objects.get(group_id=group_id) |
|
86 |
+ group = GroupInfo.objects.get(group_id=group_id, status=True) |
|
87 | 87 |
except GroupInfo.DoesNotExist: |
88 | 88 |
return response(GroupStatusCode.GROUP_NOT_FOUND) |
89 | 89 |
|
@@ -127,7 +127,7 @@ def group_user_quit_api(request): |
||
127 | 127 |
|
128 | 128 |
# 群组校验 |
129 | 129 |
try: |
130 |
- group = GroupInfo.objects.get(group_id=group_id) |
|
130 |
+ group = GroupInfo.objects.get(group_id=group_id, status=True) |
|
131 | 131 |
except GroupInfo.DoesNotExist: |
132 | 132 |
return response(GroupStatusCode.GROUP_NOT_FOUND) |
133 | 133 |
|
@@ -65,7 +65,7 @@ def lensman_login_api(request): |
||
65 | 65 |
password = request.POST.get('password', '') |
66 | 66 |
|
67 | 67 |
try: |
68 |
- lensman = LensmanInfo.objects.get(username=username) |
|
68 |
+ lensman = LensmanInfo.objects.get(username=username, status=True) |
|
69 | 69 |
except LensmanInfo.DoesNotExist: |
70 | 70 |
return response(LensmanStatusCode.LENSMAN_NOT_FOUND) |
71 | 71 |
|
@@ -73,7 +73,7 @@ def lensman_login_api(request): |
||
73 | 73 |
return response(LensmanStatusCode.LENSMAN_PASSWORD_ERROR) |
74 | 74 |
|
75 | 75 |
try: |
76 |
- user = UserInfo.objects.get(user_id=lensman.lensman_id) |
|
76 |
+ user = UserInfo.objects.get(user_id=lensman.lensman_id, status=True) |
|
77 | 77 |
except UserInfo.DoesNotExist: |
78 | 78 |
return response(LensmanStatusCode.LENSMAN_NOT_FOUND) |
79 | 79 |
|
@@ -122,7 +122,7 @@ def lensman_price_fix_api(request): |
||
122 | 122 |
|
123 | 123 |
# 用户校验 |
124 | 124 |
try: |
125 |
- lensman = LensmanInfo.objects.get(lensman_id=lensman_id) |
|
125 |
+ lensman = LensmanInfo.objects.get(lensman_id=lensman_id, status=True) |
|
126 | 126 |
except LensmanInfo.DoesNotExist: |
127 | 127 |
return response(UserStatusCode.USER_NOT_FOUND) |
128 | 128 |
|
@@ -151,7 +151,7 @@ def lensman_photo_upload_api(request): |
||
151 | 151 |
|
152 | 152 |
# 用户校验 |
153 | 153 |
try: |
154 |
- user = UserInfo.objects.get(user_id=user_id) |
|
154 |
+ user = UserInfo.objects.get(user_id=user_id, status=True) |
|
155 | 155 |
except UserInfo.DoesNotExist: |
156 | 156 |
return response(UserStatusCode.USER_NOT_FOUND) |
157 | 157 |
|
@@ -95,7 +95,7 @@ class GroupInfo(CreateUpdateMixin): |
||
95 | 95 |
} |
96 | 96 |
|
97 | 97 |
def users(self, admin=True, user_id=None): |
98 |
- all_users = GroupUserInfo.objects.filter(group_id=self.group_id, user_status__in=[GroupUserInfo.APPLYING, GroupUserInfo.PASSED]) |
|
98 |
+ all_users = GroupUserInfo.objects.filter(group_id=self.group_id, user_status__in=[GroupUserInfo.APPLYING, GroupUserInfo.PASSED], status=True) |
|
99 | 99 |
|
100 | 100 |
passed_users = all_users.filter(user_status=GroupUserInfo.PASSED) |
101 | 101 |
passed_count = passed_users.count() |
@@ -20,7 +20,7 @@ def tg_group_admin_list_api(request): |
||
20 | 20 |
if not is_group_admin(group_id, admin_id): |
21 | 21 |
return response(GroupStatusCode.NOT_GROUP_ADMIN) |
22 | 22 |
|
23 |
- admins = GroupUserInfo.objects.filter(group_id=group_id, subadmin=True) |
|
23 |
+ admins = GroupUserInfo.objects.filter(group_id=group_id, subadmin=True, status=True) |
|
24 | 24 |
admins = [admin.admin_info for admin in admins] |
25 | 25 |
|
26 | 26 |
return response(200, 'Get Tour Guide Group Admin List Success', u'获取旅行团管理员列表成功', { |
@@ -45,7 +45,7 @@ def tg_group_admin_recovery_api(request): |
||
45 | 45 |
return response(GroupStatusCode.ADMIN_CANNOT_HANDLE_SELF) |
46 | 46 |
|
47 | 47 |
try: |
48 |
- subadmin = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, subadmin=True) |
|
48 |
+ subadmin = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, subadmin=True, status=True) |
|
49 | 49 |
except GroupUserInfo.DoesNotExist: |
50 | 50 |
return response(GroupStatusCode.NOT_GROUP_SUBADMIN) |
51 | 51 |
|
@@ -63,7 +63,7 @@ def tg_group_admin_waiver_api(request): |
||
63 | 63 |
user_id = request.POST.get('user_id', '') |
64 | 64 |
|
65 | 65 |
try: |
66 |
- subadmin = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, subadmin=True) |
|
66 |
+ subadmin = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, subadmin=True, status=True) |
|
67 | 67 |
except GroupUserInfo.DoesNotExist: |
68 | 68 |
return response(GroupStatusCode.NOT_GROUP_SUBADMIN) |
69 | 69 |
|
@@ -541,10 +541,7 @@ def thumbup_cancel_api(request): |
||
541 | 541 |
) |
542 | 542 |
|
543 | 543 |
# 群组照片点赞列表 |
544 |
- photo_thumbups = PhotoThumbUpInfo.objects.filter( |
|
545 |
- photo_id=photo_id, |
|
546 |
- thumbup=True, |
|
547 |
- ) |
|
544 |
+ photo_thumbups = PhotoThumbUpInfo.objects.filter(photo_id=photo_id, thumbup=True, status=True) |
|
548 | 545 |
|
549 | 546 |
return response(200, 'Thumbup Cancel Success', u'点赞取消成功', { |
550 | 547 |
'thumbup': False, |
@@ -0,0 +1,19 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+from __future__ import unicode_literals |
|
3 |
+ |
|
4 |
+from django.db import models, migrations |
|
5 |
+ |
|
6 |
+ |
|
7 |
+class Migration(migrations.Migration): |
|
8 |
+ |
|
9 |
+ dependencies = [ |
|
10 |
+ ('message', '0007_auto_20160907_1740'), |
|
11 |
+ ] |
|
12 |
+ |
|
13 |
+ operations = [ |
|
14 |
+ migrations.AlterField( |
|
15 |
+ model_name='systemmessageinfo', |
|
16 |
+ name='src', |
|
17 |
+ field=models.IntegerField(default=0, help_text='\u6765\u6e90', db_index=True, verbose_name='src', choices=[(0, '\u62cd\u7231\u7528\u6237\u7aef'), (1, '\u62cd\u7231\u6444\u5f71\u5e08\u7aef'), (2, '\u62cd\u7231\u5bfc\u6e38\u7aef')]), |
|
18 |
+ ), |
|
19 |
+ ] |
@@ -6,7 +6,7 @@ from django.utils.translation import ugettext_lazy as _ |
||
6 | 6 |
from TimeConvert import TimeConvert as tc |
7 | 7 |
|
8 | 8 |
from group.models import GroupPhotoInfo |
9 |
-from pai2.basemodels import CreateUpdateMixin |
|
9 |
+from pai2.basemodels import CreateUpdateMixin, PaiaiSrcMixin |
|
10 | 10 |
|
11 | 11 |
|
12 | 12 |
class UserMessageInfo(CreateUpdateMixin): |
@@ -77,19 +77,10 @@ class UserMessageInfo(CreateUpdateMixin): |
||
77 | 77 |
} |
78 | 78 |
|
79 | 79 |
|
80 |
-class SystemMessageInfo(CreateUpdateMixin): |
|
81 |
- PAIAI_USER = 0 |
|
82 |
- PAIAI_LENSMAN = 1 |
|
83 |
- |
|
84 |
- SRC = ( |
|
85 |
- (PAIAI_USER, u'拍爱用户端'), |
|
86 |
- (PAIAI_LENSMAN, u'拍爱摄影师端'), |
|
87 |
- ) |
|
88 |
- |
|
80 |
+class SystemMessageInfo(CreateUpdateMixin, PaiaiSrcMixin): |
|
89 | 81 |
title = models.CharField(_(u'title'), max_length=255, help_text=u'系统消息标题') |
90 | 82 |
content = models.TextField(_(u'content'), blank=True, null=True, help_text=u'系统消息内容') |
91 | 83 |
url = models.CharField(_(u'url'), max_length=255, blank=True, null=True, help_text=u'系统消息链接') |
92 |
- src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'系统消息类别', db_index=True) |
|
93 | 84 |
|
94 | 85 |
class Meta: |
95 | 86 |
verbose_name = _('systemmessageinfo') |
@@ -104,7 +95,7 @@ class SystemMessageInfo(CreateUpdateMixin): |
||
104 | 95 |
'title': self.title, |
105 | 96 |
'content': self.content, |
106 | 97 |
'url': self.url, |
107 |
- 'read': SystemMessageReadInfo.objects.filter(user_id=user_id, msg_id=self.pk).exists(), |
|
98 |
+ 'read': SystemMessageReadInfo.objects.filter(user_id=user_id, msg_id=self.pk, status=True).exists(), |
|
108 | 99 |
} |
109 | 100 |
|
110 | 101 |
|
@@ -75,14 +75,14 @@ def message_type_read_api(request, msg_type=None): |
||
75 | 75 |
|
76 | 76 |
# 用户校验 |
77 | 77 |
try: |
78 |
- user = UserInfo.objects.get(user_id=user_id) |
|
78 |
+ user = UserInfo.objects.get(user_id=user_id, status=True) |
|
79 | 79 |
except UserInfo.DoesNotExist: |
80 | 80 |
return response(UserStatusCode.USER_NOT_FOUND) |
81 | 81 |
|
82 | 82 |
# 消息读取 |
83 | 83 |
if msg_type == UserMessageInfo.SYSTEM: |
84 | 84 |
if pk > 0: # 系统消息单个读取 |
85 |
- if not SystemMessageInfo.objects.filter(pk=pk).exists(): |
|
85 |
+ if not SystemMessageInfo.objects.filter(pk=pk, status=True).exists(): |
|
86 | 86 |
return response(MessageStatusCode.MESSAGE_NOT_FOUND) |
87 | 87 |
SystemMessageReadInfo.objects.get_or_create(user_id=user_id, msg_id=pk) |
88 | 88 |
if _all == 'true': # 系统消息全部读取 |
@@ -91,9 +91,9 @@ def message_type_read_api(request, msg_type=None): |
||
91 | 91 |
set_system_message_read_info(user_id) |
92 | 92 |
else: |
93 | 93 |
if pk > 0: # 用户(点赞/评论)消息单个读取 |
94 |
- UserMessageInfo.objects.filter(pk=pk, to_uid=user_id).update(read=True) |
|
94 |
+ UserMessageInfo.objects.filter(pk=pk, to_uid=user_id, status=True).update(read=True) |
|
95 | 95 |
if _all == 'true': # 用户消息(点赞/评论)全部读取 |
96 |
- UserMessageInfo.objects.filter(to_uid=user_id, msg_type=msg_type).update(read=True) |
|
96 |
+ UserMessageInfo.objects.filter(to_uid=user_id, msg_type=msg_type, status=True).update(read=True) |
|
97 | 97 |
|
98 | 98 |
return response(200, 'Read Message Success', u'已读消息成功') |
99 | 99 |
|
@@ -107,14 +107,14 @@ def message_type_delete_api(request, msg_type=None): |
||
107 | 107 |
|
108 | 108 |
# 用户校验 |
109 | 109 |
try: |
110 |
- user = UserInfo.objects.get(user_id=user_id) |
|
110 |
+ user = UserInfo.objects.get(user_id=user_id, status=True) |
|
111 | 111 |
except UserInfo.DoesNotExist: |
112 | 112 |
return response(UserStatusCode.USER_NOT_FOUND) |
113 | 113 |
|
114 | 114 |
# 消息删除 |
115 | 115 |
if msg_type == UserMessageInfo.SYSTEM: |
116 | 116 |
if pk > 0: # 系统消息单个删除 |
117 |
- if not SystemMessageInfo.objects.filter(pk=pk).exists(): |
|
117 |
+ if not SystemMessageInfo.objects.filter(pk=pk, status=True).exists(): |
|
118 | 118 |
return response(MessageStatusCode.MESSAGE_NOT_FOUND) |
119 | 119 |
SystemMessageDeleteInfo.objects.get_or_create(user_id=user_id, msg_id=pk) |
120 | 120 |
if _all == 'true': # 系统消息全部删除 |
@@ -123,8 +123,8 @@ def message_type_delete_api(request, msg_type=None): |
||
123 | 123 |
set_system_message_delete_info(user_id) |
124 | 124 |
else: |
125 | 125 |
if pk > 0: # 用户(点赞/评论)消息单个删除 |
126 |
- UserMessageInfo.objects.filter(pk=pk, to_uid=user_id).update(status=False) |
|
126 |
+ UserMessageInfo.objects.filter(pk=pk, to_uid=user_id, status=True).update(status=False) |
|
127 | 127 |
if _all == 'true': # 用户消息(点赞/评论)全部删除 |
128 |
- UserMessageInfo.objects.filter(to_uid=user_id, msg_type=msg_type).update(status=False) |
|
128 |
+ UserMessageInfo.objects.filter(to_uid=user_id, msg_type=msg_type, status=True).update(status=False) |
|
129 | 129 |
|
130 | 130 |
return response(200, 'Delete Message Success', u'消息删除成功') |
@@ -120,7 +120,8 @@ class FeedbackInfoAdmin(admin.ModelAdmin): |
||
120 | 120 |
|
121 | 121 |
|
122 | 122 |
class GuestEntranceControlInfoAdmin(admin.ModelAdmin): |
123 |
- list_display = ('platform', 'min_adr', 'max_adr', 'min_ios', 'max_ios', 'status', 'created_at', 'updated_at') |
|
123 |
+ list_display = ('platform', 'min_adr', 'max_adr', 'min_ios', 'max_ios', 'src', 'status', 'created_at', 'updated_at') |
|
124 |
+ list_filter = ('src', 'status') |
|
124 | 125 |
actions = None |
125 | 126 |
|
126 | 127 |
def save_model(self, request, obj, form, change): |
@@ -0,0 +1,44 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+from __future__ import unicode_literals |
|
3 |
+ |
|
4 |
+from django.db import models, migrations |
|
5 |
+ |
|
6 |
+ |
|
7 |
+class Migration(migrations.Migration): |
|
8 |
+ |
|
9 |
+ dependencies = [ |
|
10 |
+ ('operation', '0010_auto_20170308_2242'), |
|
11 |
+ ] |
|
12 |
+ |
|
13 |
+ operations = [ |
|
14 |
+ migrations.AddField( |
|
15 |
+ model_name='appsettingsinfo', |
|
16 |
+ name='src', |
|
17 |
+ field=models.IntegerField(default=0, help_text='\u6765\u6e90', db_index=True, verbose_name='src', choices=[(0, '\u62cd\u7231\u7528\u6237\u7aef'), (1, '\u62cd\u7231\u6444\u5f71\u5e08\u7aef'), (2, '\u62cd\u7231\u5bfc\u6e38\u7aef')]), |
|
18 |
+ ), |
|
19 |
+ migrations.AddField( |
|
20 |
+ model_name='guestentrancecontrolinfo', |
|
21 |
+ name='src', |
|
22 |
+ field=models.IntegerField(default=0, help_text='\u6765\u6e90', db_index=True, verbose_name='src', choices=[(0, '\u62cd\u7231\u7528\u6237\u7aef'), (1, '\u62cd\u7231\u6444\u5f71\u5e08\u7aef'), (2, '\u62cd\u7231\u5bfc\u6e38\u7aef')]), |
|
23 |
+ ), |
|
24 |
+ migrations.AlterField( |
|
25 |
+ model_name='feedbackinfo', |
|
26 |
+ name='src', |
|
27 |
+ field=models.IntegerField(default=0, help_text='\u6765\u6e90', db_index=True, verbose_name='src', choices=[(0, '\u62cd\u7231\u7528\u6237\u7aef'), (1, '\u62cd\u7231\u6444\u5f71\u5e08\u7aef'), (2, '\u62cd\u7231\u5bfc\u6e38\u7aef')]), |
|
28 |
+ ), |
|
29 |
+ migrations.AlterField( |
|
30 |
+ model_name='latestappinfo', |
|
31 |
+ name='src', |
|
32 |
+ field=models.IntegerField(default=0, help_text='\u6765\u6e90', db_index=True, verbose_name='src', choices=[(0, '\u62cd\u7231\u7528\u6237\u7aef'), (1, '\u62cd\u7231\u6444\u5f71\u5e08\u7aef'), (2, '\u62cd\u7231\u5bfc\u6e38\u7aef')]), |
|
33 |
+ ), |
|
34 |
+ migrations.AlterField( |
|
35 |
+ model_name='patchinfo', |
|
36 |
+ name='src', |
|
37 |
+ field=models.IntegerField(default=0, help_text='\u6765\u6e90', db_index=True, verbose_name='src', choices=[(0, '\u62cd\u7231\u7528\u6237\u7aef'), (1, '\u62cd\u7231\u6444\u5f71\u5e08\u7aef'), (2, '\u62cd\u7231\u5bfc\u6e38\u7aef')]), |
|
38 |
+ ), |
|
39 |
+ migrations.AlterField( |
|
40 |
+ model_name='splashinfo', |
|
41 |
+ name='src', |
|
42 |
+ field=models.IntegerField(default=0, help_text='\u6765\u6e90', db_index=True, verbose_name='src', choices=[(0, '\u62cd\u7231\u7528\u6237\u7aef'), (1, '\u62cd\u7231\u6444\u5f71\u5e08\u7aef'), (2, '\u62cd\u7231\u5bfc\u6e38\u7aef')]), |
|
43 |
+ ), |
|
44 |
+ ] |
@@ -6,7 +6,7 @@ from django.db import models |
||
6 | 6 |
from django.utils.translation import ugettext_lazy as _ |
7 | 7 |
from TimeConvert import TimeConvert as tc |
8 | 8 |
|
9 |
-from pai2.basemodels import CreateUpdateMixin, PlatformMixin, VersionMixin |
|
9 |
+from pai2.basemodels import CreateUpdateMixin, PaiaiSrcMixin, PlatformMixin, VersionMixin |
|
10 | 10 |
from utils.url_utils import upload_file_url |
11 | 11 |
|
12 | 12 |
|
@@ -18,17 +18,7 @@ def upload_path(instance, old_filename): |
||
18 | 18 |
) |
19 | 19 |
|
20 | 20 |
|
21 |
-class LatestAppInfo(CreateUpdateMixin): |
|
22 |
- PAIAI_USER = 0 |
|
23 |
- PAIAI_LENSMAN = 1 |
|
24 |
- PAIAI_TOURGUIDE = 2 |
|
25 |
- |
|
26 |
- SRC = ( |
|
27 |
- (PAIAI_USER, u'拍爱用户端'), |
|
28 |
- (PAIAI_LENSMAN, u'拍爱摄影师端'), |
|
29 |
- (PAIAI_TOURGUIDE, u'拍爱导游端'), |
|
30 |
- ) |
|
31 |
- |
|
21 |
+class LatestAppInfo(CreateUpdateMixin, PaiaiSrcMixin): |
|
32 | 22 |
latest_adr_version_code = models.IntegerField(_(u'latest_adr_version_code'), default=0, help_text=u'最新安卓版本号') |
33 | 23 |
latest_adr_version_name = models.CharField(_(u'latest_adr_version_name'), max_length=255, blank=True, null=True, help_text=u'最新安卓版本名') |
34 | 24 |
latest_adr_app = models.FileField(_(u'latest_adr_app'), upload_to=upload_path, blank=True, null=True, help_text=u'最新版安卓 APP') |
@@ -38,8 +28,6 @@ class LatestAppInfo(CreateUpdateMixin): |
||
38 | 28 |
latest_ios_version_name = models.CharField(_(u'latest_ios_version_name'), max_length=255, blank=True, null=True, help_text=u'最新 iOS 版本名') |
39 | 29 |
latest_ios_url = models.URLField(_(u'latest_ios_url'), max_length=255, blank=True, null=True, help_text=u'最新版 iOS 链接') |
40 | 30 |
|
41 |
- src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'最新版来源', db_index=True) |
|
42 |
- |
|
43 | 31 |
class Meta: |
44 | 32 |
verbose_name = _('latestappinfo') |
45 | 33 |
verbose_name_plural = _('latestappinfo') |
@@ -63,22 +51,10 @@ class LatestAppInfo(CreateUpdateMixin): |
||
63 | 51 |
} |
64 | 52 |
|
65 | 53 |
|
66 |
-class PatchInfo(CreateUpdateMixin, PlatformMixin): |
|
67 |
- PAIAI_USER = 0 |
|
68 |
- PAIAI_LENSMAN = 1 |
|
69 |
- PAIAI_TOURGUIDE = 2 |
|
70 |
- |
|
71 |
- SRC = ( |
|
72 |
- (PAIAI_USER, u'拍爱用户端'), |
|
73 |
- (PAIAI_LENSMAN, u'拍爱摄影师端'), |
|
74 |
- (PAIAI_TOURGUIDE, u'拍爱导游端'), |
|
75 |
- ) |
|
76 |
- |
|
54 |
+class PatchInfo(CreateUpdateMixin, PlatformMixin, PaiaiSrcMixin): |
|
77 | 55 |
version = models.CharField(_(u'version'), max_length=255, blank=True, null=True, help_text=u'版本(1.0.0)') |
78 | 56 |
patch = models.FileField(_(u'patch'), upload_to=upload_path, blank=True, null=True, help_text=u'补丁') |
79 | 57 |
|
80 |
- src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'最新版来源', db_index=True) |
|
81 |
- |
|
82 | 58 |
class Meta: |
83 | 59 |
verbose_name = _('patchinfo') |
84 | 60 |
verbose_name_plural = _('patchinfo') |
@@ -97,7 +73,7 @@ class PatchInfo(CreateUpdateMixin, PlatformMixin): |
||
97 | 73 |
} |
98 | 74 |
|
99 | 75 |
|
100 |
-class APPSettingsInfo(CreateUpdateMixin, PlatformMixin): |
|
76 |
+class APPSettingsInfo(CreateUpdateMixin, PlatformMixin, PaiaiSrcMixin): |
|
101 | 77 |
channel = models.CharField(_(u'channel'), max_length=255, blank=True, null=True, help_text=u'渠道') |
102 | 78 |
version = models.CharField(_(u'version'), max_length=255, blank=True, null=True, help_text=u'版本(1.0.0)') |
103 | 79 |
|
@@ -117,21 +93,10 @@ class APPSettingsInfo(CreateUpdateMixin, PlatformMixin): |
||
117 | 93 |
} |
118 | 94 |
|
119 | 95 |
|
120 |
-class SplashInfo(CreateUpdateMixin): |
|
121 |
- PAIAI_USER = 0 |
|
122 |
- PAIAI_LENSMAN = 1 |
|
123 |
- PAIAI_TOURGUIDE = 2 |
|
124 |
- |
|
125 |
- SRC = ( |
|
126 |
- (PAIAI_USER, u'拍爱用户端'), |
|
127 |
- (PAIAI_LENSMAN, u'拍爱摄影师端'), |
|
128 |
- (PAIAI_TOURGUIDE, u'拍爱导游端'), |
|
129 |
- ) |
|
130 |
- |
|
96 |
+class SplashInfo(CreateUpdateMixin, PaiaiSrcMixin): |
|
131 | 97 |
splash_image = models.ImageField(_(u'splash_image'), upload_to=upload_path, blank=True, null=True, help_text=u'启动页面图片') |
132 | 98 |
spalash_image_airtime = models.DateTimeField(_(u'spalash_image_airtime'), blank=True, null=True, help_text=u'启动页面图片开始日期') |
133 | 99 |
spalash_image_deadline = models.DateTimeField(_(u'spalash_image_deadline'), blank=True, null=True, help_text=u'启动页面图片截止日期') |
134 |
- src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'启动页面来源', db_index=True) |
|
135 | 100 |
|
136 | 101 |
class Meta: |
137 | 102 |
verbose_name = _('splashinfo') |
@@ -153,20 +118,9 @@ class SplashInfo(CreateUpdateMixin): |
||
153 | 118 |
} |
154 | 119 |
|
155 | 120 |
|
156 |
-class FeedbackInfo(CreateUpdateMixin): |
|
157 |
- PAIAI_USER = 0 |
|
158 |
- PAIAI_LENSMAN = 1 |
|
159 |
- PAIAI_TOURGUIDE = 2 |
|
160 |
- |
|
161 |
- SRC = ( |
|
162 |
- (PAIAI_USER, u'拍爱用户端'), |
|
163 |
- (PAIAI_LENSMAN, u'拍爱摄影师端'), |
|
164 |
- (PAIAI_TOURGUIDE, u'拍爱导游端'), |
|
165 |
- ) |
|
166 |
- |
|
121 |
+class FeedbackInfo(CreateUpdateMixin, PaiaiSrcMixin): |
|
167 | 122 |
user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识') |
168 | 123 |
feedback = models.TextField(_(u'feedback'), blank=True, null=True, help_text=u'用户反馈') |
169 |
- src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'用户反馈来源', db_index=True) |
|
170 | 124 |
|
171 | 125 |
class Meta: |
172 | 126 |
verbose_name = _('feedbackinfo') |
@@ -176,7 +130,7 @@ class FeedbackInfo(CreateUpdateMixin): |
||
176 | 130 |
return u'{0.pk}'.format(self) |
177 | 131 |
|
178 | 132 |
|
179 |
-class GuestEntranceControlInfo(CreateUpdateMixin, PlatformMixin, VersionMixin): |
|
133 |
+class GuestEntranceControlInfo(CreateUpdateMixin, PlatformMixin, VersionMixin, PaiaiSrcMixin): |
|
180 | 134 |
|
181 | 135 |
class Meta: |
182 | 136 |
verbose_name = _('guestentrancecontrolinfo') |
@@ -5,12 +5,14 @@ from django.shortcuts import redirect |
||
5 | 5 |
from logit import logit |
6 | 6 |
|
7 | 7 |
from account.models import UserInfo |
8 |
-from operation.models import FeedbackInfo, LatestAppInfo, SplashInfo |
|
8 |
+from operation.models import FeedbackInfo, GuestEntranceControlInfo, LatestAppInfo, SplashInfo |
|
9 | 9 |
from utils.error.errno_utils import UserStatusCode |
10 | 10 |
from utils.error.response_utils import response |
11 | 11 |
from utils.redis.rapp import get_latest_app |
12 |
+from utils.redis.rguest import get_guest_entrance_control |
|
12 | 13 |
from utils.redis.rpatch import get_app_patch_info |
13 | 14 |
from utils.redis.rsettings import get_app_settings_info |
15 |
+from utils.version_utils import is_version_match |
|
14 | 16 |
|
15 | 17 |
|
16 | 18 |
@logit |
@@ -67,6 +69,33 @@ def online_api(request): |
||
67 | 69 |
|
68 | 70 |
|
69 | 71 |
@logit |
72 |
+def guest_api(request): |
|
73 |
+ """ 游客状态 """ |
|
74 |
+ src = int(request.POST.get('src', 0)) |
|
75 |
+ |
|
76 |
+ gen = get_guest_entrance_control(src) |
|
77 |
+ |
|
78 |
+ # 是否配置游客入口控制信息 |
|
79 |
+ if not gen: |
|
80 |
+ return response(UserStatusCode.GUEST_NOT_ALLOWED) |
|
81 |
+ |
|
82 |
+ # 平台校验 |
|
83 |
+ platform = gen.get('platform', '') |
|
84 |
+ if request.Android: |
|
85 |
+ if platform not in [GuestEntranceControlInfo.ADR, GuestEntranceControlInfo.BOTH]: |
|
86 |
+ return response(UserStatusCode.GUEST_NOT_ALLOWED) |
|
87 |
+ else: |
|
88 |
+ if platform not in [GuestEntranceControlInfo.IOS, GuestEntranceControlInfo.BOTH]: |
|
89 |
+ return response(UserStatusCode.GUEST_NOT_ALLOWED) |
|
90 |
+ |
|
91 |
+ # 版本校验 |
|
92 |
+ if not is_version_match(request, gen): |
|
93 |
+ return response(UserStatusCode.GUEST_NOT_ALLOWED) |
|
94 |
+ |
|
95 |
+ return response(200, 'Guest Login Allowed', u'游客登录开启') |
|
96 |
+ |
|
97 |
+ |
|
98 |
+@logit |
|
70 | 99 |
def splash_api(request): |
71 | 100 |
""" 启动页面 """ |
72 | 101 |
src = int(request.POST.get('src', 0)) |
@@ -86,7 +115,7 @@ def feedback_api(request): |
||
86 | 115 |
feedback = request.POST.get('feedback', '') |
87 | 116 |
src = int(request.POST.get('src', 0)) |
88 | 117 |
|
89 |
- if not UserInfo.objects.filter(user_id=user_id).exists(): |
|
118 |
+ if not UserInfo.objects.filter(user_id=user_id, status=True).exists(): |
|
90 | 119 |
return response(UserStatusCode.USER_NOT_FOUND) |
91 | 120 |
|
92 | 121 |
FeedbackInfo.objects.create( |
@@ -110,6 +139,7 @@ def download_api(request): |
||
110 | 139 |
elif src == LatestAppInfo.PAIAI_TOURGUIDE: |
111 | 140 |
wx_url = settings.PAI2_TOURGUIDE_DOWNLOAD_WX_URL |
112 | 141 |
return redirect(wx_url) |
142 |
+ |
|
113 | 143 |
if request.iOS: |
114 | 144 |
if src == LatestAppInfo.PAIAI_USER: |
115 | 145 |
ios_url = settings.PAI2_USER_DOWNLOAD_IOS_URL |
@@ -118,4 +148,5 @@ def download_api(request): |
||
118 | 148 |
elif src == LatestAppInfo.PAIAI_TOURGUIDE: |
119 | 149 |
ios_url = settings.PAI2_TOURGUIDE_DOWNLOAD_IOS_URL |
120 | 150 |
return redirect(ios_url) |
151 |
+ |
|
121 | 152 |
return redirect(get_latest_app(src).get('latest_adr_url', '')) |
@@ -56,3 +56,20 @@ class VersionMixin(models.Model): |
||
56 | 56 |
|
57 | 57 |
class Meta: |
58 | 58 |
abstract = True |
59 |
+ |
|
60 |
+ |
|
61 |
+class PaiaiSrcMixin(models.Model): |
|
62 |
+ PAIAI_USER = 0 |
|
63 |
+ PAIAI_LENSMAN = 1 |
|
64 |
+ PAIAI_TOURGUIDE = 2 |
|
65 |
+ |
|
66 |
+ SRC = ( |
|
67 |
+ (PAIAI_USER, u'拍爱用户端'), |
|
68 |
+ (PAIAI_LENSMAN, u'拍爱摄影师端'), |
|
69 |
+ (PAIAI_TOURGUIDE, u'拍爱导游端'), |
|
70 |
+ ) |
|
71 |
+ |
|
72 |
+ src = models.IntegerField(_(u'src'), choices=SRC, default=PAIAI_USER, help_text=u'来源', db_index=True) |
|
73 |
+ |
|
74 |
+ class Meta: |
|
75 |
+ abstract = True |
@@ -292,7 +292,7 @@ PAI2_TOURGUIDE_DOWNLOAD_IOS_URL = 'https://pai.ai' |
||
292 | 292 |
GROUP_PER_PAGE = 20 # 群组每页数量 |
293 | 293 |
|
294 | 294 |
# 游客设置 |
295 |
-GUEST_USER_ID = 'guest' |
|
295 |
+PAI2_TOURGUIDE_GUEST_UNIONID = 'oCGajv3Slxef2RuM4Sr-S2jTZwD4' |
|
296 | 296 |
|
297 | 297 |
# 版本设置 |
298 | 298 |
MIN_VERSION = '0.0.0' |
@@ -37,7 +37,7 @@ def wx_order_create_api(request): |
||
37 | 37 |
|
38 | 38 |
# 群组照片校验 |
39 | 39 |
try: |
40 |
- group_photo = GroupPhotoInfo.objects.get(pk=photo_id) |
|
40 |
+ group_photo = GroupPhotoInfo.objects.get(pk=photo_id, status=True) |
|
41 | 41 |
except GroupPhotoInfo.DoesNotExist: |
42 | 42 |
return response(GroupPhotoStatusCode.GROUP_PHOTO_NOT_FOUND) |
43 | 43 |
|
@@ -238,7 +238,7 @@ def wx_order_detail_api(request): |
||
238 | 238 |
order_id = request.POST.get('order_id', '') |
239 | 239 |
|
240 | 240 |
try: |
241 |
- order = OrderInfo.objects.get(order_id=order_id) |
|
241 |
+ order = OrderInfo.objects.get(order_id=order_id, status=True) |
|
242 | 242 |
except OrderInfo.DoesNotExist: |
243 | 243 |
return response(OrderStatusCode.WX_ORDER_NOT_FOUND) |
244 | 244 |
|
@@ -152,7 +152,7 @@ def session_join_api(request): |
||
152 | 152 |
r.sadd(GROUP_USERS_PASSED_SET % group_id, user_id) |
153 | 153 |
|
154 | 154 |
# 获取 Session 照片 |
155 |
- photos = PhotosInfo.objects.filter(session_id=session_id) |
|
155 |
+ photos = PhotosInfo.objects.filter(session_id=session_id, status=True) |
|
156 | 156 |
|
157 | 157 |
# |
158 | 158 |
if group_created: |
@@ -205,7 +205,7 @@ def session_join_api(request): |
||
205 | 205 |
|
206 | 206 |
@logit |
207 | 207 |
def session_detail(request, session_id): |
208 |
- photos = PhotosInfo.objects.filter(session_id=session_id) |
|
208 |
+ photos = PhotosInfo.objects.filter(session_id=session_id, status=True) |
|
209 | 209 |
return render(request, 'photo/session_detail.html', {'photos': photos}) |
210 | 210 |
|
211 | 211 |
|
@@ -1,17 +1,14 @@ |
||
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
|
3 |
-from operation.models import LatestAppInfo |
|
4 | 3 |
from utils.redis.connect import r |
5 | 4 |
from utils.redis.rkeys import LATEST_APP_INFO |
6 | 5 |
|
7 | 6 |
|
8 |
-# 最新 APP 相关 |
|
9 |
- |
|
10 |
- |
|
11 | 7 |
def set_latest_app(src=0): |
12 | 8 |
""" 设置最新 APP 信息 """ |
9 |
+ from operation.models import LatestAppInfo |
|
13 | 10 |
try: |
14 |
- appinfo = LatestAppInfo.objects.filter(src=src)[0].data |
|
11 |
+ appinfo = LatestAppInfo.objects.filter(src=src, status=True)[0].data |
|
15 | 12 |
except IndexError: |
16 | 13 |
appinfo = {} |
17 | 14 |
r.setjson(LATEST_APP_INFO % src, appinfo) |
@@ -7,9 +7,6 @@ from utils.redis.connect import r |
||
7 | 7 |
from utils.redis.rkeys import TODAY_INCOME, TOTAL_INCOME, WEEK_INCOME, WEEK_SOLD |
8 | 8 |
|
9 | 9 |
|
10 |
-# 简报相关 |
|
11 |
- |
|
12 |
- |
|
13 | 10 |
def set_brief_info(uid, ptype, fee, dt=None): |
14 | 11 |
""" 更新简报信息 """ |
15 | 12 |
ymd, week = (tc.local_string(tc.to_local_datetime(dt), format='%Y%m%d'), Week.withdate(dt)) if dt else (tc.local_string(format='%Y%m%d'), Week.thisweek().isoformat()) |
@@ -43,10 +43,10 @@ def retrieve_group_user_status(): |
||
43 | 43 |
def retrieve_group_photo_watchers(): |
44 | 44 |
group_photos = GroupPhotoInfo.objects.filter(status=True) |
45 | 45 |
for group_photo in group_photos: |
46 |
- photo_comments = PhotoCommentInfo.objects.filter(photo_id=group_photo.pk) |
|
46 |
+ photo_comments = PhotoCommentInfo.objects.filter(photo_id=group_photo.pk, status=True) |
|
47 | 47 |
for photo_comment in photo_comments: |
48 | 48 |
r.sadd(GROUP_PHOTO_WATCHER_SET % group_photo.pk, photo_comment.user_id) |
49 |
- photo_thumbups = PhotoThumbUpInfo.objects.filter(photo_id=group_photo.pk) |
|
49 |
+ photo_thumbups = PhotoThumbUpInfo.objects.filter(photo_id=group_photo.pk, status=True) |
|
50 | 50 |
for photo_thumbup in photo_thumbups: |
51 | 51 |
r.sadd(GROUP_PHOTO_WATCHER_SET % group_photo.pk, photo_thumbup.user_id) |
52 | 52 |
|
@@ -8,14 +8,10 @@ from utils.redis.rkeys import (GROUP_INFO, GROUP_PHOTO_COMMENT_LIST, GROUP_PHOTO |
||
8 | 8 |
GROUP_USERS_KV_INFO) |
9 | 9 |
|
10 | 10 |
|
11 |
-# 群组信息相关 |
|
12 |
- |
|
13 |
- |
|
14 | 11 |
def set_group_info(group): |
15 | 12 |
""" 设置群组信息 """ |
16 |
- group_data = group.data |
|
17 |
- r.setexjson(GROUP_INFO % group.group_id, r.REDIS_EXPIRED_ONE_MONTH, group_data, cls=DjangoJSONEncoder) |
|
18 |
- return group_data |
|
13 |
+ r.setexjson(GROUP_INFO % group.group_id, r.REDIS_EXPIRED_ONE_MONTH, group.data, cls=DjangoJSONEncoder) |
|
14 |
+ return group.data |
|
19 | 15 |
|
20 | 16 |
|
21 | 17 |
def set_group_info_by_id(group_id): |
@@ -107,19 +103,19 @@ def get_group_photo_thumbup_flag(photo_id, user_id): |
||
107 | 103 |
""" 获取群组照片用户点赞标识信息 """ |
108 | 104 |
if r.exists(GROUP_PHOTO_THUMB_UP % (photo_id, user_id)): |
109 | 105 |
return True |
110 |
- else: |
|
111 |
- from group.models import PhotoThumbUpInfo |
|
112 |
- if PhotoThumbUpInfo.objects.filter(photo_id=photo_id, user_id=user_id, thumbup=True).exists(): |
|
113 |
- set_group_photo_thumbup_flag(photo_id, user_id) |
|
114 |
- return True |
|
115 |
- else: |
|
116 |
- return False |
|
106 |
+ |
|
107 |
+ from group.models import PhotoThumbUpInfo |
|
108 |
+ if PhotoThumbUpInfo.objects.filter(photo_id=photo_id, user_id=user_id, thumbup=True, status=True).exists(): |
|
109 |
+ set_group_photo_thumbup_flag(photo_id, user_id) |
|
110 |
+ return True |
|
111 |
+ |
|
112 |
+ return False |
|
117 | 113 |
|
118 | 114 |
|
119 | 115 |
def set_group_photo_comment_list(photo_id): |
120 | 116 |
""" 设置群组照片用户评论列表 """ |
121 | 117 |
from group.models import PhotoCommentInfo |
122 |
- photo_comments = PhotoCommentInfo.objects.filter(photo_id=photo_id) |
|
118 |
+ photo_comments = PhotoCommentInfo.objects.filter(photo_id=photo_id, status=True) |
|
123 | 119 |
photo_comments = [comment.comment_info for comment in photo_comments] |
124 | 120 |
r.setjson(GROUP_PHOTO_COMMENT_LIST % photo_id, photo_comments, cls=DjangoJSONEncoder) |
125 | 121 |
return photo_comments |
@@ -133,7 +129,7 @@ def get_group_photo_comment_list(photo_id): |
||
133 | 129 |
def set_group_photo_thumbup_list(photo_id): |
134 | 130 |
""" 设置群组照片用户点赞列表 """ |
135 | 131 |
from group.models import PhotoThumbUpInfo |
136 |
- photo_thumbups = PhotoThumbUpInfo.objects.filter(photo_id=photo_id, thumbup=True) |
|
132 |
+ photo_thumbups = PhotoThumbUpInfo.objects.filter(photo_id=photo_id, thumbup=True, status=True) |
|
137 | 133 |
photo_thumbups = [thumbup.thumbup_info for thumbup in photo_thumbups] |
138 | 134 |
r.setjson(GROUP_PHOTO_THUMB_UP_LIST % photo_id, photo_thumbups, cls=DjangoJSONEncoder) |
139 | 135 |
return photo_thumbups |
@@ -4,20 +4,17 @@ from utils.redis.connect import r |
||
4 | 4 |
from utils.redis.rkeys import GUEST_ENTRANCE_CONTROL_INFO |
5 | 5 |
|
6 | 6 |
|
7 |
-# 游客入口控制相关 |
|
8 |
- |
|
9 |
- |
|
10 | 7 |
def set_guest_entrance_control(gen): |
11 | 8 |
""" 设置游客入口控制 """ |
12 |
- r.setjson(GUEST_ENTRANCE_CONTROL_INFO, gen.data) |
|
9 |
+ r.setjson(GUEST_ENTRANCE_CONTROL_INFO % gen.src, gen.data) |
|
13 | 10 |
return gen.data |
14 | 11 |
|
15 | 12 |
|
16 |
-def get_guest_entrance_control(): |
|
13 |
+def get_guest_entrance_control(src=0): |
|
17 | 14 |
""" 获取游客入口控制 """ |
18 |
- return r.getjson(GUEST_ENTRANCE_CONTROL_INFO) |
|
15 |
+ return r.getjson(GUEST_ENTRANCE_CONTROL_INFO % src) |
|
19 | 16 |
|
20 | 17 |
|
21 |
-def delete_guest_entrance_control(): |
|
18 |
+def delete_guest_entrance_control(src=0): |
|
22 | 19 |
""" 删除游客入口控制 """ |
23 |
- return r.delete(GUEST_ENTRANCE_CONTROL_INFO) |
|
20 |
+ return r.delete(GUEST_ENTRANCE_CONTROL_INFO % src) |
@@ -1,7 +1,7 @@ |
||
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
|
3 | 3 |
# 唯一标识相关 |
4 |
-UUID_LIST = 'uuid:list' # List, 唯一标识列表 |
|
4 |
+UUID_LIST = 'uuid:list' # List,唯一标识列表 |
|
5 | 5 |
|
6 | 6 |
# 用户相关 |
7 | 7 |
PROFILE_INFO = 'profile:info:%s' # STRING,用户信息,user_id |
@@ -59,7 +59,7 @@ SYSTEM_MESSAGE_READ_INFO = 'system:message:read:info:%s' # STRING,系统消 |
||
59 | 59 |
SYSTEM_MESSAGE_DELETED_INFO = 'system:message:deleted:info:%s' # STRING,系统消息删除信息,user_id |
60 | 60 |
|
61 | 61 |
# 游客入口相关 |
62 |
-GUEST_ENTRANCE_CONTROL_INFO = 'guest:entrance:control:info' # STRING,游客入口控制信息 |
|
62 |
+GUEST_ENTRANCE_CONTROL_INFO = 'guest:entrance:control:info:%s' # STRING,游客入口控制信息,src |
|
63 | 63 |
|
64 | 64 |
# APP 相关 |
65 | 65 |
LATEST_APP_INFO = 'latest:app:info:%s' # STRING,最新 APP 信息,src |
@@ -1,15 +1,12 @@ |
||
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
|
3 |
-from message.models import SystemMessageDeleteInfo, SystemMessageReadInfo |
|
4 | 3 |
from utils.redis.connect import r |
5 | 4 |
from utils.redis.rkeys import SYSTEM_MESSAGE_DELETED_INFO, SYSTEM_MESSAGE_READ_INFO |
6 | 5 |
|
7 | 6 |
|
8 |
-# 系统消息相关 |
|
9 |
- |
|
10 |
- |
|
11 | 7 |
def set_system_message_read_info(user_id): |
12 | 8 |
""" 设置系统消息读取信息 """ |
9 |
+ from message.models import SystemMessageReadInfo |
|
13 | 10 |
read_messages = SystemMessageReadInfo.objects.filter(user_id=user_id, status=True) |
14 | 11 |
read_message_ids = [msg.msg_id for msg in read_messages] |
15 | 12 |
r.setexjson(SYSTEM_MESSAGE_READ_INFO % user_id, r.REDIS_EXPIRED_ONE_MONTH, read_message_ids) |
@@ -23,6 +20,7 @@ def get_system_message_read_info(user_id): |
||
23 | 20 |
|
24 | 21 |
def set_system_message_delete_info(user_id): |
25 | 22 |
""" 设置系统消息删除信息 """ |
23 |
+ from message.models import SystemMessageDeleteInfo |
|
26 | 24 |
deleted_messages = SystemMessageDeleteInfo.objects.filter(user_id=user_id, status=True) |
27 | 25 |
deleted_message_ids = [msg.msg_id for msg in deleted_messages] |
28 | 26 |
r.setexjson(SYSTEM_MESSAGE_DELETED_INFO % user_id, r.REDIS_EXPIRED_ONE_MONTH, deleted_message_ids) |
@@ -6,14 +6,10 @@ from utils.redis.connect import r |
||
6 | 6 |
from utils.redis.rkeys import LENSMAN_PHOTO_ORDER_RECORD |
7 | 7 |
|
8 | 8 |
|
9 |
-# 摄影师照片购买记录相关 |
|
10 |
- |
|
11 |
- |
|
12 | 9 |
def set_lensman_order_record(porder): |
13 | 10 |
""" 设置摄影师照片购买记录 """ |
14 |
- porder_info = porder.porder_info |
|
15 |
- r.setexjson(LENSMAN_PHOTO_ORDER_RECORD % (porder.photo_id, porder.user_id), r.REDIS_EXPIRED_ONE_MONTH, porder_info, cls=DjangoJSONEncoder) |
|
16 |
- return porder_info |
|
11 |
+ r.setexjson(LENSMAN_PHOTO_ORDER_RECORD % (porder.photo_id, porder.user_id), r.REDIS_EXPIRED_ONE_MONTH, porder.porder_info, cls=DjangoJSONEncoder) |
|
12 |
+ return porder.porder_info |
|
17 | 13 |
|
18 | 14 |
|
19 | 15 |
def set_lensman_order_record_by_id(photo_id, user_id): |
@@ -1,15 +1,12 @@ |
||
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
|
3 |
-from account.models import LensmanInfo |
|
4 | 3 |
from utils.redis.connect import r |
5 | 4 |
from utils.redis.rkeys import LENSMAN_PHOTO_PRICE_FIXED |
6 | 5 |
|
7 | 6 |
|
8 |
-# 最新 APP 相关 |
|
9 |
- |
|
10 |
- |
|
11 | 7 |
def set_lensman_price_fixed(user_id): |
12 | 8 |
""" 设置摄影师价格设定 """ |
9 |
+ from account.models import LensmanInfo |
|
13 | 10 |
try: |
14 | 11 |
lensman = LensmanInfo.objects.get(lensman_id=user_id) |
15 | 12 |
except LensmanInfo.DoesNotExist: |
@@ -4,9 +4,6 @@ from utils.redis.connect import r |
||
4 | 4 |
from utils.redis.rkeys import PROFILE_INFO |
5 | 5 |
|
6 | 6 |
|
7 |
-# 用户相关 |
|
8 |
- |
|
9 |
- |
|
10 | 7 |
def set_profile_info(user): |
11 | 8 |
""" 设置用户信息 """ |
12 | 9 |
r.setjson(PROFILE_INFO % user.user_id, user.data) |
@@ -4,9 +4,6 @@ from utils.redis.connect import r |
||
4 | 4 |
from utils.redis.rkeys import TOUR_GUIDE_GROUP_USER_OWN |
5 | 5 |
|
6 | 6 |
|
7 |
-# 导游相关 |
|
8 |
- |
|
9 |
- |
|
10 | 7 |
def set_tour_guide_own_group(user_id, group_id): |
11 | 8 |
""" 设置导游拥有的旅行团 """ |
12 | 9 |
r.set(TOUR_GUIDE_GROUP_USER_OWN % user_id, group_id) |
@@ -4,9 +4,6 @@ from utils.redis.connect import r |
||
4 | 4 |
from utils.redis.rkeys import TOUR_GUIDE_GROUP_USER_BELONG |
5 | 5 |
|
6 | 6 |
|
7 |
-# 旅行团成员相关 |
|
8 |
- |
|
9 |
- |
|
10 | 7 |
def set_tour_user_belong_group(user_id, group_id): |
11 | 8 |
""" 设置旅行团成员所属的旅行团 """ |
12 | 9 |
r.set(TOUR_GUIDE_GROUP_USER_BELONG % user_id, group_id) |