コード例 #1
0
ファイル: UserService.py プロジェクト: zjzjgxw/DMP
    def update(cls, user_id, business_id, **kwargs):
        """
        用户信息修改
        :param user_id:
        :param business_id:
        :param kwargs:
        :return:
        """
        try:
            user = User.objects.get(pk=user_id, business_id=business_id)
        except ObjectDoesNotExist:
            raise UserNotExistException()

        try:
            with transaction.atomic("BusinessMysql"):
                serializer = UserSerializer(user, kwargs, partial=True)
                if serializer.is_valid():
                    serializer.save()
                else:
                    raise ValidationException(detail=serializer.errors)
                if "role_ids" in kwargs:
                    if not isinstance(kwargs["role_ids"], list):
                        raise ValidationException(10007)
                    new_role_ids = set(kwargs["role_ids"])
                    cls._update_role_relation(user_id, new_role_ids)
                if "department_ids" in kwargs:
                    if not isinstance(kwargs["department_ids"], list):
                        raise ValidationException(10007)
                    new_department_ids = set(kwargs["department_ids"])
                    cls._update_department_relation(user_id, new_department_ids)
        except IntegrityError:
            raise
        return True
コード例 #2
0
ファイル: StockService.py プロジェクト: zjzjgxw/DMP
 def check_stock(cls, product_list):
     """
     根据商品信息,检验库存是否足够
     :param product_list:
     :return:
     """
     if not isinstance(product_list, list):
         raise ValidationException(10007)
     if len(product_list) == 0:
         raise ValidationException(30005)
     res_dict = {"res": True, "failed": []}
     for info in product_list:
         for item in ["first_specification_name", "second_specification_name"]:
             if item not in info:
                 info[item] = None
         try:
             stock_obj = StockInfo.objects.get(product_id=info['product_id'])
         except ObjectDoesNotExist:
             raise ObjectDoesNotExistException()
         res = stock_obj.check_stock(info["num"], info["first_specification_name"],
                                     info["first_specification_value"], info["second_specification_name"],
                                     info["second_specification_value"])
         if not res:  # 库存不满足
             res_dict["res"] = False
             res_dict["failed"].append(info)
     return res_dict
コード例 #3
0
ファイル: UserService.py プロジェクト: zjzjgxw/DMP
 def create_user(cls, **kwargs):
     """
     创建用户
     :param kwargs:
     :return:
     """
     exist = User.objects.filter(account=kwargs["account"]).exists()
     if exist:
         raise ValidationException(10008)
     try:
         with transaction.atomic('BusinessMysql'):
             serializer = UserSerializer(data=kwargs)
             if serializer.is_valid():
                 user = serializer.save()
             else:
                 raise ValidationException(detail=serializer.errors)
             department_ids = kwargs["department_ids"]
             role_ids = kwargs["role_ids"]
             query_set_list = []
             for role_id in role_ids:
                 query_set_list.append(UserRoleRelation(user_id=user.id, role_id=role_id))
             UserRoleRelation.objects.bulk_create(query_set_list)
             query_set_list = []
             for department_id in department_ids:
                 query_set_list.append(DepartmentUserRelation(department_id=department_id, user_id=user.id))
             DepartmentUserRelation.objects.bulk_create(query_set_list)
             return user.id
     except IntegrityError:
         raise
コード例 #4
0
 def create(cls, business_id, **kwargs):
     data = kwargs
     data['business_id'] = business_id
     try:
         with transaction.atomic('ProductMysql'):
             serializer = CategorySerializer(data=data)
             if serializer.is_valid():
                 obj = serializer.save()
             else:
                 raise ValidationException(serializer.errors)
             if "specification_list" in data:  # 规格参数必传
                 if isinstance(data['specification_list'], list) and len(data['specification_list']) > 0:
                     cls._create_specification(obj.id, data["specification_list"])
                 else:
                     ValidationException(20010)
             else:
                 raise ValidationException(20010)
             if "attribute_list" in data:
                 if isinstance(data['attribute_list'], list) and len(data['attribute_list']) > 0:
                     cls._create_attribute(obj.id, data["attribute_list"])
                 else:
                     ValidationException(20011)
             return obj.id
     except IntegrityError:
         raise
コード例 #5
0
ファイル: StockService.py プロジェクト: zjzjgxw/DMP
 def _validate_kwargs(cls, kwargs):
     if "product_id" not in kwargs:
         raise ValidationException(30003)
     if "currency_code" in kwargs:
         if len(kwargs["currency_code"]) != 3:
             raise ValidationException(30002)
     else:
         raise ValidationException(30001)
