44b10463 by 周伟奇

cms part 1

1 parent 1d68ef28
......@@ -5,6 +5,7 @@ from . import views
urlpatterns = [
path(r'v1', views.CompareView.as_view()),
path(r'settlement/v1', views.SECompareView.as_view()),
path(r'settlement/cms/v1', views.SECMSView.as_view()),
path(r'offline/v1', views.CompareOfflineView.as_view()),
path(r'result', views.CompareResultView.as_view()),
]
......
......@@ -312,6 +312,128 @@ compare_offline_args = {
'workflow_name': fields.Str(required=True, validate=validate.Length(max=1024)),
}
id_info_args = {
'idType': fields.Str(required=True, validate=validate.Length(max=32)),
'idNum': fields.Str(required=True, validate=validate.Length(max=64)),
'idExpiryDate': CustomDate(required=True),
}
info_args = {
'applicantType': fields.Str(required=True, validate=validate.Length(max=64)),
'customersubType': fields.Str(required=True, validate=validate.Length(max=32)),
'selfEmployedSubType': fields.Str(required=False, validate=validate.Length(max=32)),
'name': fields.Str(required=True, validate=validate.Length(max=64)),
'legalRepName': fields.Str(required=True, validate=validate.Length(max=64)),
'dateOfBirth': CustomDate(required=False),
'nationality': fields.Str(required=False, validate=validate.Length(max=64)),
'establishmentDate': CustomDate(required=False),
'IDInformation': fields.List(fields.Nested(id_info_args), required=True,
validate=validate.Length(min=1)),
}
auto_approve_details = {
'aaType': fields.Str(required=True, validate=validate.Length(max=64)),
}
financial_info = {
'vehiclePrice': CustomDecimal(required=True),
'grossPrice': CustomDecimal(required=True),
'associatedServicePrice': CustomDecimal(required=True),
'vehiclePrincipal': CustomDecimal(required=True),
'associatedServicePrincipal': CustomDecimal(required=True),
'originationPrincipal': CustomDecimal(required=True),
'totalDownPayment': CustomDecimal(required=True),
'vehicleDownPaymentRatio': CustomDecimal(required=True),
'optionAmount': CustomDecimal(required=True),
'sumOfMSRPAndOption': CustomDecimal(required=True),
}
payment_schedule = {
'no': fields.Int(required=True),
'grossRentalAmount': CustomDecimal(required=True),
}
associated_services = {
'associatedServices': fields.Str(required=True, validate=validate.Length(max=64)),
'price': CustomDecimal(required=True),
'financed': CustomDecimal(required=True),
'total': CustomDecimal(required=True),
}
vehicle_info = {
'vinNo': fields.Str(required=True, validate=validate.Length(max=64)),
}
bank_details = {
'bankName': fields.Str(required=True, validate=validate.Length(max=64)),
'accountHolderName': fields.Str(required=True, validate=validate.Length(max=64)),
'accountNo': fields.Str(required=True, validate=validate.Length(max=64)),
}
insurance_details = {
'insuranceType': fields.Str(required=True, validate=validate.Length(max=64)),
'insuranceAmount': fields.Str(required=True, validate=validate.Length(max=64)),
'startDate': CustomDate(required=True),
'endDate': CustomDate(required=True),
}
corporate_info = {
'hashCode': fields.Str(required=True, validate=validate.Length(max=64)),
'borrowerName': fields.Str(required=True, validate=validate.Length(max=64)),
'fiscalYear': fields.Int(required=True),
'totaAssets': CustomDecimal(required=True),
'totalLiabilitiesAndOwnersEquity': CustomDecimal(required=True),
'cashAndCashEquivalentAtEndOfPeriod': CustomDecimal(required=True),
'netProfit': CustomDecimal(required=True),
}
se_verification = {
'applicationNo': fields.Str(required=True, validate=validate.Length(max=64)),
}
se_cms_content = {
'financeCompany': fields.Str(required=True, validate=validate.Length(max=512)),
'contractNo': fields.Str(required=True, validate=validate.Length(max=64)),
'status': fields.Str(required=True, validate=validate.Length(max=64)),
'branch': fields.Str(required=True, validate=validate.Length(max=512)),
'fpCampaign': fields.Str(required=True, validate=validate.Length(max=512)),
'applicationVersion': fields.Int(required=True),
'submissionDate': CustomDate(required=True),
'mortgageType': fields.Str(required=True, validate=validate.Length(max=64)),
'dealerRegion': fields.Str(required=True, validate=validate.Length(max=64)),
'insuranceRealNameCity': fields.Boolean(required=True),
'totalFinanceAmount': CustomDecimal(required=True),
'terms': fields.Int(required=True),
'dealerName': fields.Str(required=True, validate=validate.Length(max=512)),
'tier': fields.Str(required=True, validate=validate.Length(max=64)),
'province': fields.Str(required=True, validate=validate.Length(max=64)),
'fapiaoIssuerDealer': fields.Str(required=True, validate=validate.Length(max=512)),
'customerName': fields.Str(required=True, validate=validate.Length(max=64)),
'customerIdNo': fields.Str(required=True, validate=validate.Length(max=64)),
'vehicleStatus': fields.Str(required=True, validate=validate.Length(max=64)),
'applicationSource': fields.Str(required=True, validate=validate.Length(max=64)),
'contractSource': fields.Str(required=True, validate=validate.Length(max=64)),
'applicationRating': fields.Int(required=True),
'applicantInformation': fields.List(fields.Nested(info_args),
required=True, validate=validate.Length(min=1, max=4)),
'autoApprovedDetails': fields.Nested(auto_approve_details, required=True),
'financialInformation': fields.Nested(financial_info, required=True),
'paymentSchedule': fields.List(fields.Nested(payment_schedule), required=True,
validate=validate.Length(min=1)),
'associatedServices': fields.List(fields.Nested(associated_services), required=True,
validate=validate.Length(min=1)),
'vehicleInformation': fields.Nested(vehicle_info, required=True),
'bankAccountDetails': fields.Nested(bank_details, required=True),
'insuranceDetails': fields.Nested(insurance_details, required=True),
'corporateFinancialInformation': fields.Nested(corporate_info, required=True),
'settlemnetVerification': fields.Nested(se_verification, required=True),
}
se_cms_args = {
'content': fields.Nested(se_cms_content, required=True)
}
class UploadDocView(GenericView, DocHandler):
# permission_classes = []
......@@ -806,3 +928,33 @@ class CompareResultView(GenericView):
return HttpResponse(html)
# return response.ok(data=compare_result)
class SECMSView(GenericView):
permission_classes = [IsAuthenticated]
authentication_classes = [OAuth2AuthenticationWithUser]
# pos上传比对信息接口 SE
@use_args(se_cms_args, location='data')
def post(self, request, args):
self.running_log.info('cms in')
return response.ok()
post.openapi_doc = '''
tags: [info]
summary: CMS上传比对信息
consumes: [application/json]
produces: [application/json]
parameters:
- in: body
name: body
required: true
schema:
$ref: "#/definitions/CMS"
responses:
200:
description: ok
schema:
$ref: '#/definitions/ApiResponse'
'''
\ No newline at end of file
......
base_part = '''
swagger: "2.0"
info:
title: 接口文档
description: 宝马ocr/biz_logic接口文档
version: 1.0.0
host: "li19dkocruat01vm.bmwgroup.net"
basePath: "/"
tags:
- name: info
description: 比对结果
schemes:
- "https"
security:
- OAuth2: []
'''
# scheme: oauth
security_definitions = '''
OAuth2:
type: oauth2
flow: application
description: >
This API uses OAuth 2 with the application(clientCredentials) grant flow.
client_id=sMlciTkppsMzARwHpCVarm5q7DP2Vucj3ny8JFhw
client_secret=WNoOilDx140ZLcenDKfsnikv7S2LIFs60DciYoqnrZaYLqYsKpcmt7mJIL69o9AEf84uQvRnS3K2UioxfjNyImjR4UOyXbDcF6qYgTLC4KDVByKFdVhKfrn2Lc4q4BNW
scopes=write
tokenUrl: https://li19dkocruat01vm.bmwgroup.net/api/oauth/token/
scopes:
write: Grants write access
'''
responses = '''
ErrorResponse:
description: 调用异常, 具体情况请参考`HTTP`状态码和`code`字段
schema:
$ref: '#/definitions/ApiResponse'
NoContent:
description: 后台接收请求,但是没有响应内容
schema:
$ref: '#/definitions/ApiResponse'
'''
parameters = ''
definitions = '''
ComparisonOffline:
type: object
required: [is_hil, case_number, request_team, request_trigger, input_file, transaction_start, transaction_end, successful_at_this_level, process_name, total_fields, workflow_name]
properties:
is_hil:
description: is_hil
type: boolean
example: false
case_number:
description: case_number
type: string
example: VAT Invoice Number
request_team:
description: request_team
type: string
example: Accounting
request_trigger:
description: request_trigger
type: string
example: Attended RPA (Q-Account + Machine Number)
input_file:
description: input_file
type: string
example: CH-B1000000身份证.jpeg
transaction_start:
description: transaction_start
type: string
format: date-time
example: "2027-04-30 19:22:29"
transaction_end:
description: transaction_end
type: string
format: date-time
example: "2027-04-30 19:22:29"
successful_at_this_level:
description: successful_at_this_level
type: boolean
example: false
failure_reason:
description: failure_reason
type: string
example: Fileds Name which doesn’t pass verification
process_name:
description: process_name
type: string
example: F1_VATInvoiceMapping
total_fields:
description: total_fields
type: integer
example: 0
workflow_name:
description: workflow_name
type: string
example: Normal invoice or Special invoice
ApiResponse:
description: 响应对象,code字段用于表示响应的状态; data字段用于存放响应内容
type: object
required: [code, msg]
properties:
code:
type: integer
format: uint8
description: '0: success
1: need login
2: invalid params
3: internal error
4: object not exist
5: async wait
6: no permission
7: illegal operation'
example: 0
enum: [0, 1, 2, 3, 4, 5, 6, 7]
msg:
type: string
example: success
data:
type: object
'''
\ No newline at end of file
......@@ -48,7 +48,7 @@ class Command(BaseCommand):
view_class = view.view_class
url_path, path_parameters = pattern[0][0]
url_path = unify_url_path_format(url_path)
if url_path not in ['/api/compare/offline/v1']:
if url_path not in ['/api/compare/settlement/cms/v1']:
continue
url_path_paramters = getattr(view, 'parameters_doc', None)
if url_path_paramters:
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!