Sfoglia il codice sorgente

贵茶2支持爱签实名认证与合同签署

zhou.xiaoning 1 anno fa
parent
commit
6d3c3b11ad

+ 1 - 1
.gitignore

@@ -8,4 +8,4 @@ QueryService
 go.sum
 mtp2_if.exe
 .idea
-__debug_bin.exe
+__debug_bin*

+ 18 - 18
config/config.xml

@@ -13,11 +13,11 @@
     <DbAddress value="192.168.31.88"/>
     <DbName value="orcl"/>
     <DbPort value="1521"/>
-    <DbUser value="mtp2_test205"/>
+    <DbUser value="mtp2_test134"/>
     <DbPwd value="muchinfo"/>
   </DbSetting>
   <RedisSetting>
-    <Address value="192.168.31.205"/>
+    <Address value="192.168.31.134"/>
     <Port value="5007"/>
     <Timeout value="3"/>
     <ConnNum value="1"/>
@@ -25,11 +25,11 @@
     <Pwd value=""/>
   </RedisSetting>
   <MqSetting>
-    <Url value="amqp://guest:guest@192.168.31.205:5020/test"/>
+    <Url value="amqp://guest:guest@192.168.31.134:5020/test"/>
     <Exchange value="entry"/>
   </MqSetting>
   <MongoDBSetting>
-    <HostName value="192.168.31.205"/>
+    <HostName value="192.168.31.134"/>
     <Port value="5025"/>
     <DBName value="HistoryQuote"/>
     <Username value="quote_test01"/>
@@ -38,27 +38,27 @@
   <MySQLSetting>
     <Host value="192.168.30.72"/>
     <Port value="3306"/>
-    <DBName value="historyquote_test205"/>
-    <Username value="quote_test205"/>
+    <DBName value="historyquote_test134"/>
+    <Username value="quote_test134"/>
     <Password value="123456"/>
   </MySQLSetting>
   <Tencent>
     <Enabled value="1"/>
-    <SecretId value="AKyDwiyUUckpkct4igUy8lsS7SEqR6c7yR"/>
-    <SecretKey value="SKwvG74cbV3OrAiJdjU5k4507vZwNYDbwT"/>
-    <EndPoint value="essbasic.test.ess.tencent.cn"/>
-    <AppId value="yDwiuUUckpogfoa4UxhigrYChFMdSJQV"/>
-    <ProxyOrganizationName value="天津麦顿"/>
+    <SecretId value="AKIDPktwvneP2WqxvmWFsMclmfLLKDyrbAXp"/>
+    <SecretKey value="GNH9tX8c6Wls02vhNzUvdLuGMYfeVErM"/>
+    <EndPoint value="essbasic.tencentcloudapi.com"/>
+    <AppId value="yDSLpUUghqyijhUTQQ1W1DzMZVs3S2s8"/>
+    <ProxyOrganizationName value="海南掉期市场管理有限责任公司"/>
     <ProxyOrganizationOpenId value="TJMD"/>
-    <ProxyOperatorOpenId value="TJMD01"/>
-    <SignToken value="D586D270A51448179277A11729F37D3E"/>
-    <SignKey value="8774F484EA294C1E829EA6E2D7F99123"/>
+    <ProxyOperatorOpenId value="TJMD_LEGAL"/>
+    <SignToken value="42F95163F767407C858FB58D519A054A"/>
+    <SignKey value="34FD7C4496794788B569E84729601276"/>
   </Tencent>
   <Asign>
     <Url value="https://prev.asign.cn"/>
