| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 | #!/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):        response = uidManageResponseObject()        if operation == 'createSerial':            return self.do_create_serial(request_dict, response)        token = TokenObject(request_dict.get('token', None))        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)        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)    def do_create_serial(self, 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 not all([id, quantity]):            return response.json(444)        company_qs = CompanyModel.objects.filter(id=id)        if not company_qs.exists():            return response.json(444)        sum_Serial = SerialNumberModel.objects.filter().count()        sum_Serial_company = CompanySerialModel.objects.filter().count()        sum_bind = sum_Serial - sum_Serial_company  # 剩余可绑定的序列号        if int(quantity) > int(sum_bind):            return response.json(10041)        try:            company = company_qs[0]            start_1 = sum_Serial_company            end_1 = int(start_1) + int(quantity)            serial_qs = SerialNumberModel.objects.filter()[start_1:end_1]            if serial_qs.exists():                company_serial_bulk = []                now_time = int(time.time())                for item in serial_qs:                    company_serial_bulk.append(CompanySerialModel(                        status=1,                        add_time=now_time,                        update_time=now_time,                        company_id=company.id,                        serial_number=item.serial_number,                    ))                with transaction.atomic():                    CompanySerialModel.objects.bulk_create(company_serial_bulk)                    company.quantity = CompanySerialModel.objects.filter(company_id=id).count()                    company.save()                return response.json(0)            else:                return response.json(173)        except Exception as e:            djangoLogger = logging.getLogger('django')            djangoLogger.exception(repr(e))            return response.json(176, str(e))    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)
 |