コード例 #6
0
ファイル: UserViewSet.py プロジェクト: zjzjgxw/DMP
 def login(self, request):
     if "account" not in request.data:
         raise ValidationException(10002)
     if "password" not in request.data:
         raise ValidationException(10003)
     token = UserService.login(request.data['account'],
                               request.data['password'])
     return Response(return_format(200), headers={'Authorization': token})
コード例 #7
0
ファイル: VendorContractViewSet.py プロジェクト: zjzjgxw/DMP
 def destroy(self, request, pk=None):
     if "vendor_id" not in request.data:
         raise ValidationException()
     vendor_id = request.data["vendor_id"]
     if not isinstance(vendor_id, int):
         raise ValidationException(10009)
     VendorContractService.delete(pk, vendor_id)
     return Response(return_format(200))
コード例 #8
0
ファイル: VendorContractViewSet.py プロジェクト: zjzjgxw/DMP
 def approve(self, request, pk=None):
     if "vendor_id" not in request.data:
         raise ValidationException()
     vendor_id = request.data["vendor_id"]
     if not isinstance(vendor_id, int):
         raise ValidationException(10009)
     res = VendorContractService.approve(pk, vendor_id)
     return Response(return_format(200, '', data={"result": res}))
コード例 #9
0
ファイル: VendorContractViewSet.py プロジェクト: zjzjgxw/DMP
 def retrieve(self, request, pk=None):
     if "vendor_id" not in request.data:
         raise ValidationException()
     vendor_id = request.data["vendor_id"]
     if not isinstance(vendor_id, int):
         raise ValidationException(10009)
     data = VendorContractService.detail(pk, vendor_id)
     return Response(return_format(200, data=data))
コード例 #10
0
 def update(self, request, pk=None):
     if "vendor_id" not in request.data:
         raise ValidationException()
     vendor_id = request.data["vendor_id"]
     del request.data["vendor_id"]
     if not isinstance(vendor_id, int):
         raise ValidationException(10009)
     VendorBankAccountService.update(pk, vendor_id, **request.data)
     return Response(return_format(200))
コード例 #11
0
 def list(self, request):
     if "vendor_id" not in request.data:
         raise ValidationException()
     vendor_id = request.data["vendor_id"]
     if not isinstance(vendor_id, int):
         raise ValidationException(10009)
     page_paginate = PagePaginate(request)
     result = VendorBankAccountService.list(vendor_id, page_paginate.page, page_paginate.page_size)
     return Response(return_format(200, data=result))
コード例 #12
0
 def __init__(self, request):
     if "page" in request.data:
         self.page = request.data["page"]
     if "page_size" in request.data:
         self.page_size = request.data["page_size"]
     if not isinstance(self.page, int):
         raise ValidationException(10009)
     if not isinstance(self.page_size, int):
         raise ValidationException(10009)
     if self.page < 1 or self.page_size <= 0:
         raise ValidationException(10010)
コード例 #13
0
ファイル: DetailService.py プロジェクト: zjzjgxw/DMP
 def _validate_describe_images(cls, attrs):
     for item in attrs:
         if not isinstance(item, dict):
             raise ValidationException(20018)
         if "img_id" not in item or "index_no" not in item:
             raise ValidationException(20018)
         if not isinstance(item["img_id"], int):
             raise ValidationException(20018)
         if not isinstance(item["index_no"], int):
             raise ValidationException(20018)
     return attrs
コード例 #14
0
ファイル: DetailService.py プロジェクト: zjzjgxw/DMP
 def _validate_attribute_list(cls, attrs):
     for item in attrs:
         if not isinstance(item, dict):
             raise ValidationException(20016)
         if "name" not in item or "option" not in item:
             raise ValidationException(20016)
         if not isinstance(item["name"], str):
             raise ValidationException(20016)
         if not isinstance(item["option"], str):
             raise ValidationException(20016)
     return attrs
コード例 #15
0
ファイル: UserViewSet.py プロジェクト: zjzjgxw/DMP
 def create(self, request):
     business_id = request.dmp_user['business_id']
     if "department_ids" not in request.data:
         raise ValidationException()
     if type(request.data["department_ids"]) != list:
         raise ValidationException(10007)
     if "role_ids" not in request.data:
         raise ValidationException()
     if type(request.data["role_ids"]) != list:
         raise ValidationException(10007)
     user_id = UserService.create_user(**request.data, business=business_id)
     return Response(return_format(200, data={"id": user_id}))
コード例 #16
0
ファイル: DetailService.py プロジェクト: zjzjgxw/DMP
 def _validate_kwargs(cls, kwargs):
     if 'attribute_list' in kwargs:
         cls._validate_attribute_list(kwargs['attribute_list'])
     else:
         raise ValidationException(20016)
     if 'main_images' in kwargs:
         cls._validate_main_images(kwargs['main_images'])
     else:
         raise ValidationException(20017)
     if 'describe_images' in kwargs:
         cls._validate_describe_images(kwargs['describe_images'])
     else:
         raise ValidationException(20018)
