Skip to content

Commit

Permalink
消息功能1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
DiDongDongDi authored and guiyutong.sky committed May 11, 2020
1 parent 5ac4ee0 commit 63d18fc
Show file tree
Hide file tree
Showing 9 changed files with 189 additions and 67 deletions.
6 changes: 6 additions & 0 deletions .gitignore
@@ -0,0 +1,6 @@
# vim
*.un~
*.swp

# cache
__pycache__/
48 changes: 42 additions & 6 deletions dkt/database/migrations/0001_initial.py
@@ -1,4 +1,4 @@
# Generated by Django 3.0.5 on 2020-04-24 17:49
# Generated by Django 3.0.1 on 2020-05-09 11:03

from django.db import migrations, models

Expand All @@ -11,15 +11,51 @@ class Migration(migrations.Migration):
]

operations = [
migrations.CreateModel(
name='COURSE',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('course_id', models.CharField(default='', max_length=64)),
('s_account', models.CharField(default='', max_length=64)),
('t_account', models.CharField(default='', max_length=64)),
('category', models.CharField(default='default', max_length=64)),
('status', models.CharField(default='', max_length=64)),
('info', models.CharField(default='', max_length=2048)),
('start_time', models.IntegerField(default=0)),
('finish_time', models.IntegerField(default=0)),
],
options={
'verbose_name': '课程表',
'db_table': 'dkt_course',
},
),
migrations.CreateModel(
name='MESSAGE',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('course_id', models.CharField(default='', max_length=64)),
('t_account', models.CharField(default='', max_length=64)),
('receiver', models.CharField(default='all', max_length=64)),
('_t', models.IntegerField(default=1589022197)),
('msg', models.CharField(default='', max_length=2048)),
],
options={
'verbose_name': '消息表',
'db_table': 'dkt_message',
'ordering': ('-_t',),
},
),
migrations.CreateModel(
name='USERS',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('account', models.CharField(max_length=64)),
('password', models.CharField(max_length=64)),
('access_key', models.CharField(max_length=128)),
('token', models.CharField(max_length=128)),
('info', models.CharField(max_length=2048)),
('account', models.CharField(default='', max_length=64)),
('password', models.CharField(default='', max_length=64)),
('access_key', models.CharField(default='', max_length=128)),
('token', models.CharField(default='', max_length=128)),
('info', models.CharField(default='', max_length=2048)),
('_t', models.IntegerField(default=0)),
('role', models.CharField(default='student', max_length=16)),
],
options={
'verbose_name': '用户数据表',
Expand Down
59 changes: 0 additions & 59 deletions dkt/database/migrations/0002_auto_20200429_0808.py

This file was deleted.

18 changes: 18 additions & 0 deletions dkt/database/migrations/0002_auto_20200509_1109.py
@@ -0,0 +1,18 @@
# Generated by Django 3.0.1 on 2020-05-09 11:09

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('database', '0001_initial'),
]

operations = [
migrations.AlterField(
model_name='message',
name='_t',
field=models.IntegerField(default=1589022546),
),
]
32 changes: 32 additions & 0 deletions dkt/database/migrations/0003_auto_20200510_1012.py
@@ -0,0 +1,32 @@
# Generated by Django 3.0.1 on 2020-05-10 10:12

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('database', '0002_auto_20200509_1109'),
]

operations = [
migrations.CreateModel(
name='MESSAGES',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('course_id', models.CharField(default='', max_length=64)),
('sender', models.CharField(default='', max_length=64)),
('receiver', models.CharField(default='', max_length=64)),
('_t', models.IntegerField(default=1589105519)),
('msg', models.CharField(default='', max_length=2048)),
],
options={
'verbose_name': '消息表',
'db_table': 'dkt_messages',
'ordering': ('-_t',),
},
),
migrations.DeleteModel(
name='MESSAGE',
),
]
15 changes: 14 additions & 1 deletion dkt/database/models.py
@@ -1,6 +1,6 @@
# coding=utf-8
from django.db import models

