/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 - 2 0 1 9 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġtech . fir as . util Ċ Ċ import Ġkotlin . random . Random Ċ import Ġkotlin . jvm . Jvm Static Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ġ@ author ĠW u ĠY up ing Ċ Ġ*/ Ċ class ĠChinese Related Random Utils ( private Ġval Ġrandom : ĠRandom ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsingleton Ġ= ĠChinese Related Random Utils ( Random . Default ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun ĠgetDefault (): ĠChinese Related Random Utils Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsingleton ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbasic Utils Ġ= Ġif Ġ( Random . Default Ġ== Ġthis . random ) ĠBasic Random Utils . getDefault () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠBasic Random Utils ( this . random ) ĊĠĠĠ Ġprivate Ġval Ġrandom StringUtils Ġ= Ġif Ġ( Random . Default Ġ== Ġthis . random ) ĠRandom StringUtils . getDefault () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠRandom StringUtils ( this . random ) ĊĠĠĠ Ġprivate Ġval Ġrandom DateTime Utils Ġ= Ġif Ġ( Random . Default Ġ== Ġthis . random ) ĠRandom DateTime Utils . getDefault () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠRandom DateTime Utils ( this . random ) ĊĊĠĠĠ Ġ/* Ġ-- == ĠMobile Ġnumber Ġ== -- Ġ*/ ĊĠĠĠ Ġfun Ġrandom Chinese Mobile (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" 1 " Ġ+ Ġ(' 0 '. toInt () Ġ+ Ġthis . basic Utils . random Int ( 3 , Ġ 9 )). to Char () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . random StringUtils . random Numeric String ( 9 , Ġ 9 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¸Ń åĽ½ ç§»åĬ¨ æīĭæľº åı· çłģ æ®µ ï¼Ī 2 0 1 9 ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġch inese Mobile Range Ġ= ĠarrayOf (" 1 3 4 ", Ġ" 1 3 5 ", Ġ" 1 3 6 ", Ġ" 1 3 7 ", Ġ" 1 3 8 ", Ġ" 1 3 9 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 4 7 ", Ġ" 1 4 8 ", Ġ" 1 5 0 ", Ġ" 1 5 1 ", Ġ" 1 5 2 ", Ġ" 1 5 7 ", Ġ" 1 5 8 ", Ġ" 1 5 9 ", Ġ" 1 6 5 ", Ġ" 1 7 2 ", Ġ" 1 7 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 8 2 ", Ġ" 1 8 3 ", Ġ" 1 8 4 ", Ġ" 1 8 7 ", Ġ" 1 8 8 ", Ġ" 1 9 8 ") ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¸Ń åĽ½ çĶµ ä¿¡ æīĭæľº åı· çłģ æ®µ ï¼Ī 2 0 1 9 ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġch inese Tele com Range Ġ= ĠarrayOf (" 1 3 3 ", Ġ" 1 4 9 ", Ġ" 1 5 3 ", Ġ" 1 7 3 ", Ġ" 1 7 4 ", Ġ" 1 7 7 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 8 0 ", Ġ" 1 8 1 ", Ġ" 1 8 9 ", Ġ" 1 9 1 ", Ġ" 1 9 3 ", Ġ" 1 9 9 ") ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¸Ń åĽ½ èģĶ éĢļ æīĭæľº åı· çłģ æ®µ ï¼Ī 2 0 1 9 ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġch inese Un icom Range Ġ= ĠarrayOf (" 1 3 0 ", Ġ" 1 3 1 ", Ġ" 1 3 2 ", Ġ" 1 4 5 ", Ġ" 1 4 6 ", Ġ" 1 5 5 ", Ġ" 1 5 6 ", Ġ" 1 6 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 7 5 ", Ġ" 1 7 6 ", Ġ" 1 8 5 ", Ġ" 1 8 6 ") ĊĊĠĠĠ Ġfun Ġrandom Chinese Mobile Strict (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġthis . random . nextInt ( chinese Mobile Range . size Ġ+ Ġch inese Tele com Range . size Ġ+ Ġch inese Un icom Range . size ) ĊĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ< Ġch inese Mobile Range . size Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġch inese Mobile Range [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ< Ġch inese Mobile Range . size Ġ+ Ġch inese Tele com Range . size Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġch inese Tele com Range [ i Ġ- Ġch inese Mobile Range . size ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġch inese Un icom Range [ i Ġ- Ġ( chinese Mobile Range . size Ġ+ Ġch inese Tele com Range . size )] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġprefix Ġ+ Ġthis . random StringUtils . random Numeric String ( 8 , Ġ 8 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrandom Chinese Id Card Number (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġthis . random . nextInt (_ Chinese Id Card Prefix . size ) ĊĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= Ġ_ Chinese Id Card Prefix [ i ] ĊĊĠĠĠĠĠĠĠ Ġval Ġyear Ġ= Ġthis . basic Utils . random Int ( 1 9 1 0 , Ġ 2 0 1 9 ) ĊĠĠĠĠĠĠĠ Ġval Ġmonth Ġ= Ġthis . random DateTime Utils . random Month () ĊĠĠĠĠĠĠĠ Ġval Ġday OfMonth Ġ= Ġthis . random DateTime Utils . random Day OfMonth ( month , Ġyear ) ĊĠĠĠĠĠĠĠ Ġval Ġbirthday Ġ= Ġ"$ year " Ġ+ Ġensure Two Digits ( month ) Ġ+ Ġensure Two Digits ( day OfMonth ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsuffix Ġ= Ġthis . random StringUtils . random Numeric String ( 3 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġmerged Ġ= Ġ"$ prefix $ birthday $ suffix " ĊĠĠĠĠĠĠĠ Ġvar Ġsum Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġid Card Coef . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsum Ġ+= Ġ( merged [ i ]. toInt () Ġ- Ġ' 0 '. toInt ()) Ġ* Ġid Card Coef [ i ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcheck Sum Ġ= Ġid Card check Number Array [ sum Ġ% Ġid Card check Number Array . size ] ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ merged $ check Sum " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġid Card Coef Ġ= Ġint ArrayOf ( 7 , Ġ 9 , Ġ 1 0 , Ġ 5 , Ġ 8 , Ġ 4 , Ġ 2 , Ġ 1 , Ġ 6 , Ġ 3 , Ġ 7 , Ġ 9 , Ġ 1 0 , Ġ 5 , Ġ 8 , Ġ 4 , Ġ 2 ) ĊĠĠĠ Ġprivate Ġval Ġid Card check Number Array Ġ= Ġchar ArrayOf (' 1 ', Ġ' 0 ', Ġ' X ', Ġ' 9 ', Ġ' 8 ', Ġ' 7 ', Ġ' 6 ', Ġ' 5 ', Ġ' 4 ', Ġ' 3 ', Ġ' 2 ') ĊĠĠĠ Ġprivate Ġfun Ġensure Two Digits ( n : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( n Ġ>= Ġ 1 0 ) Ġn . toString () Ġelse Ġ(" 0 $ n ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ expect Ġinternal Ġval Ġ_ Chinese Id Card Prefix : ĠList < String > Ċ