From d4a0d179ea5d94aa000b494fc9299631684334d3 Mon Sep 17 00:00:00 2001 From: efren <79289982@qq.com> Date: Wed, 25 Jun 2025 10:15:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E8=A7=84=E9=A3=8E=E9=99=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mall/ebtp/extend/rm/client/RmClient.java | 44 +++++ .../extend/rm/controller/RmController.java | 111 ++++++++++++ .../extend/rm/entity/RmBaseResponseDTO.java | 159 ++++++++++++++++++ 3 files changed, 314 insertions(+) create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/rm/client/RmClient.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/rm/controller/RmController.java create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/rm/entity/RmBaseResponseDTO.java diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/rm/client/RmClient.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/rm/client/RmClient.java new file mode 100644 index 0000000..768590c --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/rm/client/RmClient.java @@ -0,0 +1,44 @@ +package com.chinaunicom.mall.ebtp.extend.rm.client; + +import com.chinaunicom.mall.ebtp.extend.rm.entity.RmBaseResponseDTO; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@FeignClient(name = "rm-service", url = "${spring.rm.url}") +public interface RmClient { + + /** + * 精确查询-核心风险信息 + * + 返回: + {"code":200,"message":"成功","datasize":3,"data":[{"hit":"11111","hitlight":"11111","similar":100,"hittype":"OFAC Unique ID","activestatus":"Inactive","d1":"Special Interest Entity (SIE)","d2":["Sanctions Lists"],"d3":["Ship"],"countries":["Iran"],"docid":"1016852","systemdate":"2025-02-26 14:31:24.201","nameDetails":{"name":[{"nameType":"Primary Name","nameValue":[{"entityName":["Iran Mahallati"],"firstName":[],"maidenName":[],"middleName":[],"originalScriptName":[],"singleStringName":[],"suffix":[],"surname":[],"titleHonorific":[]}]}]},"idNumberTypes":{"ID":[{"IDType":"OFAC Program ID","IDValue":[{"value":"NPWMD"}]},{"IDType":"OFAC Unique ID","IDValue":[{"value":"11111"}]},{"IDType":"International Maritime Organization (IMO) Ship No.","IDValue":[{"IDnotes":"Vessel Registration Identification","value":"7428823"}]}]},"sanctionsReferences":{"reference":[{"sinceDay":"10","sinceMonth":"Sep","sinceYear":"2008","toDay":"31","toMonth":"Mar","toYear":"2011","value":14}]}},{"hit":"11111","hitlight":"11111","similar":100,"hittype":"HM Treasury Group ID","activestatus":"Inactive","d1":"Politically Exposed Person (PEP)","d2":["Sanctions Lists"],"d3":[],"countries":["Myanmar"],"docid":"1356752","systemdate":"2025-02-26 14:31:24.201","nameDetails":{"name":[{"nameType":"Primary Name","nameValue":[{"entityName":[],"firstName":["Soe"],"maidenName":[],"middleName":[],"originalScriptName":["စိုးမင်း"],"singleStringName":["Soe Min"],"suffix":[],"surname":["Min"],"titleHonorific":[]}]}]},"idNumberTypes":{"ID":[{"IDType":"National ID","IDValue":[{"value":"12/BaTaHta (N) 021423"}]},{"IDType":"EU Sanctions Programme Indicator","IDValue":[{"value":"MMR"}]},{"IDType":"EU Consolidated Electronic List ID","IDValue":[{"value":"5633"}]},{"IDType":"HM Treasury Group ID","IDValue":[{"value":"11111"}]}]},"sanctionsReferences":{"reference":[{"sinceDay":"14","sinceMonth":"May","sinceYear":"2010","toDay":"16","toMonth":"May","toYear":"2012","value":275},{"sinceDay":"03","sinceMonth":"Dec","sinceYear":"2010","toDay":"10","toMonth":"May","toYear":"2012","value":299},{"sinceDay":"18","sinceMonth":"May","sinceYear":"2010","toDay":"14","toMonth":"May","toYear":"2012","value":507},{"sinceDay":"17","sinceMonth":"Jun","sinceYear":"2010","toDay":"08","toMonth":"Jun","toYear":"2012","value":1326},{"sinceDay":"26","sinceMonth":"Apr","sinceYear":"2010","toDay":"12","toMonth":"Apr","toYear":"2011","value":1440},{"sinceDay":"10","sinceMonth":"May","sinceYear":"2010","toDay":"18","toMonth":"Apr","toYear":"2011","value":1446},{"sinceDay":"12","sinceMonth":"Apr","sinceYear":"2011","toDay":"16","toMonth":"Aug","toYear":"2011","value":1694},{"sinceDay":"18","sinceMonth":"Apr","sinceYear":"2011","toDay":"01","toMonth":"Sep","toYear":"2011","value":1696},{"sinceDay":"16","sinceMonth":"Aug","sinceYear":"2011","toDay":"26","toMonth":"Apr","toYear":"2012","value":1802},{"sinceDay":"01","sinceMonth":"Sep","sinceYear":"2011","toDay":"14","toMonth":"May","toYear":"2012","value":1816}]}},{"hit":"11111","hitlight":"11111","similar":100,"hittype":"NSDC Unique ID","activestatus":"Inactive","d1":"Politically Exposed Person (PEP)","d2":["Sanctions Lists"],"d3":[],"countries":["Russia"],"docid":"1659749","systemdate":"2025-04-04 12:10:11.458","nameDetails":{"name":[{"nameType":"Primary Name","nameValue":[{"entityName":[],"firstName":["Vladimir"],"maidenName":[],"middleName":["Leonidovich"],"originalScriptName":["Владимир Леонидович Шемякин"],"singleStringName":[],"suffix":[],"surname":["Shemyakin"],"titleHonorific":[]}]},{"nameType":"Also Known As","nameValue":[{"entityName":[],"firstName":["Volodymyr"],"maidenName":[],"middleName":["Leonidovych"],"originalScriptName":["Володимир Леонідович Шемякін"],"singleStringName":[],"suffix":[],"surname":["Shemyakin"],"titleHonorific":[]},{"entityName":[],"firstName":["Volodymyr"],"maidenName":[],"middleName":[],"originalScriptName":[],"singleStringName":[],"suffix":[],"surname":["Shemiakin"],"titleHonorific":[]}]},{"nameType":"Spelling Variation","nameValue":[{"entityName":[],"firstName":["Vladimir"],"maidenName":[],"middleName":["Leonidovich"],"originalScriptName":[],"singleStringName":[],"suffix":[],"surname":["Shemiakin"],"titleHonorific":[]},{"entityName":[],"firstName":["Volodymyr"],"maidenName":[],"middleName":["Leonidovych"],"originalScriptName":[],"singleStringName":[],"suffix":[],"surname":["Shemiakin"],"titleHonorific":[]}]}]},"idNumberTypes":{"ID":[{"IDType":"Others","IDValue":[{"value":"1045207050712"}]},{"IDType":"National Tax No.","IDValue":[{"value":"5256050056"},{"value":"710600916016"}]},{"IDType":"NSDC Unique ID","IDValue":[{"value":"11111"}]}]},"sanctionsReferences":{"reference":[{"sinceDay":"17","sinceMonth":"Oct","sinceYear":"2016","toDay":"15","toMonth":"May","toYear":"2017","value":2966},{"sinceDay":"15","sinceMonth":"May","sinceYear":"2017","toDay":"24","toMonth":"Jun","toYear":"2024","value":4114}]}}]} + + * @param search 查找关键字(如公司名称或人名) + * @param username 注册账户名 + * @param password 账户密码 + * @return JSON格式风险信息 + */ + @GetMapping("/api") + RmBaseResponseDTO queryRiskInfo( + @RequestParam("search") String search, + @RequestParam("username") String username, + @RequestParam("password") String password + ); + + /** + * 精确查询-全部风险信息接口 + 返回: + {"code":200,"message":"成功","datasize":3,"data":[{"hit":"11111","hitlight":"11111","similar":100,"hittype":"OFAC Unique ID","activestatus":"Inactive","d1":"Special Interest Entity (SIE)","d2":["Sanctions Lists"],"d3":["Ship"],"countries":["Iran"],"docid":"1016852","systemdate":"2025-02-26 14:31:24.201","details":{"date":"22-Jul-2019","descriptions":{"description":[{"description1":"Special Interest Entity (SIE)","description2":"Sanctions Lists","description3":"Ship"}]},"nameDetails":{"Primary Name":["Iran Mahallati"]},"idNumberTypes":{"OFAC Unique ID":["11111"],"OFAC Program ID":["NPWMD"],"International Maritime Organization (IMO) Ship No.":["7428823: Vessel Registration Identification"]},"sanctionsReferences":{"Sanctions Lists":[{"date":"10-Sep-2008 to 31-Mar-2011","value":"14 OFAC - WMD Proliferators & Supporters List"}]},"companyDetails":[],"vesselDetails":[{"vesselFlag":"IRAN","vesselGRT":"13914","vesselOwner":"IRISL","vesselTonnage":"17982","vesselType":"General Cargo"}],"countryDetails":{"Enhanced Risk Country":["Iran"],"Country of Affiliation":["Iran"]},"sourceDescription":["http://www.treas.gov/offices/enforcement/ofac/sdn/t11sdn.pdf","http://www.treasury.gov/resource-center/sanctions/OFAC-Enforcement/Pages/20110331.aspx","http://www.treasury.gov/resource-center/sanctions/OFAC-Enforcement/Documents/03312011_irisl.pdf","http://www.treas.gov/offices/enforcement/ofac/actions/20080910.shtml"],"associate":[]}},{"hit":"11111","hitlight":"11111","similar":100,"hittype":"HM Treasury Group ID","activestatus":"Inactive","d1":"Politically Exposed Person (PEP)","d2":["Sanctions Lists"],"d3":[],"countries":["Myanmar"],"docid":"1356752","systemdate":"2025-02-26 14:31:24.201","details":{"date":"11-Dec-2024","gender":"Male","deceased":"No","descriptions":{"description":[{"description1":"Politically Exposed Person (PEP)","description2":"","description3":""},{"description1":"Special Interest Person (SIP)","description2":"Sanctions Lists","description3":""}]},"nameDetails":{"Primary Name":["Soe Min","စိုးမင်း"]},"idNumberTypes":{"HM Treasury Group ID":["11111"],"National ID":["12/BaTaHta (N) 021423"],"EU Sanctions Programme Indicator":["MMR"],"EU Consolidated Electronic List ID":["5633"]},"dateDetails":{"Inactive as of (PEP)":["Feb-2021"],"Date of Birth":["19-Nov-1957"]},"birthPlace":["Sagaing,Myanmar"],"sanctionsReferences":{"Sanctions Lists":[{"date":"14-May-2010 to 16-May-2012","value":"275 HM Treasury Consolidated List"},{"date":"03-Dec-2010 to 10-May-2012","value":"299 SECO (Switzerland) Myanmar List"},{"date":"18-May-2010 to 14-May-2012","value":"507 CSSF (Luxembourg) Sanctions List"},{"date":"17-Jun-2010 to 08-Jun-2012","value":"1326 Finance and Economy Ministry (Monaco) Economic Sanctions"},{"date":"26-Apr-2010 to 12-Apr-2011","value":"1440 EC 2010/232/CFSP Burma/Myanmar List"},{"date":"10-May-2010 to 18-Apr-2011","value":"1446 EC 411/2010 Burma/Myanmar List"},{"date":"12-Apr-2011 to 16-Aug-2011","value":"1694 EC 2011/239/CFSP Burma/Myanmar List"},{"date":"18-Apr-2011 to 01-Sep-2011","value":"1696 EC 383/2011 Burma/Myanmar List"},{"date":"16-Aug-2011 to 26-Apr-2012","value":"1802 EC 2011/504/CFSP Burma/Myanmar List"},{"date":"01-Sep-2011 to 14-May-2012","value":"1816 EC 891/2011 Burma/Myanmar List"}]},"countryDetails":{"Resident of":["Myanmar"],"Citizenship":["Myanmar"]},"profileNotes":"EU NOTES:\n\nEC 891/2011 Burma/Myanmar List - Annex II\nK. MILITARY OWNED ENTERPRISES\nGovernment financial institutions\nIdentifying information (inc. company): General Manager of MICB. Managing Director Myanma Investment and Commercial Bank\n\nEC 2011/504/CFSP Burma/Myanmar List - Annex II\nEC 383/2011 Burma/Myanmar List - Annex II\nK. MILITARY OWNED ENTERPRISES\nGovernment financial institutions\nIdentifying information (inc. company): General Manager of MICB Managing Director Myanma Investment and Commercial Bank\n\nEC 383/2011 Burma/Myanmar List - Annex II\nEC 2011/239/CFSP Burma/Myanmar List - Annex II\nK. MILITARY OWNED ENTERPRISES\nGovernment financial institutions\nIdentifying information (inc. company): General Manager of MICB Managing Director Myanma Investment and Commercial Bank\n\nEC 411/2010 Burma/Myanmar List - Annex I\nEC 2010/232/CFSP Burma/Myanmar List - Annex II\n\nASSOCIATED ENTITIES INFORMATION:\nMYANMAR INVESTMENT AND COMM. BANK\nCentral Bank of Myanmar","sourceDescription":["http://www.gouv.mc/DataWeb/jourmon.nsf/9bf97b0da6308cfdc12568c40037f873/74bcdb0b4b20faefc125792100491dd5!OpenDocument","Council Decision 2011/504/CFSP","Arrêté Ministériel (Monaco) no. 2010-293 - Myanmar","http://www.hm-treasury.gov.uk/d/sanctionsconlist.htm","http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2010:118:0010:0042:EN:PDF","http://www.siccfin.gouv.mc/364/wwwnew.nsf/c3241c4782f528bdc1256d52004f970b/6ed4d528e334ff7ac12574a90040c6d7!OpenDocument","Council Decision 2011/239/CFSP","Swiss Federal Council Ordinance 28-Jun-2006 (RS 946.231.157.5)","Council Decision 2010/232/CFSP","Commission Regulation (EU) No 411/2010","Commission Implementing Regulation (EU) No 383/2011","http://www.gouv.mc/DataWeb/jourmon.nsf/9bf97b0da6308cfdc12568c40037f873/28345ca3b0de213cc125774d0026fee7!OpenDocument","http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2011:101:0024:0121:EN:PDF","http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2012:126:0001:0002:EN:PDF","Commission Implementing Regulation (EU) No 891/2011","Circular CSSF 10/460","http://www.hm-treasury.gov.uk/d/fin_sanctions_burma_140510.pdf","http://cloud.gouv.mc/DataWeb/jourmon.nsf/9bf97b0da6308cfdc12568c40037f873/ecce30d77441c1dec1257a1d00565adb!OpenDocument","http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2011:212:0001:0065:EN:PDF","Arrêté Ministériel (Monaco) no. 2011-528 – Myanmar","http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2011:230:0001:0066:EN:PDF","Arrêté Ministériel (Monaco) no. 2011-251 – Myanmar","http://www.seco.admin.ch/themen/00513/00620/00622/00628/index.html?lang=fr&download=NHzLpZeg7t,lnp6I0NTU042l2Z6ln1ae2IZn4Z2qZpnO2Yuq2Z6gpJCFfH9_fWym162epYbg2c_JjKbNoKSn6A--","http://www.gouv.mc/DataWeb/jourmon.nsf/9bf97b0da6308cfdc12568c40037f873/2d7350ba6dc46dc2c125788e00561d52!OpenDocument","http://www.seco.admin.ch/themen/00513/00620/00622/00628/index.html?lang=fr&download=NHzLpZeg7t,lnp6I0NTU042l2Z6ln1ae2IZn4Z2qZpnO2Yuq2Z6gpJCFfX53gGym162epYbg2c_JjKbNoKSn6A--","http://www.hm-treasury.gov.uk/d/fin_sanctions_burma_200411.pdf","http://www.seco.admin.ch/themen/00513/00620/00622/00628/index.html?lang=fr","http://www.seco.admin.ch/themen/00513/00620/00622/00628/index.html?lang=fr&download=NHzLpZeg7t,lnp6I0NTU042l2Z6ln1ae2IZn4Z2qZpnO2Yuq2Z6gpJCFeoJ9fGym162epYbg2c_JjKbNoKSn6A--","http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2011:103:0008:0101:EN:PDF","http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2012:115:0025:0026:EN:PDF","http://www.cssf.lu/uploads/media/cssf10_460eng.pdf","http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2010:105:0022:0108:EN:PDF"],"associate":[{"activestatus":"Active","d1":"Entity","d2":"SAN","docid":"625933","ex":"Yes","primaryName":"Myanma Foreign Trade Bank","primaryNameOriginalScriptName":["မြန်မာ့နိုင်ငံခြားကုန်သွယ်မှူဘဏ်"],"relationship":"Employer"},{"activestatus":"Active","d1":"Entity","d2":"SAN","docid":"625934","ex":"Yes","primaryName":"Myanma Investment and Commercial Bank","primaryNameOriginalScriptName":["မြန်မာ့ရင်းနှီးမြှုပ်နှံမှုနှင့်ကူးသန်းရောင်းဝယ်ရေးဘဏ်"],"relationship":"Employer"}]}},{"hit":"11111","hitlight":"11111","similar":100,"hittype":"NSDC Unique ID","activestatus":"Inactive","d1":"Politically Exposed Person (PEP)","d2":["Sanctions Lists"],"d3":[],"countries":["Russia"],"docid":"1659749","systemdate":"2025-04-04 12:10:11.458","details":{"date":"03-Apr-2025","gender":"Male","deceased":"No","descriptions":{"description":[{"description1":"Politically Exposed Person (PEP)","description2":"","description3":""},{"description1":"Special Interest Person (SIP)","description2":"Sanctions Lists","description3":""}]},"nameDetails":{"Primary Name":["Vladimir Leonidovich Shemyakin","Владимир Леонидович Шемякин"],"Spelling Variation":["Vladimir Leonidovich Shemiakin","Volodymyr Leonidovych Shemiakin"],"Also Known As":["Volodymyr Leonidovych Shemyakin","Володимир Леонідович Шемякін","Volodymyr Shemiakin"]},"idNumberTypes":{"Others":["1045207050712"],"National Tax No.":["5256050056","710600916016"],"NSDC Unique ID":["11111"]},"dateDetails":{"Inactive as of (PEP)":["25-Oct-2013"],"Date of Birth":["16-Apr-1969"]},"birthPlace":["Revyakino,Russia"],"sanctionsReferences":{"Sanctions Lists":[{"date":"17-Oct-2016 to 15-May-2017","value":"2966 NSDC (Ukraine) Special Economic and Other Restrictive Measures (Sanctions) - 16 September 2015"},{"date":"15-May-2017 to 24-Jun-2024","value":"4114 NSDC (Ukraine) Special Economic and Other Restrictive Measures (Sanctions)"}]},"countryDetails":{"Resident of":["Russia"],"Citizenship":["Russia"]},"profileNotes":"NSDC (UKRAINE) NOTES:\n\nЗасновник ВАТ АК \"БайкалБанк\"\n\n1) блокування активів - тимчасове обмеження права особи користуватися та розпоряджатися належним їй майном;\n2) обмеження торговельних операцій (повне припинення);\n3) обмеження, часткове чи повне припинення транзиту ресурсів, польотів та перевезень територією України (повне припинення);\n4) запобігання виведенню капіталів за межі України;\n5) зупинення виконання економічних та фінансових зобов'язань;\n6) анулювання або зупинення ліцензій та інших дозволів, одержання (наявність) яких є умовою для здійснення певного виду діяльності, зокрема, анулювання чи зупинення дії спеціальних дозволів на користування надрами;\n7) заборона участі у приватизації, оренді державного майна резидентами іноземної держави та особами, які прямо чи опосередковано контролюються резидентами іноземної держави або діють в їх інтересах;\n8) повна заборона заходження іноземних невійськових суден та військових кораблів до територіального моря України, її внутрішніх вод, портів;\n9) заборона видачі дозволів, ліцензій Національного банку України на здійснення інвестицій в іноземну державу, розміщення валютних цінностей на рахунках і вкладах на території іноземної держави;\n10) припинення видачі дозволів, ліцензій на ввезення в Україну з іноземної держави чи вивезення з України валютних цінностей та обмеження видачі готівки за платіжними картками, емітованими резидентами іноземної держави;\n11) заборона передання технологій, прав на об’єкти права інтелектуальної власності;\n12) позбавлення державних нагород України, інших форм відзначення;\n13) інші санкції, що відповідають принципам їх застосування, встановленим Законом України 'Про санкції'\n\nASSOCIATED ENTITIES INFORMATION:\nVIDEO INTERNESHNL TREND\nV Trend Zao\nGruppa Trend Video International Zao","sourceDescription":["http://zakon5.rada.gov.ua/laws/show/n0014525-15","http://www.president.gov.ua/storage/j-files-storage/00/35/62/ab0cd3b8a93dc2cb8c626615928d16ed_1476737580.pdf","http://www.president.gov.ua/documents/4672016-20640","http://www.president.gov.ua/storage/j-files-storage/00/40/34/39e6a69b837b8f15f8885e00fbd9bae2_1494964345.pdf","http://www.president.gov.ua/documents/1332017-21850","http://www.president.gov.ua/documents/1262018-24150","http://www.president.gov.ua/storage/j-files-storage/00/60/66/b37b3c386bfc451b7767a8bb0e644596_1527145800.pdf","http://www.president.gov.ua/documents/1762018-24362","http://www.president.gov.ua/storage/j-files-storage/00/61/38/7acdc562eac694f9f6ff38876a6ce7da_1529653359.pdf","http://www.president.gov.ua/documents/decrees","https://www.president.gov.ua/documents/2662021-39265","https://www.president.gov.ua/storage/j-files-storage/01/01/21/a63898af4b5e4722b92381e451cfd4f5_1624542969.doc","https://drs.nsdc.gov.ua/export/subjects"],"images":["https://www.greatcircus.ru/app/blog/images/posts/20190416_110746_001__shemyakin.jpg","https://cdnmyslo.ru/NewsImage/30/a0/30a0533d-3e18-4e24-9b15-f6b905ddb08a_3.jpg"],"associate":[]}}]} + * @param search 查找关键字(如公司名称或人名) + * @param username 注册账户名 + * @param password 账户密码 + * @return JSON格式全部风险信息 + */ + @GetMapping("/apiDetails") + RmBaseResponseDTO queryAllRiskInfo( + @RequestParam("search") String search, + @RequestParam("username") String username, + @RequestParam("password") String password + ); +} \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/rm/controller/RmController.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/rm/controller/RmController.java new file mode 100644 index 0000000..8b1f6ed --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/rm/controller/RmController.java @@ -0,0 +1,111 @@ +package com.chinaunicom.mall.ebtp.extend.rm.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.extend.rm.client.RmClient; +import com.chinaunicom.mall.ebtp.extend.rm.entity.RmBaseResponseDTO; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +@RestController +@Api(tags = "合规风险系统接口") +@RequestMapping("/rm/api") +@Slf4j +public class RmController { + + @Value("${spring.rm.username}") + private String username; + + @Value("${spring.rm.password}") + private String password; + + @Resource + private RmClient rmClient; + + + /** + * 合规风险系统精确查询 + * @param search 查询条件 + * @return 合规风险系统响应数据 + */ + @GetMapping("/queryRiskInfo") + public BaseResponse> queryRiskInfo(@RequestParam("search") String search){ +// public BaseResponse> queryRiskInfo(@RequestParam("search") String search){ + RmBaseResponseDTO rmBaseResponseDTO = rmClient.queryRiskInfo(search, username, password); +// IPage page = new Page<>(1, 10); +// page.setRecords(rmBaseResponseDTO.getData()); +// page.setTotal(rmBaseResponseDTO.getDatasize()); + return BaseResponse.success(rmBaseResponseDTO.getData()); + } + + /** + * 合规风险系统精确查询详细 + * @param search 查询条件 + * @return 合规风险系统响应数据 + */ + @GetMapping("/queryRiskInfoDetails") + public BaseResponse> queryRiskInfoDetails(@RequestParam("search") String search){ +// public BaseResponse> queryRiskInfoDetails(@RequestParam("search") String search){ + RmBaseResponseDTO rmBaseResponseDTO = rmClient.queryAllRiskInfo(search, username, password); +// IPage page = new Page<>(1, 10); +// page.setRecords(rmBaseResponseDTO.getData()); +// page.setTotal(rmBaseResponseDTO.getDatasize()); + return BaseResponse.success(rmBaseResponseDTO.getData()); + } + + /** + * 风险系统判断逻辑 + */ + @GetMapping("/riskLevel") + public String riskLevel(RmBaseResponseDTO dto) { + if (dto == null || dto.getDatasize() == 0 || dto.getData() == null || dto.getData().isEmpty()) { + return "无风险"; + } + for (RmBaseResponseDTO.DataItem item : dto.getData()) { + String activestatus = item.getActivestatus(); + if (activestatus == null) { + continue; + } + if ("Inactive".equalsIgnoreCase(activestatus)) { + return "低风险"; + } + if ("Active".equalsIgnoreCase(activestatus)) { + String d1 = item.getD1(); + List d2 = item.getD2(); + List d3 = item.getD3(); + // d1存在才继续判断 + if (d1 != null && !d1.isEmpty()) { + if (d2 != null && !d2.isEmpty()) { + if (d2.contains("Other Official Lists")) { + return "中风险"; + } + if (d2.contains("Sanctions Lists") || d2.contains("Sanctions Control and Ownership")) { + return "高风险"; + } + } + if (d3 != null && !d3.isEmpty()) { + if (d3.contains("Attention")) { + return "中风险"; + } + if (d3.contains("Prohibited transactions and interactions") + || d3.contains("Prohibition") + || d3.contains("Prohibited transactions and cooperation")) { + return "高风险"; + } + } + } + } + } + return "无风险"; + } + +} \ No newline at end of file diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/rm/entity/RmBaseResponseDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/rm/entity/RmBaseResponseDTO.java new file mode 100644 index 0000000..3aac2b6 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/rm/entity/RmBaseResponseDTO.java @@ -0,0 +1,159 @@ +package com.chinaunicom.mall.ebtp.extend.rm.entity; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + *{"code":200,"message":"成功","datasize":3,"data":[{"hit":"11111","hitlight":"11111","similar":100,"hittype":"OFAC Unique ID","activestatus":"Inactive","d1":"Special Interest Entity (SIE)","d2":["Sanctions Lists"],"d3":["Ship"],"countries":["Iran"],"docid":"1016852","systemdate":"2025-02-26 14:31:24.201","nameDetails":{"name":[{"nameType":"Primary Name","nameValue":[{"entityName":["Iran Mahallati"],"firstName":[],"maidenName":[],"middleName":[],"originalScriptName":[],"singleStringName":[],"suffix":[],"surname":[],"titleHonorific":[]}]}]},"idNumberTypes":{"ID":[{"IDType":"OFAC Program ID","IDValue":[{"value":"NPWMD"}]},{"IDType":"OFAC Unique ID","IDValue":[{"value":"11111"}]},{"IDType":"International Maritime Organization (IMO) Ship No.","IDValue":[{"IDnotes":"Vessel Registration Identification","value":"7428823"}]}]},"sanctionsReferences":{"reference":[{"sinceDay":"10","sinceMonth":"Sep","sinceYear":"2008","toDay":"31","toMonth":"Mar","toYear":"2011","value":14}]}},{"hit":"11111","hitlight":"11111","similar":100,"hittype":"HM Treasury Group ID","activestatus":"Inactive","d1":"Politically Exposed Person (PEP)","d2":["Sanctions Lists"],"d3":[],"countries":["Myanmar"],"docid":"1356752","systemdate":"2025-02-26 14:31:24.201","nameDetails":{"name":[{"nameType":"Primary Name","nameValue":[{"entityName":[],"firstName":["Soe"],"maidenName":[],"middleName":[],"originalScriptName":["စိုးမင်း"],"singleStringName":["Soe Min"],"suffix":[],"surname":["Min"],"titleHonorific":[]}]}]},"idNumberTypes":{"ID":[{"IDType":"National ID","IDValue":[{"value":"12/BaTaHta (N) 021423"}]},{"IDType":"EU Sanctions Programme Indicator","IDValue":[{"value":"MMR"}]},{"IDType":"EU Consolidated Electronic List ID","IDValue":[{"value":"5633"}]},{"IDType":"HM Treasury Group ID","IDValue":[{"value":"11111"}]}]},"sanctionsReferences":{"reference":[{"sinceDay":"14","sinceMonth":"May","sinceYear":"2010","toDay":"16","toMonth":"May","toYear":"2012","value":275},{"sinceDay":"03","sinceMonth":"Dec","sinceYear":"2010","toDay":"10","toMonth":"May","toYear":"2012","value":299},{"sinceDay":"18","sinceMonth":"May","sinceYear":"2010","toDay":"14","toMonth":"May","toYear":"2012","value":507},{"sinceDay":"17","sinceMonth":"Jun","sinceYear":"2010","toDay":"08","toMonth":"Jun","toYear":"2012","value":1326},{"sinceDay":"26","sinceMonth":"Apr","sinceYear":"2010","toDay":"12","toMonth":"Apr","toYear":"2011","value":1440},{"sinceDay":"10","sinceMonth":"May","sinceYear":"2010","toDay":"18","toMonth":"Apr","toYear":"2011","value":1446},{"sinceDay":"12","sinceMonth":"Apr","sinceYear":"2011","toDay":"16","toMonth":"Aug","toYear":"2011","value":1694},{"sinceDay":"18","sinceMonth":"Apr","sinceYear":"2011","toDay":"01","toMonth":"Sep","toYear":"2011","value":1696},{"sinceDay":"16","sinceMonth":"Aug","sinceYear":"2011","toDay":"26","toMonth":"Apr","toYear":"2012","value":1802},{"sinceDay":"01","sinceMonth":"Sep","sinceYear":"2011","toDay":"14","toMonth":"May","toYear":"2012","value":1816}]}},{"hit":"11111","hitlight":"11111","similar":100,"hittype":"NSDC Unique ID","activestatus":"Inactive","d1":"Politically Exposed Person (PEP)","d2":["Sanctions Lists"],"d3":[],"countries":["Russia"],"docid":"1659749","systemdate":"2025-04-04 12:10:11.458","nameDetails":{"name":[{"nameType":"Primary Name","nameValue":[{"entityName":[],"firstName":["Vladimir"],"maidenName":[],"middleName":["Leonidovich"],"originalScriptName":["Владимир Леонидович Шемякин"],"singleStringName":[],"suffix":[],"surname":["Shemyakin"],"titleHonorific":[]}]},{"nameType":"Also Known As","nameValue":[{"entityName":[],"firstName":["Volodymyr"],"maidenName":[],"middleName":["Leonidovych"],"originalScriptName":["Володимир Леонідович Шемякін"],"singleStringName":[],"suffix":[],"surname":["Shemyakin"],"titleHonorific":[]},{"entityName":[],"firstName":["Volodymyr"],"maidenName":[],"middleName":[],"originalScriptName":[],"singleStringName":[],"suffix":[],"surname":["Shemiakin"],"titleHonorific":[]}]},{"nameType":"Spelling Variation","nameValue":[{"entityName":[],"firstName":["Vladimir"],"maidenName":[],"middleName":["Leonidovich"],"originalScriptName":[],"singleStringName":[],"suffix":[],"surname":["Shemiakin"],"titleHonorific":[]},{"entityName":[],"firstName":["Volodymyr"],"maidenName":[],"middleName":["Leonidovych"],"originalScriptName":[],"singleStringName":[],"suffix":[],"surname":["Shemiakin"],"titleHonorific":[]}]}]},"idNumberTypes":{"ID":[{"IDType":"Others","IDValue":[{"value":"1045207050712"}]},{"IDType":"National Tax No.","IDValue":[{"value":"5256050056"},{"value":"710600916016"}]},{"IDType":"NSDC Unique ID","IDValue":[{"value":"11111"}]}]},"sanctionsReferences":{"reference":[{"sinceDay":"17","sinceMonth":"Oct","sinceYear":"2016","toDay":"15","toMonth":"May","toYear":"2017","value":2966},{"sinceDay":"15","sinceMonth":"May","sinceYear":"2017","toDay":"24","toMonth":"Jun","toYear":"2024","value":4114}]}}]} + */ +@Data +public class RmBaseResponseDTO { + private int code; + private String message; + private int datasize; + private List data; + + + @Data + public static class DataItem { + private String hit; + private String hitlight; + private int similar; + private String hittype; + private String activestatus; + private String d1; + private List d2; + private List d3; + private List countries; + private String docid; + private String systemdate; + private NameDetails nameDetails; + private IdNumberTypes idNumberTypes; + private SanctionsReferences sanctionsReferences; + + // 精确查询 - details字段 + private Details details; + + @Data + public static class NameDetails { + private List name; + @Data + public static class Name { + private String nameType; + private List nameValue; + @Data + public static class NameValue { + private List entityName; + private List firstName; + private List maidenName; + private List middleName; + private List originalScriptName; + private List singleStringName; + private List suffix; + private List surname; + private List titleHonorific; + } + } + } + + @Data + public static class IdNumberTypes { + private List ID; + @Data + public static class ID { + private String IDType; + private List IDValue; + @Data + public static class IDValue { + private String value; + private String IDnotes; // 可选 + } + } + } + + @Data + public static class SanctionsReferences { + private List reference; + @Data + public static class Reference { + private String sinceDay; + private String sinceMonth; + private String sinceYear; + private String toDay; + private String toMonth; + private String toYear; + private int value; + } + } + + @Data + // 新增 details 对象 + public static class Details { + private String date; + private String gender; + private String deceased; + private Descriptions descriptions; + private Map> nameDetails; // 如 "Primary Name": [...] + private Map> idNumberTypes; // 如 "OFAC Unique ID": [...] + private Map> dateDetails; // 如 "Inactive as of (PEP)": [...] + private List birthPlace; + private SanctionsReferencesMap sanctionsReferences; + private Map> countryDetails; // 如 "Resident of": [...] + private String profileNotes; + private List sourceDescription; + private List images; + private List associate; + private List companyDetails; + private List vesselDetails; + @Data + public static class Descriptions { + private List description; + @Data + public static class Description { + private String description1; + private String description2; + private String description3; + } + } + + @Data + public static class SanctionsReferencesMap { + // 如 "Sanctions Lists": [{"date":"...","value":"..."}] + private Map> sanctionsLists; + @Data + public static class SanctionReference { + private String date; + private String value; + } + } + + @Data + public static class Associate { + private String activestatus; + private String d1; + private String d2; + private String docid; + private String ex; + private String primaryName; + private List primaryNameOriginalScriptName; + private String relationship; + } + + @Data + public static class CompanyDetails { + private String companyDetails; + } + + @Data + public static class VesselDetails { + private String vesselFlag; + private String vesselGRT; + private String vesselOwner; + private String vesselTonnage; + private String vesselType; + } + } + } +} \ No newline at end of file