Selaa lähdekoodia

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

pzb 6 vuotta sitten
vanhempi
commit
7cb03a249c
3 muutettua tiedostoa jossa 173 lisäystä ja 1 poistoa
  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,\
     AccessLog, Test, MealManage, DeviceManage, EquipmentStatus, SysManage, DeviceLog, LogAccess, AppColophon,\
     EquipmentManager, LogManager, PermissionManager, OTAEquipment, UidappController, shareUserPermission, \
     EquipmentManager, LogManager, PermissionManager, OTAEquipment, UidappController, shareUserPermission, \
     UserManger, CheckUserData, \
     UserManger, CheckUserData, \
-    UserController, CloudVod, OrderContrller, VodBucket, DetectController,DeviceShare
+    UserController, CloudVod, OrderContrller, VodBucket, DetectController,DeviceShare,UserBrandController
 
 
 urlpatterns = [
 urlpatterns = [
     url(r'^account/authcode$', UserController.authCodeView.as_view()),
     url(r'^account/authcode$', UserController.authCodeView.as_view()),
@@ -73,6 +73,8 @@ urlpatterns = [
     url(r'^adminManage/manage', AdminManage.AdminManage.as_view()),  # 管理员专属view
     url(r'^adminManage/manage', AdminManage.AdminManage.as_view()),  # 管理员专属view
     url(r'^equipment/OTA', EquipmentOTA.EquipmentOTA.as_view()),  # OTA重构类
     url(r'^equipment/OTA', EquipmentOTA.EquipmentOTA.as_view()),  # OTA重构类
     url(r'^feedbackInfo', FeedBackInfo.FeedBackInfo.as_view()),  # 用户反馈信息
     url(r'^feedbackInfo', FeedBackInfo.FeedBackInfo.as_view()),  # 用户反馈信息
+    url(r'^userbrandinfo',UserBrandController.UserBrandInfo.as_view()), # 用户登录的手机端品牌记录统计信息表
+
     url(r'^appInfo', AppInfo.AppInfo.as_view()),  # app版本信息
     url(r'^appInfo', AppInfo.AppInfo.as_view()),  # app版本信息
     url(r'^accesslog', AccessLog.AccessLog.as_view()),
     url(r'^accesslog', AccessLog.AccessLog.as_view()),
     url(r'^meal/manage', MealManage.MealManage.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:
     class Meta:
         db_table = 'feedback_info'
         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 = u'用户反馈信息表'
         verbose_name_plural = verbose_name
         verbose_name_plural = verbose_name
         ordering = ('id',)
         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):
 class VodBucketModel(models.Model):