-    <AppId value="896210645"/>
-    <PrivateKey value="MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqmByEbXbqqq+FYxD1+mJzqrVxG/7xNF3iZJV9q0PqOVwWPEtND8nNuB2FeAwHc5+W7dZwXheVaQqWXvV6lnWp3KaQ9S4CbeOX7zKKF0j42JMj4Adknid9X6OlULZeVoXcQsdQ2h9xpfJhwLka4aOX5p1eP6WocXMrkAVRXEA8aNAlTUHBWhrbiJpKdL4KIDs6hwh0QqLbnt8i7t02wq6qubGW0hYvdY3MQL2GfbNoIZUbYezp5eCyHm/8cFT/WTt1sGSg4hD8JbUn0GTMcrh4rrQLmcJbjStNUOyjqouASTK1A2QQxSS5p2Y7AC4yut3MIqyr7ByAX9/85HtHrdX3AgMBAAECggEAFWRBnzGCyeZhYB6OD+o30j1Dx001aNWiODNYs4t4VrSeoYMqBh3Gtm8x9HybNYwAJRLp4ulJl8i2NSjvK1IWqxgqIt87x74z3ed2tO46jknKGaOMCcfzN7t4b9BxLd83pekRyUewzbV7cVqTW5WTyAZ5EUp14Wtof7vtjsg8ndZp1C0LzJrsQ63LWJAWsfkiRwNwbjkIKTl12xwe3ctZD/PmxYVgWGog+32OiiiTuSf4O1ddp3y2kth66dSIO06VPCqgu8gLwG5epgHmy0Y1ugunpZINN2D7FCH7aaE+H+aQ4nltNIxpQV20grtQG546oDilfPCQLxeW1HUipq2wkQKBgQDyqo180/lJ4wSNFU/hNqLfs2629vU9MH9aSjG5nQpchkTgBxUhAE5RkKgQHLJHJTfPx7vkx2xkI3qddwsWzvt8lNs5NQNxh+LyXQEgy9FCfpopijy2epLpzd2WT+0Y9WK5oB7O32s2YW/6fm0ahu3EJnvBlp1M23FzuRfrV7gu5QKBgQCz98MyV0UAnP3x+Gq5/0siVGPInzYlfTfYcEI3qhlMfqPVkRqqHdGGsiQL70YJlTlZkLeh3r2UvoR956nV9lZgh37aWnaHw7FAYcA5z4FYEFdmpLK/8znaKn/fxypr9xkJtw5V1QgCeaSUCFbt0xp41LaAvwSDBfFqdOTzQMFHqwKBgEyZN4YypxsClPovwwI1K95vFkCc3baN63VFvEJ55r5kB7OrqKi9HvuyLMrBNCku/1oQEyhZJsbJSDgSTqbJeSrPFhANwuOAYEveva9rhsd1jRYVs6pqMJuqxwpeeloJgztS5saoUYBd62nnpGreMolbGG94KnkLP9mmkH1SOCpdAoGAbheD3ljKilx/cLVxvIRy1vZe8EyNGBPoxMuvhlPVFBloae5RLH3/PfHd4TsnUhdqNOM1op0axlJhxI+iMpR2NKjOrg6m8diBpwvlRrgsvM2KWe0ouAm3e0GCZkd1KQTI2UuVRmaCdtkpF7GeU/BPAlnFpy6zON+61k/Z+wDC++8CgYEA54xmJqIr19BpKkcHAxE2pzDrj6ssu2qObKLfsS27o4RevBnrhoY9kPwn8kUKpngoCTd7tM42y9fcpAdUDv+lENAcIF/kz4u+zkyRGR+SpirgAsCYzxZN3GfRNDHBaFEiTkyL6NFdPGV2GTPcd0b6JGf82Thb0JJCxB/J3hVnDIs="/>
-    <NotifyUrl value="http://218.17.158.45:15160/api/Asign/HandleASignCompleted"/>
-    <OpenApiUrl value="http://192.168.31.205:5015/mtp2-onlineopen"/>
+    <AppId value="765406597"/>
+    <PrivateKey value="MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCM9cXNowVdVPg7E3yRaQoRxxeCoVVred3xY6SA/SnhZR3uMqSiirjhoyw6BWyLAMoxTn/m5z2e8w9/Rha9aYz+rbtPG8ui7LCwclomI8OLOsZFa89gfppD3Xgb+cBMdFaDnUnnVy16MMw4yOsKcJ3S4nFNze5msA5oyNCb1edz8A60ohaxKgbHcBBZm2Vfap/csJqK04pGRFKPfWHlJ8Znjf2biUghLJk/OunsCwB4VBNCYkXXmOa0P13/njDCRHDC2pOzsbEYjTNuHFfZ1TbWBhFMk/PbDWD4UvIxJ4/kBPXO9Xo9s1OyjMV6UeNeAQbVZBYVQTeROAitla3GDD1HAgMBAAECggEAVk+zg7vbcA+0Q3AmKV948/PFeI5TIJEpjkImG3lo6IOi9RR7bK+mjzr7vLdPhDnClLhtZrSXLbnE9nizOd3koJk+hS0O3r8xXYlXm9zwQlOFzkI6Y+qBiSaWAgNGdUoTI1nvQ8FErnoswmR8TxMwAE35dNuwq54H5K951MIAjCM1A17CAsIbNyp/W8D7DvfUwbfYYrcLSpuTybp7poWIoLaps2mzcT4EMEAiGF/mD/MKOeYw/cRmmFu1Ceap+fZHLVNWHQ0A9GbhAdp/Oi4hCVRM/QgBzIxyRI86kjL/UtJcKwReSQ4NLKggrZHSEeWrb64BTFgCLvj63iJHVctriQKBgQDzSFIbivY/yfBwZlITF5+niRhZ06J6O+hLmN8/S+Jyij7wG1reJxyW6UBPj2RkheyVq6IIALC34V/9dFT4IZRmXzZCFZ6L3PwsIGzYxLuBMXlVsY/kYExCmbkfTj5uHdeQEZGhUs5ItfU3980KJ/lLVXCmz66XxzmMOs/rRtQTSwKBgQCUVCRp3GKaOv3dKmvv96ldbjmZv+p8rY1rqsIbN7prx4VtpqPq5IKJRZNK1tEebsH87dIxp7C5Z9FGq/AVDvKyxTSeX0zsgreiW2xxFoiVJJ72lMohRknUtm+ff1L+w9aN6j8p6HZE42KM5Jl00d/3ou0u1lu2jQtD3/Y6Rs7EdQKBgQDlQg7WE8Lw490oHtRTV5zFZYVECRMA+3lx3BLtdBZmd+7NmAmudc8US6SmFOu3axlDBiXAQt5FuiYaE8mKtyJAwpK//d2V0d71umy4bdSA7912qsh9n13eGT0Byls8q/SauGOzUfRBQu9eGa/oVTkxC8gH+oh+UWjiw/1xqyJpNwKBgChYYrcwrNlKpnab7VQOR1EUhDJf00YqZsccYUPJ+rkKQi67HubrVN5FwHSgzay7b6R+g6fh9t3XcUMJzXnM4RLjNRbG0UOboptUxsBT4r6+gUaM3hYC6l4jaWU22rpVRmy/hIK/qju+pbWxEFSIKaVP+be9sqCK6L+DkZP0YpVpAoGBAN/j1zSAbXpw0zPtzVT38V8k8G7GoEgJEmYsVy/eUrM+2MpvjCyZMAtcaLigYwVSANc91pSnx2RX2ptWNdqrkgmvAHUhvQ5siGPjr8EZ919CmayzU15L9+ESPFwq3He58fWm2IUGD8BpipSFrlkiPT8F0MLgXO0NVJ1ynKOj6x0S"/>
+    <NotifyUrl value="http://218.17.158.45:15160/api/Account/HandleASignCompleted"/>
+    <OpenApiUrl value="http://192.168.31.134:5015/mtp2-onlineopen"/>
   </Asign>
 </Configuration>

