123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- from __future__ import division
- from logit import logit
- from TimeConvert import TimeConvert as tc
- from account.models import UserInfo
- from group.models import GroupInfo, GroupUserInfo
- from utils.error.errno_utils import GroupStatusCode, GroupUserStatusCode, UserStatusCode
- from utils.error.response_utils import response
- from utils.group_photo_utils import get_current_photos
- from utils.redis.connect import r
- from utils.redis.rgroup import get_group_info, get_group_users_info, set_group_users_info
- from utils.redis.rkeys import (GROUP_LAST_PHOTO_PK, GROUP_USERS_DELETED_SET, GROUP_USERS_PASSED_SET,
- GROUP_USERS_QUIT_SET, GROUP_USERS_REFUSED_SET)
- @logit
- def group_user_join_api(request):
- """ 群成员加群 """
- group_id = request.POST.get('group_id', '')
- user_id = request.POST.get('user_id', '')
- nickname = request.POST.get('nickname', '')
-
- try:
- user = UserInfo.objects.get(user_id=user_id)
- except UserInfo.DoesNotExist:
- return response(UserStatusCode.USER_NOT_FOUND)
-
- try:
- group = GroupInfo.objects.get(group_id=group_id)
- except GroupInfo.DoesNotExist:
- return response(GroupStatusCode.GROUP_NOT_FOUND)
-
- if group.group_lock:
- return response(GroupStatusCode.GROUP_HAS_LOCKED)
-
- group_user, created = GroupUserInfo.objects.get_or_create(
- group_id=group_id,
- user_id=user_id,
- )
- if group_user.user_status != GroupUserInfo.PASSED:
- group_user.current_id = -1 if group.group_from == GroupInfo.SESSION_GROUP else int(r.get(GROUP_LAST_PHOTO_PK % group_id) or -1)
- group_user.nickname = nickname or user.final_nickname
- group_user.avatar = user.avatar
-
- group_user.user_status = GroupUserInfo.PASSED
- group_user.passed_at = tc.utc_datetime()
- group_user.save()
-
- set_group_users_info(group)
-
- r.srem(GROUP_USERS_REFUSED_SET % group_id, user_id)
- r.srem(GROUP_USERS_DELETED_SET % group_id, user_id)
- r.srem(GROUP_USERS_QUIT_SET % group_id, user_id)
- r.sadd(GROUP_USERS_PASSED_SET % group_id, user_id)
- curinfo = get_current_photos(group_id, user_id, group_user.current_id)
- return response(200, 'Group User Join Success', u'群成员加群成功', {
- 'current_id': curinfo.get('current_id', ''),
- 'photos': curinfo.get('photos', ''),
- 'group_id': group_id,
- 'group': get_group_info(group_id),
- 'user_id': user_id,
- 'users': get_group_users_info(group_id, user_id),
- })
- @logit
- def group_user_remove_api(request):
- """ 群成员移除,管理员主动,群成员被动 """
- group_id = request.POST.get('group_id', '')
- admin_id = request.POST.get('admin_id', '')
- user_id = request.POST.get('user_id', '')
-
- try:
- group = GroupInfo.objects.get(group_id=group_id)
- except GroupInfo.DoesNotExist:
- return response(GroupStatusCode.GROUP_NOT_FOUND)
-
- if group.admin_id != admin_id or group.admin_id == user_id:
- return response(GroupStatusCode.NO_REMOVE_PERMISSION)
-
- try:
- group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, status=True)
- except GroupUserInfo.DoesNotExist:
- return response(GroupUserStatusCode.GROUP_USER_NOT_FOUND)
-
- group_user.user_status = GroupUserInfo.DELETED
- group_user.deleted_at = tc.utc_datetime()
- group_user.save()
-
- group_users = set_group_users_info(group)
-
- r.srem(GROUP_USERS_PASSED_SET % group_id, user_id)
- r.sadd(GROUP_USERS_DELETED_SET % group_id, user_id)
- return response(200, 'Group User Remove Success', u'群成员移除成功', {
- 'group_id': group_id,
- 'users': group_users,
- })
- @logit
- def group_user_quit_api(request):
- """ 群成员退出,群成员主动 """
- group_id = request.POST.get('group_id', '')
- user_id = request.POST.get('user_id', '')
-
- try:
- group = GroupInfo.objects.get(group_id=group_id)
- except GroupInfo.DoesNotExist:
- return response(GroupStatusCode.GROUP_NOT_FOUND)
-
- if group.admin_id == user_id:
- return response(GroupStatusCode.NO_QUIT_PERMISSION)
-
- try:
- group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, status=True)
- except GroupUserInfo.DoesNotExist:
- return response(GroupUserStatusCode.GROUP_USER_NOT_FOUND)
-
- group_user.user_status = GroupUserInfo.QUIT
- group_user.quit_at = tc.utc_datetime()
- group_user.save()
-
- group_users = set_group_users_info(group)
-
- r.srem(GROUP_USERS_PASSED_SET % group_id, user_id)
- r.sadd(GROUP_USERS_QUIT_SET % group_id, user_id)
- return response(200, 'Group User Quit Success', u'群成员退出成功', {
- 'group_id': group_id,
- 'users': group_users,
- })
|