diff-d81043a955670ab14c18350f0fdae2a71f6299e8R151">151
     """
151 152
     user_id = request.POST.get('user_id', '')
153
+    current_id = -1
152 154
 
153 155
     # 判断 user_id 是否存在,如果不存在,则直接分配帐户
154
-    user, created = UserInfo.objects.get_or_create(user_id=user_id, defaults={
156
+    user, user_created = UserInfo.objects.get_or_create(user_id=user_id, defaults={
155 157
         'user_id': CurtailUUID.uuid(UserInfo, 'user_id'),
156 158
         'user_status': UserInfo.ASSIGN,
157 159
         'assign_ip': ip_addr(request),
@@ -160,34 +162,91 @@ def session_detail_api(request, session):
160 162
     user_id = user.user_id
161 163
 
162 164
     # 判断通过 session_id 创建的群组是否存在,如果不存在,则直接创建
163
-    group, created = GroupInfo.objects.get_or_create(session_id=session, defaults={
165
+    group, group_created = GroupInfo.objects.get_or_create(session_id=session, defaults={
164 166
         'group_id': CurtailUUID.uuid(GroupInfo, 'group_id'),
165 167
         'admin_id': user_id,
168
+        'group_name': user.final_nickname,
169
+        'group_default_avatar': 0,
166 170
         'group_from': GroupInfo.SESSION_GROUP,
167 171
         'session_id': session,
168 172
     })
169 173
     group_id = group.group_id
170 174
 
175
+    # Redis 群组数据缓存
176
+    if group_created:
177
+        group_info = set_group_info(group)
178
+
171 179
     # 判断 group_id/user_id 的群组用户是否存在,如果不存在,则直接创建
172
-    group_user = GroupUserInfo.objects.get_or_create(group_id=group_id, user_id=user_id, defaults={
173
-        'current_id': int(r.get(GROUP_LAST_PHOTO_PK % group_id) or -1),
180
+    group_user, group_user_created = GroupUserInfo.objects.get_or_create(group_id=group_id, user_id=user_id, defaults={
181
+        # 'current_id': int(r.get(GROUP_LAST_PHOTO_PK % group_id) or -1),
182
+        'current_id': current_id,  # 通过扫描 session_id 二维码进群的用户,默认可以查看该群组所有照片
174 183
         'nickname': user.final_nickname,
175
-        'admin': False,
184
+        'avatar': user.avatar,
185
+        'admin': group_created,
176 186
         'user_status': GroupUserInfo.PASSED,
177 187
         'passed_at': tc.utc_datetime(),
178 188
     })
179 189
 
190
+    # Redis 群组用户数据缓存
191
+    if group_user_created:
192
+        group_users = set_group_users_info(group)
193
+
194
+    # 获取 Session 照片
180 195
     photos = PhotosInfo.objects.filter(session_id=session)
196
+
197
+    #
198
+    if group_created:
199
+        for photo in photos:
200
+            photo_path = photo.p_photo_path
201
+            photo_thumbnail_path = photo_path.replace('.', '_thumbnail.')
202
+
203
+            # 群组照片缩略图生成
204
+            photo_w, photo_h, photo_thumbnail_w, photo_thumbnail_h = make_thumbnail(
205
+                os.path.join(settings.MEDIA_ROOT, photo_path).replace('\\', '/'),
206
+                os.path.join(settings.MEDIA_ROOT, photo_thumbnail_path).replace('\\', '/'),
207
+                settings.THUMBNAIL_MAX_WIDTH
208
+            )
209
+
210
+            # 群组照片记录创建
211
+            group_photo = GroupPhotoInfo.objects.create(
212
+                group_id=group_id,
213
+                user_id=user_id,
214
+                nickname=user.final_nickname,
215
+                avatar=user.avatar,
216
+                photo_path=photo_path,
217
+                photo_w=photo_w,
218
+                photo_h=photo_h,
219
+                photo_thumbnail_path=photo_thumbnail_path,
220
+                photo_thumbnail_w=photo_thumbnail_w,
221
+                photo_thumbnail_h=photo_thumbnail_h,
222
+                photo_from=GroupPhotoInfo.SESSION_GROUP,
223
+            )
224
+
225
+        # 设置群组最后一张照片PK
226
+        r.set(GROUP_LAST_PHOTO_PK % group_id, group_photo.pk)
227
+
228
+    # 获取从 current_id 到 now 的群组照片列表
229
+    group_photos = GroupPhotoInfo.objects.filter(
230
+        group_id=group_id,
231
+        status=True,
232
+        pk__gt=group_user.current_id,
233
+    ).order_by(
234
+        '-pk'
235
+    )
236
+    latest_photo = group_photos.first()
237
+
181 238
     return JsonResponse({
182 239
         'status': 200,
183 240
         'message': u'获取照片列表成功',
184 241
         'data': {
185
-            'count': photos.count(),
186
-            'photos': [p.detail for p in photos],
242
+            # 'count': photos.count(),
243
+            # 'photos': [p.detail for p in photos],
244
+            'current_id': latest_photo and latest_photo.pk or current_id,
245
+            'photos': [photo.photo_info for photo in group_photos],
187 246
             'group_id': group_id,
188
-            'group': get_group_info(group_id),
247
+            'group': group_info,
189 248
             'user_id': user_id,
190
-            'users': get_group_users_info(group_id, user_id),
249
+            'users': group_users,
191 250
         }
192 251
     })
193 252
 

+ 2 - 2
utils/thumbnail_utils.py

@@ -8,11 +8,11 @@ except ImportError:
8 8
     import Image
9 9
 
10 10
 
11
-def make_thumb(im_path, max_width=360):
11
+def make_thumbnail(im_path, im_thumbnail_path=None, max_width=360):
12 12
     im = Image.open(im_path)
13 13
     width, height = im.size
14 14
     thumb_width = min(max_width, width)
15 15
     thumb_height = height / width * thumb_width
16 16
     im.thumbnail((thumb_width, thumb_height))
17
-    im.save(im_path, im.format or 'JPEG')
17
+    im.save(im_thumbnail_path or im_path, im.format or 'JPEG')
18 18
     return width, height, thumb_width, thumb_height

kodo - Gogs: Go Git Service

Geen omschrijving

Brightcells: 120900c7f8 Monthly 7 jaren geleden
..
migrations 2988703c52 Update 8 jaren geleden
__init__.py 44a6cdf337 Statistic 8 jaren geleden
admin.py d17e62ec95 Update list_filter 7 jaren geleden
apps.py 44a6cdf337 Statistic 8 jaren geleden
models.py 2988703c52 Update 8 jaren geleden
tests.py 44a6cdf337 Statistic 8 jaren geleden
views.py 120900c7f8 Monthly 7 jaren geleden