:art: Some apis

huangqimin001 4 年之前
父節點
當前提交
b1be1488dc

+ 56 - 0
api/branch_campus_admin_views.py

@@ -0,0 +1,56 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from __future__ import division
4
+
5
+from django_response import response
6
+from paginator import pagination
7
+
8
+from registration.models import BranchCampusAdministratorInfo
9
+
10
+
11
+def add_branch_campus_admin(request):
12
+    campus_id = request.POST.get('campus_id', '')
13
+    campus_name = request.POST.get('campus_name', '')
14
+    name = request.POST.get('name', '')
15
+    phone = request.POST.get('phone', '')
16
+
17
+    admin = BranchCampusAdministratorInfo.objects.create(campus_id=campus_id, campus_name=campus_name, name=name, phone=phone)
18
+
19
+    return response(data={
20
+        'admin': admin.admin_id,
21
+    })
22
+
23
+
24
+def update_branch_campus_admin(request):
25
+    admin_id = request.POST.get('admin_id', '')
26
+    name = request.POST.get('name', '')
27
+    phone = request.POST.get('phone', '')
28
+    user_status = request.POST.get('user_status', 0)
29
+
30
+    BranchCampusAdministratorInfo.objects.filter(admin_id=admin_id).update(name=name, phone=phone, user_status=user_status)
31
+
32
+    return response()
33
+
34
+
35
+def get_branch_campus_admin_list(request):
36
+    page = request.POST.get('page', 1)
37
+    num = request.POST.get('num', 20)
38
+
39
+    admins = BranchCampusAdministratorInfo.objects.filter(status=True)
40
+    count = admins.count()
41
+    admins, left = pagination(admins, page, num)
42
+    admins = [a.data for a in admins]
43
+
44
+    return response(data={
45
+        'admins': admins,
46
+        'count': count,
47
+        'left': left,
48
+    })
49
+
50
+
51
+def delete_branch_campus_admin(request):
52
+    admin_id = request.POST.get('admin_id', '')
53
+
54
+    BranchCampusAdministratorInfo.objects.filter(admin_id=admin_id).update(statue=False)
55
+
56
+    return response()

+ 52 - 0
api/branch_campus_views.py

@@ -0,0 +1,52 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from __future__ import division
4
+
5
+from django_response import response
6
+from paginator import pagination
7
+
8
+from registration.models import BranchCampusAdministratorInfo, BranchCampusInfo
9
+
10
+
11
+def add_branch_campus(request):
12
+    campus_name = request.POST.get('campus_name', '')
13
+
14
+    campus = BranchCampusInfo.objects.create(campus_name=campus_name)
15
+
16
+    return response(data={
17
+        'campus_id': campus.campus_id,
18
+    })
19
+
20
+
21
+def update_branch_campus(request):
22
+    campus_id = request.POST.get('campus_id', '')
23
+    campus_name = request.POST.get('campus_name', '')
24
+
25
+    BranchCampusInfo.objects.filter(campus_id=campus_id).update(campus_name=campus_name)
26
+    BranchCampusAdministratorInfo.objects.filter(campus_id=campus_id).update(campus_name=campus_name)
27
+
28
+    return response()
29
+
30
+
31
+def get_branch_campus_list(request):
32
+    page = request.POST.get('page', 1)
33
+    num = request.POST.get('num', 20)
34
+
35
+    campus = BranchCampusInfo.objects.filter(status=True)
36
+    count = campus.count()
37
+    campus, left = pagination(campus, page, num)
38
+    campus = [c.data for c in campus]
39
+
40
+    return response(data={
41
+        'campus': campus,
42
+        'count': count,
43
+        'left': left,
44
+    })
45
+
46
+
47
+def delete_branch_campus(request):
48
+    campus_id = request.POST.get('campus_id', '')
49
+
50
+    BranchCampusInfo.objects.filter(campus_id=campus_id).update(statue=False)
51
+
52
+    return response()

+ 71 - 0
api/course_field_views.py

