Sfoglia il codice sorgente

添加一个用户登录手机品牌表(写了添加,显示接口),和添加一个用户反馈表(没写接口)

pzb 6 anni fa
parent
commit
7cb03a249c
3 ha cambiato i file con 173 aggiunte e 1 eliminazioni
  1. 3 1
      Ansjer/urls.py
  2. 133 0
      Controller/UserBrandController.py
  3. 37 0
      Model/models.py

+ 3 - 1
Ansjer/urls.py

@@ -5,7 +5,7 @@ from Controller import FeedBackInfo, EquipmentOTA, EquipmentInfo, EquipmentSenso
     AccessLog, Test, MealManage, DeviceManage, EquipmentStatus, SysManage, DeviceLog, LogAccess, AppColophon,\
     EquipmentManager, LogManager, PermissionManager, OTAEquipment, UidappController, shareUserPermission, \
     UserManger, CheckUserData, \
-    UserController, CloudVod, OrderContrller, VodBucket, DetectController,DeviceShare
+    UserController, CloudVod, OrderContrller, VodBucket, DetectController,DeviceShare,UserBrandController
 
 urlpatterns = [
     url(r'^account/authcode$', UserController.authCodeView.as_view()),
@@ -73,6 +73,8 @@ urlpatterns = [
     url(r'^adminManage/manage', AdminManage.AdminManage.as_view()),  # 管理员专属view
     url(r'^equipment/OTA', EquipmentOTA.EquipmentOTA.as_view()),  # OTA重构类
     url(r'^feedbackInfo', FeedBackInfo.FeedBackInfo.as_view()),  # 用户反馈信息
+    url(r'^userbrandinfo',UserBrandController.UserBrandInfo.as_view()), # 用户登录的手机端品牌记录统计信息表
+
     url(r'^appInfo', AppInfo.AppInfo.as_view()),  # app版本信息
     url(r'^accesslog', AccessLog.AccessLog.as_view()),
     url(r'^meal/manage', MealManage.MealManage.as_view()),

+ 133 - 0
Controller/UserBrandController.py

@@ -0,0 +1,133 @@
+from django.views.generic.base import View
+from django.utils.decorators import method_decorator
+from django.views.decorators.csrf import csrf_exempt
+from Service.ModelService import ModelService
+from Model.models import User_Brand,Device_User
+from django.utils import timezone
+import traceback,time
+from Object.ResponseObject import ResponseObject
+from Object.TokenObject import TokenObject
+from Service.CommonService import CommonService
+'''
+
+http://192.168.136.45:8077/userbrandinfo?operation=query&token=test&page=1&line=10
+
+http://192.168.136.39:8000/userbrandinfo?operation=query&token=test&page=1&line=5
+http://192.168.136.39:8000/userbrandinfo?operation=queryAll&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiY24iLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJtX2NvZGUiOiIxMjM0MTMyNDMyMTQiLCJleHAiOjE1NTk4OTY4NTd9.nhK3VSghSGjyXKjel4woz7R_3bhjgqQDlX-ypYsklNU&page=1&line=5
+'''
+
+
+class UserBrandInfo(View):
+    @method_decorator(csrf_exempt)
+    def dispatch(self, *args, **kwargs):
+        return super(UserBrandInfo, self).dispatch(*args, **kwargs)
+
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        return self.validation(request_dict=request.GET)
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        return self.validation(request_dict=request.POST)
+
+    def validation(self, request_dict, *args, **kwargs):
+        response = ResponseObject()
+        token = request_dict.get('token', None)
+        if token is not None:
+            tko = TokenObject(token)
+            response.lang = tko.lang
+            if tko.code == 0:
+                userID = tko.userID
+                operation = request_dict.get('operation', None)
+                if userID is not None:
+                    if operation == 'query':
+                        return self.query_info(request_dict, userID,response)
+                    elif operation == 'add':
+                        return self.add_info(request_dict, userID,response)
+                    elif operation == 'queryAll':
+                        return self.query_all_info(request_dict, userID,response)
+                    else:
+                        return response.json(444,'444')
+                else:
+                    return response.json(309)
+            else:
+                return response.json(tko.code)
+        else:
+            return response.json(309)
+
+    # http://192.168.136.39:8000/userbrandinfo?operation=add&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySUQiOiIxNTQzOTA5MDUwNDEzMTM4MDAxMzgwMDAiLCJsYW5nIjoiY24iLCJ1c2VyIjoiMTM4MDAxMzgwMDEiLCJtX2NvZGUiOiIxMjM0MTMyNDMyMTQiLCJleHAiOjE1NTk4OTY4NTd9.nhK3VSghSGjyXKjel4woz7R_3bhjgqQDlX-ypYsklNU&deviceSupplier=12341234&deviceModel=deviceModel&osType=osType&osVersion=osVersion
+    def add_info(self, request_dict, userID,response):
+        deviceSupplier = request_dict.get('deviceSupplier', None)
+        deviceModel = request_dict.get('deviceModel', None)
+        osType = request_dict.get('osType', None)
+        osVersion = request_dict.get('osVersion', None)
+        try:
+            user_brand = User_Brand(
+                userID=Device_User.objects.get(userID=userID),
+                deviceSupplier=deviceSupplier,
+                deviceModel=deviceModel,
+                osType=osType,
+                osVersion=osVersion,
+                addTime = int(time.time())
+            )
+            user_brand.save()
+        except Exception:
+            errorInfo = traceback.format_exc()
+            print(errorInfo)
+            return response.json(424, {'details': errorInfo})
+        else:
+            print(type(user_brand.addTime))
+            return response.json(0,{'id':user_brand.id})
+
+
+    def query_info(self, request_dict, userID,response):
+        page = int(request_dict.get('page', None))
+        line = int(request_dict.get('line', None))
+        param_flag = CommonService.get_param_flag(data=[page, line])
+        if param_flag is True:
+            user_brand_queryset = User_Brand.objects.filter(userID=userID).order_by('-id')
+            if user_brand_queryset.exists():
+                count = user_brand_queryset.count()
+                res = user_brand_queryset[(page - 1) * line:page * line]
+                send_json = CommonService.qs_to_dict(res)
+                send_json['count'] = count
+                return response.json(0, send_json)
+            return response.json(0, {'datas': [], 'count': 0})
+        else:
+            return response.json(444)
+
+
+    def query_all_info(self, request_dict, userID,response):
+        page = int(request_dict.get('page', None))
+        line = int(request_dict.get('line', None))
+        order = request_dict.get('order','-id')
+        if order == '':
+            order ='-id'
+        param_flag = CommonService.get_param_flag(data=[page, line])
+        if param_flag is True:
+            check_perm = ModelService.check_perm(userID=userID,permID=30)
+            if check_perm is True:
+                user_brand_queryset = User_Brand.objects.all().order_by('userID').values_list('userID', flat=True).distinct()
+
+                print (user_brand_queryset)
+                addtime=[]
+                for i in user_brand_queryset:
+                    user_brand_querysetlast = User_Brand.objects.filter(userID=i).order_by(order)[:1]
+                    user_brand_querysetlast = CommonService.qs_to_dict(user_brand_querysetlast)
+                    addtime.append(user_brand_querysetlast["datas"][0]['fields']['addTime'])
+                print(addtime)
+                user_brand_queryset = User_Brand.objects.filter(userID__in = user_brand_queryset, addTime__in=addtime).order_by(order)
+                if user_brand_queryset.exists():
+                    count = user_brand_queryset.count()
+                    res = user_brand_queryset[(page - 1) * line:page * line]
+                    send_json = CommonService.qs_to_dict(res)
+                    for k, v in enumerate(send_json["datas"]):
+                        username = ModelService.get_user_name(userID=send_json["datas"][k]['fields']['userID'])
+                        send_json["datas"][k]['fields']['username']=username
+                    send_json['count'] = count
+                    return response.json(0, send_json)
+                return response.json(0, {'datas': [], 'count': 0})
+            else:
+                return response.json(404)
+        else:
+            return response.json(444)

+ 37 - 0
Model/models.py

@@ -358,10 +358,47 @@ class Feedback_Info(models.Model):
 
     class Meta:
         db_table = 'feedback_info'
+        verbose_name = u'用户反馈信息表----暂时不用'
+        verbose_name_plural = verbose_name
+        ordering = ('id',)
+
+class User_Feedback(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
+    # 反馈关联用户
+    userID = models.ForeignKey( Device_User,to_field='userID',on_delete=models.CASCADE)
+    smallInt = models.IntegerField(blank=True, default=0, verbose_name=u'状态:   0未读  1已读')
+    content = models.TextField(blank=True, null=True, default='', verbose_name=u'反馈的内容描述')
+    urls = models.TextField( blank=True, max_length=300, default='', verbose_name=u'存储多张图片的路径')
+    addTime = models.IntegerField( verbose_name='添加时间', default=0)
+    updTime =  models.IntegerField(verbose_name='更新时间', default=0)
+
+    def __str__(self):
+        return self.id
+
+    class Meta:
+        db_table = 'user_feedback'
         verbose_name = u'用户反馈信息表'
         verbose_name_plural = verbose_name
         ordering = ('id',)
 
+class User_Brand(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
+    # 关联用户
+    userID = models.ForeignKey( Device_User,to_field='userID',on_delete=models.CASCADE)
+    deviceSupplier = models.CharField(max_length=32, default='', verbose_name='(必填)设备供应商 string  (例:华为、小米...)')
+    deviceModel = models.CharField(max_length=32, default='', verbose_name='(必填)设备型号 string @mock=HM NOTE 1TD')
+    osType = models.CharField(max_length=32, default='', verbose_name='(必填)操作系统名称 string @mock=Android')
+    osVersion = models.CharField(max_length=32, default='', verbose_name='(必填)操作系统版本号 string @mock=4.0')
+    addTime = models.IntegerField( verbose_name='添加时间', default=0)
+    def __str__(self):
+        return self.id
+
+    class Meta:
+        db_table = 'user_brand'
+        verbose_name = u'用户登录手机端手机品牌统计表'
+        verbose_name_plural = verbose_name
+        ordering = ('id',)
+
 
 # 存储通表
 class VodBucketModel(models.Model):