| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 | #!/usr/bin/env python3# -*- coding: utf-8 -*-import loggingimport timefrom django.db import transactionfrom django.views import Viewfrom Model.models import CompanyModel, UserModel, SerialNumberModel, CompanySerialModelfrom Object.uidManageResponseObject import uidManageResponseObjectfrom Object.TokenObject import TokenObjectfrom Service.CommonService import CommonServicefrom Service.ModelService import ModelServiceclass CompanyView(View):    def get(self, request, *arg, **kwargs):        request.encoding = 'utf-8'        request_dict = request.GET        operation = kwargs.get('operation', None)        return self.validate(request_dict, operation)    def post(self, request, *arg, **kwargs):        request.encoding = 'utf-8'        request_dict = request.POST        operation = kwargs.get('operation', None)        return self.validate(request_dict, operation)    def validate(self, request_dict, operation):        token = TokenObject(request_dict.get('token', None))        response = uidManageResponseObject()        if token.code != 0:            return response.json(token.code)        if operation == 'create':            return self.do_create(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)        elif operation == 'list':            return self.do_list(token.userID, request_dict, response)        elif operation == 'createSerial':            return self.do_create_serial(token.userID, request_dict, response)        else:            return response.json(404)    def do_create(self, userID, request_dict, response):        # perm = ModelService.check_perm_uid_manage(userID, 0)        # if not perm:        #     return response.json(309)        name = request_dict.get('name', None)        mark = request_dict.get('mark', None)        if name and mark:            now_time = int(time.time())            company_qs = CompanyModel.objects.filter(mark=mark)            if company_qs.exists():                return response.json(174)            secret = self.create_secret(mark)            print(secret)            company = CompanyModel(                name=name,                mark=mark,                secret=secret,                quantity=0,                add_time=now_time,                update_time=now_time            )            company.save()            return response.json(0)        else:            return response.json(444)    def do_update(self, userID, request_dict, response):        # perm = ModelService.check_perm_uid_manage(userID, 0)        # if not perm:        #     return response.json(309)        id = request_dict.get('id', None)        if id:            name = request_dict.get('name', None)            quantity = request_dict.get('quantity', None)            update = {}            if name:                update['name'] = name            if quantity:                update['quantity'] = quantity            company_qs = CompanyModel.objects.filter(id=id)            if company_qs.exists():                company_qs.update(**update)                return response.json(0)            else:                return response.json(173)        else:            return response.json(444)    def do_delete(self, userID, request_dict, response):        # perm = ModelService.check_perm_uid_manage(userID, 0)        # if not perm:        #     return response.json(309)        id = request_dict.get('id', None)        if id:            CompanyModel.objects.filter(id=id).delete()            return response.json(0)        else:            return response.json(444)    @transaction.atomic    def do_create_serial(self, userID, request_dict, response):        # perm = ModelService.check_perm_uid_manage(userID, 0)        # if not perm:        #     return response.json(309)        id = request_dict.get('id', None)        quantity = request_dict.get('quantity', None)        if id and quantity:            company_qs = CompanyModel.objects.filter(id=id)            if not company_qs.exists():                return response.json(444)            savePoint = transaction.savepoint()            try:                try:                    company = company_qs[0]                    start = company.quantity                    end = start + int(quantity)                    serial_qs = SerialNumberModel.objects.filter()[start:end]                    if serial_qs.exists():                        data = []                        now_time = int(time.time())                        for item in serial_qs:                            data.append(CompanySerialModel(                                company_id=company.id,                                serial_number_id=item.id,                                add_time=now_time,                                update_time=now_time                            ))                            if len(data) == 5000:                                CompanySerialModel.objects.bulk_create(data)                                data.clear()                        if len(data) > 0:                            CompanySerialModel.objects.bulk_create(data)                            data.clear()                        company.quantity = company.quantity + end - start                        company.save()                        return response.json(0)                    else:                        return response.json(173)                except Exception as e:                    # print('--------------------------error 5000')                    # print(repr(e))                    if savePoint:                        transaction.rollback(savePoint)                    djangoLogger = logging.getLogger('django')                    djangoLogger.exception(repr(e))                    return response.json(176, str(e))            except Exception as e:                # print('--------------------------error 5001')                # print(repr(e))                djangoLogger = logging.getLogger('django')                djangoLogger.exception(repr(e))                return response.json(176, str(e))        else:            return response.json(444)    def do_list(self, userID, request_dict, response):        # perm = ModelService.check_perm_uid_manage(userID, 0)        # if not perm:        #     return response.json(309)        page = request_dict.get('page', None)        line = request_dict.get('limit', None)        if page and line:            page = int(page)            line = int(line)            start = (page - 1) * line            end = start + line            company_qs = CompanyModel.objects.filter()            count = company_qs.count()            company_qs = company_qs[start: end].values()            print(company_qs)            res = {                'count': count,                'data': list(company_qs)            }            return response.json(0, res)        else:            return response.json(444)    def create_secret(self, mark):        len1 = len(mark)        secret = ''        for i in range(len1):            secret += CommonService.RandomStr(randomlength=1)            secret += mark[i]        print(mark)        return CommonService.encode_data_without_salt(secret)
 |