| 
              # -*- coding: utf-8 -*-
from django.conf import settings
from django_logit import logit
from django_response import response
from account.models import LensmanInfo, UserInfo
from api.lensman import contract_mp_views
from apps.contract.models import LensmanContributionContractInfo
from kodo.decorators import check_admin
from member.models import MemberActivityInfo
from pre.custom_message import sendwxasubscribemessage
from utils.error.errno_utils import ContractStatusCode, TencentCloudStatusCode
from utils.tencentcloud.ess import describe_file_urls
WECHAT = settings.WECHAT
@logit(res=True)
@check_admin
def get_signed_contribtion_contract_file_api(request, administrator):
    contribution_id = request.POST.get('contribution_id', '')
    user_id = request.POST.get('user_id', '')
    contract = LensmanContributionContractInfo.objects.filter(contribution_id=contribution_id, user_id=user_id).first()
    if not contract:
        return response(ContractStatusCode.CONTRACT_NOT_FOUND)
    describe_file_urls_result = describe_file_urls(business_id=contract.flow_id)
    if not describe_file_urls_result:
        return response(TencentCloudStatusCode.TENCENT_CLOUD_SDK_EXCEPTION)
    FileUrls = describe_file_urls_result.FileUrls
    return response(200, 'Get Signed Contribution Contract File Success', u'获取投稿授权书文件成功', data={
        'file_url': FileUrls[0].Url
    })
@logit(res=True)
@check_admin
def start_contribution_contract_sign_api(request, administrator):
    user_id = request.POST.get('user_id', '')
    activity_id = request.POST.get('activity_id', '')
    contribution_id = request.POST.get('contribution_id', '')
    lensman = LensmanInfo.objects.get(user_id=user_id)
    act = MemberActivityInfo.objects.get(activity_id=activity_id)
    user = UserInfo.objects.get(user_id=user_id)
    contract, _ = LensmanContributionContractInfo.objects.update_or_create(
        user_id=user_id,
        lensman_id=lensman.lensman_id,
        activity_id=activity_id,
        contribution_id=contribution_id,
    )
    file_ids = contract_mp_views.upload_contribution_images(contribution_id)
    flow_id = contract_mp_views.create_contribution_contract_flow(lensman)
    contract.flow_id = flow_id
    contract.save()
    document_id, fields = contract_mp_views.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 = contract_mp_views.start_contribution_contract_flow(flow_id)
    data = {
        "thing7": {
            "value": act.title[:20],
        },
        "thing6": {
            "value": lensman.identity_card_name + u"的投稿合同",
        },
    }
    wxcfg = WECHAT.get('MINIAPP', {})
    appid = wxcfg.get('appID')
    res = sendwxasubscribemessage(openid=user.openid_miniapp, template_id=settings.TEMPLATE_ID_CONTRIBUTION_CONTRACT, data=data, miniprogram_state=None, lang=None, page='/pages/member/activity/activity?flow_id={}&contribution_id={}'.format(flow_id, contribution_id))
    return response(200, 'Start Contribution Contract Sign Success', u'发起投稿授权书签署成功', data={})
 
  |