import time

# Create your models here.

Expand All @@ -16,6 +16,7 @@ class Meta:
token = models.CharField(max_length=128, default='')
info = models.CharField(max_length=2048, default='')
_t = models.IntegerField(default=0)
role = models.CharField(max_length=16, default='student')


class COURSE(models.Model):
Expand All @@ -31,3 +32,15 @@ class Meta:
info = models.CharField(max_length=2048, default='')
start_time = models.IntegerField(default=0)
finish_time = models.IntegerField(default=0)

class MESSAGES(models.Model):
class Meta:
verbose_name = '消息表'
db_table = 'dkt_messages'
ordering = ('-_t', )

course_id = models.CharField(max_length=64, default='')
sender = models.CharField(max_length=64, default='')
receiver = models.CharField(max_length=64, default='')
_t = models.IntegerField(default=int(time.time()))
msg = models.CharField(max_length=2048, default='')
57 changes: 57 additions & 0 deletions dkt/service/message.py
@@ -0,0 +1,57 @@
# coding=utf-8
"""
用户消息接收和发布
"""

import time
from django.db.models import Q

from dkt.database.models import MESSAGES
from dkt.database.models import USERS
from dkt.database.models import COURSE
from dkt.const import ObjectStatus

def get_message(request, post_data):
"""
获取对话列表, 或者历史公告
:param request:
:param post_data:
"""

receiver = post_data.get('account')
course_id = post_data.get('course_id')
since = post_data.get('since', int(time.time()))
sender = post_data.get('sender')

if sender == 'pub':
msgs = MESSAGES.objects.filter(course_id=course_id, receiver='all', _t__lte=since)[:10]
else:
msgs = MESSAGES.objects.filter(course_id=course_id, sender=sender, receiver=receiver, _t__lte=since)[:10]

res = []
for msg in msgs:
res.append({'_t': msg._t, 'msg': msg.msg, 'sender': msg.sender})
return res

def pub_message(request, post_data):
"""
老师发布消息
:param request:
:param post_data:
"""

course_id = post_data.get('course_id')
sender = post_data.get('account')
receiver = post_data.get('receiver')
msg = post_data.get('msg')

if not COURSE.objects.filter(Q(course_id=course_id), Q(t_account=sender)|Q(s_account=sender)):
return "Course and sender can't match!"
if receiver != 'all' and not COURSE.objects.filter(Q(course_id=course_id), Q(t_account=receiver)|Q(s_account=receiver)):
return "Course and receiver can't match!"
if receiver == 'all' and USERS.objects.get(account=sender).role != 'teacher':
return "Can't send to all, because you are not a teacher!"

MESSAGES.objects.create(course_id=course_id, sender=sender, receiver=receiver, _t=int(time.time()), msg=msg)

return ObjectStatus.SUCCESS.value
5 changes: 4 additions & 1 deletion dkt/urls.py
Expand Up @@ -34,5 +34,8 @@
path('main/search_my_courses/', SearchMyCourses),
path('main/search_public_courses/', SearchPublicCourses),
path('main/publish_course/', PublishCourse),
path('main/check_course/', CheckCourse)
path('main/check_course/', CheckCourse),
# message 界面
path('message/get_msg/', GetMessage),
path('message/pub_msg/', PubMessage),
]
16 changes: 16 additions & 0 deletions dkt/view.py
Expand Up @@ -7,6 +7,7 @@
from dkt.service.login import *
from dkt.service.main import *
from dkt.service.people import *
from dkt.service.message import *


# login 界面
Expand Down Expand Up @@ -96,3 +97,18 @@ def PublishCourse(request, post_data):
def CheckCourse(request, post_data):
return check_course(request, post_data)


# message 界面
# ==========================================
@post_format
@rest_view
@permission_validation
def GetMessage(request, post_data):
return get_message(request, post_data)


@post_format
@rest_view
@permission_validation
def PubMessage(request, post_data):
return pub_message(request, post_data)

0 comments on commit 63d18fc

Please sign in to comment.