add get_contribtion_contract_status_api接口

FFIB преди 9 месеца
родител
ревизия
26bef94de6
променени са 4 файла, в които са добавени 79 реда и са изтрити 15 реда
  1. 22 10
      api/lensman/contract_mp_views.py
  2. 2 0
      api/lensman/lensman_urls.py
  3. 43 0
      apps/contract/migrations/0002_auto_20240814_1821.py
  4. 12 5
      apps/contract/models.py

+ 22 - 10
api/lensman/contract_mp_views.py

@@ -13,7 +13,24 @@ from utils.tencentcloud.ess import (create_document, create_flow, create_scheme_
13 13
                                     test_upload_document_files, upload_document_files)
14 14
 
15 15
 
16
-# @logit(res=True)
16
+@logit(res=True)
17
+def get_contribtion_contract_status_api(request):
18
+    user_id = request.POST.get('user_id', '')
19
+    lensman_id = request.POST.get('lensman_id', '')
20
+    activity_id = request.POST.get('activity_id', '')
21
+    contribtuon_id = request.POST.get('contribtuon_id', '')
22
+
23
+    try:
24
+        contract = LensmanContributionContractInfo.objects.get(user_id=user_id, activity_id=activity_id, contribtuon_id=contribtuon_id)
25
+    except LensmanContributionContractInfo.DoesNotExist:
26
+        return response(404, 'Contract Not Found', '合同不存在')
27
+
28
+    return response(200, data={
29
+        'contract_status': contract.contract_status,
30
+    })
31
+
32
+
33
+@logit(res=True)
17 34
 def get_contribtion_contract_api(request):
18 35
     user_id = request.POST.get('user_id', '')
19 36
     lensman_id = request.POST.get('lensman_id', '')
@@ -42,7 +59,6 @@ def get_contribtion_contract_api(request):
42 59
     scheme_url = get_contribtion_contract_sign_mppath(lensman, flow_id)
43 60
 
44 61
     return response(200, data={
45
-        'contract': contract.mpdata,
46 62
         'scheme_url': scheme_url
47 63
     })
48 64
 
@@ -62,9 +78,8 @@ def upload_contribution_images(contribution_id):
62 78
     file_type = 'png'
63 79
     # upload_files_result = upload_document_files(files, file_type=file_type)
64 80
     upload_files_result = test_upload_document_files(files, file_type=file_type)
65
-    file_ids = upload_files_result.FileIds
66 81
 
67
-    return file_ids
82
+    return upload_files_result.FileIds
68 83
 
69 84
 
70 85
 def create_contribution_contract_flow(lensman):
@@ -83,9 +98,8 @@ def create_contribution_contract_flow(lensman):
83 98
         "ApproverIdCardNumber": lensman.identity_card_number,
84 99
     }]
85 100
     create_flow_result = create_flow(flow_name=FlowName, flow_type=FlowType, approvers=Approvers)
86
-    flow_id = create_flow_result.FlowId
87 101
 
88
-    return flow_id
102
+    return create_flow_result.FlowId
89 103
 
90 104
 
91 105
 def create_contribution_contract_document(lensman, contribution_id, file_ids, FlowId):
@@ -122,18 +136,16 @@ def start_contribution_contract_flow(FlowId):
122 136
     # 发起签署流程 https://qian.tencent.com/developers/companyApis/startFlows/StartFlow
123 137
 
124 138
     start_flow_result = start_flow(flow_id=FlowId)
125
-    flow_status = start_flow_result.Status
126 139
 
127
-    return flow_status
140
+    return start_flow_result.Status
128 141
 
129 142
 
130 143
 def get_contribtion_contract_sign_mppath(lensman, FlowId):
131 144
     # 获取签署链接 https://qian.tencent.com/developers/companyApis/startFlows/CreateSchemeUrl
132 145
 
133 146
     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)
134
-    scheme_url = create_scheme_url_result.SchemeUrl
135 147
 
136
-    return scheme_url
148
+    return create_scheme_url_result.SchemeUrl
137 149
 
138 150
 
139 151
 @logit(res=True)

+ 2 - 0
api/lensman/lensman_urls.py

@@ -5,6 +5,8 @@ from api.lensman import contract_admin_views, contract_mp_views, activity_admin_
5 5
 
6 6
 urlpatterns = [
7 7
     url(r'^mp/lensman/contribution/contract/get$', contract_mp_views.get_contribtion_contract_api, name='get_contribtion_contract_api'),
8
+    url(r'^mp/lensman/contribution/contract/status/get$', contract_mp_views.get_contribtion_contract_status_api, name='get_contribtion_contract_status_api'),
9
+    
8 10
     url(r'^mp/ess/callback$', contract_mp_views.ess_callback, name='ess_callback'),
9 11
 ]
10 12
 

+ 43 - 0
apps/contract/migrations/0002_auto_20240814_1821.py