+ 23 - 0
config/readme.md

@@ -59,6 +59,13 @@ SignKey 腾讯电子签密回调通知密钥,用于解密,使用公司账号
 生产环境账号注册:https://web.asign.cn/platform
 演示地址:https://ai.acsign.cn/m/#/demo/index
 
+爱签配置说明:
+1、通过API对交易所企业用户(LEGAL)进行四要素实名和添加用户;
+2、在“印章管理”中新增交易所默认印章;
+3、在“应用管理”中“安全配置”添加IP白名单;
+4、在“应用管理”中配置公钥;
+5、在“应用管理”中“签章权限”查看“无感知签章权限”是否已开通,如未开通则让交易所与爱签协商开通。
+
 多元测试环境:
 <Asign>
   <Url value="https://prev.asign.cn"/>
@@ -69,6 +76,12 @@ SignKey 腾讯电子签密回调通知密钥,用于解密,使用公司账号
 </Asign>
 
 中融测试环境:
+爱签正式环境
+zrwyt2023@163.com
+密码 Zrwyt20231101
+爱签测试环境
+zrwyt202302@163.com
+密码 Zrwyt20231101
 <Asign>
   <Url value="https://prev.asign.cn"/>
   <AppId value="896210645"/>
@@ -77,6 +90,16 @@ SignKey 腾讯电子签密回调通知密钥,用于解密,使用公司账号
   <OpenApiUrl value="http://192.168.31.202:5015/mtp2-onlineopen"/>
 </Asign>
 
