| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 | import timefrom django.core.paginator import Paginatorfrom django.views import Viewfrom Model.models import CustomCustomerOrderInfo, CustomCustomerDevicefrom Object.ResponseObject import ResponseObjectfrom Object.TokenObject import TokenObjectclass CustomCustomerView(View):    def get(self, request, *args, **kwargs):        request.encoding = 'utf-8'        operation = kwargs.get('operation')        request_dict = request.GET        return self.validation(request, request_dict, operation)    def post(self, request, *args, **kwargs):        request.encoding = 'utf-8'        operation = kwargs.get('operation')        request_dict = request.POST        return self.validation(request, request_dict, operation)    def validation(self, request, request_dict, operation):        language = request_dict.get('language', 'cn')        response = ResponseObject(language)        if operation == 'getCustomCustomer':  # APP查詢定制客户信息            return self.get_custom_customer(request_dict, response)        elif operation == 'addCustomerDevice':  # 定制客户设备扫码添加接口            return self.add_customer_device(request_dict, response)        elif operation == 'getCustomerDeviceCount':  # 查询定制客户已扫码添加设备数量接口            return self.get_customer_device_count(request_dict, response)        else:            return response.json(414)    @staticmethod    def get_custom_customer(request_dict, response):        """        APP查询定制客户信息        :param request_dict:        :param response:        :return:        """        order_number = request_dict.get('orderNumber', None)        if not order_number:            return response.json(444)        try:            custom_customer = CustomCustomerOrderInfo.objects.filter(order_number=order_number).first()            if not custom_customer:                return response.json(173)            device_count = CustomCustomerDevice.objects.filter(c_id=custom_customer.id).count()            custom_customer_data = {                'cid': custom_customer.id,                'quantity': custom_customer.quantity,                'existsDeviceCount': device_count,                'unexistsDeviceCount': custom_customer.quantity - device_count            }            return response.json(0, custom_customer_data)        except Exception as e:            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))    def add_customer_device(self, request_dict, response):        """        定制客户设备扫码添加接口        :param request_dict:        :param response:        :return:        """        # 获取并验证请求中的必要参数        c_id = request_dict.get('cid')        full_code = request_dict.get('QRcode', '').strip()        if not c_id or not full_code:            return response.json(444, "cId、QRcode")        # 验证客户信息是否存在        custom_customer = CustomCustomerOrderInfo.objects.filter(id=c_id).first()        if not custom_customer:            return response.json(173)        custom_customer_device_qs = CustomCustomerDevice.objects.filter(full_code=full_code)        if custom_customer_device_qs.exists():            return response.json(174)        # 创建新设备记录        try:            # 检查full_code的格式并提取相关字段            uid, serial_number, device_type = self.process_full_code(full_code)            CustomCustomerDevice.objects.create(                c_id=c_id,                serial_number=serial_number,                uid=uid,                full_code=full_code,                type=device_type,                created_time=int(time.time()),                updated_time=int(time.time())            )            device_count = CustomCustomerDevice.objects.filter(c_id=c_id).count()            return response.json(0, {                'existsDeviceCount': device_count,                'unexistsDeviceCount': custom_customer.quantity - device_count            })        except Exception as e:            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))    @staticmethod    def process_full_code(full_code):        """ 处理full_code, 返回uid和serial_number """        serial_number = ""        uid = ""        device_type = 0        if len(full_code) == 14:            serial_number = full_code[:9]            device_type = int(full_code[-4:], 16)        elif len(full_code) == 20:            uid = full_code        return uid, serial_number, device_type    @staticmethod    def get_customer_device_count(request_dict, response):        """        查询定制客户已扫码添加设备数量        :param request_dict:        :param response:        :return:        """        order_number = request_dict.get('orderNumber', None)        name = request_dict.get('name', None)        try:            if not order_number and not name:                # 如果没有提供 order_number 和 name,返回所有设备的总数                device_count = CustomCustomerDevice.objects.count()            else:                # 初始查询集                customer_orders_qs = CustomCustomerOrderInfo.objects.all()                # 根据 order_number 或 name 过滤                if order_number:                    customer_orders_qs = customer_orders_qs.filter(order_number=order_number)                if name:                    customer_orders_qs = customer_orders_qs.filter(name=name)                # 获取 c_id 列表                c_ids = customer_orders_qs.values_list('id', flat=True)                # 如果没有匹配的订单,返回设备数量为 0                if not c_ids:                    device_count = 0                else:                    # 根据 c_id 列表查询设备数量                    device_count = CustomCustomerDevice.objects.filter(c_id__in=c_ids).count()            return response.json(0, {'deviceCount': device_count})        except Exception as e:            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 |