初始化项目

This commit is contained in:
zwf
2026-06-02 17:46:38 +08:00
commit 646a4d02c0
240 changed files with 33662 additions and 0 deletions
+8
View File
@@ -0,0 +1,8 @@
"""
省12345接口。
"""
ApiPrefix = "/system"
"""
API 前缀。
"""
Binary file not shown.
+101
View File
@@ -0,0 +1,101 @@
from typing import Optional
import logging
from apps.api import govs
from apps.app_handler import AppHandler
from paste.web.decorators import route
from paste.core import aio_pool
from paste.core.logging import echo_log
from dock.govs import govs_create_order_delay
from models.govs_order_master import GovsOrderMaster
from models.govs_create_delay import GovsApplicationForDelay
@route(f'{govs.ApiPrefix}/application-for-delay-formal/create')
class CreateDelayHandler(AppHandler):
"""
申请延期接口。
对接省12345的申请延期接口,请求后本接口先将数据保存本地,然后响应客户端,然后开始后台启动推送。
"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.govs_order: Optional[GovsOrderMaster] = None
self.govs_delay: Optional[GovsApplicationForDelay] = None
def _params_for_db(self, **kwargs: dict) -> dict:
"""
提取数据库所需参数。
"""
return {
GovsApplicationForDelay.master_id.key: kwargs.get('gdId', ''),
GovsApplicationForDelay.gd_id.key: kwargs.get('gdId', ''),
GovsApplicationForDelay.finally_time_after_approve.key: kwargs.get('finallyTimeAfterApprove', ''),
GovsApplicationForDelay.finally_time_before_approve.key: kwargs.get('finallyTimeBeforeApprove', ''),
GovsApplicationForDelay.request_delay.key: kwargs.get('requestDelay', ''),
GovsApplicationForDelay.is_nature_day.key: kwargs.get('isNatureDay', ''),
GovsApplicationForDelay.already_notify_order_user.key: kwargs.get('alreadyNotifyOrderUser', ''),
GovsApplicationForDelay.request_reason.key: kwargs.get('requestReason', ''),
GovsApplicationForDelay.remarks.key: kwargs.get('remarks', ''),
GovsApplicationForDelay.contact_name.key: kwargs.get('contactName', ''),
GovsApplicationForDelay.contact_time.key: kwargs.get('contactTime', ''),
GovsApplicationForDelay.contact_type.key: kwargs.get('contactType', ''),
GovsApplicationForDelay.contact_type_name.key: kwargs.get('contactTypeName', ''),
GovsApplicationForDelay.reply_script.key: kwargs.get('replyScript', ''),
GovsApplicationForDelay.file_id_str.key: kwargs.get('fileIdStr', ''),
GovsApplicationForDelay.request_delay_time.key: kwargs.get('requestDelayTime', ''),
GovsApplicationForDelay.flow_token.key: kwargs.get('flowToken', '')
}
async def create_delay(self, **kwargs) -> dict:
# 必填参数校验
required_keys = [
'gdId', 'flowToken', 'finallyTimeAfterApprove', 'requestDelay', 'isNatureDay',
'alreadyNotifyOrderUser', 'requestReason'
]
missing = [
k for k in required_keys
if k not in kwargs or kwargs[k] is None
]
if missing:
raise ValueError(f"缺少必要参数: {missing}")
# 读取待办任务对象
govs_task_id = kwargs.get('gdId', '')
self.govs_order = await GovsOrderMaster.async_find_by_id(govs_task_id)
# 保存请求数据
params = self._params_for_db(**kwargs)
self.govs_delay = GovsApplicationForDelay().copy_from_dict(params)
self.govs_delay.status = 0
await self.govs_delay.async_save()
# 后台执行提交申请延期请求到省12345
await aio_pool.run_background_task(
govs_create_order_delay.create_delay(self.govs_delay, self.govs_order)
)
return {
'msg': '申请延期成功.'
}
# @auth_token
async def post(self):
"""
处理 POST 请求。
---
tags:
- D3I API
summary: 申请延期接口
"""
try:
echo_log(self.request.body.decode())
_, params = self.get_request_params()
_result = await self.create_delay(**params)
self.response_ok(code=0, data=_result)
except Exception as e:
self.response_error(e, status_code=200, api_status_code=500)
self.log(msg=e, level=logging.ERROR, is_log_exc=True)
+102
View File
@@ -0,0 +1,102 @@
from typing import Optional
import logging
from apps.api import govs
from apps.app_handler import AppHandler
from paste.web.decorators import route
from paste.core import aio_pool
from paste.core.logging import echo_log
from dock.govs import govs_create_order_return
from models.govs_order_master import GovsOrderMaster
from models.govs_create_return import GovsWorkOrderReturnFormal
@route(f'{govs.ApiPrefix}/work-order-return-formal/create')
class CreateDelayHandler(AppHandler):
"""
申请工单退回接口。
对接省12345的申请退回接口,请求后本接口先将数据保存本地,然后响应客户端,然后开始后台启动推送。
"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.govs_order: Optional[GovsOrderMaster] = None
self.govs_return: Optional[GovsWorkOrderReturnFormal] = None
def _params_for_db(self, **kwargs: dict) -> dict:
"""
提取数据库所需参数。
"""
return {
GovsWorkOrderReturnFormal.master_id.key: kwargs.get('gdId', ''),
GovsWorkOrderReturnFormal.flow_token.key: kwargs.get('flowToken', ''),
GovsWorkOrderReturnFormal.gd_id.key: kwargs.get('gdId', ''),
GovsWorkOrderReturnFormal.return_reason.key: kwargs.get('returnReason', ''),
GovsWorkOrderReturnFormal.return_reason_name.key: kwargs.get('returnReasonName', ''),
GovsWorkOrderReturnFormal.return_auditor_name.key: kwargs.get('returnAuditorName', ''),
GovsWorkOrderReturnFormal.return_auditor_id.key: kwargs.get('returnAuditorId', ''),
GovsWorkOrderReturnFormal.deal_opinion.key: kwargs.get('dealOpinion', ''),
GovsWorkOrderReturnFormal.reason.key: kwargs.get('reason', ''),
GovsWorkOrderReturnFormal.remark.key: kwargs.get('remark', ''),
GovsWorkOrderReturnFormal.file_id_str.key: kwargs.get('fileIdStr', ''),
GovsWorkOrderReturnFormal.process_instance_id.key: kwargs.get('processInstanceId', ''),
GovsWorkOrderReturnFormal.action_name.key: kwargs.get('actionName', ''),
GovsWorkOrderReturnFormal.order_id.key: kwargs.get('orderId', ''),
GovsWorkOrderReturnFormal.task_id.key: kwargs.get('taskId', ''),
GovsWorkOrderReturnFormal.order_no.key: kwargs.get('orderNo', ''),
GovsWorkOrderReturnFormal.case_accord_type_one_name.key: kwargs.get('caseAccordTypeOneName', ''),
GovsWorkOrderReturnFormal.case_accord_type_two_name.key: kwargs.get('caseAccordTypeTwoName', ''),
GovsWorkOrderReturnFormal.case_accord_type_three_name.key: kwargs.get('caseAccordTypeThreeName', '')
}
async def create_return(self, **kwargs) -> dict:
# 必填参数校验
required_keys = [
'gdId', 'flowToken', 'returnReason', 'returnReasonName', 'dealOpinion', 'reason'
]
missing = [
k for k in required_keys
if k not in kwargs or kwargs[k] is None
]
if missing:
raise ValueError(f"缺少必要参数: {missing}")
# 读取待办任务对象
govs_task_id = kwargs.get('gdId', '')
self.govs_order = await GovsOrderMaster.async_find_by_id(govs_task_id)
# 保存请求数据
params = self._params_for_db(**kwargs)
self.govs_return = GovsWorkOrderReturnFormal().copy_from_dict(params)
self.govs_return.status = 0
await self.govs_return.async_save()
# 后台执行提交申请延期请求到省12345
await aio_pool.run_background_task(
govs_create_order_return.create_return(self.govs_return, self.govs_order)
)
return {
'msg': '申请退回成功.'
}
# @auth_token
async def post(self):
"""
处理 POST 请求。
---
tags:
- D3I API
summary: 申请退回接口
"""
try:
echo_log(self.request.body.decode())
_, params = self.get_request_params()
_result = await self.create_return(**params)
self.response_ok(code=0, data=_result)
except Exception as e:
self.response_error(e, status_code=200, api_status_code=500)
self.log(msg=e, level=logging.ERROR, is_log_exc=True)
+102
View File
@@ -0,0 +1,102 @@
from typing import Optional
import logging
from apps.api import govs
from apps.app_handler import AppHandler
from paste.web.decorators import route
from paste.core import aio_pool
from paste.core.logging import echo_log
from dock.govs import govs_create_reply
from models.govs_order_master import GovsOrderMaster
from models.govs_create_reply import GovsReplyFormal
@route(f'{govs.ApiPrefix}/reply-formal/create')
class CreateDelayHandler(AppHandler):
"""
答复办结接口。
对接省12345的答复办结接口,请求后本接口先将数据保存本地,然后响应客户端,然后开始后台启动推送。
"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.govs_order: Optional[GovsOrderMaster] = None
self.govs_reply: Optional[GovsReplyFormal] = None
def _params_for_db(self, **kwargs: dict) -> dict:
"""
提取数据库所需参数。
"""
return {
GovsReplyFormal.master_id.key: kwargs.get('gdId', ''),
GovsReplyFormal.flow_token.key: kwargs.get('flowToken', ''),
GovsReplyFormal.gd_id.key: kwargs.get('gdId', ''),
GovsReplyFormal.is_contact.key: kwargs.get('isContact', ''),
GovsReplyFormal.contact_name.key: kwargs.get('contactName', ''),
GovsReplyFormal.contact_time.key: kwargs.get('contactTime', ''),
GovsReplyFormal.contact_type.key: kwargs.get('contactType', ''),
GovsReplyFormal.advice.key: kwargs.get('advice', ''),
GovsReplyFormal.reason.key: kwargs.get('reason', ''),
GovsReplyFormal.remarks.key: kwargs.get('remarks', ''),
GovsReplyFormal.file_id_str.key: kwargs.get('fileIdStr', ''),
GovsReplyFormal.save_id.key: kwargs.get('saveId', ''),
GovsReplyFormal.process_instance_id.key: kwargs.get('processInstanceId', ''),
GovsReplyFormal.business_key.key: kwargs.get('businessKey', ''),
GovsReplyFormal.order_no.key: kwargs.get('orderNo', ''),
GovsReplyFormal.action_name.key: kwargs.get('actionName', ''),
GovsReplyFormal.case_accord_type_one_name.key: kwargs.get('caseAccordTypeOneName', ''),
GovsReplyFormal.case_accord_type_two_name.key: kwargs.get('caseAccordTypeTwoName', ''),
GovsReplyFormal.case_accord_type_three_name.key: kwargs.get('caseAccordTypeThreeName', ''),
}
async def create_delay(self, **kwargs) -> dict:
# 必填参数校验
required_keys = [
'gdId', 'flowToken', 'isContact', 'contactType', 'advice', 'reason'
]
missing = [
k for k in required_keys
if k not in kwargs or kwargs[k] is None
]
if missing:
raise ValueError(f"缺少必要参数: {missing}")
# 读取待办任务对象
govs_task_id = kwargs.get('gdId', '')
self.govs_order = await GovsOrderMaster.async_find_by_id(govs_task_id)
# 保存请求数据
params = self._params_for_db(**kwargs)
self.govs_reply = GovsReplyFormal().copy_from_dict(params)
self.govs_reply.status = 0
await self.govs_reply.async_save()
# 后台执行提交答复办结请求到省12345
await aio_pool.run_background_task(
govs_create_reply.create_reply(self.govs_reply, self.govs_order)
)
return {
'msg': '答复办结成功.'
}
# @auth_token
async def post(self):
"""
处理 POST 请求。
---
tags:
- D3I API
summary: 答复办结接口
"""
try:
echo_log(self.request.body.decode())
_, params = self.get_request_params()
_result = await self.create_delay(**params)
self.response_ok(code=0, data=_result)
except Exception as e:
self.response_error(e, status_code=200, api_status_code=500)
self.log(msg=e, level=logging.ERROR, is_log_exc=True)
+101
View File
@@ -0,0 +1,101 @@
from typing import Optional
import logging
from apps.api import govs
from apps.app_handler import AppHandler
from paste.web.decorators import route
from paste.core import aio_pool
from paste.core.logging import echo_log
from dock.govs import govs_phase_wise_completion
from models.govs_order_master import GovsOrderMaster
from models.govs_phase_wise_completion import GovsPhaseWiseCompletion
@route(f'{govs.ApiPrefix}/phase-wise-completion/create')
class CreateDelayHandler(AppHandler):
"""
阶段性办结接口。
对接省12345的阶段性办结接口,请求后本接口先将数据保存本地,然后响应客户端,然后开始后台启动推送。
"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.govs_order: Optional[GovsOrderMaster] = None
self.phase_wise_completion: Optional[GovsPhaseWiseCompletion] = None
def _params_for_db(self, **kwargs: dict) -> dict:
"""
提取数据库所需参数。
"""
return {
GovsPhaseWiseCompletion.master_id.key: kwargs.get('gdId', ''),
GovsPhaseWiseCompletion.flow_token.key: kwargs.get('flowToken', ''),
GovsPhaseWiseCompletion.gd_id.key: kwargs.get('gdId', ''),
GovsPhaseWiseCompletion.is_contact.key: kwargs.get('isContact', ''),
GovsPhaseWiseCompletion.contact_name.key: kwargs.get('contactName', ''),
GovsPhaseWiseCompletion.contact_time.key: kwargs.get('contactTime', ''),
GovsPhaseWiseCompletion.contact_type.key: kwargs.get('contactType', ''),
GovsPhaseWiseCompletion.next_feedback_time.key: kwargs.get('nextFeedbackTime', ''),
GovsPhaseWiseCompletion.advice.key: kwargs.get('advice', ''),
GovsPhaseWiseCompletion.reason.key: kwargs.get('reason', ''),
GovsPhaseWiseCompletion.remark.key: kwargs.get('remark', ''),
GovsPhaseWiseCompletion.action_name.key: kwargs.get('actionName', ''),
GovsPhaseWiseCompletion.case_accord_type_one_name.key: kwargs.get('caseAccordTypeOneName', ''),
GovsPhaseWiseCompletion.case_accord_type_two_name.key: kwargs.get('caseAccordTypeTwoName', ''),
GovsPhaseWiseCompletion.case_accord_type_three_name.key: kwargs.get('caseAccordTypeThreeName', ''),
GovsPhaseWiseCompletion.order_id.key: kwargs.get('orderId', ''),
GovsPhaseWiseCompletion.task_id.key: kwargs.get('taskId', '')
}
async def create_delay(self, **kwargs) -> dict:
# 必填参数校验
required_keys = [
'gdId', 'flowToken', 'isContact', 'contactName', 'contactTime', 'contactType', 'nextFeedbackTime', 'advice',
'reason'
]
missing = [
k for k in required_keys
if k not in kwargs or kwargs[k] is None
]
if missing:
raise ValueError(f"缺少必要参数: {missing}")
# 读取待办任务对象
govs_task_id = kwargs.get('gdId', '')
self.govs_order = await GovsOrderMaster.async_find_by_id(govs_task_id)
# 保存请求数据
params = self._params_for_db(**kwargs)
self.phase_wise_completion = GovsPhaseWiseCompletion().copy_from_dict(params)
self.phase_wise_completion.status = 0
await self.phase_wise_completion.async_save()
# 后台执行提交阶段性办结请求到省12345
await aio_pool.run_background_task(
govs_phase_wise_completion.create_phase_wise_completion(self.phase_wise_completion, self.govs_order)
)
return {
'msg': '阶段性办结成功.'
}
# @auth_token
async def post(self):
"""
处理 POST 请求。
---
tags:
- D3I API
summary: 阶段性办结接口
"""
try:
echo_log(self.request.body.decode())
_, params = self.get_request_params()
_result = await self.create_delay(**params)
self.response_ok(code=0, data=_result)
except Exception as e:
self.response_error(e, status_code=200, api_status_code=500)
self.log(msg=e, level=logging.ERROR, is_log_exc=True)
+91
View File
@@ -0,0 +1,91 @@
from typing import Optional
import logging
from apps.api import govs
from apps.app_handler import AppHandler
from paste.web.decorators import route
from paste.core import aio_pool
from paste.core.logging import echo_log
from dock.govs import govs_save_sign
from models.govs_order_master import GovsOrderMaster
from models.govs_save_sign import GovsSaveSign
@route(f'{govs.ApiPrefix}/save-sign-for/create')
class CreateDelayHandler(AppHandler):
"""
申请延期接口。
对接省12345的申请延期接口,请求后本接口先将数据保存本地,然后响应客户端,然后开始后台启动推送。
"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.govs_order: Optional[GovsOrderMaster] = None
self.govs_sign: Optional[GovsSaveSign] = None
def _params_for_db(self, **kwargs: dict) -> dict:
"""
提取数据库所需参数。
"""
return {
GovsSaveSign.gd_id.key: kwargs.get('gdId', ''),
GovsSaveSign.flow_token.key: kwargs.get('flowToken', ''),
GovsSaveSign.order_id.key: kwargs.get('orderId', ''),
GovsSaveSign.order_no.key: kwargs.get('orderNo', ''),
GovsSaveSign.master_id.key: kwargs.get('gdId', ''),
GovsSaveSign.order_process_id.key: kwargs.get('orderProcessId', ''),
GovsSaveSign.task_id.key: kwargs.get('taskId', ''),
GovsSaveSign.flag.key: kwargs.get('flag', '')
}
async def create_delay(self, **kwargs) -> dict:
# 必填参数校验
required_keys = [
'gdId', 'flowToken'
]
missing = [
k for k in required_keys
if k not in kwargs or kwargs[k] is None
]
if missing:
raise ValueError(f"缺少必要参数: {missing}")
# 读取待办任务对象
govs_task_id = kwargs.get('gdId', '')
self.govs_order = await GovsOrderMaster.async_find_by_id(govs_task_id)
# 保存请求数据
params = self._params_for_db(**kwargs)
self.govs_sign = GovsSaveSign().copy_from_dict(params)
self.govs_sign.status = 0
await self.govs_sign.async_save()
# 后台执行提交申请延期请求到省12345
await aio_pool.run_background_task(
govs_save_sign.sign_order(self.govs_sign, self.govs_order)
)
return {
'msg': '确认签收成功.'
}
# @auth_token
async def post(self):
"""
处理 POST 请求。
---
tags:
- D3I API
summary: 申请延期接口
"""
try:
echo_log(self.request.body.decode())
_, params = self.get_request_params()
_result = await self.create_delay(**params)
self.response_ok(code=0, data=_result)
except Exception as e:
self.response_error(e, status_code=200, api_status_code=500)
self.log(msg=e, level=logging.ERROR, is_log_exc=True)