Add guest login for tourguide

Brightcells преди 8 години
родител
ревизия
2eba3ed7f9

+ 11 - 0
account/tourguide_views.py

@@ -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)

+ 7 - 30
account/views.py

@@ -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
 

+ 6 - 2
api/urls.py

@@ -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'),  # 下载接口

+ 4 - 4
group/groupuser_views.py

@@ -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
 

+ 4 - 4
group/lensman_views.py

@@ -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
 

+ 1 - 1
group/models.py

@@ -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()

+ 3 - 3
group/tourguidegroupadmin_views.py

@@ -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
 

+ 1 - 4
group/views.py

@@ -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,

+ 19 - 0
message/migrations/0008_auto_20170315_2243.py

@@ -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
+    ]

+ 3 - 12
message/models.py

@@ -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
 

+ 8 - 8
message/views.py

@@ -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'消息删除成功')

+ 2 - 1
operation/admin.py

@@ -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):

+ 44 - 0
operation/migrations/0011_auto_20170315_2243.py

@@ -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
+    ]

+ 7 - 53
operation/models.py

@@ -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')

+ 33 - 2
operation/views.py

@@ -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', ''))

+ 17 - 0
pai2/basemodels.py

@@ -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

+ 1 - 1
pai2/settings.py

@@ -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'

+ 2 - 2
pay/views.py

@@ -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
 

+ 2 - 2
photo/views.py

@@ -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
 

+ 2 - 5
utils/redis/rapp.py

@@ -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)

+ 0 - 3
utils/redis/rbrief.py

@@ -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())

+ 2 - 2
utils/redis/retrieve.py

@@ -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
 

+ 11 - 15
utils/redis/rgroup.py

@@ -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

+ 5 - 8
utils/redis/rguest.py

@@ -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)

+ 2 - 2
utils/redis/rkeys.py

@@ -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

+ 2 - 4
utils/redis/rmessage.py

@@ -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)

+ 2 - 6
utils/redis/rorder.py

@@ -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 - 4
utils/redis/rprice.py

@@ -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:

+ 0 - 3
utils/redis/rprofile.py

@@ -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)

+ 0 - 3
utils/redis/rtourguide.py

@@ -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)

+ 0 - 3
utils/redis/rtouruser.py

@@ -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)