| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 | #!/usr/bin/env python3# -*- coding: utf-8 -*-"""@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.@AUTHOR: ASJRD018@NAME: AnsjerFormal@software: PyCharm@DATE: 2019/1/18 10:45@Version: python3.6@MODIFY DECORD:ansjer dev@file: SysMsg.py@Contact: chanjunkai@163.com"""import jsonimport timeimport oss2from django.db import transactionfrom django.views.generic.base import Viewfrom Ansjer.config import OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRETfrom Model.models import FeedBackModel, StatResModelfrom Object.ResponseObject import ResponseObjectfrom Object.TokenObject import TokenObjectfrom Service.CommonService import CommonServicefrom Service.ModelService import ModelServiceclass FeedBackView(View):    def get(self, request, *args, **kwargs):        request.encoding = 'utf-8'        operation = kwargs.get('operation', None)        return self.validation(request.GET, operation)    def post(self, request, *args, **kwargs):        request.encoding = 'utf-8'        operation = kwargs.get('operation', None)        return self.validation(request.POST, operation)    def validation(self, request_dict, operation):        response = ResponseObject()        token = request_dict.get('token', None)        tko = TokenObject(token)        if tko.code == 0:            userID = tko.userID            if operation == 'add':                return self.do_add(userID, request_dict, response)            elif operation == 'getUploadUrl':                return self.do_get_upload_url(request_dict, response)            elif operation == 'query':                return self.do_query(userID, request_dict, response)            elif operation == 'delete':                return self.do_delete(userID, request_dict, response)            elif operation == 'queryByAdmin':                return self.do_query_by_admin(userID, request_dict, response)            elif operation == 'deleteByAdmin':                return self.do_delete_by_admin(userID, request_dict, response)            else:                return response.json(414)        else:            return response.json(tko.code)    def do_query(self, userID, request_dict, response):        page = request_dict.get('page', None)        line = request_dict.get('line', None)        if page and line:            page = int(page)            line = int(line)        else:            return response.json(444, 'page,line')        fb_qs = FeedBackModel.objects.filter(userID_id=userID)[(page - 1) * line:page * line]. \            values('id', 'status', 'content', 'addTime', 'updTime', 'type')        sid_list = []        for fb in fb_qs:            sid_list.append(fb['id'])        sm_qs = StatResModel.objects.filter(feedbackmodel__id__in=sid_list).values('id', 'name', 'feedbackmodel__id')        # return response.json(0,list(sm_qs))        auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)        bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')        res = []        for fb in fb_qs:            fb['img_url'] = []            for sm in sm_qs:                if sm['feedbackmodel__id'] == fb['id']:                    obj = 'feedback/' + sm['name']                    img_url = bucket.sign_url('GET', obj, 3600)                    fb['img_url'].append(img_url)                    # fb['FS__name'] = sm['name']            res.append(fb)        return response.json(0, res)    def do_add(self, userID, request_dict, response):        nowTime = int(time.time())        content = request_dict.get('content', None)        type = request_dict.get('type', None)        res_1 = request_dict.get('res_1', None)        res_2 = request_dict.get('res_2', None)        res_3 = request_dict.get('res_3', None)        app = request_dict.get('app', None)        phone_model = request_dict.get('phone_model', None)        os_version = request_dict.get('os_version', None)        uid = request_dict.get('uid', None)        product_type = request_dict.get('product_type', None)        app_version = request_dict.get('app_version', None)        appBundleId = request_dict.get('appBundleId', None)        email = request_dict.get('email', None)        score = request_dict.get('score', None)        try:            with transaction.atomic():                fb = FeedBackModel()                fb.addTime = nowTime                fb.updTime = nowTime                fb.content = content                if type:                    fb.type = type                if app:                    fb.app = app                if phone_model:                    fb.phone_model = phone_model                if os_version:                    fb.os_version = os_version                if uid:                    fb.uid = uid                if product_type:                    fb.product_type = product_type                if app_version:                    fb.app_version = app_version                if appBundleId:                    fb.appBundleId = appBundleId                if email:                    fb.email = email                if score:                    fb.score = score                fb.userID_id = userID                fb.save()                if res_1:                    fb.FS.add(StatResModel.objects.create(addTime=nowTime, name=res_1))                if res_2:                    fb.FS.add(StatResModel.objects.create(addTime=nowTime, name=res_2))                if res_3:                    fb.FS.add(StatResModel.objects.create(addTime=nowTime, name=res_3))        except Exception as e:            print(repr(e))            return response.json(500, repr(e))        else:            return response.json(0)    def do_get_upload_url(self, request_dict, response):        uploadType = request_dict.get('uploadType', None)        uploadType = json.loads(uploadType)        if len(uploadType):            res = []            auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)            bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')            for upType in uploadType:                name = CommonService.createOrderID()                s_name = str(name) + '.' + upType                obj = 'feedback/' + s_name                url = bucket.sign_url('PUT', obj, 7200)                res.append({'put_url': url, 'res_name': s_name})            return response.json(0, res)        else:            return response.json(444, 'uploadType')    def do_delete(self, userID, request_dict, response):        id = request_dict.get('id', None)        try:            fb_qs = FeedBackModel.objects.get(userID_id=userID, id=id)            sr_id_list = fb_qs.FS.values_list('id', flat=True)            StatResModel.objects.filter(id__in=sr_id_list).delete()            fb_qs.delete()            # is_delete = StatResModel.objects.filter(id__in=sr_id_list).delete()            # print(is_delete)            print('----------')        except Exception as e:            return response.json(500, repr(e))        else:            return response.json(0)    def do_query_by_admin(self, userID, request_dict, response):        own_perm = ModelService.check_perm(userID, 30)        if own_perm:            page = request_dict.get('page', None)            line = request_dict.get('line', None)            status = request_dict.get('status', None)            username = request_dict.get('username', None)            type = request_dict.get('type', None)            if page and line:                page = int(page)                line = int(line)                filter_data = {}                if status:                    filter_data = {'status': status}                if username:                    filter_data = {'userID_id': ModelService.get_userID_byname(username)}                if type:                    filter_data = {'type': type}                try:                    fb_qs = FeedBackModel.objects.filter()                except Exception as e:                    return response.json(500, repr(e))                print('----------')                if filter_data:                    fb_qs = fb_qs.filter(**filter_data)                count = fb_qs.count()                fb_qs = fb_qs[(page - 1) * line:page * line].values('id', 'type', 'status', 'content', 'addTime', 'app',                                                                    'uid', 'os_version', 'phone_model', 'product_type',                                                                    'updTime', 'userID__username', 'userID__phone',                                                                    'userID__userEmail', 'app_version', 'appBundleId',                                                                    'email', 'score'                                                                    )                sid_list = []                print(fb_qs)                for fb in fb_qs:                    sid_list.append(fb['id'])                sm_qs = StatResModel.objects.filter(feedbackmodel__id__in=sid_list).values('id', 'name',                                                                                           'feedbackmodel__id')                auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)                bucket = oss2.Bucket(auth, 'oss-cn-hongkong.aliyuncs.com', 'statres')                res = []                print(sm_qs)                for fb in fb_qs:                    fb['img_url'] = []                    for sm in sm_qs:                        if sm['feedbackmodel__id'] == fb['id']:                            obj = 'feedback/' + sm['name']                            img_url = bucket.sign_url('GET', obj, 3600)                            # img_url.replace('statres.oss-cn-hongkong.aliyuncs.com','static.zositech.xyz')                            fb['img_url'].append(img_url)                            # fb['FS__name'] = sm['name']                            if fb['userID__username'] == '':                                fb['userID__username'] = fb['userID__userEmail']                            if fb['userID__username'] == '':                                fb['userID__username'] = fb['userID__phone']                    res.append(fb)                return response.json(0, {'datas': res, 'count': count})            else:                return response.json(444, 'page,line')        else:            return response.json(404)    def do_delete_by_admin(self, userID, request_dict, response):        own_perm = ModelService.check_perm(userID, 10)        if own_perm:            id = request_dict.get('id', None)            try:                fb_qs = FeedBackModel.objects.get(id=id)                sr_id_list = fb_qs.FS.values_list('id', flat=True)                StatResModel.objects.filter(id__in=sr_id_list).delete()                fb_qs.delete()                print('----------')            except Exception as e:                return response.json(500, repr(e))            else:                return response.json(0)        else:            return response.json(404)
 |