123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- # -*- coding: utf-8 -*-
- # !/usr/bin/env python
- import re
- from library.validator import Validator, FieldValidationError, UnicodeValidationError
- from library.validator.fields import StringField, DictField
- from apps.web.merchant.constant import WechatSubjectType, ContactType
- class CodeNameValidator(Validator):
- name = StringField(required=True, unicodeName=u"地址名称", requiredError=UnicodeValidationError(detail=u"缺少地址名称"))
- code = StringField(required=True, unicodeName=u"地址编号", requiredError=UnicodeValidationError(detail=u"缺少地址编号"))
- @staticmethod
- def validate_name(value):
- if not value:
- raise UnicodeValidationError(detail=u"无效的地址名称")
- return value
- @staticmethod
- def validate(value):
- if not value:
- raise UnicodeValidationError(detail=u"无效的地址编号")
- return value
- class LegalValidator(Validator):
- # 身份图片信息
- urlA = StringField(required=True, unicodeName=u"法人身份证照片【人像面】", requiredError=UnicodeValidationError(detail=u"缺少身份证照片"))
- urlB = StringField(required=True, unicodeName=u"法人身份证照片【国徽面】", requiredError=UnicodeValidationError(detail=u"缺少身份证照片"))
- # 证件信息内容
- name = StringField(required=True, unicodeName=u"姓名", requiredError=UnicodeValidationError(detail=u"缺少法人姓名"))
- cardNo = StringField(required=True, unicodeName=u"证件号码", requiredError=UnicodeValidationError(detail=u"缺少法人证件号码"))
- startTime = StringField(required=True, unicodeName=u"签发日期", requiredError=UnicodeValidationError(detail=u"缺少法人证件签发日期"))
- endTime = StringField(required=True, unicodeName=u"失效日期", requiredError=UnicodeValidationError(detail=u"缺少法人证件失效日期"))
- # 省市区的地址回调
- province = DictField(validator=CodeNameValidator, required=True, unicodeName="法人身份证地区【省】", requiredError=UnicodeValidationError(detail=u"请选择法人身份证地区【省】"))
- city = DictField(validator=CodeNameValidator, required=True, unicodeName="法人身份证地区【市】", requiredError=UnicodeValidationError(detail=u"请选择法人身份证地区【市】"))
- area = DictField(validator=CodeNameValidator, required=True, unicodeName="法人身份证地区【区】", requiredError=UnicodeValidationError(detail=u"请选择法人身份证地区【区】"))
- # 详细地址的输入 街道等等
- addr = StringField(required=True, unicodeName="法人身份证【详细地址】", requiredError=UnicodeValidationError(detail=u"请填写法人身份证【详细地址】"))
- @staticmethod
- def validate(data):
- if not data:
- raise FieldValidationError(u"法人信息为空,请重新填写")
- return data
- class ContactValidator(Validator):
- # 身份图片信息
- urlA = StringField(required=True, unicodeName=u"联系人身份证照片【人像面】", requiredError=UnicodeValidationError(detail=u"缺少身份证照片"))
- urlB = StringField(required=True, unicodeName=u"联系人身份证照片【国徽面】", requiredError=UnicodeValidationError(detail=u"缺少身份证照片"))
- # 证件信息内容
- name = StringField(required=True, unicodeName=u"联系人姓名", requiredError=UnicodeValidationError(detail=u"缺少联系人姓名"))
- cardNo = StringField(required=True, unicodeName=u"联系人证件号码", requiredError=UnicodeValidationError(detail=u"缺少联系人证件号码"))
- startTime = StringField(required=True, unicodeName=u"联系人签发日期", requiredError=UnicodeValidationError(detail=u"缺少联系人证件签发日期"))
- endTime = StringField(required=True, unicodeName=u"联系人失效日期", requiredError=UnicodeValidationError(detail=u"缺少联系人证件失效日期"))
- province = DictField(validator=CodeNameValidator, required=True, unicodeName="联系人身份证地区【省】", requiredError=UnicodeValidationError(detail=u"请选择联系人身份证地区【省】"))
- city = DictField(validator=CodeNameValidator, required=True, unicodeName="联系人身份证地区【市】", requiredError=UnicodeValidationError(detail=u"请选择联系人身份证地区【市】"))
- area = DictField(validator=CodeNameValidator, required=True, unicodeName="联系人身份证地区【区】", requiredError=UnicodeValidationError(detail=u"请选择联系人身份证地区【区】"))
- # 详细地址的输入 街道等等
- addr = StringField(required=True, unicodeName="联系人身份证【详细地址】", requiredError=UnicodeValidationError(detail=u"请填写联系人身份证【详细地址】"))
- class BusinessLicenceValidator(Validator):
- busLicenseUrl = StringField(required=True, unicodeName=u"营业执照照片", requiredError=UnicodeValidationError(detail=u"缺少营业执照照片"))
- busName = StringField(required=True, unicodeName=u"公司名称", requiredError=UnicodeValidationError(detail=u"缺少公司名称"))
- busCode = StringField(required=True, unicodeName=u"统一社会信用码", requiredError=UnicodeValidationError(detail=u"缺少统一社会信用码"))
- startTime = StringField(required=True, unicodeName=u"营业执照起始时间", requiredError=UnicodeValidationError(detail=u"缺少营业执照起始时间"))
- endTime = StringField(required=True, unicodeName=u"营业执照结束事件", requiredError=UnicodeValidationError(detail=u"缺少营业执照结束事件"))
- province = DictField(validator=CodeNameValidator, required=True, unicodeName="营业执照地区【省】", requiredError=UnicodeValidationError(detail=u"请选择营业执照地区【省】"))
- city = DictField(validator=CodeNameValidator, required=True, unicodeName="营业执照地区【市】", requiredError=UnicodeValidationError(detail=u"请选择营业执照地区【市】"))
- area = DictField(validator=CodeNameValidator, required=True, unicodeName="营业执照地区【区】", requiredError=UnicodeValidationError(detail=u"请选择营业执照地区【区】"))
- addr = StringField(required=True, unicodeName=u"公司地址详细地址", requiredError=UnicodeValidationError(detail=u"缺少公司详细地址"))
- class SubjectValidator(Validator):
- businessLicenceInfo = DictField(validator=BusinessLicenceValidator, unicodeName=u"营业执照信息", requiredError=UnicodeValidationError(detail=u"缺少营业执照信息"))
- def validate(self, data):
- return data
- class CertificateValidator(Validator):
- merchantType = StringField(required=True, unicodeName=u"商户类型", requiredError=UnicodeValidationError(detail=u"缺少商户类型"))
- contactType = StringField(required=True, unicodeName="联系人类型", requiredError=UnicodeValidationError(detail=u"缺少联系人类型"))
- businessAuthorizationLetter = StringField(unicodeName="业务办理授权函")
- legalInfo = DictField(required=True, unicodeName=u"负责人/法人信息", requiredError=UnicodeValidationError(detail=u"缺少法人信息"), validator=LegalValidator)
- contactInfo = DictField(required=False, unicodeName=u"联系人信息", requiredError=UnicodeValidationError(detail=u"缺少联系人信息"), validator=ContactValidator)
- subjectInfo = DictField(required=False, unicodeName=u"主体信息【营业执照】", requiredError=UnicodeValidationError(detail=u"缺少营业执照信息"), Validator=SubjectValidator)
- @staticmethod
- def validate_merchantType(value):
- """
- 验证商户类型
- """
- if value not in WechatSubjectType.choices():
- raise FieldValidationError(u"错误的商户类型,请重新选择")
- return value
- def validate(self, data):
- if not data.get("contactInfo") and data["merchantType"] != WechatSubjectType.SUBJECT_TYPE_MICRO:
- raise UnicodeValidationError(detail=u"缺少联系人信息")
- if not data.get("subjectInfo") and data["merchantType"] != WechatSubjectType.SUBJECT_TYPE_MICRO:
- raise UnicodeValidationError(detail=u"缺少营业执照信息")
- # 处理联系人类型
- contactType = data.pop("contactType", str(ContactType.LEGAL.code))
- if data["merchantType"] != WechatSubjectType.SUBJECT_TYPE_MICRO:
- # 商户类型为企业且联系人类型为 经办人的情况下 需要检查授权书
- if contactType == ContactType.SUPER:
- businessAuthorizationLetter = data.pop("businessAuthorizationLetter", None)
- if not businessAuthorizationLetter:
- raise UnicodeValidationError(detail=u"缺少业务办理授权函")
- else:
- businessAuthorizationLetter = ""
- else:
- contactType = str(ContactType.LEGAL.code)
- businessAuthorizationLetter = ""
- # 小微商户的情况下 ,联系人即为自身
- if data["merchantType"] == WechatSubjectType.SUBJECT_TYPE_MICRO:
- data["contactInfo"] = data["legalInfo"].copy()
- data["contactInfo"]["contactType"] = contactType
- data["contactInfo"]["businessAuthorizationLetter"] = businessAuthorizationLetter
- return data
- class SettleValidator(Validator):
- """
- 结算信息的校验
- 结算信息无论是企业商户还是个人商户都 需要的信息 并且字段一致
- """
- bankCardImg = StringField(required=True, unicodeName="银行卡照片", requiredError=UnicodeValidationError(detail=u"银行照片缺失,请确认照片信息上传"))
- bankName = StringField(required=True, unicodeName="银行名称", requiredError=UnicodeValidationError(detail=u"银行名称缺失,请确认银行名称选择正确"))
- bankCardCode = StringField(required=True, unicodeName="银行卡号", requiredError=UnicodeValidationError(detail=u"银行卡号缺失,请确认卡号填写无误"))
- bankCardSubCode = StringField(required=True, unicodeName="支行联行号", requiredError=UnicodeValidationError(detail=u"支行联行号缺失,请确认支行选择无误"))
- bankCardSubName = StringField(required=True, unicodeName="支行名称", requiredError=UnicodeValidationError(detail=u"支行联行号缺失,请确认支行选择无误"))
- @staticmethod
- def validate_backCardImg(value):
- if not value:
- raise UnicodeValidationError(detail=u"无效的银行卡照片,请重新上传")
- return value
- @staticmethod
- def validate_bankName(value):
- if not value:
- raise UnicodeValidationError(detail=u"无效的银行名称,请重新上传")
- return value
- @staticmethod
- def validate_bankCardCode(value):
- if not value:
- raise UnicodeValidationError(detail=u"无效的银行卡号,请重新上传")
- return value
- @staticmethod
- def validate_bankCardSubCode(value):
- if not value:
- raise UnicodeValidationError(detail=u"无效的开户行支行(10001),请重新上传")
- return value
- @staticmethod
- def validate_bankCardSubName(value):
- if not value:
- raise UnicodeValidationError(detail=u"无效的开户行支行(10002),请重新上传")
- return value
- class BusinessValidator(Validator):
- storeAUrl = StringField(required=True, unicodeName=u"门头照片", requiredError=UnicodeValidationError(detail=u"门头照片缺失,请确认照片上传信息"))
- storeBUrl = StringField(required=True, unicodeName=u"门店照片", requiredError=UnicodeValidationError(detail=u"门店照片缺失,请确认照片上传信息"))
- storeCUrl = StringField(required=True, unicodeName=u"店内照片", requiredError=UnicodeValidationError(detail=u"店内照片缺失,请确认照片上传信息"))
- storeShotName = StringField(required=True, unicodeName=u"商户简称", requiredError=UnicodeValidationError(detail=u"商户简称缺失,请填写商户简称"))
- province = DictField(validator=CodeNameValidator, required=True, unicodeName="营业地区【省】", requiredError=UnicodeValidationError(detail=u"请选择营业地区【省】"))
- city = DictField(validator=CodeNameValidator, required=True, unicodeName="营业地区【市】", requiredError=UnicodeValidationError(detail=u"请选择营业地区【市】"))
- area = DictField(validator=CodeNameValidator, required=True, unicodeName="营业地区【区】", requiredError=UnicodeValidationError(detail=u"请选择营业地区【区】"))
- addr = StringField(required=True, unicodeName="营业地区【详细地址】", requiredError=UnicodeValidationError(detail=u"请填写营业地区【详细地址】"))
- @staticmethod
- def validate_storeAUrl(value):
- if not value:
- raise UnicodeValidationError(detail=u"无效的门头照,请重新上传")
- return value
- @staticmethod
- def validate_storeBUrl(value):
- if not value:
- raise UnicodeValidationError(detail=u"无效的门店照,请重新上传")
- return value
- @staticmethod
- def validate_storeCUrl(value):
- if not value:
- raise UnicodeValidationError(detail=u"无效的店内照,请重新上传")
- return value
- @staticmethod
- def validate_addr(value):
- if not value:
- raise UnicodeValidationError(u"无效的营业地区【详细地址】,请重新填写")
- return value
|