feifei-cyj

1、发布会添加接口

2、发布会查询接口

3、嘉宾添加接口

4、嘉宾查询接口

5、嘉宾签到接口

from django.http import JsonResponse
from django.core.exceptions import ValidationError, ObjectDoesNotExist
from django.db.utils import IntegrityError
import time



from loginApp.models import Event, Guest

# 添加发布会接口
def add_event(request):
    eid = request.POST.get(\'eid\',\'\')                 # 发布会id
    name = request.POST.get(\'name\',\'\')               # 发布会标题
    limit = request.POST.get(\'limit\',\'\')             # 限制人数
    status = request.POST.get(\'status\',\'\')           # 状态
    address = request.POST.get(\'address\',\'\')         # 地址
    start_time = request.POST.get(\'start_time\',\'\')   # 发布会时间

    if eid ==\'\' or name == \'\' or limit == \'\' or address == \'\' or start_time == \'\':
        return JsonResponse({\'status\':10021,\'message\':\'parameter error\'})

    result = Event.objects.filter(id=eid)
    if result:
        return JsonResponse({\'status\':10022,\'message\':\'event id already exists\'})

    result = Event.objects.filter(name=name)
    if result:
        return JsonResponse({\'status\':10023,\'message\':\'event name already exists\'})

    if status == \'\':
        status = 1

    try:
        Event.objects.create(id=eid,name=name,limit=limit,address=address,status=int(status),start_time=start_time)
    except ValidationError:
        error = \'start_time format error. It must be in YYYY-MM-DD HH:MM:SS format.\'
        return JsonResponse({\'status\':10024,\'message\':error})

    return JsonResponse({\'status\':200,\'message\':\'add event success\'})


# 添加嘉宾接口
def add_guest(request):
    eid =  request.POST.get(\'eid\',\'\')                # 关联发布会id
    realname = request.POST.get(\'realname\',\'\')       # 姓名
    phone = request.POST.get(\'phone\',\'\')             # 手机号
    email = request.POST.get(\'email\',\'\')             # 邮箱

    if eid ==\'\' or realname == \'\' or phone == \'\':
        return JsonResponse({\'status\':10021,\'message\':\'parameter error\'})

    result = Event.objects.filter(id=eid)
    if not result:
        return JsonResponse({\'status\':10022,\'message\':\'event id null\'})

    result = Event.objects.get(id=eid).status
    if not result:
        return JsonResponse({\'status\':10023,\'message\':\'event status is not available\'})

    event_limit = Event.objects.get(id=eid).limit        # 发布会限制人数
    guest_limit = Guest.objects.filter(event_id=eid)     # 发布会已添加的嘉宾数

    if len(guest_limit) >= event_limit:
        return JsonResponse({\'status\':10024,\'message\':\'event number is full\'})

    event_time = Event.objects.get(id=eid).start_time     # 发布会时间
    timeArray = time.strptime(str(event_time), "%Y-%m-%d %H:%M:%S")
    e_time = int(time.mktime(timeArray))

    now_time = str(time.time())          # 当前时间
    ntime = now_time.split(".")[0]
    n_time = int(ntime)

    if n_time >= e_time:
        return JsonResponse({\'status\':10025,\'message\':\'event has started\'})

    try:
        Guest.objects.create(realname=realname,phone=int(phone),email=email,sign=0,event_id=int(eid))
    except IntegrityError:
        return JsonResponse({\'status\':10026,\'message\':\'the event guest phone number repeat\'})

    return JsonResponse({\'status\':200,\'message\':\'add guest success\'})


# 发布会查询
def get_event_list(request):

    eid = request.GET.get("eid", "")      # 发布会id
    name = request.GET.get("name", "")    # 发布会名称

    if eid == \'\' and name == \'\':
        return JsonResponse({\'status\':10021,\'message\':\'parameter error\'})

    if eid != \'\':
        event = {}
        try:
            result = Event.objects.get(id=eid)
        except ObjectDoesNotExist:
            return JsonResponse({\'status\':10022, \'message\':\'query result is empty\'})
        else:
            event[\'eid\'] = result.id
            event[\'name\'] = result.name
            event[\'limit\'] = result.limit
            event[\'status\'] = result.status
            event[\'address\'] = result.address
            event[\'start_time\'] = result.start_time
            return JsonResponse({\'status\':200, \'message\':\'success\', \'data\':event})

    if name != \'\':
        datas = []
        results = Event.objects.filter(name__contains=name)
        if results:
            for r in results:
                event = {}
                event[\'eid\'] = r.id
                event[\'name\'] = r.name
                event[\'limit\'] = r.limit
                event[\'status\'] = r.status
                event[\'address\'] = r.address
                event[\'start_time\'] = r.start_time
                datas.append(event)
            return JsonResponse({\'status\':200, \'message\':\'success\', \'data\':datas})
        else:
            return JsonResponse({\'status\':10022, \'message\':\'query result is empty\'})


# 嘉宾查询接口
def get_guest_list(request):
    eid = request.GET.get("eid", "")       # 关联发布会id
    phone = request.GET.get("phone", "")   # 嘉宾手机号

    if eid == \'\':
        return JsonResponse({\'status\':10021,\'message\':\'eid cannot be empty\'})

    if eid != \'\' and phone == \'\':
        datas = []
        results = Guest.objects.filter(event_id=eid)
        if results:
            for r in results:
                guest = {}
                guest[\'realname\'] = r.realname
                guest[\'phone\'] = r.phone
                guest[\'email\'] = r.email
                guest[\'sign\'] = r.sign
                datas.append(guest)
            return JsonResponse({\'status\':200, \'message\':\'success\', \'data\':datas})
        else:
            return JsonResponse({\'status\':10022, \'message\':\'query result is empty\'})

    if eid != \'\' and phone != \'\':
        guest = {}
        try:
            result = Guest.objects.get(phone=phone,event_id=eid)
        except ObjectDoesNotExist:
            return JsonResponse({\'status\':10022, \'message\':\'query result is empty\'})
        else:
            guest[\'realname\'] = result.realname
            guest[\'phone\'] = result.phone
            guest[\'email\'] = result.email
            guest[\'sign\'] = result.sign
            return JsonResponse({\'status\':200, \'message\':\'success\', \'data\':guest})


# 用户签到接口
def user_sign(request):
    eid =  request.POST.get(\'eid\',\'\')       # 发布会id
    phone =  request.POST.get(\'phone\',\'\')   # 嘉宾手机号

    if eid ==\'\' or phone == \'\':
        return JsonResponse({\'status\':10021,\'message\':\'parameter error\'})

    result = Event.objects.filter(id=eid)
    if not result:
        return JsonResponse({\'status\':10022,\'message\':\'event id null\'})

    result = Event.objects.get(id=eid).status
    if not result:
        return JsonResponse({\'status\':10023,\'message\':\'event status is not available\'})

    event_time = Event.objects.get(id=eid).start_time     # 发布会时间
    timeArray = time.strptime(str(event_time), "%Y-%m-%d %H:%M:%S")
    e_time = int(time.mktime(timeArray))

    now_time = str(time.time())          # 当前时间
    ntime = now_time.split(".")[0]
    n_time = int(ntime)

    if n_time >= e_time:
        return JsonResponse({\'status\':10024,\'message\':\'event has started\'})

    result = Guest.objects.filter(phone=phone)
    if not result:
        return JsonResponse({\'status\':10025,\'message\':\'user phone null\'})

    result = Guest.objects.filter(phone=phone,event_id=eid)
    if not result:
        return JsonResponse({\'status\':10026,\'message\':\'user did not participate in the conference\'})

    result = Guest.objects.get(event_id=eid,phone=phone).sign
    if result:
        return JsonResponse({\'status\':10027,\'message\':\'user has sign in\'})
    else:
        Guest.objects.filter(phone=phone).update(sign=\'1\')
        return JsonResponse({\'status\':200,\'message\':\'sign success\'})

6、配置接口路径

修改urls.py

"""loginDemo URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r\'^$\', views.home, name=\'home\')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r\'^$\', Home.as_view(), name=\'home\')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r\'^blog/\', include(\'blog.urls\'))
"""
from django.conf.urls import url
from django.contrib import admin
from django.urls import include

from loginApp import views

urlpatterns = [
    url(r\'^admin/\', admin.site.urls),
    url(r\'^login/\', views.login),
    url(r\'^login_action/\', views.login_action),
    url(r\'^event_manage/\', views.event_manage),
    url(r\'^accounts/login\',views.login),
    url(r\'^search_name/\',views.search_name),
    url(r\'^search_phone/\',views.search_phone),
    url(r\'^guest_manage/\',views.guest_manage),
    url(r\'^sign_index/(?P<event_id>[0-9]+)/$\',views.sign_index),
    url(r\'^sign_index_action/(?P<event_id>[0-9]+)/$\', views.sign_index_action),
    url(r\'^logout/\',views.logout),
    url(r\'^api/\', include((\'loginApp.urls\',\'loginApp\'), namespace="sign")),
]

 新增loginApp/urls.py 

from django.conf.urls import url

from loginApp import views_interface

urlpatterns = [
    # guest system interface:
    # ex : /api/add_event/
    url(r\'^add_event/\', views_interface.add_event, name=\'add_event\'),
    # ex : /api/add_guest/
    url(r\'^add_guest/\', views_interface.add_guest, name=\'add_guest\'),
    # ex : /api/get_event_list/
    url(r\'^get_event_list/\', views_interface.get_event_list, name=\'get_event_list\'),
    # ex : /api/get_guest_list/
    url(r\'^get_guest_list/\', views_interface.get_guest_list, name=\'get_guest_list\'),
    # ex : /api/user_sign/
    url(r\'^user_sign/\', views_interface.user_sign, name=\'user_sign\'),
]

7、启动后访问:http://127.0.0.1:8000/,用postman或者raw等接口测试工具进行测试

(1)add_event

case1:eid为空

case2:name为空

case3:limit为空

case4:address为空

case5:start_time为空

case6:start_time不是YYYY-MM-DD格式/start_time是YYYY-MM-DD格式,但不是准确的时间2021-13-21 34:21:89

 

 

case7:eid发布会id已经存在

case8:name已经存在

case9:status为空,成功创建,status=1

case10:status传参0,成功创建,status=0

分类:

技术点:

相关文章: