Geen omschrijving

contract_mp_views.py 5.0KB

    # -*- 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 account.models import LensmanInfo from apps.contract.models import LensmanContributionContractInfo from apps.lensman.activity.models import LensmanContributionActivityIncomeExpensesInfo from member.models import MemberActivityContributionInfo from utils.tencentcloud.ess import (create_document, create_flow, create_scheme_url, start_flow, test_upload_document_files, upload_document_files) # @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', '') contribution_id = request.POST.get('contribution_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, contribution_id=contribution_id) file_ids = upload_contribution_images(contribution_id) flow_id = create_contribution_contract_flow(lensman) contract.flow_id = flow_id contract.save() document_id, fields = create_contribution_contract_document(lensman, contribution_id, file_ids, flow_id) contract.contract_content_fields = fields contract.document_id = document_id contract.save() # 发起签署流程 flow_status = start_contribution_contract_flow(flow_id) scheme_url = get_contribtion_contract_sign_mppath(lensman, flow_id) return response(200, data={ 'contract': contract.mpdata, 'scheme_url': scheme_url }) def upload_contribution_images(contribution_id): # 上传MemberActivityContributionInfo图片 https://qian.tencent.com/developers/companyApis/templatesAndFiles/UploadFiles contribtuon = MemberActivityContributionInfo.objects.get(contribution_id=contribution_id) # TODO: 从 MemberActivityContributionInfo 生成 files 对象 files = [ { "FileBody": "文件base64编码,不含逗号前字符,即data:image/png;base64,", "FileName": "test.png" } ] file_type = 'png' # upload_files_result = upload_document_files(files, file_type=file_type) upload_files_result = test_upload_document_files(files, file_type=file_type) file_ids = upload_files_result.FileIds return file_ids def create_contribution_contract_flow(lensman): # 创建签署流程 https://qian.tencent.com/developers/companyApis/startFlows/CreateFlow # 创建签署流程参数 Operator FlowName = lensman.identity_card_name + u"的投稿合同" + tc.local_string(format='%Y%m%d') FlowType = u"活动投稿授权书" Approvers = [{ "ApproverType": 1, "Required": True, "NotifyType": None, "ApproverMobile": lensman.phone, "ApproverName": lensman.identity_card_name, "ApproverIdCardType": "ID_CARD", "ApproverIdCardNumber": lensman.identity_card_number, }] create_flow_result = create_flow(flow_name=FlowName, flow_type=FlowType, approvers=Approvers) flow_id = create_flow_result.FlowId return flow_id def create_contribution_contract_document(lensman, contribution_id, file_ids, FlowId): # 创建电子签文档 https://qian.tencent.com/developers/companyApis/startFlows/CreateDocument income = LensmanContributionActivityIncomeExpensesInfo.objects.get(contribution_id=contribution_id, lensman_id=lensman.lensman_id) FormFields = [{ "ComponentId": "ComponentId_0", "ComponentValue": lensman.identity_card_name }, { "ComponentId": "ComponentId_1", "ComponentValue": lensman.identity_card_number, }, { "ComponentId": "ComponentId_2", "ComponentValue": str(income.amount), }, { "ComponentId": "ComponentId_3", "ComponentValue": "", }] for i, file_id in enumerate(file_ids): FormFields.append({ "ComponentId": "ComponentId_" + str(37 + i), "ComponentValue": file_id, }) create_document_result = create_document(flow_id=FlowId, form_fields=FormFields) document_id = create_document_result.DocumentId return document_id, FormFields def start_contribution_contract_flow(FlowId): # 发起签署流程 https://qian.tencent.com/developers/companyApis/startFlows/StartFlow start_flow_result = start_flow(flow_id=FlowId) flow_status = start_flow_result.Status return flow_status def get_contribtion_contract_sign_mppath(lensman, FlowId): # 获取签署链接 https://qian.tencent.com/developers/companyApis/startFlows/CreateSchemeUrl create_scheme_url_result = create_scheme_url(flow_id=FlowId, name=lensman.identity_card_name, mobile=lensman.phone, card_type='ID_CARD', card_number=lensman.identity_card_number) scheme_url = create_scheme_url_result.SchemeUrl return scheme_url @logit(res=True) def ess_callback(request): return response()