コード例 #17
0
 def _verify_item(cls, item):
     """
     检验规格和属性
     :param item:
     :return:
     """
     if "name" not in item:
         raise ValidationException(20012)
     if "option" not in item:
         raise ValidationException(20013)
     if len(item["name"]) > 10:
         raise ValidationException(20014)
     if len(item["option"]) > 10:
         raise ValidationException(20015)
コード例 #18
0
ファイル: StockService.py プロジェクト: zjzjgxw/DMP
 def update(cls, product_id, **kwargs):
     """
     修改库存信息
     :param product_id:
     :param kwargs:
     :return:
     """
     try:
         stock_obj = StockInfo.objects.get(product_id=product_id)
     except ObjectDoesNotExist:
         raise ObjectDoesNotExistException()
     if "product_id" in kwargs:
         del kwargs['product_id']
     serializer = StockInfoSerializer(instance=stock_obj, data=kwargs, partial=True)
     specifications = kwargs['specifications']
     stock_list = kwargs['stock_list']
     try:
         with transaction.atomic('ProductMysql'):
             if serializer.is_valid():
                 serializer.save()
             else:
                 raise ValidationException(detail=serializer.errors)
             if isinstance(specifications, dict) and isinstance(stock_list, list) and len(stock_list) > 0:
                 stock_obj.stockspecificationdetail_set.all().delete()  # 删除库存信息
                 stock_specifications_detail_list = []
                 for item in stock_list:
                     stock_specifications_detail_list.append(StockSpecificationDetail(stock_id=stock_obj.id, **item))
                 StockSpecificationDetail.objects.bulk_create(stock_specifications_detail_list)
             return True
     except IntegrityError:
         raise
     except:
         raise
コード例 #19
0
ファイル: DetailService.py プロジェクト: zjzjgxw/DMP
 def create(cls, business_id, **kwargs):
     cls._validate_kwargs(kwargs)
     data = kwargs
     data['business_id'] = business_id
     try:
         with transaction.atomic('ProductMysql'):
             serializer = DetailSerializer(data=data)
             if serializer.is_valid():
                 obj = serializer.save()
             else:
                 raise ValidationException(detail=serializer.errors)
             attribute_list = []
             for item in kwargs['attribute_list']:
                 attribute_list.append(
                     DetailAttribute(detail_id=obj.id, **item))
             DetailAttribute.objects.bulk_create(attribute_list)
             main_image_list = []
             for item in kwargs['main_images']:
                 main_image_list.append(MainImages(detail_id=obj.id,
                                                   **item))
             MainImages.objects.bulk_create(main_image_list)
             describe_image_list = []
             for item in kwargs["describe_images"]:
                 describe_image_list.append(
                     DescribeImages(detail_id=obj.id, **item))
             DescribeImages.objects.bulk_create(describe_image_list)
             return obj.id
     except IntegrityError:
         raise
     except:
         raise
コード例 #20
0
ファイル: DepartmentViewSet.py プロジェクト: zjzjgxw/DMP
 def update(self, request, pk=None):
     business_id = request.dmp_user['business_id']
     if "name" not in request.data:
         raise ValidationException()
     name = request.data['name']
     DepartmentService.update(name=name, department_id=pk, business_id=business_id)
     return Response(return_format(200, msg="修改成功"))
コード例 #21
0
ファイル: DetailService.py プロジェクト: zjzjgxw/DMP
 def update(cls, business_id, pk, **kwargs):
     cls._validate_kwargs(kwargs)
     try:
         obj = Detail.objects.detail(pk, business_id)
     except ObjectDoesNotExist:
         raise ObjectDoesNotExistException
     try:
         with transaction.atomic('ProductMysql'):
             serializer = DetailSerializer(obj, kwargs, partial=True)
             if serializer.is_valid():
                 serializer.save()
             else:
                 raise ValidationException(serializer.errors)
             attribute_list = []
             for item in kwargs['attribute_list']:
                 attribute_list.append(
                     DetailAttribute(detail_id=obj.id, **item))
             DetailAttribute.objects.filter(detail_id=obj.id).delete()
             DetailAttribute.objects.bulk_create(attribute_list)
             main_image_list = []
             for item in kwargs['main_images']:
                 main_image_list.append(MainImages(detail_id=obj.id,
                                                   **item))
             MainImages.objects.filter(detail_id=obj.id).delete()
             MainImages.objects.bulk_create(main_image_list)
             describe_image_list = []
             for item in kwargs["describe_images"]:
                 describe_image_list.append(
                     DescribeImages(detail_id=obj.id, **item))
             DescribeImages.objects.filter(detail_id=obj.id).delete()
             DescribeImages.objects.bulk_create(describe_image_list)
             return True
     except IntegrityError:
         raise