+贵茶2测试环境:
+爱签测试环境地址:https://preweb.asign.cn/platform/openlogin    登陆帐号 : 155065880@qq.com   密码:Lv123456
+<Asign>
+  <Url value="https://prev.asign.cn"/>
+  <AppId value="765406597"/>
+  <PrivateKey value="MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCM9cXNowVdVPg7E3yRaQoRxxeCoVVred3xY6SA/SnhZR3uMqSiirjhoyw6BWyLAMoxTn/m5z2e8w9/Rha9aYz+rbtPG8ui7LCwclomI8OLOsZFa89gfppD3Xgb+cBMdFaDnUnnVy16MMw4yOsKcJ3S4nFNze5msA5oyNCb1edz8A60ohaxKgbHcBBZm2Vfap/csJqK04pGRFKPfWHlJ8Znjf2biUghLJk/OunsCwB4VBNCYkXXmOa0P13/njDCRHDC2pOzsbEYjTNuHFfZ1TbWBhFMk/PbDWD4UvIxJ4/kBPXO9Xo9s1OyjMV6UeNeAQbVZBYVQTeROAitla3GDD1HAgMBAAECggEAVk+zg7vbcA+0Q3AmKV948/PFeI5TIJEpjkImG3lo6IOi9RR7bK+mjzr7vLdPhDnClLhtZrSXLbnE9nizOd3koJk+hS0O3r8xXYlXm9zwQlOFzkI6Y+qBiSaWAgNGdUoTI1nvQ8FErnoswmR8TxMwAE35dNuwq54H5K951MIAjCM1A17CAsIbNyp/W8D7DvfUwbfYYrcLSpuTybp7poWIoLaps2mzcT4EMEAiGF/mD/MKOeYw/cRmmFu1Ceap+fZHLVNWHQ0A9GbhAdp/Oi4hCVRM/QgBzIxyRI86kjL/UtJcKwReSQ4NLKggrZHSEeWrb64BTFgCLvj63iJHVctriQKBgQDzSFIbivY/yfBwZlITF5+niRhZ06J6O+hLmN8/S+Jyij7wG1reJxyW6UBPj2RkheyVq6IIALC34V/9dFT4IZRmXzZCFZ6L3PwsIGzYxLuBMXlVsY/kYExCmbkfTj5uHdeQEZGhUs5ItfU3980KJ/lLVXCmz66XxzmMOs/rRtQTSwKBgQCUVCRp3GKaOv3dKmvv96ldbjmZv+p8rY1rqsIbN7prx4VtpqPq5IKJRZNK1tEebsH87dIxp7C5Z9FGq/AVDvKyxTSeX0zsgreiW2xxFoiVJJ72lMohRknUtm+ff1L+w9aN6j8p6HZE42KM5Jl00d/3ou0u1lu2jQtD3/Y6Rs7EdQKBgQDlQg7WE8Lw490oHtRTV5zFZYVECRMA+3lx3BLtdBZmd+7NmAmudc8US6SmFOu3axlDBiXAQt5FuiYaE8mKtyJAwpK//d2V0d71umy4bdSA7912qsh9n13eGT0Byls8q/SauGOzUfRBQu9eGa/oVTkxC8gH+oh+UWjiw/1xqyJpNwKBgChYYrcwrNlKpnab7VQOR1EUhDJf00YqZsccYUPJ+rkKQi67HubrVN5FwHSgzay7b6R+g6fh9t3XcUMJzXnM4RLjNRbG0UOboptUxsBT4r6+gUaM3hYC6l4jaWU22rpVRmy/hIK/qju+pbWxEFSIKaVP+be9sqCK6L+DkZP0YpVpAoGBAN/j1zSAbXpw0zPtzVT38V8k8G7GoEgJEmYsVy/eUrM+2MpvjCyZMAtcaLigYwVSANc91pSnx2RX2ptWNdqrkgmvAHUhvQ5siGPjr8EZ919CmayzU15L9+ESPFwq3He58fWm2IUGD8BpipSFrlkiPT8F0MLgXO0NVJ1ynKOj6x0S"/>
+  <NotifyUrl value="http://218.17.158.45:15105/api/Account/HandleASignCompleted"/>
+  <OpenApiUrl value="http://192.168.31.134:5015/mtp2-onlineopen"/>
+</Asign>
+
 url: 'https://prev.asign.cn' # 测试环境 - https://prev.asign.cn  正式环境 - https://oapi.asign.cn
 appId: '290912417' # 测试-290912417 正式-944849860
 privateKey: 'MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAkMD+72J6iAF0ZNV+3t628lsRHfJ80nKZWK5/C7Pg+AZmOIzJlwHsKhRzCvxoxqYHQprhiFzW9l73v9vD9l1JYwIDAQABAkBVijccr01JYdKuY5t9iI8D2NzcnZc1pZMI3NUmzT18Uyg7b9CUvGHlLeg/gdT4QtVd7wIzHYCY4letEcEMh54BAiEAwzNWusj5XiLmty7PI0Hbakx4HtcND1+P0UHLEWqWOuECIQC91zQuL7nStgGzT3HvaeBB5Ouapa39fHRm2nCjHaxwwwIgRR2XdvmUOj23XWMomr5F14SN/7V7fVcD0D8wjNElsmECIDYavV5kb7tj7/wgqkInlKhzC8rZaUsTS0F9BBkY/eptAiAQJ8Saz8YlMIESdHMxANGSog01fECbcZqLFMuNf8SorA=='