@@ -0,0 +1,71 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from __future__ import division
4
+
5
+from django_response import response
6
+from paginator import pagination
7
+
8
+from api.wx_views import get_course_field_limit_scene_qrcode_url
9
+from registration.models import CourseRegisterFieldInfo
10
+
11
+
12
+def add_course_field(request):
13
+    course_id = request.POST.get('course_id', '')
14
+    course_name = request.POST.get('course_name', '')
15
+    fields = request.POST.get('fields', [])
16
+
17
+    course_field = CourseRegisterFieldInfo.objects.create(course_id=course_id, course_name=course_name, fields=fields)
18
+    course_field.limit_scene_qrcode_url = get_course_field_limit_scene_qrcode_url(course_field.field_id)
19
+    course_field.save()
20
+
21
+    return response(data={
22
+        'field_id': course_field.field_id,
23
+    })
24
+
25
+
26
+def update_course_field(request):
27
+    field_id = request.POST.get('field_id', '')
28
+    course_id = request.POST.get('course_id', '')
29
+    course_name = request.POST.get('course_name', '')
30
+    fields = request.POST.get('fields', [])
31
+
32
+    CourseRegisterFieldInfo.objects.filter(field_id=field_id).update(course_id=course_id, course_name=course_name, fields=fields)
33
+
34
+    return response()
35
+
36
+
37
+def get_course_field(request):
38
+    field_id = request.POST.get('field_id', '')
39
+
40
+    try:
41
+        field = CourseRegisterFieldInfo.objects.get(field_id=field_id)
42
+    except CourseRegisterFieldInfo.DoesNotExist:
43
+        return response()
44
+
45
+    return response(data={
46
+        'field': field.data,
47
+    })
48
+
49
+
50
+def get_course_field_list(request):
51
+    page = request.POST.get('page', 1)
52
+    num = request.POST.get('num', 20)
53
+
54
+    fields = CourseRegisterFieldInfo.objects.filter(status=True)
55
+    count = fields.count()
56
+    fields, left = pagination(fields, page, num)
57
+    fields = [f.data for f in fields]
58
+
59
+    return response(data={
60
+        'fields': fields,
61
+        'count': count,
62
+        'left': left,
63
+    })
64
+
65
+
66
+def delete_course_field(request):
67
+    field_id = request.POST.get('field_id', '')
68
+
69
+    CourseRegisterFieldInfo.objects.filter(field_id=field_id).update(statue=False)
70
+
71
+    return response()

+ 53 - 0
api/course_views.py

@@ -0,0 +1,53 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from __future__ import division
4
+
5
+from django_response import response
6
+from paginator import pagination
7
+
8
+from registration.models import CourseInfo, CourseRegisterFieldInfo, CourseRegisterInfo
9
+
10
+
11
+def add_course(request):
12
+    course_name = request.POST.get('course_name', '')
13
+
14
+    course = CourseInfo.objects.create(course_name=course_name)
15
+
16
+    return response(data={
17
+        'course_id': course.course_id,
18
+    })
19
+
20
+
21
+def update_course(request):
22
+    course_id = request.POST.get('course_id', '')
23
+    course_name = request.POST.get('course_name', '')
24
+
25
+    CourseInfo.objects.filter(course_id=course_id).update(course_name=course_name)
26
+    CourseRegisterFieldInfo.objects.filter(course_id=course_id).update(course_name=course_name)
27
+    CourseRegisterInfo.objects.filter(course_id=course_id).update(course_name=course_name)
28
+
29
+    return response()
30
+
31
+
32
+def get_course_list(request):
33
+    page = request.POST.get('page', 1)
34
+    num = request.POST.get('num', 20)
35
+
36
+    course = CourseInfo.objects.filter(status=True)
37
+    count = course.count()
38
+    course, left = pagination(course, page, num)
39
+    course = [c.data for c in course]
40
+
41
+    return response(data={
42
+        'course': course,
43
+        'count': count,
44
+        'left': left,
45
+    })
46
+
47
+
48
+def delete_course(request):
49
+    course_id = request.POST.get('course_id', '')
50
+
51
+    CourseInfo.objects.filter(course_id=course_id).update(statue=False)
52
+
53
+    return response()

+ 32 - 3
api/urls.py

@@ -2,14 +2,43 @@
2 2
 
3 3
 from django.conf.urls import url
4 4
 
5
-from api import oauth_views, wx_views
5
+from api import branch_campus_admin_views, branch_campus_views, course_field_views, course_views, oauth_views, wx_views
6 6
 
7 7
 
