|
# -*- coding: utf-8 -*-
from django.conf import settings
from django_logit import logit
from django_response import response
from TimeConvert import TimeConvert as tc
from apps.contract.models import LensmanContributionContractInfo
from apps.lensman.activity.models import LensmanContributionActivityIncomeExpensesInfo
from account.models import LensmanInfo
from member.models import MemberActivityContributionInfo
@logit(res=True)
def get_contribtion_contract_api(request):
user_id = request.POST.get('user_id', '')
lensman_id = request.POST.get('lensman_id', '')
activity_id = request.POST.get('activity_id', '')
contribtuon_id = request.POST.get('contribtuon_id', '')
lensman = LensmanInfo.objects.get(lensman_id=lensman_id)
contract, _ = LensmanContributionContractInfo.objects.update_or_create(
user_id=user_id, lensman_id=lensman_id, activity_id=activity_id, contribtuon_id=contribtuon_id)
file_ids = upload_contribution_images(contribtuon_id)
operator = {
"UserId": settings.CONTRACT_LENSMAN_CONTRIBUTION_OPERATOR_ID
}
flow_id = create_contribution_contract_flow(lensman, operator)
contract.flow_id = flow_id
contract.save()
document_id, fields = create_contribution_contract_document(lensman, file_ids, flow_id, operator)
contract.contract_content_fields = fields
contract.document_id = document_id
contract.save()
# TODO : 发起签署流程
start_contribution_contract_flow(flow_id, operator)
scheme_url = get_contribtion_contract_sign_mppath(operator, lensman, flow_id)
return response(200, data={
'contract': contract.mpdata,
'scheme_url': scheme_url
})
def upload_contribution_images(contribtuon_id):
# TODO : 上传MemberActivityContributionInfo图片 https://qian.tencent.com/developers/companyApis/templatesAndFiles/UploadFiles
contribtuon = MemberActivityContributionInfo.objects.get(contribtuon_id=contribtuon_id)
# 返回图片的 file_ids
return []
def create_contribution_contract_flow(lensman, Operator):
# TODO : 创建签署流程 https://qian.tencent.com/developers/companyApis/startFlows/CreateFlow
# 创建签署流程参数 Operator
FlowName = lensman.identity_card_name + "的投稿合同" + tc.local_string(format='%Y%m%d')
FlowType = '活动投稿授权书'
Approvers = [{
"ApproverType": "1",
"Required": "true",
"NotifyType": "none",
"ApproverMobile": lensman.phone,
"ApproverName": lensman.identity_card_name,
"ApproverIdCardNumber": lensman.identity_card_number,
}]
# 创建签署流程返回值 FlowId
return ''
def create_contribution_contract_document(lensman, contribtuon_id, file_ids, FlowId, Operator):
# TODO : 创建电子签文档 https://qian.tencent.com/developers/companyApis/startFlows/CreateDocument
income = LensmanContributionActivityIncomeExpensesInfo.objects.get(contribtuon_id=contribtuon_id, lensman_id=lensman.lensman_id)
# 创建电子文档参数 Operator FlowId
TemplateId = settings.CONTRACT_LENSMAN_CONTRIBUTION_TEMPLATE_ID
FormFields = [{
"ComponentName": "ComponentId_0",
"ComponentValue": lensman.identity_card_name
}, {
"ComponentName": "ComponentId_1",
"ComponentValue": lensman.identity_card_number,
}, {
"ComponentName": "ComponentId_2",
"ComponentValue": income.amount,
}, {
"ComponentName": "ComponentId_3",
"ComponentValue": "",
}]
for i, file_id in enumerate(file_ids):
FormFields.append({
"ComponentName": "ComponentId_" + str(37 + i),
"ComponentValue": file_id,
})
# 返回创建电子文档 DocumentId
return '', FormFields
def start_contribution_contract_flow(FlowId, Operator):
# TODO : 发起签署流程 https://qian.tencent.com/developers/companyApis/startFlows/StartFlow
# 发起签署流程参数 Operator FlowId
#
return ''
def get_contribtion_contract_sign_mppath(Operator, lensman, FlowId):
# TODO : 获取签署链接 https://qian.tencent.com/developers/companyApis/startFlows/CreateSchemeUrl
Name = lensman.identity_card_name
Mobile = lensman.phone
IdCardType = 'ID_CARD'
IdCardNumber = lensman.identity_card_number
EndPoint = 'APP'
PathType = '1' #腾讯电子签小程序流程合同的详情页
AutoJumpBack = 'true' #签署完成会自动跳转回来
# 返回 SchemeUrl
return ''
@logit(res=True)
def ess_callback(request):
return response()
|