暂无描述

contract_mp_views.py 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. # -*- coding: utf-8 -*-
  2. from django.conf import settings
  3. from django_logit import logit
  4. from django_response import response
  5. from TimeConvert import TimeConvert as tc
  6. from apps.contract.models import LensmanContributionContractInfo
  7. from apps.lensman.activity.models import LensmanContributionActivityIncomeExpensesInfo
  8. from account.models import LensmanInfo
  9. from member.models import MemberActivityContributionInfo
  10. @logit(res=True)
  11. def get_contribtion_contract_api(request):
  12. user_id = request.POST.get('user_id', '')
  13. lensman_id = request.POST.get('lensman_id', '')
  14. activity_id = request.POST.get('activity_id', '')
  15. contribtuon_id = request.POST.get('contribtuon_id', '')
  16. lensman = LensmanInfo.objects.get(lensman_id=lensman_id)
  17. contract, _ = LensmanContributionContractInfo.objects.update_or_create(
  18. user_id=user_id, lensman_id=lensman_id, activity_id=activity_id, contribtuon_id=contribtuon_id)
  19. file_ids = upload_contribution_images(contribtuon_id)
  20. operator = {
  21. "UserId": settings.CONTRACT_LENSMAN_CONTRIBUTION_OPERATOR_ID
  22. }
  23. flow_id = create_contribution_contract_flow(lensman, operator)
  24. contract.flow_id = flow_id
  25. contract.save()
  26. document_id, fields = create_contribution_contract_document(lensman, file_ids, flow_id, operator)
  27. contract.contract_content_fields = fields
  28. contract.document_id = document_id
  29. contract.save()
  30. # TODO : 发起签署流程
  31. start_contribution_contract_flow(flow_id, operator)
  32. scheme_url = get_contribtion_contract_sign_mppath(operator, lensman, flow_id)
  33. return response(200, data={
  34. 'contract': contract.mpdata,
  35. 'scheme_url': scheme_url
  36. })
  37. def upload_contribution_images(contribtuon_id):
  38. # TODO : 上传MemberActivityContributionInfo图片 https://qian.tencent.com/developers/companyApis/templatesAndFiles/UploadFiles
  39. contribtuon = MemberActivityContributionInfo.objects.get(contribtuon_id=contribtuon_id)
  40. # 返回图片的 file_ids
  41. return []
  42. def create_contribution_contract_flow(lensman, Operator):
  43. # TODO : 创建签署流程 https://qian.tencent.com/developers/companyApis/startFlows/CreateFlow
  44. # 创建签署流程参数 Operator
  45. FlowName = lensman.identity_card_name + "的投稿合同" + tc.local_string(format='%Y%m%d')
  46. FlowType = '活动投稿授权书'
  47. Approvers = [{
  48. "ApproverType": "1",
  49. "Required": "true",
  50. "NotifyType": "none",
  51. "ApproverMobile": lensman.phone,
  52. "ApproverName": lensman.identity_card_name,
  53. "ApproverIdCardNumber": lensman.identity_card_number,
  54. }]
  55. # 创建签署流程返回值 FlowId
  56. return ''
  57. def create_contribution_contract_document(lensman, contribtuon_id, file_ids, FlowId, Operator):
  58. # TODO : 创建电子签文档 https://qian.tencent.com/developers/companyApis/startFlows/CreateDocument
  59. income = LensmanContributionActivityIncomeExpensesInfo.objects.get(contribtuon_id=contribtuon_id, lensman_id=lensman.lensman_id)
  60. # 创建电子文档参数 Operator FlowId
  61. TemplateId = settings.CONTRACT_LENSMAN_CONTRIBUTION_TEMPLATE_ID
  62. FormFields = [{
  63. "ComponentName": "ComponentId_0",
  64. "ComponentValue": lensman.identity_card_name
  65. }, {
  66. "ComponentName": "ComponentId_1",
  67. "ComponentValue": lensman.identity_card_number,
  68. }, {
  69. "ComponentName": "ComponentId_2",
  70. "ComponentValue": income.amount,
  71. }, {
  72. "ComponentName": "ComponentId_3",
  73. "ComponentValue": "",
  74. }]
  75. for i, file_id in enumerate(file_ids):
  76. FormFields.append({
  77. "ComponentName": "ComponentId_" + str(37 + i),
  78. "ComponentValue": file_id,
  79. })
  80. # 返回创建电子文档 DocumentId
  81. return '', FormFields
  82. def start_contribution_contract_flow(FlowId, Operator):
  83. # TODO : 发起签署流程 https://qian.tencent.com/developers/companyApis/startFlows/StartFlow
  84. # 发起签署流程参数 Operator FlowId
  85. #
  86. return ''
  87. def get_contribtion_contract_sign_mppath(Operator, lensman, FlowId):
  88. # TODO : 获取签署链接 https://qian.tencent.com/developers/companyApis/startFlows/CreateSchemeUrl
  89. Name = lensman.identity_card_name
  90. Mobile = lensman.phone
  91. IdCardType = 'ID_CARD'
  92. IdCardNumber = lensman.identity_card_number
  93. EndPoint = 'APP'
  94. PathType = '1' #腾讯电子签小程序流程合同的详情页
  95. AutoJumpBack = 'true' #签署完成会自动跳转回来
  96. # 返回 SchemeUrl
  97. return ''