+ 1 - 0
models/ori.go

@@ -1020,6 +1020,7 @@ type Esigntemplatefield struct {
 	FIELDTYPE        int32     `json:"fieldtype" xorm:"FIELDTYPE"`               // 字段类型 - 1:文本 2:日期
 	REMARK           string    `json:"remark" xorm:"REMARK"`                     // 字段备注
 	CREATETIME       time.Time `json:"createtime" xorm:"CREATETIME"`             // 创建时间
+	FIELDUSERTYPE    int32     `json:"fieldusertype" xorm:"FIELDUSERTYPE"`       // 用户类型
 }
 
 // TableName is ESIGNTEMPLATEFIELD

+ 4 - 4
routers/router.go

@@ -859,10 +859,10 @@ func InitRouter() *gin.Engine {
 		asignR.Use(token.Auth()).GET("QueryUsereSignRecords", asign.QueryUsereSignRecords)
 		asignR.Use(token.Auth()).POST("CreateContract", asign.CreateContract)
 
-		// asignR.Use(token.Auth()).POST("TestBankCard4", asign.TestBankCard4)
-		// asignR.Use(token.Auth()).POST("TestCaptcaResend", asign.TestCaptcaResend)
-		// asignR.Use(token.Auth()).POST("TestCaptchaVerify", asign.TestCaptchaVerify)
-		// asignR.Use(token.Auth()).POST("TestAddEnterpriseUser", asign.TestAddEnterpriseUser)
+		asignR.Use(token.Auth()).POST("TestBankCard4", asign.TestBankCard4)
+		asignR.Use(token.Auth()).POST("TestCaptcaResend", asign.TestCaptcaResend)
+		asignR.Use(token.Auth()).POST("TestCaptchaVerify", asign.TestCaptchaVerify)
+		asignR.Use(token.Auth()).POST("TestAddEnterpriseUser", asign.TestAddEnterpriseUser)
 	}
 
 	return r

+ 114 - 42
services/asign/servcies.go

@@ -366,19 +366,6 @@ func CreateContract(req CreateContractReq) (rsp CreateContractRsp, err error) {
 		return
 	}
 