8 8
 urlpatterns = [
9
+    url(r'^3rd/or$', oauth_views.oauth_redirect, name='3rd_or'),
10
+    url(r'^3rd/oauth_redirect$', oauth_views.oauth_redirect, name='3rd_oauth_redirect'),
11
+]
12
+
13
+urlpatterns += [
9 14
     url(r'^get_limit_scene_qrcode_url$', wx_views.get_limit_scene_qrcode_url, name='get_limit_scene_qrcode_url'),
10 15
 ]
11 16
 
12 17
 urlpatterns += [
13
-    url(r'^3rd/or$', oauth_views.oauth_redirect, name='3rd_or'),
14
-    url(r'^3rd/oauth_redirect$', oauth_views.oauth_redirect, name='3rd_oauth_redirect'),
18
+    url(r'^branch/campus/add$', branch_campus_views.add_branch_campus, name='add_branch_campus'),
19
+    url(r'^branch/campus/update$', branch_campus_views.update_branch_campus, name='update_branch_campus'),
20
+    url(r'^branch/campus/list$', branch_campus_views.get_branch_campus_list, name='get_branch_campus_list'),
21
+    url(r'^branch/campus/delete$', branch_campus_views.delete_branch_campus, name='delete_branch_campus'),
22
+]
23
+
24
+urlpatterns += [
25
+    url(r'^branch/campus/admin/add$', branch_campus_admin_views.add_branch_campus_admin, name='add_branch_campus_admin'),
26
+    url(r'^branch/campus/update$', branch_campus_admin_views.update_branch_campus_admin, name='update_branch_campus_admin'),
27
+    url(r'^branch/campus/list$', branch_campus_admin_views.get_branch_campus_admin_list, name='get_branch_campus_admin_list'),
28
+    url(r'^branch/campus/delete$', branch_campus_admin_views.delete_branch_campus_admin, name='delete_branch_campus_admin'),
29
+]
30
+
31
+urlpatterns += [
32
+    url(r'^course/add$', course_views.add_course, name='add_course'),
33
+    url(r'^course/update$', course_views.update_course, name='update_course'),
34
+    url(r'^course/list$', course_views.get_course_list, name='get_course_list'),
35
+    url(r'^course/delete$', course_views.delete_course, name='delete_course'),
36
+]
37
+
38
+urlpatterns += [
39
+    url(r'^course/field/add$', course_field_views.add_course_field, name='add_course_field'),
40
+    url(r'^course/field/update$', course_field_views.update_course_field, name='update_course_field'),
41
+    url(r'^course/field/get$', course_field_views.get_course_field, name='get_course_field'),
42
+    url(r'^course/field/list$', course_field_views.get_course_field_list, name='get_course_field_list'),
43
+    url(r'^course/field/delete$', course_field_views.delete_course_field, name='delete_course_field'),
15 44
 ]

+ 15 - 0
api/wx_views.py

@@ -28,3 +28,18 @@ def get_limit_scene_qrcode_url(request):
28 28
     return response(data={
29 29
         'qrurl': qrurl,
30 30
     })
31
+
32
+
33
+def get_course_field_limit_scene_qrcode_url(scene):
34
+    if not scene:
35
+        return ''
36
+
37
+    JSAPI = settings.WECHAT.get('JSAPI', {})
38
+
39
+    appid = JSAPI.get('appID', '')
40
+    appsecret = JSAPI.get('appsecret', '')
41
+
42
+    qrinfo = qrcode_limit_str_scene(scene_str=scene, appid=appid, secret=appsecret, storage=RedisStorage(r))
43
+    qrurl = qrcode_url(qrinfo.get('ticket'))
44
+
45
+    return qrurl

+ 2 - 1
registration/admin.py

@@ -2,7 +2,8 @@
2 2
 
3 3
 from django.contrib import admin
4 4
 
5
-from registration.models import BranchCampusInfo, BranchCampusAdministratorInfo, CourseInfo, CourseRegisterFieldInfo, CourseRegisterInfo
5
+from registration.models import (BranchCampusAdministratorInfo, BranchCampusInfo, CourseInfo, CourseRegisterFieldInfo,
6
+                                 CourseRegisterInfo)
6 7
 
7 8
 
8 9
 class BranchCampusInfoAdmin(admin.ModelAdmin):

+ 18 - 0
registration/migrations/0002_courseregisterfieldinfo_limit_scene_qrcode_url.py