@@ -0,0 +1,43 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+# Generated by Django 3.2.8 on 2024-08-14 10:21
4
+
5
+from django.db import migrations, models
6
+
7
+
8
+class Migration(migrations.Migration):
9
+
10
+    dependencies = [
11
+        ('contract', '0001_initial'),
12
+    ]
13
+
14
+    operations = [
15
+        migrations.RemoveField(
16
+            model_name='lensmancontributioncontractinfo',
17
+            name='approve_status',
18
+        ),
19
+        migrations.RemoveField(
20
+            model_name='lensmancontributioncontractinfo',
21
+            name='contract_status',
22
+        ),
23
+        migrations.AddField(
24
+            model_name='lensmancontributioncontractinfo',
25
+            name='tencent_approve_status',
26
+            field=models.IntegerField(choices=[(2, '待签署'), (7, '待签署'), (3, '已签署'), (4, '拒绝'), (5, '过期没人处理'), (6, '流程已撤回'), (8, '合同待填写'), (9, '流程已终止'), (10, '填写完成'), (15, '解除协议(已解除)'), (15, '已转他人处理')], db_index=True, default=-1, help_text='腾讯电子签签署人签署状态', verbose_name='tencent_approve_status'),
27
+        ),
28
+        migrations.AddField(
29
+            model_name='lensmancontributioncontractinfo',
30
+            name='tencent_contract_status',
31
+            field=models.IntegerField(choices=[(1, '合同创建'), (2, '合同签署中'), (3, '合同拒签'), (4, '合同签署完成'), (5, '合同流签(合同过期)'), (6, '合同撤回'), (8, '合同待填写'), (21, '解除协议(已解除)'), (16, '合同已失效')], db_index=True, default=-1, help_text='腾讯电子签合同签署状态', verbose_name='tencent_contract_status'),
32
+        ),
33
+        migrations.AlterField(
34
+            model_name='lensmancontributioncontractinfo',
35
+            name='document_id',
36
+            field=models.CharField(blank=True, help_text='腾讯电子签文档ID', max_length=128, null=True, verbose_name='document_id'),
37
+        ),
38
+        migrations.AlterField(
39
+            model_name='lensmancontributioncontractinfo',
40
+            name='flow_id',
41
+            field=models.CharField(blank=True, help_text='腾讯电子签流程ID', max_length=128, null=True, verbose_name='flow_id'),
42
+        ),
43
+    ]

+ 12 - 5
apps/contract/models.py

@@ -52,12 +52,12 @@ class LensmanContributionContractInfo(BaseModelMixin):
52 52
     contract_file = models.FileField(_(u'contract_file'), upload_to=upload_path, blank=True, null=True, help_text=u'图片')
53 53
 
54 54
     # 电子签参数
55
-    flow_id = models.CharField(_(u'flow_id'), max_length=128, blank=True, null=True, help_text=u'电子签流程ID')
55
+    flow_id = models.CharField(_(u'flow_id'), max_length=128, blank=True, null=True, help_text=u'腾讯电子签流程ID')
56 56
     # 后续需用同样的FlowId再次调用发起签署流程,合同才能进入签署环节
57
-    document_id = models.CharField(_(u'document_id'), max_length=128, blank=True, null=True, help_text=u'电子签文档ID')
57
+    document_id = models.CharField(_(u'document_id'), max_length=128, blank=True, null=True, help_text=u'腾讯电子签文档ID')
58 58
 
59
-    contract_status = models.IntegerField(_(u'contract_status'), choices=CONTRACT_STATUS_TUPLE, default=1, help_text=u'合同签署状态', db_index=True)
60
-    approve_status = models.IntegerField(_(u'approve_status'), choices=APPROVE_STATUS_TYPE, default=2, help_text=u'签署人签署状态', db_index=True)
59
+    tencent_contract_status = models.IntegerField(_(u'tencent_contract_status'), choices=CONTRACT_STATUS_TUPLE, default=-1, help_text=u'腾讯电子签合同签署状态', db_index=True)
60
+    tencent_approve_status = models.IntegerField(_(u'tencent_approve_status'), choices=APPROVE_STATUS_TYPE, default=-1, help_text=u'腾讯电子签签署人签署状态', db_index=True)
61 61
 
62 62
     class Meta:
63 63
         verbose_name = _(u'摄影师投稿合同信息')
@@ -69,7 +69,13 @@ class LensmanContributionContractInfo(BaseModelMixin):
69 69
     @property
70 70
     def contract_file_url(self):
71 71
         return qiniu_file_url(self.contract_file.name, bucket='tamron')
72
-
72
+    
73
+    @property
74
+    def contract_status(self):
75
+        if(self.tencent_approve_status == 3 and self.tencent_contract_status == 4):
76
+            return 1
77
+        else:
78
+            return 0
73 79
     @property
74 80
     def data(self):
75 81
         return {
@@ -79,6 +85,7 @@ class LensmanContributionContractInfo(BaseModelMixin):
79 85
             'contribution_id': self.contribution_id,
80 86
             'contract_content_fields': json.loads(self.contract_content_fields) if self.contract_content_fields else '',
81 87
             'contract_file_url': self.contract_file_url,
88
+            'contract_status': self.contract_status,
82 89
             'created_at': tc.local_string(utc_dt=self.created_at, format='%Y-%m-%d %H:%M:%S'),
83 90
             'updated_at': tc.local_string(utc_dt=self.updated_at, format='%Y-%m-%d %H:%M:%S')
84 91
         }