瀏覽代碼

添加【问题帮助】接口

tanghongbin 5 年之前
父節點
當前提交
bfa8742f14
共有 3 個文件被更改,包括 162 次插入2 次删除
  1. 2 0
      Ansjer/urls.py
  2. 149 2
      Controller/FAQController.py
  3. 11 0
      Model/models.py

+ 2 - 0
Ansjer/urls.py

@@ -221,6 +221,8 @@ urlpatterns = [
 
     # FAQ
     url(r'^faq/upload', FAQController.FAQUploadView.as_view()),
+    url(r'^faq/image/(?P<filePath>.*)$', FAQController.getFAQImage.as_view()),
+    url(r'^faq/(?P<operation>.*)$', FAQController.FAQView.as_view()),
 
     # app 设备消息模板
     # 路由加参数参考

+ 149 - 2
Controller/FAQController.py

@@ -3,13 +3,16 @@
 import os
 import traceback
 
+from django.http import HttpResponse
 from django.utils.decorators import method_decorator
 from django.views.decorators.csrf import csrf_exempt
 from django.views.generic.base import View
 
 from Ansjer.config import BASE_DIR
+from Model.models import FAQModel
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
+from var_dump import var_dump
 
 
 class FAQUploadView(View):
@@ -30,12 +33,17 @@ class FAQUploadView(View):
         return self.validate(fileName, request_dict)
 
     def validate(self, fileName, request_dict):
+
         token = TokenObject(request_dict.get('token', None))
 
         response = ResponseObject()
         if token.code != 0:
             return response.json(token.code)
 
+        # own_permission = ModelService.check_perm(userID=token.userID, permID=120)
+        # if own_permission is not True:
+        #     return response.json(404)
+
         try:
             path = '/'.join((BASE_DIR, 'static/FAQImages')).replace('\\', '/') + '/'
             if not os.path.exists(path):
@@ -63,11 +71,46 @@ class FAQUploadView(View):
         else:
             index = file_name.find('static/')
             filePath = file_name[index:]
+            # filePath = SERVER_DOMAIN + 'faq/image/' + filePath
+            filePath = "http://192.168.136.35:8000/" + 'faq/image/' + filePath
             return response.json(0, {'filePath': filePath})
 
 
-class FAQView(View):
+class getFAQImage(View):
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        filePath = kwargs.get('filePath', None)
+        filePath.encode(encoding='utf-8', errors='strict')
+        response = ResponseObject()
+        return self.getFile(filePath, response)
 
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'gb2312'
+        filePath = kwargs.get('filePath', None)
+        response = ResponseObject()
+        filePath.encode(encoding='gb2312', errors='strict')
+        return self.getFile(filePath, response)
+
+    def getFile(self, filePath, response):
+        if filePath:
+            pass
+        else:
+            return response.json(800)
+        fullPath = os.path.join(BASE_DIR, filePath).replace('\\', '/')
+
+        var_dump(fullPath)
+        if os.path.isfile(fullPath):
+            try:
+                Imagedata = open(fullPath, 'rb').read()
+            except Exception as e:
+                return response.json(906, repr(e))
+            else:
+                return HttpResponse(Imagedata, content_type="image/jpeg")
+        else:
+            return response.json(907)
+
+
+class FAQView(View):
     @method_decorator(csrf_exempt)
     def dispatch(self, *args, **kwargs):
         return super(FAQView, self).dispatch(*args, **kwargs)
@@ -85,4 +128,108 @@ class FAQView(View):
         return self.validate(request_dict, operation)
 
     def validate(self, request_dict, operation):
-        return
+        token = TokenObject(request_dict.get('token', None))
+        response = ResponseObject()
+        if token.code != 0:
+            return response.json(token.code)
+
+        if operation == 'add':
+            return self.do_add(token.userID, request_dict, response)
+        elif operation == 'query':
+            return self.do_query(token.userID, request_dict, response)
+        elif operation == 'update':
+            return self.do_update(token.userID, request_dict, response)
+        elif operation == 'delete':
+            return self.do_delete(token.userID, request_dict, response)
+        else:
+            return response.json(404)
+
+    def do_add(self, userID, request_dict, response):
+
+        # own_permission = ModelService.check_perm(userID=userID, permID=120)
+        # if own_permission is not True:
+        #     return response.json(404)
+
+        title = request_dict.get('title', None)
+        content = request_dict.get('content', None)
+
+        if title and content:
+            FAQModel.objects.create(**{
+                'title': title,
+                'content': content
+            })
+            return response.json(0)
+        else:
+            return response.json(444)
+
+    def do_query(self, userID, request_dict, response):
+
+        page = request_dict.get('page', None)
+        line = request_dict.get('line', None)
+        search_key = request_dict.get('search_key', None)
+
+        if page and line:
+            if search_key:
+                # own_permission = ModelService.check_perm(userID=userID, permID=110)
+                # if own_permission is not True:
+                #     return response.json(404)
+                faq_qs = FAQModel.objects.filter(title__contains=search_key)
+            else:
+                # own_permission = ModelService.check_perm(userID=userID, permID=100)
+                # if own_permission is not True:
+                #     return response.json(404)
+
+                faq_qs = FAQModel.objects.filter()
+
+            if not faq_qs.exists():
+                return response.json(0, [])
+
+            page = int(page)
+            line = int(line)
+            start = (page - 1) * line
+            end = start + line
+            faq_qs = faq_qs.values()[start:end]
+            return response.json(0, list(faq_qs))
+        else:
+            return response.json(444)
+
+    def do_update(self, userID, request_dict, response):
+        # own_permission = ModelService.check_perm(userID=userID, permID=130)
+        # if own_permission is not True:
+        #     return response.json(404)
+
+        id = request_dict.get('id', None)
+        title = request_dict.get('title', None)
+        content = request_dict.get('content', None)
+
+        if id:
+            data = {}
+
+            if title:
+                data['title'] = title
+
+            if content:
+                data['content'] = content
+
+            FAQModel.objects.filter(id=id).update(**data)
+            return response.json(0)
+        else:
+            return response.json(444)
+
+    def do_delete(self, userID, request_dict, response):
+
+        # own_permission = ModelService.check_perm(userID=userID, permID=140)
+        # if own_permission is not True:
+        #     return response.json(404)
+
+        id = request_dict.get('id', None)
+        if id:
+            try:
+                FAQModel.objects.filter(id=id).delete()
+            except Exception as e:
+                print(e)
+                return response.json(173)
+            else:
+                return response.json(0)
+        else:
+            return response.json(444)

+ 11 - 0
Model/models.py

@@ -949,3 +949,14 @@ class AppFrequencyYearStatisticsModel(models.Model):
         verbose_name = 'app使用频率统计表,年度统计'
         verbose_name_plural = verbose_name
         db_table = 'app_frequency_year_statistics'
+
+
+class FAQModel(models.Model):
+    id = models.AutoField(primary_key=True)
+    title = models.CharField(max_length=64, default='', unique=True, verbose_name='标题')
+    content = models.TextField(default='', verbose_name='内容')
+
+    class Meta:
+        db_table = 'tb_faq'
+        verbose_name = '问题帮助表'
+        verbose_name_plural = verbose_name