-	// // 获取电子签模板字段配置信息
-	// fields := make([]models.Esigntemplatefield, 0)
-	// if err = db.GetEngine().Where("TEMPLATECONFIGID = ?", record.TEMPLATECONFIGID).Find(&fields); err != nil {
-	// 	logger.GetLogger().Error("获取电子签模板字段配置信息失败, err", err)
-	// 	err = errors.New("获取电子签模板字段配置信息失败")
-	// 	return
-	// }
-	// if len(fields) == 0 {
-	// 	err = errors.New("获取电子签模板字段配置信息异常")
-	// 	logger.GetLogger().Error("获取电子签模板字段配置信息异常, templateconfigid:", record.TEMPLATECONFIGID)
-	// 	return
-	// }
-
 	// 调用爱签接口 - 查询模板列表
 	apiReq := APITemplateListReq{Page: 1, Rows: 10}
 	apiRsp, err := APITemplateList(apiReq)
@@ -470,14 +457,26 @@ func CreateContract(req CreateContractReq) (rsp CreateContractRsp, err error) {
 	}
 
 	// 添加签署方 - 甲方 - 交易所
+	// appAddSignerReq1 := APIAddSignerReq{
+	// 	ContractNo: contractNo,
+	// 	Account:    "ZR_LEGAL",
+	// 	SignType:   2, // 无感知签约(需要开通权限)
+	// 	SignStrategyList: []APISignStrategy{
+	// 		{AttachNo: 1, LocationMode: 4, SignKey: "PARTYA_SIGNATURE", SignType: 1}, // 甲方签章
+	// 		{AttachNo: 1, LocationMode: 4, SignKey: "PARTYA_DATE", SignType: 2},      // 甲方签署时间
+	// 	},
+	// }
 	appAddSignerReq1 := APIAddSignerReq{
 		ContractNo: contractNo,
-		Account:    "ZR_LEGAL",
+		Account:    "EX_LEGAL",
 		SignType:   2, // 无感知签约(需要开通权限)
-		SignStrategyList: []APISignStrategy{
-			{AttachNo: 1, LocationMode: 4, SignKey: "PARTYA_SIGNATURE", SignType: 1}, // 甲方签章
-			{AttachNo: 1, LocationMode: 4, SignKey: "PARTYA_DATE", SignType: 2},      // 甲方签署时间
-		},
+	}
+	signStrategyListPartyA, err := buildStrategyByPartyA(int(record.TEMPLATECONFIGID))
+	if err != nil {
+		return
+	}
+	if len(signStrategyListPartyA) > 0 {
+		appAddSignerReq1.SignStrategyList = signStrategyListPartyA
 	}
 
 	// 获取临时存储的用户认证信息
@@ -499,31 +498,40 @@ func CreateContract(req CreateContractReq) (rsp CreateContractRsp, err error) {
 		SignType:     3,
 		ValidateType: 3,
 	}
