Compare commits
10 Commits
8ea08e74a0
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| ff976e19fc | |||
| 9e99f91ee6 | |||
| 3b98574a5c | |||
| 281540928b | |||
| 13068fe49a | |||
| 800d21bace | |||
| 8c9bb0a368 | |||
| 2a3c5cbb89 | |||
| b18f20dbe0 | |||
| 408ce1a22c |
@@ -3,102 +3,102 @@ Host: 0.0.0.0
|
|||||||
Port: 8888
|
Port: 8888
|
||||||
DataSource: "tyc:5vg67b3UNHu8@tcp(tyc_mysql:3306)/tyc?charset=utf8mb4&parseTime=True&loc=Local"
|
DataSource: "tyc:5vg67b3UNHu8@tcp(tyc_mysql:3306)/tyc?charset=utf8mb4&parseTime=True&loc=Local"
|
||||||
CacheRedis:
|
CacheRedis:
|
||||||
- Host: "tyc_redis:6379"
|
- Host: "tyc_redis:6379"
|
||||||
Pass: "3m3WsgyCKWqz" # Redis 密码,如果未设置则留空
|
Pass: "3m3WsgyCKWqz" # Redis 密码,如果未设置则留空
|
||||||
Type: "node" # 单节点模式
|
Type: "node" # 单节点模式
|
||||||
|
|
||||||
JwtAuth:
|
JwtAuth:
|
||||||
AccessSecret: "WUvoIwL-FK0qnlxhvxR9tV6SjfOpeJMpKmY2QvT99lA"
|
AccessSecret: "WUvoIwL-FK0qnlxhvxR9tV6SjfOpeJMpKmY2QvT99lA"
|
||||||
AccessExpire: 2592000
|
AccessExpire: 2592000
|
||||||
RefreshAfter: 1296000
|
RefreshAfter: 1296000
|
||||||
|
|
||||||
VerifyCode:
|
VerifyCode:
|
||||||
AccessKeyID: "LTAI5tKGB3TVJbMHSoZN3yr9"
|
AccessKeyID: "LTAI5tKGB3TVJbMHSoZN3yr9"
|
||||||
AccessKeySecret: "OCQ30GWp4yENMjmfOAaagksE18bp65"
|
AccessKeySecret: "OCQ30GWp4yENMjmfOAaagksE18bp65"
|
||||||
EndpointURL: "dysmsapi.aliyuncs.com"
|
EndpointURL: "dysmsapi.aliyuncs.com"
|
||||||
SignName: "天远查"
|
SignName: "天远查"
|
||||||
TemplateCode: "SMS_302641455"
|
TemplateCode: "SMS_302641455"
|
||||||
ValidTime: 300
|
ValidTime: 300
|
||||||
Encrypt:
|
Encrypt:
|
||||||
SecretKey: "ff83609b2b24fc73196aac3d3dfb874f"
|
SecretKey: "ff83609b2b24fc73196aac3d3dfb874f"
|
||||||
WestConfig:
|
WestConfig:
|
||||||
Url: "https://apimaster.westdex.com.cn/api/invoke"
|
Url: "https://apimaster.westdex.com.cn/api/invoke"
|
||||||
Key: "121a1e41fc1690dd6b90afbcacd80cf4"
|
Key: "121a1e41fc1690dd6b90afbcacd80cf4"
|
||||||
SecretId: "449159"
|
SecretId: "449159"
|
||||||
SecretSecondId: "296804"
|
SecretSecondId: "296804"
|
||||||
YushanConfig:
|
YushanConfig:
|
||||||
ApiKey: "4c566c4a4b543164535455685655316c"
|
ApiKey: "4c566c4a4b543164535455685655316c"
|
||||||
AcctID: "YSSJ843926726"
|
AcctID: "YSSJ843926726"
|
||||||
Url: "https://api.yushanshuju.com/credit-gw/service"
|
Url: "https://api.yushanshuju.com/credit-gw/service"
|
||||||
TianjuConfig:
|
TianjuConfig:
|
||||||
ApiKey: "479bcac2a77b56e976d044ff2bd996f4"
|
ApiKey: "479bcac2a77b56e976d044ff2bd996f4"
|
||||||
BaseURL: "https://apis.tianapi.com"
|
BaseURL: "https://apis.tianapi.com"
|
||||||
Alipay:
|
Alipay:
|
||||||
Enabled: true
|
Enabled: true
|
||||||
AppID: "2021004161631930"
|
AppID: "2021004161631930"
|
||||||
PrivateKey: "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCOh6r6Ce7ZgMf5mWqVsU8sYNdU0HRlZbgYUQ2wF65PzWU3vL52+LG89ATbtHeKUy6esuuaAyYhuDrqU9f6mUl5QJGsWCF6JqqyberVIMJfdsdOTbgooSSUBxIsMYfoRZPdsZ9dHomDxfi2oGWJdAnaruTxKw7W8EPJwqc9/vopzdxLsT8t/eMzr4jvHIBVHtkMbmgNJ8b05tqJ1FViK3Yt78YBkt3PLdyjLzqRuKlVpmNceBEhzNbg4menGBzpJHTWO4uGk0KzUgY7wCSfyjrA9IPyWnDqlhws+9LwFKgkNpqxmwGgMihLysDRFOD5D1VLfry/yYT22UrwAzXFQYUvAgMBAAECggEAfKGfXXMwG5sjwltnuyvHepvXzz9UeJHgz8qYeIHMl9WYC4wM1IWVDhAm62M8IIWqP3Ve1VapklTBl8PnGSfO+qr+dsC9zU1geBPrg6BYtxdrIkqNnWGDVbl1J5XMLMwih3nZS5j3UHXdjPxmrTH9p+7FHSm0mTiRXizLB0gdwk0E+H+btJKLpCvqqIoEucowzbjY/ch86ASojpQGZiWapbi+03Xke6/wlGCbNzgGmQQo/C6XAbxl2ZKJxS/yp0JxGfO6gPJYx3xkuf+Pwr0U3imN8yDB/xo0LVamoxQggWua+mQXt72J4zD2imIU7TB4JFJV3kUd+45KLOccOsOuCQKBgQDLfsBxU/LiNn+zW6yus+dCu7JzQSN2K57XF+PSXhQTSjIu4K4y8v4WZHdSwkAGQSU3MLq66QD7ELYHGDBakFFj3sX7z2CHshFlu2I/DYP+0LPVRlIblsSDFn6rYBLOPXc3VkuEFcA0PpO3vW6yF7h2d9OpGaiYmpTvXa/6oPLQfQKBgQCzTgxTTrzZjLXCv85fzX3aYu9ceP4N0jaOwveEMvKNClSomUIDfHLn4sUTmAvHBdJz4Xqy/7+v/YpI0ifC0KouX0t6h3+YA6n4hCvpBMlUVACtHUfx+mzjj+KLxEvmm6ZJCmV5DC3yYvaDTANafM3PzyQRs/jw5WPWywezFfooGwKBgQC4Fq9TFkWYHQNDJ0C9PqSL+y7BEwFYireED+maSl9Q4AMr4zfTgX0YlsRXSsEOp2paVivmoJixh3mUS26azwnCFir21LCXsSAJ7w0+yyRIpVa6LoZizO5zRCtNL3lzt6kcl2VzVRXubVnGk4kLdWf7TAVfaYXan6TyMcfcLDPdJQKBgCwtV6YS6T6kh4fjICLEi3SKGbVr7hRTrbOA3+EHeHE9kVw03mnjeKAfZDUOqiAwFAkPDd8aWg0vZ6nHdZpvNO7V9c/LoKlAhdlAH117G2uWgtAkPbyl2bw7kDKle5nm0ZJ/aD7pvExTC6+Pw+fAhijkPVvLPtODgRTD0zLRgF/vAoGBAMdxes5p7u+Eoa41c3Y39dGvY30QiiGPB4oWLTdmyh4VQfC7DU7ihUCRsk5w4i/BuTNNlJauWM2MMX7YeRBt6ncq59vBAU2OeLd6oRsOkE2ZkH7tNDnGxZuOZkiSFnYUQLMBPnVe4JkS7ZvRWSyuIi9SE8TDpTLbH1kfEmIMq4dR"
|
PrivateKey: "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCOh6r6Ce7ZgMf5mWqVsU8sYNdU0HRlZbgYUQ2wF65PzWU3vL52+LG89ATbtHeKUy6esuuaAyYhuDrqU9f6mUl5QJGsWCF6JqqyberVIMJfdsdOTbgooSSUBxIsMYfoRZPdsZ9dHomDxfi2oGWJdAnaruTxKw7W8EPJwqc9/vopzdxLsT8t/eMzr4jvHIBVHtkMbmgNJ8b05tqJ1FViK3Yt78YBkt3PLdyjLzqRuKlVpmNceBEhzNbg4menGBzpJHTWO4uGk0KzUgY7wCSfyjrA9IPyWnDqlhws+9LwFKgkNpqxmwGgMihLysDRFOD5D1VLfry/yYT22UrwAzXFQYUvAgMBAAECggEAfKGfXXMwG5sjwltnuyvHepvXzz9UeJHgz8qYeIHMl9WYC4wM1IWVDhAm62M8IIWqP3Ve1VapklTBl8PnGSfO+qr+dsC9zU1geBPrg6BYtxdrIkqNnWGDVbl1J5XMLMwih3nZS5j3UHXdjPxmrTH9p+7FHSm0mTiRXizLB0gdwk0E+H+btJKLpCvqqIoEucowzbjY/ch86ASojpQGZiWapbi+03Xke6/wlGCbNzgGmQQo/C6XAbxl2ZKJxS/yp0JxGfO6gPJYx3xkuf+Pwr0U3imN8yDB/xo0LVamoxQggWua+mQXt72J4zD2imIU7TB4JFJV3kUd+45KLOccOsOuCQKBgQDLfsBxU/LiNn+zW6yus+dCu7JzQSN2K57XF+PSXhQTSjIu4K4y8v4WZHdSwkAGQSU3MLq66QD7ELYHGDBakFFj3sX7z2CHshFlu2I/DYP+0LPVRlIblsSDFn6rYBLOPXc3VkuEFcA0PpO3vW6yF7h2d9OpGaiYmpTvXa/6oPLQfQKBgQCzTgxTTrzZjLXCv85fzX3aYu9ceP4N0jaOwveEMvKNClSomUIDfHLn4sUTmAvHBdJz4Xqy/7+v/YpI0ifC0KouX0t6h3+YA6n4hCvpBMlUVACtHUfx+mzjj+KLxEvmm6ZJCmV5DC3yYvaDTANafM3PzyQRs/jw5WPWywezFfooGwKBgQC4Fq9TFkWYHQNDJ0C9PqSL+y7BEwFYireED+maSl9Q4AMr4zfTgX0YlsRXSsEOp2paVivmoJixh3mUS26azwnCFir21LCXsSAJ7w0+yyRIpVa6LoZizO5zRCtNL3lzt6kcl2VzVRXubVnGk4kLdWf7TAVfaYXan6TyMcfcLDPdJQKBgCwtV6YS6T6kh4fjICLEi3SKGbVr7hRTrbOA3+EHeHE9kVw03mnjeKAfZDUOqiAwFAkPDd8aWg0vZ6nHdZpvNO7V9c/LoKlAhdlAH117G2uWgtAkPbyl2bw7kDKle5nm0ZJ/aD7pvExTC6+Pw+fAhijkPVvLPtODgRTD0zLRgF/vAoGBAMdxes5p7u+Eoa41c3Y39dGvY30QiiGPB4oWLTdmyh4VQfC7DU7ihUCRsk5w4i/BuTNNlJauWM2MMX7YeRBt6ncq59vBAU2OeLd6oRsOkE2ZkH7tNDnGxZuOZkiSFnYUQLMBPnVe4JkS7ZvRWSyuIi9SE8TDpTLbH1kfEmIMq4dR"
|
||||||
AlipayPublicKey: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAomw6g4rBmCr/QoX3NI3DVLyDpkaUytZ2uFhdfQaegIDAuUfZfgpTCASlAtO82t8ISAbSOSyp9CUpwdGV4EYOiCBbLxMYB6taaHPiIjJ1zNT1EakJzWgU53hz1AVeABB9kdAvMqSvjH6KLoVupmqm4Li8ZwDW9M2ANAmyDfKgiF0Lt4aUUnaZktoCrTWTkpmtfRZCHNACj851IllvN2wyC4OL7dJq5UzOFxmn07Dy/2z4UAhaaSAyRVawpOui5AIYJTXZERLYL3KMyRnMuZoFq3xltzVTzRPM06nRa9RfeVNVwWVtGBIe/r8tcg5wyhI57KUszGNOmUIm/se6G2lnAQIDAQAB"
|
AlipayPublicKey: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAomw6g4rBmCr/QoX3NI3DVLyDpkaUytZ2uFhdfQaegIDAuUfZfgpTCASlAtO82t8ISAbSOSyp9CUpwdGV4EYOiCBbLxMYB6taaHPiIjJ1zNT1EakJzWgU53hz1AVeABB9kdAvMqSvjH6KLoVupmqm4Li8ZwDW9M2ANAmyDfKgiF0Lt4aUUnaZktoCrTWTkpmtfRZCHNACj851IllvN2wyC4OL7dJq5UzOFxmn07Dy/2z4UAhaaSAyRVawpOui5AIYJTXZERLYL3KMyRnMuZoFq3xltzVTzRPM06nRa9RfeVNVwWVtGBIe/r8tcg5wyhI57KUszGNOmUIm/se6G2lnAQIDAQAB"
|
||||||
IsProduction: true
|
IsProduction: true
|
||||||
NotifyUrl: "https://www.tianyuancha.cn/api/v1/pay/alipay/callback"
|
NotifyUrl: "https://www.tianyuancha.cn/api/v1/pay/alipay/callback"
|
||||||
ReturnURL: "https://www.tianyuancha.cn/report"
|
ReturnURL: "https://www.tianyuancha.cn/report"
|
||||||
Wxpay:
|
Wxpay:
|
||||||
Enabled: false
|
Enabled: false
|
||||||
AppID: "wxba8424db4771cc18"
|
AppID: "wxba8424db4771cc18"
|
||||||
AppSecret: "89646203d7f76eb7aef0d926b9efffaa"
|
AppSecret: "89646203d7f76eb7aef0d926b9efffaa"
|
||||||
MchID: "1682635136"
|
MchID: "1682635136"
|
||||||
MchCertificateSerialNumber: "5369B8AEEBDCF7AF274510252E6A8C0659C30F61"
|
MchCertificateSerialNumber: "5369B8AEEBDCF7AF274510252E6A8C0659C30F61"
|
||||||
MchApiv3Key: "e3ea4cf0765f1e71b01bb387dfcdbc9f"
|
MchApiv3Key: "e3ea4cf0765f1e71b01bb387dfcdbc9f"
|
||||||
MchPrivateKeyPath: "etc/merchant/apiclient_key.pem"
|
MchPrivateKeyPath: "etc/merchant/apiclient_key.pem"
|
||||||
NotifyUrl: "https://www.tianyuancha.cn/api/v1/pay/wechat/callback"
|
NotifyUrl: "https://www.tianyuancha.cn/api/v1/pay/wechat/callback"
|
||||||
RefundNotifyUrl: "https://www.tianyuancha.cn/api/v1/wechat/refund_callback"
|
RefundNotifyUrl: "https://www.tianyuancha.cn/api/v1/wechat/refund_callback"
|
||||||
Applepay:
|
Applepay:
|
||||||
Enabled: false
|
Enabled: false
|
||||||
ProductionVerifyURL: "https://api.storekit.itunes.apple.com/inApps/v1/transactions/receipt"
|
ProductionVerifyURL: "https://api.storekit.itunes.apple.com/inApps/v1/transactions/receipt"
|
||||||
SandboxVerifyURL: "https://api.storekit-sandbox.itunes.apple.com/inApps/v1/transactions/receipt"
|
SandboxVerifyURL: "https://api.storekit-sandbox.itunes.apple.com/inApps/v1/transactions/receipt"
|
||||||
Sandbox: false
|
Sandbox: false
|
||||||
BundleID: "com.allinone.check"
|
BundleID: "com.allinone.check"
|
||||||
IssuerID: "bf828d85-5269-4914-9660-c066e09cd6ef"
|
IssuerID: "bf828d85-5269-4914-9660-c066e09cd6ef"
|
||||||
KeyID: "LAY65829DQ"
|
KeyID: "LAY65829DQ"
|
||||||
LoadPrivateKeyPath: "etc/merchant/AuthKey_LAY65829DQ.p8"
|
LoadPrivateKeyPath: "etc/merchant/AuthKey_LAY65829DQ.p8"
|
||||||
Ali:
|
Ali:
|
||||||
Code: "d55b58829efb41c8aa8e86769cba4844"
|
Code: "d55b58829efb41c8aa8e86769cba4844"
|
||||||
AdminConfig:
|
AdminConfig:
|
||||||
AccessSecret: "jK8nP3qR7tV2xZ5aB9cD1eF6gH4iJ0kL8mN5oP6qR7sT"
|
AccessSecret: "jK8nP3qR7tV2xZ5aB9cD1eF6gH4iJ0kL8mN5oP6qR7sT"
|
||||||
AccessExpire: 604800
|
AccessExpire: 604800
|
||||||
RefreshAfter: 302400
|
RefreshAfter: 302400
|
||||||
AdminPromotion:
|
AdminPromotion:
|
||||||
URLDomain: "https://tianyuancha.cn/p"
|
URLDomain: "https://tianyuancha.cn/p"
|
||||||
CleanTask:
|
CleanTask:
|
||||||
Enabled: true
|
Enabled: true
|
||||||
Time: "0 3 * * *"
|
Time: "0 3 * * *"
|
||||||
Days: 15
|
Days: 15
|
||||||
Tianyuanapi:
|
Tianyuanapi:
|
||||||
AccessID: "2974d99ddf0b91a7"
|
AccessID: "7f8a9b2c4d5e6f1a"
|
||||||
Key: "c701a573200f64d4ab38b0aa03ae56d2"
|
Key: "9e4f8a1b3c6d7e2f5a8b9c0d1e4f7a2b"
|
||||||
BaseURL: "https://api.tianyuanapi.com"
|
BaseURL: "https://api.tianyuanapi.com"
|
||||||
Timeout: 60
|
Timeout: 60
|
||||||
VerifyConfig:
|
VerifyConfig:
|
||||||
TwoFactor: true
|
TwoFactor: true
|
||||||
Security:
|
Security:
|
||||||
RateLimit:
|
RateLimit:
|
||||||
Enabled: true
|
Enabled: true
|
||||||
WindowSize: 30
|
WindowSize: 30
|
||||||
MaxRequests: 50
|
MaxRequests: 50
|
||||||
TriggerThreshold: 3 # 触发5次频率限制后加入黑名单
|
TriggerThreshold: 3 # 触发5次频率限制后加入黑名单
|
||||||
TriggerWindow: 24 # 24小时内统计触发次数
|
TriggerWindow: 24 # 24小时内统计触发次数
|
||||||
IPBlacklist:
|
IPBlacklist:
|
||||||
Enabled: true
|
Enabled: true
|
||||||
UserBlacklist:
|
UserBlacklist:
|
||||||
Enabled: true
|
Enabled: true
|
||||||
AnomalyDetection:
|
AnomalyDetection:
|
||||||
Enabled: true
|
Enabled: true
|
||||||
BurstAttack:
|
BurstAttack:
|
||||||
Enabled: true # 启用短时并发攻击检测
|
Enabled: true # 启用短时并发攻击检测
|
||||||
TimeWindow: 1 # 1秒内检测
|
TimeWindow: 1 # 1秒内检测
|
||||||
MaxConcurrent: 50 # 最大20个并发请求
|
MaxConcurrent: 50 # 最大20个并发请求
|
||||||
Logging:
|
Logging:
|
||||||
UserOperationLogDir: "./logs/user_operations"
|
UserOperationLogDir: "./logs/user_operations"
|
||||||
MaxFileSize: 104857600 # 100MB
|
MaxFileSize: 104857600 # 100MB
|
||||||
LogLevel: "info"
|
LogLevel: "info"
|
||||||
EnableConsole: true
|
EnableConsole: true
|
||||||
EnableFile: true
|
EnableFile: true
|
||||||
|
|||||||
@@ -52,9 +52,16 @@ func (l *QueryDetailByOrderIdLogic) QueryDetailByOrderId(req *types.QueryDetailB
|
|||||||
}
|
}
|
||||||
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "报告查询, 查找报告错误: %+v", err)
|
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "报告查询, 查找报告错误: %+v", err)
|
||||||
}
|
}
|
||||||
|
user, err := l.svcCtx.UserModel.FindOne(l.ctx, userId)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "报告查询, 查找用户错误: %+v", err)
|
||||||
|
}
|
||||||
// 安全验证:确保订单属于当前用户
|
// 安全验证:确保订单属于当前用户
|
||||||
if order.UserId != userId {
|
// 如果用户是内部用户(Inside==1),无需校验订单归属
|
||||||
return nil, errors.Wrapf(xerr.NewErrCode(xerr.LOGIC_QUERY_NOT_FOUND), "无权查看此订单报告")
|
if user.Inside != 1 {
|
||||||
|
if order.UserId != userId {
|
||||||
|
return nil, errors.Wrapf(xerr.NewErrCode(xerr.LOGIC_QUERY_NOT_FOUND), "无权查看此订单报告")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 创建渐进式延迟策略实例
|
// 创建渐进式延迟策略实例
|
||||||
progressiveDelayOrder, err := delay.New(200*time.Millisecond, 3*time.Second, 10*time.Second, 1.5)
|
progressiveDelayOrder, err := delay.New(200*time.Millisecond, 3*time.Second, 10*time.Second, 1.5)
|
||||||
|
|||||||
@@ -268,6 +268,7 @@ var productProcessors = map[string]func(*QueryServiceLogic, *types.QueryServiceR
|
|||||||
"toc_DebtRepayStress": (*QueryServiceLogic).ProcessTocDebtRepayStressLogic, // 偿贷压力
|
"toc_DebtRepayStress": (*QueryServiceLogic).ProcessTocDebtRepayStressLogic, // 偿贷压力
|
||||||
"toc_EducationInfo": (*QueryServiceLogic).ProcessTocEducationInfoLogic, // 学历信息查询
|
"toc_EducationInfo": (*QueryServiceLogic).ProcessTocEducationInfoLogic, // 学历信息查询
|
||||||
"toc_PersonEnterprisePro": (*QueryServiceLogic).ProcessTocPersonEnterpriseProLogic, // 企业法人
|
"toc_PersonEnterprisePro": (*QueryServiceLogic).ProcessTocPersonEnterpriseProLogic, // 企业法人
|
||||||
|
"toc_EducationInfoName": (*QueryServiceLogic).ProcessTocEducationInfoNameLogic, // 学历信息查询(学校名称版)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *QueryServiceLogic) PreprocessLogic(req *types.QueryServiceReq, product string) (*types.QueryServiceResp, error) {
|
func (l *QueryServiceLogic) PreprocessLogic(req *types.QueryServiceReq, product string) (*types.QueryServiceResp, error) {
|
||||||
@@ -2094,6 +2095,46 @@ func (l *QueryServiceLogic) ProcessTocEducationInfoLogic(req *types.QueryService
|
|||||||
return &types.QueryServiceResp{Id: cacheNo}, nil
|
return &types.QueryServiceResp{Id: cacheNo}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ProcessTocEducationInfoNameLogic 学历信息查询
|
||||||
|
func (l *QueryServiceLogic) ProcessTocEducationInfoNameLogic(req *types.QueryServiceReq) (*types.QueryServiceResp, error) {
|
||||||
|
userID, getUidErr := ctxdata.GetUidFromCtx(l.ctx)
|
||||||
|
if getUidErr != nil {
|
||||||
|
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "查询服务, 获取用户信息失败, %+v", getUidErr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// AES解密
|
||||||
|
decryptData, DecryptDataErr := l.DecryptData(req.Data)
|
||||||
|
if DecryptDataErr != nil {
|
||||||
|
return nil, DecryptDataErr
|
||||||
|
}
|
||||||
|
|
||||||
|
// 校验参数
|
||||||
|
var data types.TocEducationInfo
|
||||||
|
if unmarshalErr := json.Unmarshal(decryptData, &data); unmarshalErr != nil {
|
||||||
|
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "查询服务, 解密后的数据格式不正确: %+v", unmarshalErr)
|
||||||
|
}
|
||||||
|
|
||||||
|
if validatorErr := validator.Validate(data); validatorErr != nil {
|
||||||
|
return nil, errors.Wrapf(xerr.NewErrCodeMsg(xerr.PARAM_VERIFICATION_ERROR, validatorErr.Error()), "查询服务, 参数不正确: %+v", validatorErr)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 验证二要素
|
||||||
|
if verifyErr := l.VerifyTwoFactors(data.Name, data.IDCard); verifyErr != nil {
|
||||||
|
return nil, verifyErr
|
||||||
|
}
|
||||||
|
|
||||||
|
params := map[string]interface{}{
|
||||||
|
"name": data.Name,
|
||||||
|
"id_card": data.IDCard,
|
||||||
|
}
|
||||||
|
cacheNo, cacheDataErr := l.CacheData(params, "toc_EducationInfoName", userID)
|
||||||
|
if cacheDataErr != nil {
|
||||||
|
return nil, cacheDataErr
|
||||||
|
}
|
||||||
|
|
||||||
|
return &types.QueryServiceResp{Id: cacheNo}, nil
|
||||||
|
}
|
||||||
|
|
||||||
// ProcessTocPersonEnterpriseProLogic 人企关系加强版
|
// ProcessTocPersonEnterpriseProLogic 人企关系加强版
|
||||||
func (l *QueryServiceLogic) ProcessTocPersonEnterpriseProLogic(req *types.QueryServiceReq) (*types.QueryServiceResp, error) {
|
func (l *QueryServiceLogic) ProcessTocPersonEnterpriseProLogic(req *types.QueryServiceReq) (*types.QueryServiceResp, error) {
|
||||||
userID, getUidErr := ctxdata.GetUidFromCtx(l.ctx)
|
userID, getUidErr := ctxdata.GetUidFromCtx(l.ctx)
|
||||||
|
|||||||
@@ -255,6 +255,8 @@ var requestProcessors = map[string]func(*ApiRequestService, context.Context, []b
|
|||||||
"IVYZ6G7H": (*ApiRequestService).ProcessIVYZ6G7HRequest, // 单人婚姻状态(补证版)
|
"IVYZ6G7H": (*ApiRequestService).ProcessIVYZ6G7HRequest, // 单人婚姻状态(补证版)
|
||||||
"IVYZ3A7F": (*ApiRequestService).ProcessIVYZ3A7FRequest, // 学历信息查询(学校名称版)
|
"IVYZ3A7F": (*ApiRequestService).ProcessIVYZ3A7FRequest, // 学历信息查询(学校名称版)
|
||||||
"YYSY7D3E": (*ApiRequestService).ProcessYYSY7D3ERequest, // 携号转网查询
|
"YYSY7D3E": (*ApiRequestService).ProcessYYSY7D3ERequest, // 携号转网查询
|
||||||
|
"IVYZ3P9M": (*ApiRequestService).ProcessIVYZ3P9MRequest, // 公安个人不良加强版
|
||||||
|
"IVYZ81NC": (*ApiRequestService).ProcessIVYZ81NCRequest, // 婚姻登记时间
|
||||||
}
|
}
|
||||||
|
|
||||||
// PreprocessRequestApi 调用指定的请求处理函数
|
// PreprocessRequestApi 调用指定的请求处理函数
|
||||||
@@ -2543,8 +2545,9 @@ func (a *ApiRequestService) ProcessFLXGDEA9Request(ctx context.Context, params [
|
|||||||
return nil, errors.New("api请求, FLXGDEA9, 获取相关参数失败")
|
return nil, errors.New("api请求, FLXGDEA9, 获取相关参数失败")
|
||||||
}
|
}
|
||||||
request := map[string]interface{}{
|
request := map[string]interface{}{
|
||||||
"name": name.String(),
|
"name": name.String(),
|
||||||
"id_card": idCard.String(),
|
"id_card": idCard.String(),
|
||||||
|
"authorized": "1",
|
||||||
}
|
}
|
||||||
resp, err := a.tianyuanapiService.CallInterface("FLXGDEA9", request)
|
resp, err := a.tianyuanapiService.CallInterface("FLXGDEA9", request)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -2649,3 +2652,53 @@ func (a *ApiRequestService) ProcessFLXG0687Request(params []byte) (*APIInternalR
|
|||||||
Data: jsonResult,
|
Data: jsonResult,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ProcessIVYZ3P9MRequest 学历实时查询
|
||||||
|
func (a *ApiRequestService) ProcessIVYZ3P9MRequest(ctx context.Context, params []byte) (*APIInternalResult, error) {
|
||||||
|
idCard := gjson.GetBytes(params, "id_card")
|
||||||
|
name := gjson.GetBytes(params, "name")
|
||||||
|
if !idCard.Exists() || !name.Exists() {
|
||||||
|
return nil, errors.New("api请求, IVYZ3P9M, 获取相关参数失败")
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := a.tianyuanapiService.CallInterface("IVYZ3P9M", map[string]interface{}{
|
||||||
|
"id_card": idCard.String(),
|
||||||
|
"name": name.String(),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
jsonResult, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("处理学历实时查询结果失败: %v", err)
|
||||||
|
}
|
||||||
|
return &APIInternalResult{
|
||||||
|
Data: jsonResult,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProcessIVYZ81NCRequest 婚姻登记时间
|
||||||
|
func (a *ApiRequestService) ProcessIVYZ81NCRequest(ctx context.Context, params []byte) (*APIInternalResult, error) {
|
||||||
|
idCard := gjson.GetBytes(params, "id_card")
|
||||||
|
name := gjson.GetBytes(params, "name")
|
||||||
|
if !idCard.Exists() || !name.Exists() {
|
||||||
|
return nil, errors.New("api请求, IVYZ81NC, 获取相关参数失败")
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := a.tianyuanapiService.CallInterface("IVYZ81NC", map[string]interface{}{
|
||||||
|
"id_card": idCard.String(),
|
||||||
|
"name": name.String(),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
jsonResult, err := json.Marshal(resp.Data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("处理婚姻登记时间查询结果失败: %v", err)
|
||||||
|
}
|
||||||
|
return &APIInternalResult{
|
||||||
|
Data: jsonResult,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -91,13 +91,13 @@ type ApiResponse struct {
|
|||||||
|
|
||||||
// Response Call方法的响应
|
// Response Call方法的响应
|
||||||
type Response struct {
|
type Response struct {
|
||||||
Code int `json:"code"`
|
Code int `json:"code"`
|
||||||
Message string `json:"message"`
|
Message string `json:"message"`
|
||||||
Success bool `json:"success"`
|
Success bool `json:"success"`
|
||||||
TransactionID string `json:"transaction_id"` // 流水号
|
TransactionID string `json:"transaction_id"` // 流水号
|
||||||
Data map[string]interface{} `json:"data"` // 解密后的数据
|
Data interface{} `json:"data"` // 解密后的数据(支持对象或数组)
|
||||||
Timeout int64 `json:"timeout"` // 请求耗时(毫秒)
|
Timeout int64 `json:"timeout"` // 请求耗时(毫秒)
|
||||||
Error string `json:"error,omitempty"`
|
Error string `json:"error,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewClient 创建新的客户端实例
|
// NewClient 创建新的客户端实例
|
||||||
@@ -243,9 +243,9 @@ func (c *Client) Call(req Request) (*Response, error) {
|
|||||||
if apiResp.Data != "" {
|
if apiResp.Data != "" {
|
||||||
decryptedData, err := c.decrypt(apiResp.Data)
|
decryptedData, err := c.decrypt(apiResp.Data)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
var decryptedMap map[string]interface{}
|
var decrypted interface{}
|
||||||
if json.Unmarshal([]byte(decryptedData), &decryptedMap) == nil {
|
if json.Unmarshal([]byte(decryptedData), &decrypted) == nil {
|
||||||
response.Data = decryptedMap
|
response.Data = decrypted
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user