From 8ca672f1f4f86a5ba67d5d9bc8d108856836fd48 Mon Sep 17 00:00:00 2001 From: liangzai <2440983361@qq.com> Date: Tue, 5 Aug 2025 14:51:07 +0800 Subject: [PATCH] fix flxg0v4b --- .../processors/flxg/flxg0v4b_processor.go | 411 +++++++++++++++++- 1 file changed, 395 insertions(+), 16 deletions(-) diff --git a/internal/domains/api/services/processors/flxg/flxg0v4b_processor.go b/internal/domains/api/services/processors/flxg/flxg0v4b_processor.go index 6917d7b..ba7f8c0 100644 --- a/internal/domains/api/services/processors/flxg/flxg0v4b_processor.go +++ b/internal/domains/api/services/processors/flxg/flxg0v4b_processor.go @@ -13,6 +13,378 @@ import ( "github.com/tidwall/gjson" ) +// Content 数据内容 +type FLXG0V4BResponse struct { + Sxbzxr Sxbzxr `json:"sxbzxr"` // 失信被执行人 + Entout Entout `json:"entout"` // 涉诉信息 + Xgbzxr Xgbzxr `json:"xgbzxr"` // 限高被执行人 +} + +// Sxbzxr 失信被执行人 +type Sxbzxr struct { + Msg string `json:"msg"` // 备注信息 + Data SxbzxrData `json:"data"` // 数据结果 +} + +// SxbzxrData 失信被执行人数据 +type SxbzxrData struct { + Sxbzxr []SxbzxrItem `json:"sxbzxr"` // 失信被执行人列表 +} + +// SxbzxrItem 失信被执行人项 +type SxbzxrItem struct { + Yw string `json:"yw"` // 生效法律文书确定的义务 + PjjeGj int `json:"pjje_gj"` // 判决金额_估计 + Xwqx string `json:"xwqx"` // 失信被执行人行为具体情形 + ID string `json:"id"` // 标识 + Zxfy string `json:"zxfy"` // 执行法院 + Ah string `json:"ah"` // 案号 + Zxyjwh string `json:"zxyjwh"` // 执行依据文号 + Lxqk string `json:"lxqk"` // 被执行人的履行情况 + Zxyjdw string `json:"zxyjdw"` // 出执行依据单位 + Fbrq string `json:"fbrq"` // 发布时间(日期) + Xb string `json:"xb"` // 性别 + Larq string `json:"larq"` // 立案日期 + Sf string `json:"sf"` // 省份 +} + +// Entout 涉诉信息 +type Entout struct { + Msg string `json:"msg"` // 备注信息 + Data EntoutData `json:"data"` // 数据结果 +} + +// EntoutData 涉诉信息数据 +type EntoutData struct { + Administrative Administrative `json:"administrative"` // 行政案件 + Implement Implement `json:"implement"` // 执行案件 + Count Count `json:"count"` // 统计 + Preservation Preservation `json:"preservation"` // 案件类型(非诉保全审查) + Crc int `json:"crc"` // 当事人变更码 + Civil Civil `json:"civil"` // 民事案件 + Criminal Criminal `json:"criminal"` // 刑事案件 + CasesTree CasesTree `json:"cases_tree"` // 串联树 + Bankrupt Bankrupt `json:"bankrupt"` // 强制清算与破产案件 +} + +// Administrative 行政案件 +type Administrative struct { + Cases []AdministrativeCase `json:"cases"` // 案件 + Count Count `json:"count"` // 统计 +} + +// AdministrativeCase 行政案件项 +type AdministrativeCase struct { + NjabdjeGjLevel int `json:"n_jabdje_gj_level"` // 结案标的金额估计等级 + NjbfyCj string `json:"n_jbfy_cj"` // 法院所属层级 + CgkwsGlah string `json:"c_gkws_glah"` // 相关案件号 + Njafs string `json:"n_jafs"` // 结案方式 + Nssdw string `json:"n_ssdw"` // 诉讼地位 + Djarq string `json:"d_jarq"` // 结案时间 + CgkwsPjjg string `json:"c_gkws_pjjg"` // 判决结果 + Nqsbdje int `json:"n_qsbdje"` // 起诉标的金额 + Ncrc int `json:"n_crc"` // 案件变更码 + Cssdy string `json:"c_ssdy"` // 所属地域 + Najjzjd string `json:"n_ajjzjd"` // 案件进展阶段 + Njaay string `json:"n_jaay"` // 结案案由 + Najlx string `json:"n_ajlx"` // 案件类型 + CahYs string `json:"c_ah_ys"` // 原审案号 + NlaayTree string `json:"n_laay_tree"` // 立案案由详细 + NjabdjeLevel int `json:"n_jabdje_level"` // 结案标的金额等级 + Nlaay string `json:"n_laay"` // 立案案由 + Najbs string `json:"n_ajbs"` // 案件标识 + Njbfy string `json:"n_jbfy"` // 经办法院 + CgkwsID string `json:"c_gkws_id"` // 公开文书ID + NjabdjeGj int `json:"n_jabdje_gj"` // 结案标的金额估计 + NpjVictory string `json:"n_pj_victory"` // 胜诉估计 + CgkwsDsr string `json:"c_gkws_dsr"` // 当事人 + Nslcx string `json:"n_slcx"` // 审理程序 + NqsbdjeLevel int `json:"n_qsbdje_level"` // 起诉标的金额等级 + CID string `json:"c_id"` // 案件唯一ID + NssdwYs string `json:"n_ssdw_ys"` // 一审诉讼地位 + Cslfsxx string `json:"c_slfsxx"` // 审理方式信息 + Cah string `json:"c_ah"` // 案号 + Cdsrxx []Dsrxx `json:"c_dsrxx"` // 当事人 + Dlarq string `json:"d_larq"` // 立案时间 + NjaayTree string `json:"n_jaay_tree"` // 结案案由详细 + CahHx string `json:"c_ah_hx"` // 后续案号 + Njabdje int `json:"n_jabdje"` // 结案标的金额 +} + +// Implement 执行案件 +type Implement struct { + Cases []ImplementCase `json:"cases"` // 案件 + Count Count `json:"count"` // 统计 +} + +// ImplementCase 执行案件项 +type ImplementCase struct { + Cdsrxx []Dsrxx `json:"c_dsrxx"` // 当事人 + Cssdy string `json:"c_ssdy"` // 所属地域 + NjabdjeGj int `json:"n_jabdje_gj"` // 结案标的金额估计 + Ncrc int `json:"n_crc"` // 案件变更码 + Nlaay string `json:"n_laay"` // 立案案由 + Cah string `json:"c_ah"` // 案号 + Nsqzxbdje int `json:"n_sqzxbdje"` // 申请执行标的金额 + CahYs string `json:"c_ah_ys"` // 原审案号 + CgkwsGlah string `json:"c_gkws_glah"` // 相关案件号 + Najbs string `json:"n_ajbs"` // 案件标识 + CgkwsPjjg string `json:"c_gkws_pjjg"` // 判决结果 + Njafs string `json:"n_jafs"` // 结案方式 + Njaay string `json:"n_jaay"` // 结案案由 + NjbfyCj string `json:"n_jbfy_cj"` // 法院所属层级 + CID string `json:"c_id"` // 案件唯一ID + Njabdje int `json:"n_jabdje"` // 结案标的金额 + Najjzjd string `json:"n_ajjzjd"` // 案件进展阶段 + Dlarq string `json:"d_larq"` // 立案时间 + Najlx string `json:"n_ajlx"` // 案件类型 + Nsjdwje int `json:"n_sjdwje"` // 实际到位金额 + CgkwsID string `json:"c_gkws_id"` // 公开文书ID + CahHx string `json:"c_ah_hx"` // 后续案号 + Nwzxje int `json:"n_wzxje"` // 未执行金额 + Djarq string `json:"d_jarq"` // 结案时间 + CgkwsDsr string `json:"c_gkws_dsr"` // 当事人 + Njbfy string `json:"n_jbfy"` // 经办法院 + Nssdw string `json:"n_ssdw"` // 诉讼地位 +} + +// Preservation 案件类型(非诉保全审查) +type Preservation struct { + Cases []PreservationCase `json:"cases"` // 案件 + Count Count `json:"count"` // 统计 +} + +// PreservationCase 非诉保全审查案件项 +type PreservationCase struct { + NjbfyCj string `json:"n_jbfy_cj"` // 法院所属层级 + Nssdw string `json:"n_ssdw"` // 诉讼地位 + Ncrc int `json:"n_crc"` // 案件变更码 + Cssdy string `json:"c_ssdy"` // 所属地域 + Dlarq string `json:"d_larq"` // 立案时间 + CgkwsID string `json:"c_gkws_id"` // 公开文书ID + CahYs string `json:"c_ah_ys"` // 原审案号 + Nsqbqse int `json:"n_sqbqse"` // 申请保全数额 + Djarq string `json:"d_jarq"` // 结案时间 + Najbs string `json:"n_ajbs"` // 案件标识 + CgkwsDsr string `json:"c_gkws_dsr"` // 当事人 + CgkwsPjjg string `json:"c_gkws_pjjg"` // 判决结果 + Njbfy string `json:"n_jbfy"` // 经办法院 + Njafs string `json:"n_jafs"` // 结案方式 + Cdsrxx []Dsrxx `json:"c_dsrxx"` // 当事人 + Najjzjd string `json:"n_ajjzjd"` // 案件进展阶段 + Najlx string `json:"n_ajlx"` // 案件类型 + CID string `json:"c_id"` // 案件唯一ID + Cah string `json:"c_ah"` // 案号 + NsqbqseLevel int `json:"n_sqbqse_level"` // 申请保全数额等级 + CahHx string `json:"c_ah_hx"` // 后续案号 + Csqbqbdw string `json:"c_sqbqbdw"` // 申请保全标的物 + CgkwsGlah string `json:"c_gkws_glah"` // 相关案件号 +} + +// Civil 民事案件 +type Civil struct { + Cases []CivilCase `json:"cases"` // 案件 + Count Count `json:"count"` // 统计 +} + +// CivilCase 民事案件项 +type CivilCase struct { + NjabdjeLevel int `json:"n_jabdje_level"` // 结案标的金额等级 + Nslcx string `json:"n_slcx"` // 审理程序 + NjabdjeGjLevel int `json:"n_jabdje_gj_level"` // 结案标的金额估计等级 + Najjzjd string `json:"n_ajjzjd"` // 案件进展阶段 + Njafs string `json:"n_jafs"` // 结案方式 + CgkwsPjjg string `json:"c_gkws_pjjg"` // 判决结果 + Cslfsxx string `json:"c_slfsxx"` // 审理方式信息 + Nlaay string `json:"n_laay"` // 立案案由 + CgkwsGlah string `json:"c_gkws_glah"` // 相关案件号 + Nssdw string `json:"n_ssdw"` // 诉讼地位 + NssdwYs string `json:"n_ssdw_ys"` // 一审诉讼地位 + NlaayTag string `json:"n_laay_tag"` // 立案案由标签 + NqsbdjeLevel int `json:"n_qsbdje_level"` // 起诉标的金额等级 + Ncrc int `json:"n_crc"` // 案件变更码 + CahHx string `json:"c_ah_hx"` // 后续案号 + NqsbdjeGjLevel int `json:"n_qsbdje_gj_level"` // 起诉标的金额估计等级 + Njbfy string `json:"n_jbfy"` // 经办法院 + Cah string `json:"c_ah"` // 案号 + Njabdje int `json:"n_jabdje"` // 结案标的金额 + NjabdjeGj int `json:"n_jabdje_gj"` // 结案标的金额估计 + NqsbdjeGj int `json:"n_qsbdje_gj"` // 起诉标的金额估计 + NjbfyCj string `json:"n_jbfy_cj"` // 法院所属层级 + Cssdy string `json:"c_ssdy"` // 所属地域 + Dlarq string `json:"d_larq"` // 立案时间 + CgkwsID string `json:"c_gkws_id"` // 公开文书ID + NpjVictory string `json:"n_pj_victory"` // 胜诉估计 + CgkwsDsr string `json:"c_gkws_dsr"` // 当事人 + Djarq string `json:"d_jarq"` // 结案时间 + Njaay string `json:"n_jaay"` // 结案案由 + NlaayTree string `json:"n_laay_tree"` // 立案案由详细 + Cdsrxx []Dsrxx `json:"c_dsrxx"` // 当事人 + CahYs string `json:"c_ah_ys"` // 原审案号 + Nqsbdje int `json:"n_qsbdje"` // 起诉标的金额 + NjaayTree string `json:"n_jaay_tree"` // 结案案由详细 + Najlx string `json:"n_ajlx"` // 案件类型 + CID string `json:"c_id"` // 案件唯一ID + Najbs string `json:"n_ajbs"` // 案件标识 +} + +// Criminal 刑事案件 +type Criminal struct { + Cases []CriminalCase `json:"cases"` // 案件 + Count Count `json:"count"` // 统计 +} + +// CriminalCase 刑事案件项 +type CriminalCase struct { + CgkwsDsr string `json:"c_gkws_dsr"` // 当事人 + NpcpcjeLevel int `json:"n_pcpcje_level"` // 判处赔偿金额等级 + Nbqqpcje int `json:"n_bqqpcje"` // 被请求赔偿金额 + NpcpcjeGjLevel int `json:"n_pcpcje_gj_level"` // 判处赔偿金额估计等级 + Dlarq string `json:"d_larq"` // 立案时间 + Djarq string `json:"d_jarq"` // 结案时间 + CahHx string `json:"c_ah_hx"` // 后续案号 + Njafs string `json:"n_jafs"` // 结案方式 + NjaayTag string `json:"n_jaay_tag"` // 结案案由标签 + Njbfy string `json:"n_jbfy"` // 经办法院 + NlaayTag string `json:"n_laay_tag"` // 立案案由标签 + Ndzzm string `json:"n_dzzm"` // 定罪罪名 + NjbfyCj string `json:"n_jbfy_cj"` // 法院所属层级 + NlaayTree string `json:"n_laay_tree"` // 立案案由详细 + NccxzxjeLevel int `json:"n_ccxzxje_level"` // 财产刑执行金额等级 + Ncrc int `json:"n_crc"` // 案件变更码 + Cdsrxx []Dsrxx `json:"c_dsrxx"` // 当事人 + NccxzxjeGjLevel int `json:"n_ccxzxje_gj_level"` // 财产刑执行金额估计等级 + Nfzje int `json:"n_fzje"` // 犯罪金额 + CgkwsID string `json:"c_gkws_id"` // 公开文书ID + Cah string `json:"c_ah"` // 案号 + Cssdy string `json:"c_ssdy"` // 所属地域 + Npcpcje int `json:"n_pcpcje"` // 判处赔偿金额 + CahYs string `json:"c_ah_ys"` // 原审案号 + Najjzjd string `json:"n_ajjzjd"` // 案件进展阶段 + CgkwsGlah string `json:"c_gkws_glah"` // 相关案件号 + CgkwsPjjg string `json:"c_gkws_pjjg"` // 判决结果 + Cslfsxx string `json:"c_slfsxx"` // 审理方式信息 + NpcpcjeGj int `json:"n_pcpcje_gj"` // 判处赔偿金额估计 + Najbs string `json:"n_ajbs"` // 案件标识 + Nlaay string `json:"n_laay"` // 立案案由 + Njaay string `json:"n_jaay"` // 结案案由 + Nssdw string `json:"n_ssdw"` // 诉讼地位 + NdzzmTree string `json:"n_dzzm_tree"` // 定罪罪名树 + NjaayTree string `json:"n_jaay_tree"` // 结案案由详细 + Npcjg string `json:"n_pcjg"` // 判处结果 + CID string `json:"c_id"` // 案件唯一ID + NssdwYs string `json:"n_ssdw_ys"` // 一审诉讼地位 + Nccxzxje int `json:"n_ccxzxje"` // 财产刑执行金额 + NfzjeLevel int `json:"n_fzje_level"` // 犯罪金额等级 + Nslcx string `json:"n_slcx"` // 审理程序 + Najlx string `json:"n_ajlx"` // 案件类型 + NbqqpcjeLevel int `json:"n_bqqpcje_level"` // 被请求赔偿金额等级 + NccxzxjeGj int `json:"n_ccxzxje_gj"` // 财产刑执行金额估计 +} + +// CasesTree 串联树 +type CasesTree struct { + Administrative []CasesTreeItem `json:"administrative"` // 行政案件 + Criminal []CasesTreeItem `json:"criminal"` // 刑事案件 + Civil []CasesTreeItem `json:"civil"` // 民事案件 +} + +// CasesTreeItem 串联树项 +type CasesTreeItem struct { + Cah string `json:"c_ah"` // 案号 + CaseType int `json:"case_type"` // 案件类型 + Najbs string `json:"n_ajbs"` // 案件标识 + StageType int `json:"stage_type"` // 审理阶段类型 + Next *CasesTreeItem `json:"next"` // 下一个案件 +} + +// Bankrupt 强制清算与破产案件 +type Bankrupt struct { + Cases []BankruptCase `json:"cases"` // 案件 + Count Count `json:"count"` // 统计 +} + +// BankruptCase 强制清算与破产案件项 +type BankruptCase struct { + Cdsrxx []Dsrxx `json:"c_dsrxx"` // 当事人 + CgkwsID string `json:"c_gkws_id"` // 公开文书ID + Najbs string `json:"n_ajbs"` // 案件标识 + NjbfyCj string `json:"n_jbfy_cj"` // 法院所属层级 + CgkwsDsr string `json:"c_gkws_dsr"` // 当事人 + CID string `json:"c_id"` // 案件唯一ID + Dlarq string `json:"d_larq"` // 立案时间 + Djarq string `json:"d_jarq"` // 结案时间 + Najlx string `json:"n_ajlx"` // 案件类型 + CgkwsGlah string `json:"c_gkws_glah"` // 相关案件号 + Njbfy string `json:"n_jbfy"` // 经办法院 + Najjzjd string `json:"n_ajjzjd"` // 案件进展阶段 + CgkwsPjjg string `json:"c_gkws_pjjg"` // 判决结果 + Cssdy string `json:"c_ssdy"` // 所属地域 + Ncrc int `json:"n_crc"` // 案件变更码 + Nssdw string `json:"n_ssdw"` // 诉讼地位 + Njafs string `json:"n_jafs"` // 结案方式 + Cah string `json:"c_ah"` // 案号 +} + +// Dsrxx 当事人 +type Dsrxx struct { + Nssdw string `json:"n_ssdw"` // 诉讼地位 + CMc string `json:"c_mc"` // 名称 + Ndsrlx string `json:"n_dsrlx"` // 当事人类型 +} + +// Count 统计 +type Count struct { + MoneyYuangao int `json:"money_yuangao"` // 原告金额 + AreaStat string `json:"area_stat"` // 涉案地点分布 + CountJieBeigao int `json:"count_jie_beigao"` // 被告已结案总数 + CountTotal int `json:"count_total"` // 案件总数 + MoneyWeiYuangao int `json:"money_wei_yuangao"` // 原告未结案金额 + CountWeiTotal int `json:"count_wei_total"` // 未结案总数 + MoneyWeiBeigao int `json:"money_wei_beigao"` // 被告未结案金额 + CountOther int `json:"count_other"` // 第三人总数 + MoneyBeigao int `json:"money_beigao"` // 被告金额 + CountYuangao int `json:"count_yuangao"` // 原告总数 + MoneyJieOther int `json:"money_jie_other"` // 第三人已结案金额 + MoneyTotal int `json:"money_total"` // 涉案总金额 + MoneyWeiTotal int `json:"money_wei_total"` // 未结案金额 + CountWeiYuangao int `json:"count_wei_yuangao"` // 原告未结案总数 + AyStat string `json:"ay_stat"` // 涉案案由分布 + CountBeigao int `json:"count_beigao"` // 被告总数 + MoneyJieYuangao int `json:"money_jie_yuangao"` // 原告已结金额 + JafsStat string `json:"jafs_stat"` // 结案方式分布 + MoneyJieBeigao int `json:"money_jie_beigao"` // 被告已结案金额 + CountWeiBeigao int `json:"count_wei_beigao"` // 被告未结案总数 + CountJieOther int `json:"count_jie_other"` // 第三人已结案总数 + CountJieTotal int `json:"count_jie_total"` // 已结案总数 + CountWeiOther int `json:"count_wei_other"` // 第三人未结案总数 + MoneyOther int `json:"money_other"` // 第三人金额 + CountJieYuangao int `json:"count_jie_yuangao"` // 原告已结案总数 + MoneyJieTotal int `json:"money_jie_total"` // 已结案金额 + MoneyWeiOther int `json:"money_wei_other"` // 第三人未结案金额 + MoneyWeiPercent float64 `json:"money_wei_percent"` // 未结案金额百分比 + LarqStat string `json:"larq_stat"` // 涉案时间分布 +} + +// Xgbzxr 限高被执行人 +type Xgbzxr struct { + Msg string `json:"msg"` // 备注信息 + Data XgbzxrData `json:"data"` // 数据结果 +} + +// XgbzxrData 限高被执行人数据 +type XgbzxrData struct { + Xgbzxr []XgbzxrItem `json:"xgbzxr"` // 限高被执行人列表 +} + +// XgbzxrItem 限高被执行人项 +type XgbzxrItem struct { + Ah string `json:"ah"` // 案号 + ID string `json:"id"` // 标识 + Zxfy string `json:"zxfy"` // 执行法院 + Fbrq string `json:"fbrq"` // 发布时间 +} + // ProcessFLXG0V4BRequest FLXG0V4B API处理方法 func ProcessFLXG0V4BRequest(ctx context.Context, params []byte, deps *processors.ProcessorDependencies) ([]byte, error) { var paramsDto dto.FLXG0V4BReq @@ -42,7 +414,7 @@ func ProcessFLXG0V4BRequest(ctx context.Context, params []byte, deps *processors "name": encryptedName, "idcard": encryptedIDCard, "auth_authorizeFileCode": encryptedAuthAuthorizeFileCode, - "inquired_auth": paramsDto.AuthDate, + "inquired_auth": fmt.Sprintf("authed:%s", paramsDto.AuthDate), }, } respBytes, err := deps.WestDexService.CallAPI("G22SC01", reqData) @@ -51,15 +423,17 @@ func ProcessFLXG0V4BRequest(ctx context.Context, params []byte, deps *processors if errors.Is(err, westdex.ErrDatasource) { // 如果有返回内容,优先解析返回内容 if respBytes != nil { - if deps.Options.Json { - parsed, parseErr := ParseJsonResponse(respBytes) - if parseErr == nil { - return parsed, fmt.Errorf("%s: %w", processors.ErrDatasource, err) + parsed, parseErr := ParseJsonResponse(respBytes) + if parseErr == nil { + // 通过gjson获取指定路径的数据 + contentResult := gjson.GetBytes(parsed, "G22SC0101.G22SC0102.content") + if contentResult.Exists() { + return []byte(contentResult.Raw), fmt.Errorf("%s: %w", processors.ErrDatasource, err) } - // 解析失败,返回原始内容和系统错误 - return respBytes, fmt.Errorf("%s: %w", processors.ErrSystem, parseErr) + return parsed, fmt.Errorf("%s: %w", processors.ErrDatasource, err) } - return respBytes, fmt.Errorf("%s: %w", processors.ErrDatasource, err) + // 解析失败,返回原始内容和系统错误 + return respBytes, fmt.Errorf("%s: %w", processors.ErrSystem, parseErr) } // 没有返回内容,直接返回数据源错误 return nil, fmt.Errorf("%s: %w", processors.ErrDatasource, err) @@ -68,15 +442,20 @@ func ProcessFLXG0V4BRequest(ctx context.Context, params []byte, deps *processors return nil, fmt.Errorf("%s: %w", processors.ErrSystem, err) } - // 正常返回 - if deps.Options.Json { - parsed, parseErr := ParseJsonResponse(respBytes) - if parseErr != nil { - return nil, fmt.Errorf("%s: %w", processors.ErrSystem, parseErr) - } - return parsed, nil + // 正常返回 - 不管有没有deps.Options.Json都进行ParseJsonResponse + parsed, parseErr := ParseJsonResponse(respBytes) + if parseErr != nil { + return nil, fmt.Errorf("%s: %w", processors.ErrSystem, parseErr) } - return respBytes, nil + + // 通过gjson获取指定路径的数据 + contentResult := gjson.GetBytes(parsed, "G22SC0101.G22SC0102.content") + if contentResult.Exists() { + return []byte(contentResult.Raw), nil + }else{ + return nil,fmt.Errorf("%s: %w", processors.ErrDatasource, err) + } + } // ParseWestResponse 解析西部返回的响应数据(获取data字段后解析)