-	// 签章策略
-	signStrategyList := make([]APISignStrategy, 0)
-	// 接收方模板填充策略
-	receiverFillStrategyList := make([]APIReceiverFillStrategy, 0)
-	if userInfo.Userinfotype == 1 { // 个人
-		// 乙方签章
-		signStrategyList = append(signStrategyList, APISignStrategy{AttachNo: 1, LocationMode: 4, SignKey: "P_PARTYB_SIGNATURE", SignType: 1})
-		// 乙方签署时间
-		signStrategyList = append(signStrategyList, APISignStrategy{AttachNo: 1, LocationMode: 4, SignKey: "P_PARTYB_DATE", SignType: 2})
-
-		// 身份证号
-		receiverFillStrategyList = append(receiverFillStrategyList, APIReceiverFillStrategy{AttachNo: 1, Key: "P_PARTYB_ID", Value: cacheMap["idCardNo"].(string)})
-		// 联系方式
-		receiverFillStrategyList = append(receiverFillStrategyList, APIReceiverFillStrategy{AttachNo: 1, Key: "P_PARTYB_MOBILE", Value: cacheMap["mobile"].(string)})
-	} else { // 企业
-		// 乙方签章
-		signStrategyList = append(signStrategyList, APISignStrategy{AttachNo: 1, LocationMode: 4, SignKey: "E_PARTYB_SIGNATURE", SignType: 1})
-		// 乙方签署时间
-		signStrategyList = append(signStrategyList, APISignStrategy{AttachNo: 1, LocationMode: 4, SignKey: "E_PARTYB_DATE", SignType: 2})
-
-		// 法定代表人名称
-		receiverFillStrategyList = append(receiverFillStrategyList, APIReceiverFillStrategy{AttachNo: 1, Key: "E_PARTYB_LEGAL", Value: cacheMap["realName"].(string)})
+	// // 签章策略
+	// signStrategyList := make([]APISignStrategy, 0)
+	// // 接收方模板填充策略
+	// receiverFillStrategyList := make([]APIReceiverFillStrategy, 0)
+	// if userInfo.Userinfotype == 1 { // 个人
+	// 	// 乙方签章
+	// 	signStrategyList = append(signStrategyList, APISignStrategy{AttachNo: 1, LocationMode: 4, SignKey: "P_PARTYB_SIGNATURE", SignType: 1})
+	// 	// 乙方签署时间
+	// 	signStrategyList = append(signStrategyList, APISignStrategy{AttachNo: 1, LocationMode: 4, SignKey: "P_PARTYB_DATE", SignType: 2})
+	// 	// 身份证号
+	// 	receiverFillStrategyList = append(receiverFillStrategyList, APIReceiverFillStrategy{AttachNo: 1, Key: "P_PARTYB_ID", Value: cacheMap["idCardNo"].(string)})
+	// 	// 联系方式
+	// 	receiverFillStrategyList = append(receiverFillStrategyList, APIReceiverFillStrategy{AttachNo: 1, Key: "P_PARTYB_MOBILE", Value: cacheMap["mobile"].(string)})
+	// } else { // 企业
+	// 	// 乙方签章
+	// 	signStrategyList = append(signStrategyList, APISignStrategy{AttachNo: 1, LocationMode: 4, SignKey: "E_PARTYB_SIGNATURE", SignType: 1})
+	// 	// 乙方签署时间
+	// 	signStrategyList = append(signStrategyList, APISignStrategy{AttachNo: 1, LocationMode: 4, SignKey: "E_PARTYB_DATE", SignType: 2})
+
+	// 	// 法定代表人名称
+	// 	receiverFillStrategyList = append(receiverFillStrategyList, APIReceiverFillStrategy{AttachNo: 1, Key: "E_PARTYB_LEGAL", Value: cacheMap["realName"].(string)})
+	// }
+	// appAddSignerReq2.SignStrategyList = signStrategyList
+	// appAddSignerReq2.ReceiverFillStrategyList = receiverFillStrategyList
+	signStrategyList, receiverFillStrategyList, err := buildStrategyByPartyB(int(record.TEMPLATECONFIGID), int(userInfo.Userinfotype), cacheMap)
+	if err != nil {
+		return
+	}
+	if len(signStrategyList) > 0 {
+		appAddSignerReq2.SignStrategyList = signStrategyList
+	}
+	if len(receiverFillStrategyList) > 0 {
+		appAddSignerReq2.ReceiverFillStrategyList = receiverFillStrategyList
 	}
-	appAddSignerReq2.SignStrategyList = signStrategyList
-	appAddSignerReq2.ReceiverFillStrategyList = receiverFillStrategyList
 	apiAddSignerRsp, err := APIAddSigner([]APIAddSignerReq{appAddSignerReq1, appAddSignerReq2})
 	if err != nil {
 		return
@@ -557,6 +565,70 @@ func CreateContract(req CreateContractReq) (rsp CreateContractRsp, err error) {
 	return
 }
 
+// 构建甲方签章策略
+func buildStrategyByPartyA(templateConfigId int) (signStrategyList []APISignStrategy, err error) {
+	signStrategyList = make([]APISignStrategy, 0)
+
+	// 获取电子签模板字段配置
+	fields := make([]models.Esigntemplatefield, 0)
+	if err = db.GetEngine().Where("TEMPLATECONFIGID = ?", templateConfigId).Find(&fields); err != nil {
+		logger.GetLogger().Error("获取电子签模板字段配置失败, err", err)
+		err = errors.New("获取电子签模板字段配置失败")
+		return
+	}
+	if len(fields) == 0 {
+		err = errors.New("获取电子签模板字段配置信息异常")
+		logger.GetLogger().Error("获取电子签模板字段配置异常, templateconfigid:", templateConfigId)
+		return
+	}
+
+	for _, item := range fields {
+		switch item.FIELDKEY {
+		case "PARTYA_SIGNATURE": // 甲方签章(企业印章)
+			signStrategyList = append(signStrategyList, APISignStrategy{AttachNo: 1, LocationMode: 4, SignKey: "PARTYA_SIGNATURE", SignType: 1})
+		case "PARTYA_DATE": // 甲方签署时间
+			signStrategyList = append(signStrategyList, APISignStrategy{AttachNo: 1, LocationMode: 4, SignKey: "PARTYA_DATE", SignType: 2})
+		}
+	}
+
+	return
+}
+
+// cacheMap {"realName":"邓志明","idCardNo":"430426198507087670","bankCard":"6221885840097492396","mobile":"18033442829","idCardPhoto":"./uploadFile/20231227/202312271427518530.jpg","idCardPhotoBackURL":"./uploadFile/20231227/202312271427544764.jpg","bankId":"403100000004"}
+// 构建乙方签章策略和模板填充策略
+func buildStrategyByPartyB(templateConfigId int, fieldUserType int, cacheMap map[string]interface{}) (signStrategyList []APISignStrategy, receiverFillStrategyList []APIReceiverFillStrategy, err error) {
+	signStrategyList = make([]APISignStrategy, 0)
+	receiverFillStrategyList = make([]APIReceiverFillStrategy, 0)
+
+	// 获取电子签模板字段配置
+	fields := make([]models.Esigntemplatefield, 0)
+	if err = db.GetEngine().Where("TEMPLATECONFIGID = ? AND FIELDUSERTYPE = ?", templateConfigId, fieldUserType).Find(&fields); err != nil {
+		logger.GetLogger().Error("获取电子签模板字段配置失败, err", err)
+		err = errors.New("获取电子签模板字段配置失败")
+		return
+	}
+	if len(fields) == 0 {
+		err = errors.New("获取电子签模板字段配置信息异常")
+		logger.GetLogger().Error("获取电子签模板字段配置异常, templateconfigid:", templateConfigId)
+		return
+	}
+
+	for _, item := range fields {
+		switch item.FIELDKEY {
+		case "P_PARTYB_NAME": // 乙方名称
+			receiverFillStrategyList = append(receiverFillStrategyList, APIReceiverFillStrategy{AttachNo: 1, Key: "P_PARTYB_NAME", Value: cacheMap["realName"].(string)})
+		case "P_PARTYB_ID": // 乙方证件号码
+			receiverFillStrategyList = append(receiverFillStrategyList, APIReceiverFillStrategy{AttachNo: 1, Key: "P_PARTYB_ID", Value: cacheMap["idCardNo"].(string)})
+		case "P_PARTYB_SIGNATURE": // 乙方签章(个人)
+			signStrategyList = append(signStrategyList, APISignStrategy{AttachNo: 1, LocationMode: 4, SignKey: "P_PARTYB_SIGNATURE", SignType: 1})
+		case "P_PARTYB_DATE": // 乙方签署时间
+			signStrategyList = append(signStrategyList, APISignStrategy{AttachNo: 1, LocationMode: 4, SignKey: "P_PARTYB_DATE", SignType: 2})
+		}
+	}
+
+	return
+}
+
 func ASignCompleted(contractNo, status string) (err error) {
 	/*
 		// 合同签署完成后回调通知示例

BIN
services/asign/templates/贵茶2/交易商须知-个人.docx


BIN
services/asign/templates/贵茶2/交易商须知-企业.docx


BIN
services/asign/templates/贵茶2/入市协议-个人.docx


BIN
services/asign/templates/贵茶2/入市协议-企业.docx


BIN
services/asign/templates/贵茶2/风险告知书-个人.docx


BIN
services/asign/templates/贵茶2/风险告知书-企业.docx