ソースを参照

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	MeChat/settings.py
#	MeChat/urls.py
Shellmiao 4 年 前
コミット
113fa31319

+ 1 - 1
.idea/MeChat.iml

@@ -14,7 +14,7 @@
   </component>
   <component name="NewModuleRootManager">
     <content url="file://$MODULE_DIR$" />
-    <orderEntry type="inheritedJdk" />
+    <orderEntry type="jdk" jdkName="Python 3.9 (python)" jdkType="Python SDK" />
     <orderEntry type="sourceFolder" forTests="false" />
   </component>
   <component name="TemplatesService">

+ 4 - 1
.idea/misc.xml

@@ -1,4 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8" project-jdk-type="Python SDK" />
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (python)" project-jdk-type="Python SDK" />
+  <component name="PyCharmProfessionalAdvertiser">
+    <option name="shown" value="true" />
+  </component>
 </project>

+ 1 - 0
MeChat/settings.py

@@ -38,6 +38,7 @@ INSTALLED_APPS = [
     'chat',
     'account',
     'infrastructure',
+    'friends',
 ]
 
 MIDDLEWARE = [

+ 1 - 0
MeChat/urls.py

@@ -20,5 +20,6 @@ urlpatterns = [
     path('admin/', admin.site.urls),
     path('chat/', include(('chat.urls', "chat"), namespace='chat')),
     path('account/', include(('account.urls', "account"), namespace='account')),
+    path('friends/', include(('friends.urls', "friends"), namespace= 'friends'))
     path('infrastructure/', include(('infrastructure.urls', "infrastructure"), namespace='infrastructure')),
 ]

+ 0 - 0
friends/__init__.py


+ 3 - 0
friends/admin.py

@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.

+ 6 - 0
friends/apps.py

@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class FriendsConfig(AppConfig):
+    default_auto_field = 'django.db.models.BigAutoField'
+    name = 'friends'

+ 13 - 0
friends/form.py

@@ -0,0 +1,13 @@
+from django import forms
+from django.contrib.auth.models import User
+
+
+class UserRequestForm(forms.Form):
+    username = forms.CharField()
+    otherUsername = forms.CharField()
+    token = forms.CharField()
+
+
+class UserListForm(forms.Form):
+    username = forms.CharField()
+    token = forms.CharField()

+ 0 - 0
friends/migrations/__init__.py


+ 15 - 0
friends/models.py

@@ -0,0 +1,15 @@
+from django.db import models
+
+
+# 好友表
+class friends(models.Model):
+    # 用户id
+    userid = models.IntegerField()
+    # 用户好友
+    whomFriend = models.IntegerField()
+    # 用户名
+    username = models.CharField(max_length=20, null=True)
+    # 凭证
+    token = models.CharField(max_length=100, default='233', blank=False)
+    # 状态码,可以拉黑名单用,为0表示并不是好友,但是对方向自己发送过消息。
+    status = models.IntegerField(default=1)

+ 3 - 0
friends/tests.py

@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.

+ 11 - 0
friends/urls.py

@@ -0,0 +1,11 @@
+from django.urls import path, include
+from django.views.generic.base import TemplateView
+from . import views
+
+urlpatterns = [
+    # path("Friend/add", views.addFriend),
+    path("friendsList/", views.friendsList),
+    path("friendsList/<int:pk>", views.friendDetail),
+    path("friend/delete", views.deleteFriend),
+    path("friend/accept", views.acceptFriend)
+]

+ 88 - 0
friends/views.py

@@ -0,0 +1,88 @@
+import json
+from django.http import JsonResponse, HttpResponse
+from django.views.decorators.csrf import csrf_exempt
+from .form import UserRequestForm, UserListForm
+from .models import friends
+
+
+# 批处理流程
+def more_clean(request, form):
+    if request.method == 'POST':
+        user_login_form = form(request.POST)
+        if user_login_form.is_valid():
+            # 清洗出合法的数据
+            data = user_login_form.cleaned_data
+            return data
+    else:
+        response = {'result': 'illegal input'}
+        return HttpResponse(json.dumps(response))
+
+
+# 获取好友列表
+@csrf_exempt
+def friendsList(request):
+    data = more_clean(request, UserListForm)
+    if data.get('token') != 'token':
+        response = {'result': 'there has a mistake, please provide illegal token'}
+        return HttpResponse(json.dumps(response))
+    else:
+        try:
+            friendsTemp = friends.objects.filter(whomfriend=data['username'])
+            return HttpResponse(json.dumps(friendsTemp))
+        except friends.DoesNotExist:
+            response = {'result': 'this user do not exist'}
+            return HttpResponse(json.dumps(response))
+
+
+#  添加好友(通过ws发送给被请求方信息,返回等待对方回应中)
+# @csrf_exempt
+# def addFriend(request):
+# 由于ws不是很确定,先闲置
+
+
+# 同意添加好友,
+def acceptFriend(request):
+    data = more_clean(request, UserRequestForm)
+    if request.method == "POST":
+        try:
+            friends.objects.create(username=data["username"], whomfriend=data["otherUsername"], token=data["token"],
+                                   status=1)
+            response = {'result': "add successfully"}
+            return HttpResponse(json.dumps(response))
+        except:
+            response = {'result': "add failed"}
+            return HttpResponse(json.dumps(response))
+
+
+# 获取详细好友信息
+@csrf_exempt
+def friendDetail(request, pk):
+    data = more_clean(request, UserRequestForm)
+    try:
+        loginUserid = int(data["username"])
+        friendsTemp = friends.objects.get(whomfriend=loginUserid, userid=pk)
+
+    except friends.DoesNotExist:
+        response = {'result': "do not exist"}
+        return HttpResponse(json.dumps(response))
+
+    if len(friendsTemp):
+        response = {"data": friendsTemp, "result": "好友列表"}
+        return HttpResponse(json.dumps(response))
+    else:
+        response = {"result": "wrong"}
+        return HttpResponse(json.dumps(response))
+
+
+@csrf_exempt
+def deleteFriend(request):
+    data = more_clean(request, UserRequestForm)
+    try:
+        tempFriend = friends.objects.get(
+            username=data["username"], whomfriend=data["otherUsername"])
+        tempFriend.clear()
+        response = {"result": "delete success"}
+        return HttpResponse(json.dumps(response))
+    except:
+        response = {"result": "delete failed"}
+        return JsonResponse(response)

BIN
venv/Scripts/python.exe


BIN
venv/Scripts/pythonw.exe


+ 3 - 0
venv/pyvenv.cfg

@@ -0,0 +1,3 @@
+home = C:\Users\12499\AppData\Local\Programs\Python\Python39
+include-system-site-packages = false
+version = 3.9.5