コード例 #22
0
ファイル: DepartmentViewSet.py プロジェクト: zjzjgxw/DMP
 def create(self, request):
     business_id = request.dmp_user['business_id']
     if "list" not in request.data:
         raise ValidationException()
     params = request.data['list']
     for item in params:
         item['business'] = business_id
     DepartmentService.create(params)
     return Response(return_format(200, msg="创建成功"))
コード例 #23
0
ファイル: DepartmentService.py プロジェクト: zjzjgxw/DMP
 def delete(cls, department_id, business_id):
     try:
         department = Department.objects.detail(department_id=department_id, business_id=business_id)
     except ObjectDoesNotExist:
         raise ObjectDoesNotExistException()
     serializer = DepartmentSerializer(instance=department, data={"delete_flag": 1}, partial=True)
     if serializer.is_valid():
         serializer.save()
     else:
         raise ValidationException(detail=serializer.errors)
コード例 #24
0
 def update(cls, pk, vendor_id, **kwargs):
     try:
         obj = VendorBankAccount.objects.get(pk=pk, vendor=vendor_id)
     except ObjectDoesNotExist:
         raise ObjectDoesNotExistException()
     serializer = VendorBankAccountSerializer(obj, kwargs, partial=True)
     if serializer.is_valid():
         serializer.save()
         return True
     else:
         raise ValidationException(detail=serializer.errors)
コード例 #25
0
 def create(cls, **kwargs):
     """
     创建供应商银行账户
     :param kwargs:
     :return:
     """
     serializer = VendorBankAccountSerializer(data=kwargs)
     if serializer.is_valid():
         bank_account = serializer.save()
         return bank_account.id
     else:
         raise ValidationException(detail=serializer.errors)
コード例 #26
0
 def create(cls, **kwargs):
     """
     创建部门
     :param kwargs:
     :return:
     """
     serializer = PermissionRoleSerializer(data=kwargs)
     if serializer.is_valid():
         role = serializer.save()
         return role.id
     else:
         raise ValidationException(detail=serializer.errors)
コード例 #27
0
ファイル: VendorService.py プロジェクト: zjzjgxw/DMP
 def create(cls, **kwargs):
     """
     创建供应商
     :param kwargs:
     :return:
     """
     serializer = VendorSerializer(data=kwargs)
     if serializer.is_valid():
         vendor = serializer.save()
         return vendor.id
     else:
         raise ValidationException(detail=serializer.errors)
コード例 #28
0
 def create(cls, **kwargs):
     """
     创建供应商银行账户
     :param kwargs:
     :return:
     """
     serializer = VendorContractSerializer(data=kwargs)
     if serializer.is_valid():
         obj = serializer.save()
         return obj.id
     else:
         raise ValidationException(detail=serializer.errors)
コード例 #29
0
ファイル: DepartmentService.py プロジェクト: zjzjgxw/DMP
 def create(cls, department_list):
     """
     创建部门
     :param department_list:
     :return:
     """
     serializer = DepartmentSerializer(data=department_list, many=True)
     if serializer.is_valid():
         serializer.save()
         return True
     else:
         raise ValidationException(detail=serializer.errors)
コード例 #30
0
ファイル: StockService.py プロジェクト: zjzjgxw/DMP
    def create(cls, **kwargs):
        """
        新建库存
        :param kwargs:
        :return:
        """
        cls._validate_kwargs(kwargs)
        try:
            with transaction.atomic('ProductMysql'):
                specifications = kwargs['specifications']
                stock_list = kwargs['stock_list']
                data = {}
                data["product_id"] = kwargs["product_id"]
                data["currency_code"] = kwargs["currency_code"]
                if isinstance(specifications, dict) and isinstance(stock_list, list) and len(stock_list) > 0:
                    data["default_specifications"] = json.dumps(specifications, ensure_ascii=False)
                    serializer = StockInfoSerializer(data=data)
                    if serializer.is_valid():
                        obj = serializer.save()
                        stock_specifications_detail_list = []
                        for item in stock_list:
                            stock_specifications_detail_list.append(StockSpecificationDetail(stock_id=obj.id, **item))
                        StockSpecificationDetail.objects.bulk_create(stock_specifications_detail_list)
                    else:
                        raise ValidationException(detail=serializer.errors)
                    return obj.id
                else:  # 没有具体规格
                    data['last_num'] = kwargs['last_num']
                    data['price'] = kwargs['price']
                    serializer = StockInfoSerializer(data=data)
                    if serializer.is_valid():
                        obj = serializer.save()
                    else:
                        raise ValidationException(detail=serializer.errors)
                    return obj.id

        except IntegrityError:
            raise
        except:
            raise