123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385 |
- from django.db import transaction
- from django.http import JsonResponse
- from rest_framework import viewsets
- from account.models import UserInfo
- from group.models import GroupInfo, GroupUserInfo, GroupPhotoInfo
- from group.serializers import GroupInfoSerializer, GroupUserInfoSerializer, GroupPhotoInfoSerializer
- from utils.ip_utils import ip_addr
- from curtail_uuid import CurtailUUID
- from TimeConvert import TimeConvert as tc
- @transaction.atomic
- def group_create_api(request):
- user_id = request.POST.get('user_id', '')
- try:
- user = UserInfo.objects.get(user_id=user_id)
- except UserInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4011,
- 'message': u'用户不存在',
- })
- group_id = CurtailUUID.uuid(GroupInfo, 'group_id')
- group = GroupInfo.objects.create(
- group_id=group_id,
- admin_id=user_id,
- group_from=GroupInfo.APP_GROUP,
- )
- GroupUserInfo.objects.create(
- group_id=group_id,
- user_id=user_id,
- nickname=user.username,
- admin=True,
- user_status=GroupUserInfo.PASSED,
- passed_at=tc.utc_datetime(),
- )
- return JsonResponse({
- 'status': 200,
- 'message': u'群组创建成功',
- 'data': {
- 'group_id': group_id,
- 'group': group.data,
- 'users': group.users(user_id)
- },
- })
- def group_detail_api(request):
- group_id = request.POST.get('group_id', '')
- user_id = request.POST.get('user_id', '')
- try:
- user = UserInfo.objects.get(user_id=user_id)
- except UserInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4011,
- 'message': u'用户不存在',
- })
- try:
- group = GroupInfo.objects.get(group_id=group_id)
- except GroupInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4020,
- 'message': u'群组不存在',
- })
- return JsonResponse({
- 'status': 200,
- 'message': u'获取群组详情成功',
- 'data': {
- 'group_id': group_id,
- 'group': group.data,
- 'users': group.users(user_id)
- },
- })
- def group_update_api(request):
- group_id = request.POST.get('group_id', '')
- admin_id = request.POST.get('admin_id', '')
- group_name = request.POST.get('group_name', '')
- group_desc = request.POST.get('group_desc', '')
- try:
- admin = UserInfo.objects.get(user_id=admin_id)
- except UserInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4011,
- 'message': u'用户不存在',
- })
- try:
- group = GroupInfo.objects.get(group_id=group_id)
- except GroupInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4020,
- 'message': u'群组不存在',
- })
- if group.admin_id != admin_id:
- return JsonResponse({
- 'status': 40220,
- 'message': u'没有更新权限',
- })
- if group_name:
- group.group_name = group_name
- if group_desc:
- group.group_desc = group_desc
- group.save()
- return JsonResponse({
- 'status': 200,
- 'message': u'用户更新成功',
- 'data': {
- 'group_id': group_id,
- 'group': group.data,
- 'users': group.users(admin_id)
- },
- })
- def group_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 JsonResponse({
- 'status': 4011,
- 'message': u'用户不存在',
- })
- try:
- group = GroupInfo.objects.get(group_id=group_id)
- except GroupInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4020,
- 'message': u'群组不存在',
- })
- if group.group_lock:
- return JsonResponse({
- 'status': 4021,
- 'message': u'群组已锁定',
- })
- if GroupUserInfo.objects.filter(group_id=group_id, user_id=user_id, user_status__in=[GroupUserInfo.APPLYING, GroupUserInfo.PASSED]).exists():
- return JsonResponse({
- 'status': 4027,
- 'message': u'重复加群申请',
- })
- GroupUserInfo.objects.create(
- group_id=group_id,
- user_id=user_id,
- nickname=nickname or user.username,
- admin=False,
- user_status=GroupUserInfo.PASSED,
- )
- return JsonResponse({
- 'status': 200,
- 'message': u'申请已提交',
- })
- def group_lock_api(request):
- group_id = request.POST.get('group_id', '')
- user_id = request.POST.get('user_id', '')
- try:
- user = UserInfo.objects.get(user_id=user_id)
- except UserInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4011,
- 'message': u'用户不存在',
- })
- try:
- group = GroupInfo.objects.get(group_id=group_id)
- except GroupInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4020,
- 'message': u'群组不存在',
- })
- if group.admin_id != user_id:
- return JsonResponse({
- 'status': 40221,
- 'message': u'没有锁定权限',
- })
- group.group_lock = True
- group.save()
- return JsonResponse({
- 'status': 200,
- 'message': u'锁定成功',
- })
- def group_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:
- admin = UserInfo.objects.get(user_id=admin_id)
- except UserInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4011,
- 'message': u'用户不存在',
- })
- try:
- user = UserInfo.objects.get(user_id=user_id)
- except UserInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4011,
- 'message': u'用户不存在',
- })
- try:
- group = GroupInfo.objects.get(group_id=group_id)
- except GroupInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4020,
- 'message': u'群组不存在',
- })
- if group.admin_id != admin_id:
- return JsonResponse({
- 'status': 40222,
- 'message': u'没有移除权限',
- })
- try:
- group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.PASSED)
- except GroupUserInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4029,
- 'message': u'该用户不在群组',
- })
- group_user.user_status = GroupUserInfo.DELETED
- group_user.deleted_at = tc.utc_datetime()
- group_user.save()
- return JsonResponse({
- 'status': 200,
- 'message': u'用户移除成功',
- 'data': {
- 'group_id': group_id,
- 'users': group.users(admin_id)
- },
- })
- def group_pass_api(request):
- group_id = request.POST.get('group_id', '')
- admin_id = request.POST.get('admin_id', '')
- user_id = request.POST.get('user_id', '')
- try:
- admin = UserInfo.objects.get(user_id=admin_id)
- except UserInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4011,
- 'message': u'用户不存在',
- })
- try:
- user = UserInfo.objects.get(user_id=user_id)
- except UserInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4011,
- 'message': u'用户不存在',
- })
- try:
- group = GroupInfo.objects.get(group_id=group_id)
- except GroupInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4020,
- 'message': u'群组不存在',
- })
- if group.admin_id != admin_id:
- return JsonResponse({
- 'status': 40223,
- 'message': u'没有通过权限',
- })
- try:
- group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.APPLYING)
- except GroupUserInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4028,
- 'message': u'加群申请不存在',
- })
- group_user.user_status = GroupUserInfo.PASSED
- group_user.passed_at = tc.utc_datetime()
- group_user.save()
- return JsonResponse({
- 'status': 200,
- 'message': u'申请通过成功',
- 'data': {
- 'group_id': group_id,
- 'users': group.users(admin_id)
- },
- })
- def group_refuse_api(request):
- group_id = request.POST.get('group_id', '')
- admin_id = request.POST.get('admin_id', '')
- user_id = request.POST.get('user_id', '')
- try:
- admin = UserInfo.objects.get(user_id=admin_id)
- except UserInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4011,
- 'message': u'用户不存在',
- })
- try:
- user = UserInfo.objects.get(user_id=user_id)
- except UserInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4011,
- 'message': u'用户不存在',
- })
- try:
- group = GroupInfo.objects.get(group_id=group_id)
- except GroupInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4020,
- 'message': u'群组不存在',
- })
- if group.admin_id != admin_id:
- return JsonResponse({
- 'status': 40224,
- 'message': u'没有拒绝权限',
- })
- try:
- group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.APPLYING)
- except GroupUserInfo.DoesNotExist:
- return JsonResponse({
- 'status': 4028,
- 'message': u'加群申请不存在',
- })
- group_user.user_status = GroupUserInfo.REFUSED
- group_user.refused_at = tc.utc_datetime()
- group_user.save()
- return JsonResponse({
- 'status': 200,
- 'message': u'申请拒绝成功',
- 'data': {
- 'group_id': group_id,
- 'users': group.users(admin_id)
- },
- })
- class GroupInfoViewSet(viewsets.ModelViewSet):
- queryset = GroupInfo.objects.all().order_by('-created_at')
- serializer_class = GroupInfoSerializer
- class GroupUserInfoViewSet(viewsets.ModelViewSet):
- queryset = GroupUserInfo.objects.all().order_by('-created_at')
- serializer_class = GroupUserInfoSerializer
- class GroupPhotoInfoViewSet(viewsets.ModelViewSet):
- queryset = GroupPhotoInfo.objects.all().order_by('-created_at')
- serializer_class = GroupPhotoInfoSerializer
|