@@ -0,0 +1,18 @@
1
+# Generated by Django 2.2.17 on 2021-02-03 23:13
2
+
3
+from django.db import migrations, models
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('registration', '0001_initial'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.AddField(
14
+            model_name='courseregisterfieldinfo',
15
+            name='limit_scene_qrcode_url',
16
+            field=models.CharField(blank=True, help_text='字段二维码', max_length=255, null=True, verbose_name='limit_scene_qrcode_url'),
17
+        ),
18
+    ]

+ 36 - 0
registration/models.py

@@ -18,6 +18,13 @@ class BranchCampusInfo(BaseModelMixin):
18 18
     def __unicode__(self):
19 19
         return '%d' % self.pk
20 20
 
21
+    @property
22
+    def data(self):
23
+        return {
24
+            'campus_id': self.campus_id,
25
+            'campus_name': self.campus_name,
26
+        }
27
+
21 28
 
22 29
 class BranchCampusAdministratorInfo(BaseModelMixin):
23 30
     PENDING = 0
@@ -49,6 +56,17 @@ class BranchCampusAdministratorInfo(BaseModelMixin):
49 56
     def __unicode__(self):
50 57
         return '%d' % self.pk
51 58
 
59
+    @property
60
+    def data(self):
61
+        return {
62
+            'admin_id': self.admin_id,
63
+            'campus_id': self.campus_id,
64
+            'campus_name': self.campus_name,
65
+            'name': self.name,
66
+            'phone': self.phone,
67
+            'user_status': self.user_status,
68
+        }
69
+
52 70
 
53 71
 class CourseInfo(BaseModelMixin):
54 72
     course_id = ShortUUIDField(_('course_id'), max_length=32, blank=True, null=True, help_text='课程唯一标识', db_index=True, unique=True)
@@ -62,6 +80,13 @@ class CourseInfo(BaseModelMixin):
62 80
     def __unicode__(self):
63 81
         return '%d' % self.pk
64 82
 
83
+    @property
84
+    def data(self):
85
+        return {
86
+            'course_id': self.course_id,
87
+            'course_name': self.course_name,
88
+        }
89
+
65 90
 
66 91
 class CourseRegisterFieldInfo(BaseModelMixin):
67 92
     field_id = ShortUUIDField(_('field_id'), max_length=32, blank=True, null=True, help_text='字段唯一标识', db_index=True, unique=True)
@@ -76,6 +101,8 @@ class CourseRegisterFieldInfo(BaseModelMixin):
76 101
     # }
77 102
     fields = JSONField(_('fields'), default=[], blank=True, null=True, help_text='字段列表')
78 103
 
104
+    limit_scene_qrcode_url = models.CharField(_('limit_scene_qrcode_url'), max_length=255, blank=True, null=True, help_text='字段二维码')
105
+
79 106
     class Meta:
80 107
         verbose_name = _('课程报名字段信息')
81 108
         verbose_name_plural = _('课程报名字段信息')
@@ -83,6 +110,15 @@ class CourseRegisterFieldInfo(BaseModelMixin):
83 110
     def __unicode__(self):
84 111
         return '%d' % self.pk
85 112
 
113
+    @property
114
+    def data(self):
115
+        return {
116
+            'field_id': self.field_id,
117
+            'course_id': self.course_id,
118
+            'course_name': self.course_name,
119
+            'fields': self.fields,
120
+        }
121
+
86 122
 
87 123
 class CourseRegisterInfo(BaseModelMixin):
88 124
     field_id = models.CharField(_('field_id'), max_length=32, blank=True, null=True, help_text='字段唯一标识', db_index=True)

+ 1 - 0
registration/tests.py

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

+ 1 - 0
registration/views.py

@@ -1,3 +1,4 @@
1 1
 from django.shortcuts import render
2 2
 
3
+
3 4
 # Create your views here.

+ 1 - 0
requirements_dj.txt

@@ -10,6 +10,7 @@ django-redis-connector==1.0.3
10 10
 django-response==1.1.1
11 11
 django-rlog==1.0.7
12 12
 django-short-url==1.1.4
13
+django-shortuuidfield==0.1.3
13 14
 django-six==1.0.4
14 15
 django-uniapi==1.0.10
15 16
 django-we==1.5.5