UpgradeCondition.php 248 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066
  1. <?php
  2. namespace common\models\common;
  3. use addons\Agent\common\models\Agent;
  4. use addons\Agent\common\models\AgentLevel;
  5. use addons\CloudStock\common\models\CloudStockPriceDifferenceUserTeamStatistics;
  6. use addons\Distribution\common\enums\DistributionEnum;
  7. use addons\PremiumDistribution\common\enums\PremiumDistributionEnum;
  8. use addons\Distribution\common\models\Distribution;
  9. use addons\PremiumDistribution\common\models\PremiumDistribution;
  10. use addons\Distribution\common\models\DistributionUpgradeCount;
  11. use addons\PremiumDistribution\common\models\PremiumDistributionUpgradeCount;
  12. use addons\LuckyGroup\common\models\LuckyGroupOrder;
  13. use addons\LuckyGroup\common\models\LuckyGroupUser;
  14. use addons\ServeBonus\common\logic\ConditionUpgradeLogic;
  15. use addons\ServeBonus\common\models\ServeBonusUpgradeCount;
  16. use addons\Store\common\models\StoreOrderDetail;
  17. use addons\UpgradeGift\common\enums\GiftEnum;
  18. use addons\UpgradeGift\common\listeners\UpgradeGiftListener;
  19. use addons\ZaoDoubleCopy\common\models\ZaoDoubleCopyAchievement;
  20. use addons\ZaoDoubleCopy\common\models\ZaoDoubleCopyUser;
  21. use common\enums\AddonsEnum;
  22. use common\enums\OrderStatusEnum;
  23. use common\enums\PayTypeEnum;
  24. use common\enums\RabbitMqEnum;
  25. use common\enums\StatusEnum;
  26. use common\enums\LevelUpgradeLogEnum;
  27. use common\events\census\UserUpgradeAfterEvent;
  28. use common\helpers\ArrayHelper;
  29. use common\models\base\BaseActiveRecord;
  30. use common\models\goods\GoodsCate;
  31. use common\models\goods\GoodsCateRelate;
  32. use common\models\mall\MallAddons;
  33. use common\models\order\Order;
  34. use common\models\order\OrderDetail;
  35. use common\models\statistics\UserAchievementStatisticsTotal;
  36. use common\models\statistics\UserStatistics;
  37. use common\models\statistics\UserStatisticsTotal;
  38. use common\models\statistics\UserTeamAchievementStatistics;
  39. use common\models\user\User;
  40. use common\models\user\UserLevel;
  41. use common\models\user\UserLevelUpgradeLog;
  42. use common\models\user\UserPartitionRelationship;
  43. use common\models\common\RechargeOrders;
  44. use common\models\user\UserLevelExpired;
  45. use common\models\user\UserTeamStatistics;
  46. use PHPUnit\Util\Exception;
  47. use Yii;
  48. use yii\db\Expression;
  49. use yii\helpers\Json;
  50. use addons\CloudStock\common\models\CloudStockLevel;
  51. use addons\DoubleCopy\common\models\DoubleCopyLevel;
  52. use addons\DoubleCopy\common\models\DoubleCopyUser;
  53. use addons\CloudStock\common\enums\CloudStockEnum;
  54. use addons\CloudStock\common\models\CloudStockAgent;
  55. use addons\CloudStock\common\models\CloudStockIncreaseDetail;
  56. use addons\CloudStock\common\models\CloudStockFillOrder;
  57. use addons\BossWeightBonus\common\models\AddonsBoss;
  58. use addons\CloudStock\common\models\CloudStockBuyingOrder;
  59. use common\models\user\UserStatisticsTotalCopy1;
  60. use common\models\user\UserTeamProfitStatistics;
  61. /**
  62. * This is the model class for table "{{%upgrade_condition}}".
  63. *
  64. * @property int $id
  65. * @property int $mall_id
  66. * @property string $content 内容
  67. * @property string $remark 备注
  68. * @property int $type 类型1:input;2:select
  69. * @property int $status 状态[-1:删除;0:禁用;1启用]
  70. * @property int $created_at
  71. * @property int $updated_at
  72. */
  73. class UpgradeCondition extends BaseActiveRecord
  74. {
  75. public static $boss_condition_ids = [8, 9, 10, 11, 12, 18, 19, 20, 21, 49, 50, 55, 64, 96, 120, 121]; //股东升级条件可显示的条件id
  76. public static $boss_weight_condition_ids = [8, 9, 10, 11, 12, 18, 19, 20, 21, 65,119, 120, 121]; //股东加权升级条件可显示的条件id
  77. public static $user_condition_ids = [1, 2, 3, 4, 5, 6, 7, 8, 54, 56, 66, 67, 68, 70, 80, 75, 90, 91, 96, 500, 501,502, 102, 105, 609,118,119, 120, 121]; //会员升级条件可显示的条件id
  78. public static $agent_condition_ids = [8, 9, 10, 11, 12, 14, 15, 16, 17, 47, 50, 55, 56, 64, 65, 67, 68, 69, 72, 75, 90, 96, 500, 501,502, 102, 105, 609, 120, 121]; //经销商(团队分红)升级条件可显示的条件id
  79. public static $agent_base_condition_ids = [8, 9, 10, 11, 12, 16, 17, 50, 55, 56, 64, 90, 96, 97, 98, 99, 100, 101, 500, 609, 120]; //渠道业绩升级条件可显示的条件id
  80. public static $distribution_condition_ids = [8, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 53, 55, 56, 71, 11, 96, 500, 501, 102,54, 609, 120, 121]; //分销商升级条件可显示的条件id
  81. public static $permium_distribution_condition_ids = [8, 22, 106, 107, 108, 109, 27, 28, 29, 30, 110, 111, 112, 113, 114, 115, 116, 55, 56, 117, 11, 96, 500, 501, 102,54]; //特级分销商升级条件可显示的条件id
  82. public static $servebonus_condition_ids = [8, 9, 10, 11, 12, 21, 37, 38, 39, 52, 102, 700, 701, 704, 705, 120, 121]; //服务商分红升级条件可显示的条件id
  83. public static $achievement_condition_ids = [8, 10, 11, 12, 40, 48, 50, 95, 96, 120, 121]; //业绩奖励升级条件可显示的条件id
  84. public static $achievement_b_condition_ids = [8, 10, 11, 12, 40, 48, 50, 95, 96, 120, 121]; //业绩奖励升级条件可显示的条件id
  85. public static $lucky_group_condition_ids = [8, 41, 42, 43, 44, 45]; // 幸运拼团升级条件可显示的条件id
  86. public static $zao_double_copy_condition_ids = [61, 62, 63]; //藻知道二二复制增加 会员升级条件可显示的条件id
  87. public static $operation_center_condition_ids = [8, 9]; // 内容中心 会员升级条件可显示的条件id
  88. public static $boss_weight_bonus_ondition_ids = [8, 9, 10, 11, 12, 18, 19, 20, 21, 22, 23, 55, 56, 61,62,63,64, 65,74, 120, 121]; //股东加权分红升级条件可显示的条件id
  89. public static $stockholder_condition_ids = [500, 501, 5];
  90. public static $agent_dividend_condition_ids = [8, 9, 10, 11, 12, 16, 17, 50, 55, 56, 64, 65, 90, 96, 500, 501,502, 102, 105,550,551,702, 120, 121]; //代理分红升级条件可显示的条件id
  91. public static $cloud_stock_install_condition_ids = [703]; //安装云库存增加 会员升级条件可显示的条件id
  92. public static $yj_commission_condition_ids = [8]; //业绩提成 店长升级条件可显示的条件id
  93. public static $data = [
  94. 1 => [
  95. 'id' => 1,
  96. 'content' => '个人订单数量满____笔,个人订单满____元',
  97. 'remark' => '注意:当个人支付订单满N笔,且个人支付订单金额满N元即可,售后不影响等级。(此条件仅计算平台订单)',
  98. 'type' => 'default',
  99. 'setting' => [
  100. ['type' => 'text', 'name' => 'personal_order_number', 'default_val' => 0],
  101. ['type' => 'text', 'name' => 'personal_order_total_price', 'default_val' => 0],
  102. ]
  103. ],
  104. 2 => [
  105. 'id' => 2,
  106. 'content' => '一级客户人数满____个,一级客户订单数量满____笔,一级客户订单满____元',
  107. 'remark' => '',
  108. 'type' => 'default',
  109. 'setting' => [
  110. ['type' => 'text', 'name' => 'direct_user_num', 'default_val' => 0],
  111. ['type' => 'text', 'name' => 'direct_user_order_number', 'default_val' => 0],
  112. ['type' => 'text', 'name' => 'direct_user_order_total_price', 'default_val' => 0],
  113. ]
  114. ],
  115. 3 => [
  116. 'id' => 3,
  117. 'content' => '二级客户人数满____个,二级客户订单数量满____笔,二级客户订单满____元',
  118. 'remark' => '',
  119. 'type' => 'default',
  120. 'setting' => [
  121. ['type' => 'text', 'name' => 'indirect_user_num', 'default_val' => 0],
  122. ['type' => 'text', 'name' => 'indirect_user_order_number', 'default_val' => 0],
  123. ['type' => 'text', 'name' => 'indirect_user_order_total_price', 'default_val' => 0],
  124. ]
  125. ],
  126. 4 => [
  127. 'id' => 4,
  128. 'content' => '团队人数(直推和间推)满____个,团队人数(直推和间推)订单数量满____笔,团队人数(直推和间推)订单满____元',
  129. 'remark' => '',
  130. 'type' => 'default',
  131. 'setting' => [
  132. ['type' => 'text', 'name' => 'team_user_num', 'default_val' => 0],
  133. ['type' => 'text', 'name' => 'team_user_order_number', 'default_val' => 0],
  134. ['type' => 'text', 'name' => 'team_user_order_total_price', 'default_val' => 0],
  135. ]
  136. ],
  137. 5 => [
  138. 'id' => 5,
  139. 'content' => '直推会员等级>=____数量____个',
  140. 'remark' => '',
  141. 'type' => 'default',
  142. 'setting' => [
  143. ['type' => 'select', 'name' => 'direct_user_level', 'default_val' => 0, 'source' => ['class' => 'common\models\user\UserLevel', 'method' => 'getUserListByUpgrade', 'key' => 'source_list']],
  144. ['type' => 'text', 'name' => 'direct_user_level_num', 'default_val' => 0],
  145. ]
  146. ],
  147. 6 => [
  148. 'id' => 6,
  149. 'content' => '间推会员等级>=____数量____个',
  150. 'remark' => '',
  151. 'type' => 'default',
  152. 'setting' => [
  153. ['type' => 'select', 'name' => 'indirect_user_level', 'default_val' => 0, 'source' => ['class' => 'common\models\user\UserLevel', 'method' => 'getUserListByUpgrade', 'key' => 'source_list']],
  154. ['type' => 'text', 'name' => 'indirect_user_level_num', 'default_val' => 0],
  155. ]
  156. ],
  157. 7 => [
  158. 'id' => 7,
  159. 'content' => '团队人数(直推和间推)等级>=____数量____个',
  160. 'remark' => '',
  161. 'type' => 'default',
  162. 'setting' => [
  163. ['type' => 'select', 'name' => 'team_user_level', 'default_val' => 0, 'source' => ['class' => 'common\models\user\UserLevel', 'method' => 'getUserListByUpgrade', 'key' => 'source_list']],
  164. ['type' => 'text', 'name' => 'team_user_level_num', 'default_val' => 0],
  165. ]
  166. ],
  167. 8 => [
  168. 'id' => 8,
  169. 'content' => '购买商品升级',
  170. 'remark' => '',
  171. 'type' => 'buy_goods',
  172. 'setting' => []
  173. ],
  174. 9 => [
  175. 'id' => 9,
  176. 'content' => '直推客户消费满____元的人数满____个,间推客户消费满____元的人数满____个',
  177. 'remark' => '',
  178. 'type' => 'default',
  179. 'setting' => [
  180. ['type' => 'text', 'name' => 'direct_user_consume', 'default_val' => 0],
  181. ['type' => 'text', 'name' => 'direct_user_consume_num', 'default_val' => 0],
  182. ['type' => 'text', 'name' => 'indirect_user_consume', 'default_val' => 0],
  183. ['type' => 'text', 'name' => 'indirect_user_consume_num', 'default_val' => 0],
  184. ]
  185. ],
  186. 10 => [
  187. 'id' => 10,
  188. 'content' => '直推____人,并且直推中购买商品ID____的人数____个',
  189. 'remark' => '',
  190. 'type' => 'default',
  191. 'setting' => [
  192. ['type' => 'text', 'name' => 'direct_user_num', 'default_val' => 0],
  193. ['type' => 'text', 'name' => 'direct_user_buy_goods_id', 'default_val' => 0],
  194. ['type' => 'text', 'name' => 'direct_user_buy_goods_id_num', 'default_val' => 0],
  195. ]
  196. ],
  197. 11 => [
  198. 'id' => 11,
  199. 'content' => "个人业绩____元,所有下级业绩____元",
  200. 'remark' => '统计的业绩包含平台+多商户',
  201. 'type' => 'default',
  202. 'setting' => [
  203. ['type' => 'text', 'name' => 'personal_achievement', 'default_val' => 0],
  204. ['type' => 'text', 'name' => 'subordinates_achievement', 'default_val' => 0],
  205. ]
  206. ],
  207. 12 => [
  208. 'id' => 12,
  209. 'content' => '间推客户数量____个,间推客户订单金额____元',
  210. 'remark' => '',
  211. 'type' => 'default',
  212. 'setting' => [
  213. ['type' => 'text', 'name' => 'indirect_user_num', 'default_val' => 0],
  214. ['type' => 'text', 'name' => 'indirect_user_order_price', 'default_val' => 0],
  215. ]
  216. ],
  217. 13 => [
  218. 'id' => 13,
  219. 'content' => '经销商默认等级达到____人',
  220. 'remark' => '',
  221. 'type' => 'default',
  222. 'setting' => [
  223. ['type' => 'text', 'name' => 'default_level', 'default_val' => 0],
  224. ]
  225. ],
  226. 14 => [
  227. 'id' => 14,
  228. 'content' => '直推经销商等级>=____数量____个',
  229. 'remark' => '',
  230. 'type' => 'default',
  231. 'setting' => [
  232. ['type' => 'select', 'name' => 'direct_agent_level', 'default_val' => 0, 'source' => ['class' => 'addons\Agent\common\models\AgentLevel', 'method' => 'getAgentListByUpgrade', 'key' => 'source_list']],
  233. ['type' => 'text', 'name' => 'direct_agent_level_num', 'default_val' => 0],
  234. ]
  235. ],
  236. 15 => [
  237. 'id' => 15,
  238. 'content' => '所有下级经销商等级>=____数量____个',
  239. 'remark' => '',
  240. 'type' => 'default',
  241. 'setting' => [
  242. ['type' => 'select', 'name' => 'subordinates_agent_level', 'default_val' => 0, 'source' => ['class' => 'addons\Agent\common\models\AgentLevel', 'method' => 'getAgentListByUpgrade', 'key' => 'source_list']],
  243. ['type' => 'text', 'name' => 'subordinates_agent_level_num', 'default_val' => 0],
  244. ]
  245. ],
  246. 16 => [
  247. 'id' => 16,
  248. 'content' => '所有下级单量指标____单',
  249. 'remark' => '',
  250. 'type' => 'default',
  251. 'setting' => [
  252. ['type' => 'text', 'name' => 'subordinates_order_num', 'default_val' => 0],
  253. ]
  254. ],
  255. 17 => [
  256. 'id' => 17,
  257. 'content' => '直推团队单量大于____单',
  258. 'remark' => '(团队总单量-团队中最高单量>=N单)',
  259. 'type' => 'default',
  260. 'setting' => [
  261. ['type' => 'text', 'name' => 'direct_team_order_num', 'default_val' => 0],
  262. ]
  263. ],
  264. 18 => [
  265. 'id' => 18,
  266. 'content' => '直推股东等级>=____数量____个',
  267. 'remark' => '',
  268. 'type' => 'default',
  269. 'setting' => [
  270. ['type' => 'select', 'name' => 'direct_boss_level', 'default_val' => 0, 'source' => ['class' => 'addons\Boss\common\models\AddonsBossLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  271. ['type' => 'text', 'name' => 'direct_boss_level_num', 'default_val' => 0],
  272. ]
  273. ],
  274. 19 => [
  275. 'id' => 19,
  276. 'content' => '间推股东等级>=____数量____个',
  277. 'remark' => '',
  278. 'type' => 'default',
  279. 'setting' => [
  280. ['type' => 'select', 'name' => 'indirect_boss_level', 'default_val' => 0, 'source' => ['class' => 'addons\Boss\common\models\AddonsBossLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  281. ['type' => 'text', 'name' => 'indirect_boss_level_num', 'default_val' => 0],
  282. ]
  283. ],
  284. 20 => [
  285. 'id' => 20,
  286. 'content' => '团队股东等级>=____数量____个',
  287. 'remark' => '',
  288. 'type' => 'default',
  289. 'setting' => [
  290. ['type' => 'select', 'name' => 'team_boss_level', 'default_val' => 0, 'source' => ['class' => 'addons\Boss\common\models\AddonsBossLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  291. ['type' => 'text', 'name' => 'team_boss_level_num', 'default_val' => 0],
  292. ]
  293. ],
  294. 21 => [
  295. 'id' => 21,
  296. 'content' => '直推客户消费满____元',
  297. 'remark' => '',
  298. 'type' => 'default',
  299. 'setting' => [
  300. ['type' => 'text', 'name' => 'direct_user_consume', 'default_val' => 0],
  301. ]
  302. ],
  303. 22 => [
  304. 'id' => 22,
  305. 'content' => '一级客户消费满____元的人数满____个',
  306. 'remark' => '',
  307. 'type' => 'default',
  308. 'setting' => [
  309. ['type' => 'text', 'name' => 'direct_user_consume', 'default_val' => 0],
  310. ['type' => 'text', 'name' => 'direct_user_consume_num', 'default_val' => 0],
  311. ]
  312. ],
  313. 23 => [
  314. 'id' => 23,
  315. 'content' => '分销佣金金额满____元',
  316. 'remark' => '',
  317. 'type' => 'default',
  318. 'setting' => [
  319. ['type' => 'text', 'name' => 'distribution_commission', 'default_val' => 0],
  320. ]
  321. ],
  322. 24 => [
  323. 'id' => 24,
  324. 'content' => '分销订单数量满____个',
  325. 'remark' => '',
  326. 'type' => 'default',
  327. 'setting' => [
  328. ['type' => 'text', 'name' => 'distribution_order_num', 'default_val' => 0],
  329. ]
  330. ],
  331. 25 => [
  332. 'id' => 25,
  333. 'content' => '一级分销佣金金额满____元',
  334. 'remark' => '',
  335. 'type' => 'default',
  336. 'setting' => [
  337. ['type' => 'text', 'name' => 'direct_user_distribution_commission', 'default_val' => 0],
  338. ]
  339. ],
  340. 26 => [
  341. 'id' => 26,
  342. 'content' => '一级分销订单数量满____个',
  343. 'remark' => '',
  344. 'type' => 'default',
  345. 'setting' => [
  346. ['type' => 'text', 'name' => 'direct_user_distribution_order_num', 'default_val' => 0],
  347. ]
  348. ],
  349. 27 => [
  350. 'id' => 27,
  351. 'content' => '自购订单金额满____元',
  352. 'remark' => '',
  353. 'type' => 'default',
  354. 'setting' => [
  355. ['type' => 'text', 'name' => 'self_purchase_order_total_price', 'default_val' => 0],
  356. ]
  357. ],
  358. 28 => [
  359. 'id' => 28,
  360. 'content' => '自购订单数量满____个',
  361. 'remark' => '',
  362. 'type' => 'default',
  363. 'setting' => [
  364. ['type' => 'text', 'name' => 'self_purchase_order_num', 'default_val' => 0],
  365. ]
  366. ],
  367. 29 => [
  368. 'id' => 29,
  369. 'content' => '粉丝人数满____人',
  370. 'remark' => '',
  371. 'type' => 'default',
  372. 'setting' => [
  373. ['type' => 'text', 'name' => 'fans_num', 'default_val' => 0],
  374. ]
  375. ],
  376. 30 => [
  377. 'id' => 30,
  378. 'content' => '一级粉丝人数满____人',
  379. 'remark' => '',
  380. 'type' => 'default',
  381. 'setting' => [
  382. ['type' => 'text', 'name' => 'direct_fans_num', 'default_val' => 0],
  383. ]
  384. ],
  385. 31 => [
  386. 'id' => 31,
  387. 'content' => '粉丝分销商人数满____人',
  388. 'remark' => '',
  389. 'type' => 'default',
  390. 'setting' => [
  391. ['type' => 'text', 'name' => 'fans_distribution_num', 'default_val' => 0],
  392. ]
  393. ],
  394. 32 => [
  395. 'id' => 32,
  396. 'content' => '一级粉丝分销商人数满____人',
  397. 'remark' => '',
  398. 'type' => 'default',
  399. 'setting' => [
  400. ['type' => 'text', 'name' => 'direct_fans_distribution_num', 'default_val' => 0],
  401. ]
  402. ],
  403. 33 => [
  404. 'id' => 33,
  405. 'content' => '分销结算佣金总额满____元',
  406. 'remark' => '',
  407. 'type' => 'default',
  408. 'setting' => [
  409. ['type' => 'text', 'name' => 'total_settlement_commission', 'default_val' => 0],
  410. ]
  411. ],
  412. 34 => [
  413. 'id' => 34,
  414. 'content' => '直推分销商等级>=____数量____个',
  415. 'remark' => '',
  416. 'type' => 'default',
  417. 'setting' => [
  418. ['type' => 'select', 'name' => 'direct_distribution_level', 'default_val' => 0, 'source' => ['class' => 'addons\Distribution\common\models\DistributionLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  419. ['type' => 'text', 'name' => 'direct_distribution_level_num', 'default_val' => 0],
  420. ]
  421. ],
  422. 35 => [
  423. 'id' => 35,
  424. 'content' => '间推分销商等级>=____数量____个',
  425. 'remark' => '',
  426. 'type' => 'default',
  427. 'setting' => [
  428. ['type' => 'select', 'name' => 'indirect_distribution_level', 'default_val' => 0, 'source' => ['class' => 'addons\Distribution\common\models\DistributionLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  429. ['type' => 'text', 'name' => 'indirect_distribution_level_num', 'default_val' => 0],
  430. ]
  431. ],
  432. 36 => [
  433. 'id' => 36,
  434. 'content' => '团队分销商(直推和间推)等级>=____数量____个',
  435. 'remark' => '',
  436. 'type' => 'default',
  437. 'setting' => [
  438. ['type' => 'select', 'name' => 'team_distribution_level', 'default_val' => 0, 'source' => ['class' => 'addons\Distribution\common\models\DistributionLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  439. ['type' => 'text', 'name' => 'team_distribution_level_num', 'default_val' => 0],
  440. ]
  441. ],
  442. 37 => [
  443. 'id' => 37,
  444. 'content' => '直推服务商等级____数量____个',
  445. 'remark' => '',
  446. 'type' => 'default',
  447. 'setting' => [
  448. ['type' => 'select', 'name' => 'direct_servebonus_level', 'default_val' => 0, 'source' => ['class' => 'addons\ServeBonus\common\models\ServeBonusLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  449. ['type' => 'text', 'name' => 'direct_servebonus_level_num', 'default_val' => 0],
  450. ]
  451. ],
  452. 38 => [
  453. 'id' => 38,
  454. 'content' => '间推服务商等级____数量____个',
  455. 'remark' => '',
  456. 'type' => 'default',
  457. 'setting' => [
  458. ['type' => 'select', 'name' => 'indirect_servebonus_level', 'default_val' => 0, 'source' => ['class' => 'addons\ServeBonus\common\models\ServeBonusLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  459. ['type' => 'text', 'name' => 'indirect_servebonus_level_num', 'default_val' => 0],
  460. ]
  461. ],
  462. 39 => [
  463. 'id' => 39,
  464. 'content' => '团队服务商等级____数量____个',
  465. 'remark' => '',
  466. 'type' => 'default',
  467. 'setting' => [
  468. ['type' => 'select', 'name' => 'team_servebonus_level', 'default_val' => 0, 'source' => ['class' => 'addons\ServeBonus\common\models\ServeBonusLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  469. ['type' => 'text', 'name' => 'team_servebonus_level_num', 'default_val' => 0],
  470. ]
  471. ],
  472. 40 => [
  473. 'id' => 40,
  474. 'content' => '直推客户消费满____元的人数满____个,团队客户消费满____元的人数满____个',
  475. 'remark' => '',
  476. 'type' => 'default',
  477. 'setting' => [
  478. ['type' => 'text', 'name' => 'direct_user_consume', 'default_val' => 0],
  479. ['type' => 'text', 'name' => 'direct_user_consume_num', 'default_val' => 0],
  480. ['type' => 'text', 'name' => 'team_user_consume', 'default_val' => 0],
  481. ['type' => 'text', 'name' => 'team_user_consume_num', 'default_val' => 0],
  482. ]
  483. ],
  484. 41 => [
  485. 'id' => 41,
  486. 'content' => '一级客户成功参团的人数满____个一级客户参团订单满____元',
  487. 'remark' => '',
  488. 'type' => 'default',
  489. 'setting' => [
  490. [ 'type' => 'text', 'name' => 'first_ca_people_numbers', 'default_val' => 0, 'source' => 'addons\LuckyGroup\common\models\LuckyGroupLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list', ],
  491. [ 'type' => 'text', 'name' => 'first_ca_order_money', 'default_val' => 0, ],
  492. ],
  493. ],
  494. 42 => [
  495. 'id' => 42,
  496. 'content' => '二级客户成功参团的人数满____个二级客户参团订单满____元',
  497. 'remark' => '',
  498. 'type' => 'default',
  499. 'setting' => [
  500. [ 'type' => 'text', 'name' => 'second_ca_people_numbers', 'default_val' => 0, 'source' => 'addons\LuckyGroup\common\models\LuckyGroupLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list', ],
  501. [ 'type' => 'text', 'name' => 'second_ca_order_money', 'default_val' => 0, ],
  502. ],
  503. ],
  504. 43 => [
  505. 'id' => 43,
  506. 'content' => '个人参团订单满____笔个人参团订单满____元',
  507. 'remark' => '',
  508. 'type' => 'default',
  509. 'setting' => [
  510. [ 'type' => 'text', 'name' => 'personal_ca_order_numbers', 'default_val' => 0, 'source' => 'addons\LuckyGroup\common\models\LuckyGroupLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list', ],
  511. [ 'type' => 'text', 'name' => 'personal_ca_order_money', 'default_val' => 0, ],
  512. ],
  513. ],
  514. 44 => [
  515. 'id' => 44,
  516. 'content' => '直推拼团等级____数量____个',
  517. 'remark' => '',
  518. 'type' => 'default',
  519. 'setting' => [
  520. ['type' => 'select', 'name' => 'direct_level', 'default_val' => 0, 'source' => ['class' => 'addons\LuckyGroup\common\models\LuckyGroupLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  521. [ 'type' => 'text', 'name' => 'direct_level_numbers', 'default_val' => 0, ],
  522. ],
  523. ],
  524. 45 => [
  525. 'id' => 45,
  526. 'content' => '间推拼团等级____数量____个',
  527. 'remark' => '',
  528. 'type' => 'default',
  529. 'setting' => [
  530. ['type' => 'select', 'name' => 'indirect_level', 'default_val' => 0, 'source' => ['class' => 'addons\LuckyGroup\common\models\LuckyGroupLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  531. [ 'type' => 'text', 'name' => 'indirect_level_numbers', 'default_val' => 0, ],
  532. ],
  533. ],
  534. 47 => [
  535. 'id' => 47,
  536. 'content' => '团队下____条____个____等级',
  537. 'remark' => '',
  538. 'type' => 'default',
  539. 'setting' => [
  540. ['type' => 'text', 'name' => 'team_num', 'default_val' => 0],
  541. ['type' => 'text', 'name' => 'level_num', 'default_val' => 0],
  542. ['type' => 'select', 'name' => 'agent_level', 'default_val' => 0, 'source' => ['class' => 'addons\Agent\common\models\AgentLevel', 'method' => 'getAgentListByUpgrade', 'key' => 'source_list']],
  543. ]
  544. ],
  545. 48 => [
  546. 'id' => 48,
  547. 'content' => '直推____人是____团队等级',
  548. 'remark' => '',
  549. 'type' => 'default',
  550. 'setting' => [
  551. ['type' => 'text', 'name' => 'direct_push_number', 'default_val' => 0],
  552. ['type' => 'select', 'name' => 'agent_level', 'default_val' => 0, 'source' => ['class' => 'addons\Agent\common\models\AgentLevel', 'method' => 'getAgentListByUpgrade', 'key' => 'source_list']],
  553. ]
  554. ],
  555. 49 => [
  556. 'id' => 49,
  557. 'content' => '团队业绩满____元',
  558. 'remark' => '',
  559. 'type' => 'default',
  560. 'setting' => [
  561. ['type' => 'text', 'name' => 'total_team_money', 'default_val' => 0],
  562. ]
  563. ],
  564. 50 => [
  565. 'id' => 50,
  566. 'content' => '团队累计购买指定商品____件,去除团队买件数最多者的团队购买数量后,剩余所有人累计购买满____件,商品ID组____ ', //后面留空格
  567. 'remark' => '',
  568. 'type' => 'default',
  569. 'setting' => [
  570. ['type' => 'text', 'name' => 'team_goods_buy_num', 'default_val' => 0],
  571. ['type' => 'text', 'name' => 'team_goods_buy_num_other', 'default_val' => 0],
  572. ['type' => 'selectGoods', 'name' => 'team_goods', 'default_val' => ''],
  573. ]
  574. ],
  575. 51 => [
  576. 'id' => 51,
  577. 'content' => '个人充值或消费满____元',
  578. 'remark' => '',
  579. 'type' => 'default',
  580. 'setting' => [
  581. ['type' => 'text', 'name' => 'used_total_price', 'default_val' => 0],
  582. ]
  583. ],
  584. 52 => [
  585. 'id' => 52,
  586. 'content' => '成为服务商后,好友人数____人,下级团队业绩达到____元',
  587. 'remark' => '注意:帮助用户升级到此等级的直推用户人数跟团队团队业绩(订单完成)都将不再进行统计',
  588. 'type' => 'default',
  589. 'setting' => [
  590. ['type' => 'text', 'name' => 'direct_num', 'default_val' => 0],
  591. ['type' => 'text', 'name' => 'team_achievement', 'default_val' => 0],
  592. ]
  593. ],
  594. 53 => [
  595. 'id' => 53,
  596. 'content' => '成为分销商后,好友人数____人,下级团队业绩达到____元',
  597. 'remark' => '注意:帮助用户升级到此等级的直推用户人数跟团队团队业绩(订单完成)都将不再进行统计',
  598. 'type' => 'default',
  599. 'setting' => [
  600. ['type' => 'text', 'name' => 'distribution_direct_num', 'default_val' => 0],
  601. ['type' => 'text', 'name' => 'distribution_team_achievement', 'default_val' => 0],
  602. ]
  603. ],
  604. 54 => [
  605. 'id' => 54,
  606. 'content' => '购买门店商品升级',
  607. 'remark' => '',
  608. 'type' => 'buy_store_goods',
  609. 'setting' => []
  610. ],
  611. 55 => [
  612. 'id' => 55,
  613. 'content' => '个人订单满____笔,个人订单满____元',
  614. 'remark' => '注意:当个人支付订单满N笔,且个人支付订单金额满N元即可,售后不影响等级。(此条件仅计算平台订单)',
  615. 'type' => 'default',
  616. 'setting' => [
  617. ['type' => 'text', 'name' => 'personal_order_num', 'default_val' => 0],
  618. ['type' => 'text', 'name' => 'personal_order_achievement', 'default_val' => 0],
  619. ]
  620. ],
  621. 56 => [
  622. 'id' => 56,
  623. 'content' => '个人订单满____笔,个人订单满____元
  624. <input type="checkbox" name="personal_order_checkbox_56[]" checked value="1">平台</input>
  625. <input type="checkbox" name="personal_order_checkbox_56[]" value="2">多商户</input>
  626. ',
  627. 'remark' => '注意:当个人支付订单满N笔,且个人支付订单金额满N元即可,售后不影响等级。',
  628. 'type' => 'default',
  629. 'is_html' => true,
  630. 'setting' => [
  631. ['type' => 'text', 'name' => 'personal_order_num_56', 'default_val' => 0],
  632. ['type' => 'text', 'name' => 'personal_order_achievement_56', 'default_val' => 0],
  633. [
  634. 'type' => 'checkbox', 'name' => 'personal_order_checkbox_56', 'is_checkbox' => true, 'default_val' => [1],
  635. 'source' => ['class' => self::class, 'method' => 'getPersonalCheckbox56', 'key' => 'personal_checkbox_56']
  636. ],
  637. ]
  638. ],
  639. 61 => [
  640. 'id' => 61,
  641. 'content' => '链动一二号市场总业绩达____元,且单个市场业绩达____元',
  642. 'remark' => '',
  643. 'type' => 'default',
  644. 'setting' => [
  645. ['type' => 'text', 'name' => 'achievement', 'default_val' => 0],
  646. ['type' => 'text', 'name' => 'single_market', 'default_val' => 0],
  647. ]
  648. ],
  649. 62 => [
  650. 'id' => 62,
  651. 'content' => '链动一二号市场购买链动商品订单数达____件,且单个市场订单数达____件',
  652. 'remark' => '',
  653. 'type' => 'default',
  654. 'setting' => [
  655. ['type' => 'text', 'name' => 'achievement_order_num', 'default_val' => 0],
  656. ['type' => 'text', 'name' => 'single_market_order_num', 'default_val' => 0],
  657. ]
  658. ],
  659. 63 => [
  660. 'id' => 63,
  661. 'content' => '链动团队除最大市场外(即业绩最高市场)的团队小市场业绩总和达(不含复购链动商品)达____元',
  662. 'remark' => '',
  663. 'type' => 'default',
  664. 'setting' => [
  665. ['type' => 'text', 'name' => 'achievement_small', 'default_val' => 0],
  666. ]
  667. ],
  668. 64 => [
  669. 'id' => 64,
  670. 'content' => '团队总业绩____达到____元,业绩最高的前____个部门,每个部门的业绩不能低于____元',
  671. 'remark' => '',
  672. 'type' => 'default',
  673. 'setting' => [
  674. ['type' => 'select', 'name' => 'achievement_type', 'default_val' => 0, 'source' => ['class' => 'common\models\common\UpgradeCondition', 'method' => 'getAchievementType', 'key' => 'achievement_type_list']],
  675. ['type' => 'text', 'name' => 'team_achievement', 'default_val' => 0],
  676. ['type' => 'text', 'name' => 'direct_num', 'default_val' => 0],
  677. ['type' => 'text', 'name' => 'direct_achievement', 'default_val' => 0],
  678. ]
  679. ],
  680. 65 => [
  681. 'id' => 65,
  682. 'content' => '直推____人,当中____个团队的订单大于等于____单,团队总订单____单,商品类目ID组',
  683. 'remark' => '指定商品类目中的订单且为支付后才会进行计算',
  684. 'type' => 'default',
  685. 'setting' => [
  686. ['type' => 'text', 'name' => 'team_achievement', 'default_val' => 0],
  687. ['type' => 'text', 'name' => 'team_achievement_people_num', 'default_val' => 0],
  688. ['type' => 'text', 'name' => 'team_achievement_order_num', 'default_val' => 0],
  689. ['type' => 'text', 'name' => 'team_total_order_num', 'default_val' => 0],
  690. ['type' => 'selectGoodsCats', 'name' => 'team_goods_cats', 'default_val' => ''],
  691. ]
  692. ],
  693. 66 => [
  694. 'id' => 66,
  695. 'content' => '所有下级会员等级>=____且数量达到____个',
  696. 'remark' => '',
  697. 'type' => 'default',
  698. 'setting' => [
  699. ['type' => 'select', 'name' => 'user_level', 'default_val' => '', 'source' => ['class' => 'common\models\user\UserLevel', 'method' => 'getUserListByUpgrade', 'key' => 'source_list']],
  700. ['type' => 'text', 'name' => 'user_num', 'default_val' => ''],
  701. ]
  702. ],
  703. 67 => [
  704. 'id' => 67,
  705. 'content' => '二二复制____等级直推____等级____人,团队产生____等级____人',
  706. 'remark' => '',
  707. 'type' => 'default',
  708. 'setting' => [
  709. ['type' => 'select', 'name' => 'self_level', 'default_val' => '', 'source' => ['class' => 'common\models\common\UpgradeCondition', 'method' => 'getDoubleCopyLevelList', 'key' => 'double_copy_level_list']],
  710. ['type' => 'select', 'name' => 'level', 'default_val' => '', 'source' => ['class' => 'common\models\common\UpgradeCondition', 'method' => 'getDoubleCopyLevelList', 'key' => 'double_copy_level_list']],
  711. ['type' => 'text', 'name' => 'nums', 'default_val' => 0],
  712. ['type' => 'select', 'name' => 'c_level', 'default_val' => '', 'source' => ['class' => 'common\models\common\UpgradeCondition', 'method' => 'getDoubleCopyLevelList', 'key' => 'double_copy_level_list']],
  713. ['type' => 'text', 'name' => 'c_nums', 'default_val' => 0],
  714. ]
  715. ],
  716. 68 => [
  717. 'id' => 68,
  718. 'content' => '直推____个云仓代理____,且补货指定商品____个,商品ID组____',
  719. 'remark' => '',
  720. 'type' => 'default',
  721. 'setting' => [
  722. ['type' => 'text', 'name' => 'direct_num', 'default_val' => 0],
  723. ['type' => 'select', 'name' => 'agent_level', 'default_val' => '', 'source' => ['class' => 'common\models\common\UpgradeCondition', 'method' => 'getCloudStockLevelList', 'key' => 'cloud_stock_level_list']],
  724. ['type' => 'text', 'name' => 'fill_num', 'default_val' => 0],
  725. ['type' => 'selectCloudStockGoods', 'name' => 'team_goods', 'default_val' => ''],
  726. ]
  727. ],
  728. 69 => [
  729. 'id' => 69,
  730. 'content' => '个人补货指定____商品____',
  731. 'remark' => '',
  732. 'type' => 'default',
  733. 'setting' => [
  734. ['type' => 'select', 'name' => 'condition_type', 'default_val' => '0', 'source' => ['class' => 'common\models\common\UpgradeCondition', 'method' => 'getConditionType', 'key' => 'cloud_stock_goods_list']],
  735. ['type' => 'selectCloudStockGoodsCondition', 'name' => 'team_goods', 'default_val' => []],
  736. ]
  737. ],
  738. 70 => [
  739. 'id' => 70,
  740. 'content' => "个人业绩____元,所有下级业绩____元",
  741. 'remark' => '统计的业绩包含平台+多商户',
  742. 'type' => 'default',
  743. 'setting' => [
  744. ['type' => 'text', 'name' => 'personal_achievement', 'default_val' => 0],
  745. ['type' => 'text', 'name' => 'subordinates_achievement', 'default_val' => 0],
  746. ]
  747. ],
  748. 121 => [
  749. 'id' => 121,
  750. 'content' => "个人业绩____元",
  751. 'remark' => '统计的业绩包含平台+多商户',
  752. 'type' => 'default',
  753. 'setting' => [
  754. ['type' => 'text', 'name' => 'personal_achievement', 'default_val' => 0],
  755. ]
  756. ],
  757. 80 => [
  758. 'id' => 80,
  759. 'content' => '____等级,直推____等级数量____个,同时直推业绩____元',
  760. 'remark' => '',
  761. 'type' => 'default',
  762. 'setting' => [
  763. ['type' => 'select', 'name' => 'user_level', 'default_val' => '', 'source' => ['class' => 'common\models\user\UserLevel', 'method' => 'getUserListByUpgrade', 'key' => 'source_list']],
  764. ['type' => 'select', 'name' => 'child_level', 'default_val' => '', 'source' => ['class' => 'common\models\user\UserLevel', 'method' => 'getUserListByUpgrade', 'key' => 'source_list']],
  765. ['type' => 'text', 'name' => 'rec_num', 'default_val' => 0],
  766. ['type' => 'text', 'name' => 'direct_performance', 'default_val' => 0],
  767. ]
  768. ],
  769. 71 => [
  770. 'id' => 71,
  771. 'content' => '____等级,直推____等级数量____个,同时直推业绩____元',
  772. 'remark' => '',
  773. 'type' => 'default',
  774. 'setting' => [
  775. ['type' => 'select', 'name' => 'user_level', 'default_val' => '', 'source' => ['class' => 'addons\Distribution\common\models\DistributionLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  776. ['type' => 'select', 'name' => 'child_level', 'default_val' => '', 'source' => ['class' => 'addons\Distribution\common\models\DistributionLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  777. ['type' => 'text', 'name' => 'rec_num', 'default_val' => 0],
  778. ['type' => 'text', 'name' => 'direct_performance', 'default_val' => 0],
  779. ]
  780. ],
  781. 72 => [
  782. 'id' => 72,
  783. 'content' => '____等级,直推____等级数量____个,同时直推业绩____元',
  784. 'remark' => '',
  785. 'type' => 'default',
  786. 'setting' => [
  787. ['type' => 'select', 'name' => 'user_level', 'default_val' => '', 'source' => ['class' => 'addons\Agent\common\models\AgentLevel', 'method' => 'getAgentListByUpgrade', 'key' => 'source_list']],
  788. ['type' => 'select', 'name' => 'child_level', 'default_val' => '', 'source' => ['class' => 'addons\Agent\common\models\AgentLevel', 'method' => 'getAgentListByUpgrade', 'key' => 'source_list']],
  789. ['type' => 'text', 'name' => 'rec_num', 'default_val' => 0],
  790. ['type' => 'text', 'name' => 'direct_performance', 'default_val' => 0],
  791. ]
  792. ],
  793. 74 => [
  794. 'id' => 74,
  795. 'content' => '____等级,直推____等级数量____个,同时直推业绩____元',
  796. 'remark' => '',
  797. 'type' => 'default',
  798. 'setting' => [
  799. ['type' => 'select', 'name' => 'user_level', 'default_val' => '', 'source' => ['class' => 'addons\BossWeightBonus\common\models\AddonsBossLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  800. ['type' => 'select', 'name' => 'child_level', 'default_val' => '', 'source' => ['class' => 'addons\BossWeightBonus\common\models\AddonsBossLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  801. ['type' => 'text', 'name' => 'rec_num', 'default_val' => 0],
  802. ['type' => 'text', 'name' => 'direct_performance', 'default_val' => 0],
  803. ]
  804. ],
  805. 75 => [
  806. 'id' => 75,
  807. 'content' => '间推经销商等级>=____数量____个',
  808. 'remark' => '',
  809. 'type' => 'default',
  810. 'setting' => [
  811. ['type' => 'select', 'name' => 'indirect_agent_level', 'default_val' => 0, 'source' => ['class' => 'addons\Agent\common\models\AgentLevel', 'method' => 'getAgentListByUpgrade', 'key' => 'source_list']],
  812. ['type' => 'text', 'name' => 'indirect_agent_level_num', 'default_val' => 0],
  813. ]
  814. ],
  815. 90 => [
  816. 'id' => 90,
  817. 'content' => '购买商品数量累计达到____件',
  818. 'remark' => '',
  819. 'type' => 'default',
  820. 'setting' => [
  821. ['type' => 'text', 'name' => 'buy_num', 'default_val' => 0],
  822. ]
  823. ],
  824. 91 => [
  825. 'id' => 91,
  826. 'content' => '购买指定商品,商品ID组____',
  827. 'remark' => '购买其中任意一个商品并且支付成功即可满足此条件',
  828. 'type' => 'default',
  829. 'setting' => [
  830. ['type' => 'selectGoods', 'name' => 'goods_ids', 'default_val' => ''],
  831. ]
  832. ],
  833. 95 => [
  834. 'id' => 95,
  835. 'content' => '成为渠道分红等级会员',
  836. 'remark' => '',
  837. 'type' => 'default',
  838. 'setting' => [
  839. [
  840. 'type' => 'checkbox', 'name' => 'checked_level', 'default_val' => [],
  841. 'source' => ['class' => AgentLevel::class, 'method' => 'getLevelCheckbox', 'key' => 'source_list']
  842. ],
  843. ]
  844. ],
  845. 96 => [
  846. 'id' => 96,
  847. 'content' => "个人团队业绩-直推下级最高团队业绩 >= ____元",
  848. 'remark' => '统计的业绩包含平台+多商户',
  849. 'type' => 'default',
  850. 'setting' => [
  851. ['type' => 'text', 'name' => 'money', 'default_val' => 0],
  852. ]
  853. ],
  854. 97 => [
  855. 'id' => 97,
  856. 'content' => '直推经渠道等级>=____数量____个',
  857. 'remark' => '',
  858. 'type' => 'default',
  859. 'setting' => [
  860. ['type' => 'select', 'name' => 'direct_agent_level', 'default_val' => '', 'source' => ['class' => 'addons\AgentBase\common\models\AgentBaseLevel', 'method' => 'getAgentListByUpgrade', 'key' => 'source_list']],
  861. ['type' => 'text', 'name' => 'direct_agent_level_num', 'default_val' => 0],
  862. ]
  863. ],
  864. 98 => [
  865. 'id' => 98,
  866. 'content' => '所有下级渠道等级>=____数量____个',
  867. 'remark' => '',
  868. 'type' => 'default',
  869. 'setting' => [
  870. ['type' => 'select', 'name' => 'subordinates_agent_level', 'default_val' => '', 'source' => ['class' => 'addons\AgentBase\common\models\AgentBaseLevel', 'method' => 'getAgentListByUpgrade', 'key' => 'source_list']],
  871. ['type' => 'text', 'name' => 'subordinates_agent_level_num', 'default_val' => ''],
  872. ]
  873. ],
  874. 99 => [
  875. 'id' => 99,
  876. 'content' => '团队下____条____个____等级',
  877. 'remark' => '',
  878. 'type' => 'default',
  879. 'setting' => [
  880. ['type' => 'text', 'name' => 'team_num', 'default_val' => 0],
  881. ['type' => 'text', 'name' => 'level_num', 'default_val' => 0],
  882. ['type' => 'select', 'name' => 'agent_level', 'default_val' => '', 'source' => ['class' => 'addons\AgentBase\common\models\AgentBaseLevel', 'method' => 'getAgentListByUpgrade', 'key' => 'source_list']],
  883. ]
  884. ],
  885. 100 => [
  886. 'id' => 100,
  887. 'content' => '____等级,直推____等级数量____个,同时直推业绩____元',
  888. 'remark' => '',
  889. 'type' => 'default',
  890. 'setting' => [
  891. ['type' => 'select', 'name' => 'user_level', 'default_val' => '', 'source' => ['class' => 'addons\AgentBase\common\models\AgentBaseLevel', 'method' => 'getAgentListByUpgrade', 'key' => 'source_list']],
  892. ['type' => 'select', 'name' => 'child_level', 'default_val' => '', 'source' => ['class' => 'addons\AgentBase\common\models\AgentBaseLevel', 'method' => 'getAgentListByUpgrade', 'key' => 'source_list']],
  893. ['type' => 'text', 'name' => 'rec_num', 'default_val' => 0],
  894. ['type' => 'text', 'name' => 'direct_performance', 'default_val' => 0],
  895. ]
  896. ],
  897. 101 => [
  898. 'id' => 101,
  899. 'content' => '间推渠道等级>=____数量____个',
  900. 'remark' => '',
  901. 'type' => 'default',
  902. 'setting' => [
  903. ['type' => 'select', 'name' => 'indirect_agent_level', 'default_val' => '', 'source' => ['class' => 'addons\AgentBase\common\models\AgentBaseLevel', 'method' => 'getAgentListByUpgrade', 'key' => 'source_list']],
  904. ['type' => 'text', 'name' => 'indirect_agent_level_num', 'default_val' => 0],
  905. ]
  906. ],
  907. 102 => [
  908. 'id' => 102,
  909. 'content' => '指定商品ID____,并且单笔订单金额满____元',
  910. 'remark' => '注意:可填写多个商品每个商品间用英文逗号隔开,订单金额必须是订单完成的金额',
  911. 'type' => 'default',
  912. 'setting' => [
  913. ['type' => 'text', 'name' => 'goods_ids', 'default_val' => ''],
  914. ['type' => 'text', 'name' => 'finish_order_money', 'default_val' => 0],
  915. ]
  916. ],
  917. 105 => [
  918. 'id' => 105,
  919. 'content' => "群组(团队包含本人)商品售价业绩____达到____元",
  920. 'remark' => '统计的业绩包含平台+多商户',
  921. 'type' => 'default',
  922. 'setting' => [
  923. ['type' => 'radio', 'name' => 'is_when_settlement', 'default_val' => 0, 'source' => ['class' => self::class, 'method' => 'getWhenSettlement', 'key' => 'radio_when_settlement_list']],
  924. ['type' => 'text', 'name' => 'money', 'default_val' => 0],
  925. ]
  926. ],
  927. 106 => [
  928. 'id' => 106,
  929. 'content' => '分销佣金金额满____元',
  930. 'remark' => '',
  931. 'type' => 'default',
  932. 'setting' => [
  933. ['type' => 'text', 'name' => 'distribution_commission', 'default_val' => 0],
  934. ]
  935. ],
  936. 107 => [
  937. 'id' => 107,
  938. 'content' => '分销订单数量满____个',
  939. 'remark' => '',
  940. 'type' => 'default',
  941. 'setting' => [
  942. ['type' => 'text', 'name' => 'distribution_order_num', 'default_val' => 0],
  943. ]
  944. ],
  945. 108 => [
  946. 'id' => 108,
  947. 'content' => '一级分销佣金金额满____元',
  948. 'remark' => '',
  949. 'type' => 'default',
  950. 'setting' => [
  951. ['type' => 'text', 'name' => 'direct_user_distribution_commission', 'default_val' => 0],
  952. ]
  953. ],
  954. 109 => [
  955. 'id' => 109,
  956. 'content' => '一级分销订单数量满____个',
  957. 'remark' => '',
  958. 'type' => 'default',
  959. 'setting' => [
  960. ['type' => 'text', 'name' => 'direct_user_distribution_order_num', 'default_val' => 0],
  961. ]
  962. ],
  963. 110 => [
  964. 'id' => 110,
  965. 'content' => '粉丝分销商人数满____人',
  966. 'remark' => '',
  967. 'type' => 'default',
  968. 'setting' => [
  969. ['type' => 'text', 'name' => 'fans_distribution_num', 'default_val' => 0],
  970. ]
  971. ],
  972. 111 => [
  973. 'id' => 111,
  974. 'content' => '一级粉丝分销商人数满____人',
  975. 'remark' => '',
  976. 'type' => 'default',
  977. 'setting' => [
  978. ['type' => 'text', 'name' => 'direct_fans_distribution_num', 'default_val' => 0],
  979. ]
  980. ],
  981. 112 => [
  982. 'id' => 112,
  983. 'content' => '分销结算佣金总额满____元',
  984. 'remark' => '',
  985. 'type' => 'default',
  986. 'setting' => [
  987. ['type' => 'text', 'name' => 'total_settlement_commission', 'default_val' => 0],
  988. ]
  989. ],
  990. 113 => [
  991. 'id' => 113,
  992. 'content' => '直推分销商等级>=____数量____个',
  993. 'remark' => '',
  994. 'type' => 'default',
  995. 'setting' => [
  996. ['type' => 'select', 'name' => 'direct_distribution_level', 'default_val' => 0, 'source' => ['class' => 'addons\Distribution\common\models\DistributionLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  997. ['type' => 'text', 'name' => 'direct_distribution_level_num', 'default_val' => 0],
  998. ]
  999. ],
  1000. 114 => [
  1001. 'id' => 114,
  1002. 'content' => '间推分销商等级>=____数量____个',
  1003. 'remark' => '',
  1004. 'type' => 'default',
  1005. 'setting' => [
  1006. ['type' => 'select', 'name' => 'indirect_distribution_level', 'default_val' => 0, 'source' => ['class' => 'addons\Distribution\common\models\DistributionLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  1007. ['type' => 'text', 'name' => 'indirect_distribution_level_num', 'default_val' => 0],
  1008. ]
  1009. ],
  1010. 115 => [
  1011. 'id' => 115,
  1012. 'content' => '团队分销商(直推和间推)等级>=____数量____个',
  1013. 'remark' => '',
  1014. 'type' => 'default',
  1015. 'setting' => [
  1016. ['type' => 'select', 'name' => 'team_distribution_level', 'default_val' => 0, 'source' => ['class' => 'addons\Distribution\common\models\DistributionLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  1017. ['type' => 'text', 'name' => 'team_distribution_level_num', 'default_val' => 0],
  1018. ]
  1019. ],
  1020. 116 => [
  1021. 'id' => 116,
  1022. 'content' => '成为分销商后,好友人数____人,下级团队业绩达到____元',
  1023. 'remark' => '注意:帮助用户升级到此等级的直推用户人数跟团队团队业绩(订单完成)都将不再进行统计',
  1024. 'type' => 'default',
  1025. 'setting' => [
  1026. ['type' => 'text', 'name' => 'distribution_direct_num', 'default_val' => 0],
  1027. ['type' => 'text', 'name' => 'distribution_team_achievement', 'default_val' => 0],
  1028. ]
  1029. ],
  1030. 117 => [
  1031. 'id' => 117,
  1032. 'content' => '____等级,直推____等级数量____个,同时直推业绩____元',
  1033. 'remark' => '',
  1034. 'type' => 'default',
  1035. 'setting' => [
  1036. ['type' => 'select', 'name' => 'user_level', 'default_val' => '', 'source' => ['class' => 'addons\PremiumDistribution\common\models\PremiumDistributionLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  1037. ['type' => 'select', 'name' => 'child_level', 'default_val' => '', 'source' => ['class' => 'addons\PremiumDistribution\common\models\PremiumDistributionLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  1038. ['type' => 'text', 'name' => 'rec_num', 'default_val' => 0],
  1039. ['type' => 'text', 'name' => 'direct_performance', 'default_val' => 0],
  1040. ]
  1041. ],
  1042. 500 => [
  1043. 'id' => 500,
  1044. 'content' => "指定商品<el-tooltip class='item' effect='dark' content='设置>订单设置>业绩设置。请根据以上指引路径进行设置' placement='top'>
  1045. <i class='el-icon-info'></i></el-tooltip>,<span>总团队业绩</span>
  1046. <span class='radio-inline' v-if='is_set_condition'>(<input type='radio' id='include_yourself_1' name='is_include_yourself' value='0'>
  1047. <label for='include_yourself_1'>包含自己</label>
  1048. <input type='radio' id='include_yourself_0' name='is_include_yourself' value='0' checked>
  1049. <label for='include_yourself_0'>不包含自己</label>)</span><span style='display:none;'>____</span>
  1050. <span>达到____元,大市场业绩达到____元,小市场业绩达到____元 <el-tooltip class='item' effect='dark' content='统计的业绩包含平台+多商户' placement='top'>
  1051. <i class='el-icon-info'></i></el-tooltip> (</span>
  1052. <span class='radio-inline' v-if='is_set_condition'><input type='radio' id='is_when_settlement_500_1' name='is_when_settlement_500' value='0'>
  1053. <label for='is_when_settlement_500_1'>订单支付</label>
  1054. <input type='radio' id='is_when_settlement_500_0' name='is_when_settlement_500' value='0' checked>
  1055. <label for='is_when_settlement_500_0'>订单完成</label></span><span style='display:none;'>____</span>
  1056. <span>) 业绩计算类型(</span>
  1057. <span class='radio-inline' v-if='is_set_condition'><input type='radio' id='settle_achievement_500_0' name='settle_achievement_500' value='0' checked>
  1058. <label for='settle_achievement_500_0'>商品利润</label>
  1059. <input type='radio' id='settle_achievement_500_1' name='settle_achievement_500' value='0'>
  1060. <label for='settle_achievement_500_1'>实付金额</label>)</span><span style='display:none;'>____</span>
  1061. <span>)</span>",
  1062. 'remark' => '',
  1063. 'type' => 'default',
  1064. 'is_html' => 1,
  1065. 'setting' => [
  1066. ['type' => 'radio', 'name' => 'is_include_yourself', 'default_val' => 0, 'source' => ['class' => self::class, 'method' => 'getIsIncludesSelf', 'key' => 'radio_includes_self_list']],
  1067. ['type' => 'text', 'name' => 'total_performance', 'default_val' => 0],
  1068. ['type' => 'text', 'name' => 'max_performance', 'default_val' => 0],
  1069. ['type' => 'text', 'name' => 'min_performance', 'default_val' => 0],
  1070. ['type' => 'radio', 'name' => 'is_when_settlement', 'default_val' => 0, 'source' => ['class' => self::class, 'method' => 'getWhenSettlement', 'key' => 'radio_when_settlement_list']],
  1071. ['type' => 'radio', 'name' => 'settle_achievement', 'default_val' => 0, 'source' => ['class' => self::class, 'method' => 'getSettleAchievement', 'key' => 'radio_settle_achievement_list']],
  1072. ]
  1073. ],
  1074. 501 => [
  1075. 'id' => 501,
  1076. 'content' => "<span>累积消费商品利润达到____元</span>
  1077. <span class='radio-inline' v-if='is_set_condition'>(<input type='radio' id='is_when_settlement_501_1' name='is_when_settlement_501' value='0'>
  1078. <label for='is_when_settlement_501_1'>订单支付</label>
  1079. <input type='radio' id='is_when_settlement_501_0' name='is_when_settlement_501' value='0' checked>
  1080. <label for='is_when_settlement_501_0'>订单完成</label>)</span><span style='display:none;'>____</span>",
  1081. 'remark' => '',
  1082. 'type' => 'default',
  1083. 'is_html' => 1,
  1084. 'setting' => [
  1085. ['type' => 'text', 'name' => 'consume_amount', 'default_val' => 0],
  1086. ['type' => 'radio', 'name' => 'is_when_settlement', 'default_val' => 0, 'source' => ['class' => self::class, 'method' => 'getWhenSettlement', 'key' => 'radio_when_settlement_list']],
  1087. ]
  1088. ],
  1089. 502 => [
  1090. 'id' => 502,
  1091. 'content' => '自己+团队累计购买件数达到____件',
  1092. 'remark' => '',
  1093. 'type' => 'default',
  1094. 'setting' => [
  1095. ['type' => 'text', 'name' => 'self_team_order_goods_num', 'default_val' => 0],
  1096. ]
  1097. ],
  1098. 550 => [
  1099. 'id' => 550,
  1100. 'content' => '直推经销商等级>=____数量____个',
  1101. 'remark' => '',
  1102. 'type' => 'default',
  1103. 'setting' => [
  1104. ['type' => 'select', 'name' => 'direct_agent_level', 'default_val' => 0, 'source' => ['class' => 'addons\AgentDividend\common\models\AgentLevel', 'method' => 'getAgentListByUpgrade', 'key' => 'source_list']],
  1105. ['type' => 'text', 'name' => 'direct_agent_level_num', 'default_val' => 0],
  1106. ]
  1107. ],
  1108. 551 => [
  1109. 'id' => 551,
  1110. 'content' => '所有下级经销商等级>=____数量____个',
  1111. 'remark' => '',
  1112. 'type' => 'default',
  1113. 'setting' => [
  1114. ['type' => 'select', 'name' => 'subordinates_agent_level', 'default_val' => 0, 'source' => ['class' => 'addons\AgentDividend\common\models\AgentLevel', 'method' => 'getAgentListByUpgrade', 'key' => 'source_list']],
  1115. ['type' => 'text', 'name' => 'subordinates_agent_level_num', 'default_val' => 0],
  1116. ]
  1117. ],
  1118. 609 => [
  1119. 'id' => 609,
  1120. 'content' => '购买指定商品,商品ID组____,且数量累计达到____件',
  1121. 'remark' => '购买其中任意一个商品并且支付成功,且数量达到件数要求即可满足此条件',
  1122. 'type' => 'default',
  1123. 'setting' => [
  1124. ['type' => 'text', 'name' => 'goods_ids', 'default_val' => ''],
  1125. ['type' => 'text', 'name' => 'goods_num', 'default_val' => 0],
  1126. ]
  1127. ],
  1128. 700 => [
  1129. 'id' => 700,
  1130. 'content' => '团队满足____条线内,达到____个成员,晋升____以上等级',
  1131. 'remark' => '',
  1132. 'type' => 'default',
  1133. 'setting' => [
  1134. ['type' => 'text', 'name' => 'num', 'default_val' => 0],
  1135. ['type' => 'text', 'name' => 'member_num', 'default_val' => 0],
  1136. ['type' => 'select', 'name' => 'servebonus_level', 'default_val' => 0, 'source' => ['class' => 'addons\ServeBonus\common\models\ServeBonusLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list']],
  1137. ]
  1138. ],
  1139. 701 => [
  1140. 'id' => 701,
  1141. 'content' => "<span>总团队业绩</span>
  1142. <span class='radio-inline' v-if='is_set_condition'>(<input type='radio' id='include_yourself_1' name='is_include_yourself' value='0'>
  1143. <label for='include_yourself_1'>包含自己</label>
  1144. <input type='radio' id='include_yourself_0' name='is_include_yourself' value='0' checked>
  1145. <label for='include_yourself_0'>不包含自己</label>)</span><span style='display:none;'>____</span>
  1146. <span>达到____元,大市场业绩达到____元,小市场业绩达到____元</span>
  1147. <span class='radio-inline' v-if='is_set_condition'>(<input type='radio' id='is_when_settlement_701_1' name='is_when_settlement_701' value='0'>
  1148. <label for='is_when_settlement_701_1'>订单支付</label>
  1149. <input type='radio' id='is_when_settlement_701_0' name='is_when_settlement_701' value='0' checked>
  1150. <label for='is_when_settlement_701_0'>订单完成</label>)</span><span style='display:none;'>____</span>",
  1151. 'remark' => '',
  1152. 'type' => 'default',
  1153. 'is_html' => 1,
  1154. 'setting' => [
  1155. ['type' => 'radio', 'name' => 'is_include_yourself', 'default_val' => 0, 'source' => ['class' => self::class, 'method' => 'getIsIncludesSelf', 'key' => 'radio_includes_self_list']],
  1156. ['type' => 'text', 'name' => 'total_performance', 'default_val' => 0],
  1157. ['type' => 'text', 'name' => 'max_performance', 'default_val' => 0],
  1158. ['type' => 'text', 'name' => 'min_performance', 'default_val' => 0],
  1159. ['type' => 'radio', 'name' => 'is_when_settlement', 'default_val' => 0, 'source' => ['class' => self::class, 'method' => 'getWhenSettlement', 'key' => 'radio_when_settlement_list']],
  1160. ]
  1161. ],
  1162. 702 => [
  1163. 'id' => 702,
  1164. 'content' => '团队满足____条线内,达到____个成员,晋升____以上等级',
  1165. 'remark' => '',
  1166. 'type' => 'default',
  1167. 'setting' => [
  1168. ['type' => 'text', 'name' => 'num', 'default_val' => 0],
  1169. ['type' => 'text', 'name' => 'member_num', 'default_val' => 0],
  1170. ['type' => 'select', 'name' => 'servebonus_level', 'default_val' => 0, 'source' => ['class' => 'addons\AgentDividend\common\models\AgentLevel', 'method' => 'getAgentListByUpgrade', 'key' => 'source_list']],
  1171. ]
  1172. ],
  1173. 703 => [
  1174. 'id' => 703,
  1175. 'content' => '所有云库存商品进货金额累计达到____元',
  1176. 'remark' => '',
  1177. 'type' => 'default',
  1178. 'setting' => [
  1179. ['type' => 'text', 'name' => 'num', 'default_val' => 0]
  1180. ]
  1181. ],
  1182. 704 => [
  1183. 'id' => 704,
  1184. 'content' => '成为____云库存等级后,在____天内培养____条线都存在____云库存等级且团队业绩累积达到____万,最大分支业绩计算不超过____万(超出部分不计算升级业绩,其他分支正常计算)',
  1185. 'remark' => '',
  1186. 'type' => 'default',
  1187. 'setting' => [
  1188. ['type' => 'select', 'name' => 'cloud_stock_level', 'default_val' => '', 'source' => ['class' => 'addons\CloudStock\common\models\CloudStockLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list1']],
  1189. ['type' => 'text', 'name' => 'day_num', 'default_val' => 0],
  1190. ['type' => 'text', 'name' => 'line_num', 'default_val' => 0],
  1191. ['type' => 'select', 'name' => 'child_cloud_stock_level', 'default_val' => '', 'source' => ['class' => 'addons\CloudStock\common\models\CloudStockLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list2']],
  1192. ['type' => 'text', 'name' => 'accumulated_performance', 'default_val' => 0],
  1193. ['type' => 'text', 'name' => 'max_accumulated_performance', 'default_val' => 0],
  1194. ]
  1195. ],
  1196. 705 => [
  1197. 'id' => 705,
  1198. 'content' => '成为____云库存等级后,在____天内培养____条线都存在____服务商等级且团队业绩累积达到____万,最大分支业绩计算不超过____万(超出部分不计算升级业绩,其他分支正常计算)',
  1199. 'remark' => '',
  1200. 'type' => 'default',
  1201. 'setting' => [
  1202. ['type' => 'select', 'name' => 'cloud_stock_level', 'default_val' => '', 'source' => ['class' => 'addons\CloudStock\common\models\CloudStockLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list3']],
  1203. ['type' => 'text', 'name' => 'day_num', 'default_val' => 0],
  1204. ['type' => 'text', 'name' => 'line_num', 'default_val' => 0],
  1205. ['type' => 'select', 'name' => 'serve_bonus_level', 'default_val' => '', 'source' => ['class' => 'addons\ServeBonus\common\models\ServeBonusLevel', 'method' => 'getListByUpgrade', 'key' => 'source_list4']],
  1206. ['type' => 'text', 'name' => 'accumulated_performance', 'default_val' => 0],
  1207. ['type' => 'text', 'name' => 'max_accumulated_performance', 'default_val' => 0],
  1208. ]
  1209. ],
  1210. 118 => [
  1211. 'id' => 118,
  1212. 'content' => '团队____条线,出现____个____等级',
  1213. 'remark' => '',
  1214. 'type' => 'default',
  1215. 'setting' => [
  1216. ['type' => 'text', 'name' => 'team_num', 'default_val' => 0],
  1217. ['type' => 'text', 'name' => 'level_num', 'default_val' => 0],
  1218. ['type' => 'select', 'name' => 'agent_level', 'default_val' => 0, 'source' => ['class' => 'common\models\user\UserLevel', 'method' => 'getUserListByUpgrade', 'key' => 'source_list']],
  1219. ]
  1220. ],
  1221. 119 => [
  1222. 'id' => 119,
  1223. 'content' => "指定商品<el-tooltip class='item' effect='dark' content='设置>订单设置>业绩设置。请根据以上指引路径进行设置' placement='top'>
  1224. <i class='el-icon-info'></i></el-tooltip>,<span>总团队业绩</span>
  1225. <span class='radio-inline' v-if='is_set_condition'>(<input type='radio' id='include_yourself_1' name='is_include_yourself' value='0'>
  1226. <label for='include_yourself_1'>包含自己</label>
  1227. <input type='radio' id='include_yourself_0' name='is_include_yourself' value='0' checked>
  1228. <label for='include_yourself_0'>不包含自己</label>)</span><span style='display:none;'>____</span>
  1229. <span>达到____元,大市场业绩达到____元,某一小市场业绩达到____元</span>
  1230. <span class='radio-inline' v-if='is_set_condition'>(<input type='radio' id='is_when_settlement_119_1' name='is_when_settlement_119' value='0'>
  1231. <label for='is_when_settlement_119_1'>订单支付</label>
  1232. <input type='radio' id='is_when_settlement_119_0' name='is_when_settlement_119' value='0' checked>
  1233. <label for='is_when_settlement_119_0'>订单完成</label>)</span><span style='display:none;'>____</span>",
  1234. 'remark' => '',
  1235. 'type' => 'default',
  1236. 'is_html' => 1,
  1237. 'setting' => [
  1238. ['type' => 'radio', 'name' => 'is_include_yourself', 'default_val' => 0, 'source' => ['class' => self::class, 'method' => 'getIsIncludesSelf', 'key' => 'radio_includes_self_list']],
  1239. ['type' => 'text', 'name' => 'total_performance', 'default_val' => 0],
  1240. ['type' => 'text', 'name' => 'max_performance', 'default_val' => 0],
  1241. ['type' => 'text', 'name' => 'min_performance', 'default_val' => 0],
  1242. ['type' => 'radio', 'name' => 'is_when_settlement', 'default_val' => 0, 'source' => ['class' => self::class, 'method' => 'getWhenSettlement', 'key' => 'radio_when_settlement_list']],
  1243. ]
  1244. ],
  1245. 120 => [
  1246. 'id' => 120,
  1247. 'content' => "指定商品<el-tooltip class='item' effect='dark' content='设置>订单设置>业绩设置。请根据以上指引路径进行设置' placement='top'>
  1248. <i class='el-icon-info'></i></el-tooltip>,<span>个人累计达到____元,小区业绩达到____元</span>
  1249. <span class='radio-inline' v-if='is_set_condition'>(<input type='radio' id='is_when_settlement_120_1' name='is_when_settlement_120' value='0' checked>
  1250. <label for='settle_price_0'>实付金额</label>
  1251. <input type='radio' id='settle_price_120_0' name='is_when_settlement_120' value='1' >
  1252. <label for='settle_price_120_1'>商品售价</label>)</span>",
  1253. 'remark' => '',
  1254. 'type' => 'default',
  1255. 'is_html' => 1,
  1256. 'setting' => [
  1257. ['type' => 'text', 'name' => 'personal_achievement', 'default_val' => 0],
  1258. ['type' => 'text', 'name' => 'min_performance', 'default_val' => 0],
  1259. ['type' => 'radio', 'name' => 'settle_price', 'default_val' => 0, 'source' => ['class' => self::class, 'method' => 'getSettlePrice', 'key' => 'getSettlePrice']],
  1260. ]
  1261. ],
  1262. ];
  1263. /**
  1264. * {@inheritdoc}
  1265. */
  1266. public static function tableName()
  1267. {
  1268. return '{{%upgrade_condition}}';
  1269. }
  1270. /**
  1271. * {@inheritdoc}
  1272. */
  1273. public function rules()
  1274. {
  1275. return [
  1276. [['mall_id'], 'required'],
  1277. [['mall_id', 'status', 'created_at', 'updated_at'], 'integer'],
  1278. [['content'], 'string', 'max' => 1000],
  1279. [['remark'], 'string', 'max' => 255],
  1280. ];
  1281. }
  1282. /**
  1283. * {@inheritdoc}
  1284. */
  1285. public function attributeLabels()
  1286. {
  1287. return [
  1288. 'id' => 'ID',
  1289. 'mall_id' => 'Mall ID',
  1290. 'content' => '内容',
  1291. 'remark' => '备注',
  1292. 'status' => '状态[-1:删除;0:禁用;1启用]',
  1293. 'created_at' => 'Created At',
  1294. 'updated_at' => 'Updated At',
  1295. ];
  1296. }
  1297. /**
  1298. * 保存数据
  1299. * @param array $params
  1300. * @return bool|UpgradeCondition
  1301. */
  1302. public static function setData(array $params)
  1303. {
  1304. try {
  1305. if (!empty($params['id'])) {
  1306. $model = self::findOne(['id' => $params['id'], 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]);
  1307. if (empty($model)) throw new Exception('服务不存在或已删除');
  1308. } else {
  1309. $model = new self();
  1310. $model->loadDefaultValues();
  1311. }
  1312. isset($params['content']) && $model->content = $params['content'];
  1313. isset($params['remark']) && $model->remark = $params['remark'];
  1314. isset($params['status']) && $model->status = $params['status'];
  1315. isset($params['mall_id']) && $model->mall_id = $params['mall_id'];
  1316. $res = $model->save();
  1317. if ($res === false) throw new Exception($model->getErrorMessage());
  1318. return $model;
  1319. } catch (Exception $e) {
  1320. self::$static_error = $e->getMessage();
  1321. return false;
  1322. }
  1323. }
  1324. /**
  1325. * 删除
  1326. * @param $id
  1327. * @param $status
  1328. * @return bool
  1329. */
  1330. public static function del($id, $status)
  1331. {
  1332. try {
  1333. $query = self::find()->where([
  1334. 'and',
  1335. ['id' => $id],
  1336. ['<>', 'status', StatusEnum::DELETE]
  1337. ]);
  1338. $model = $query->one();
  1339. $model->status = $status;
  1340. $model->save();
  1341. return true;
  1342. } catch (\Exception $e) {
  1343. return false;
  1344. }
  1345. }
  1346. public static function getDataAttr()
  1347. {
  1348. return static::$data;
  1349. }
  1350. public static function getData($ids = [])
  1351. {
  1352. $rows = static::getDataAttr();
  1353. $arr = [];
  1354. if (empty($ids)) return $rows;
  1355. foreach ($ids as $id) {
  1356. if(isset($rows[$id]) == false) continue;
  1357. $arr[] = $rows[$id];
  1358. }
  1359. $arr = array_values(ArrayHelper::arraySort($arr, 'id', 'asc'));
  1360. return $arr;
  1361. }
  1362. /**
  1363. * 获取升级条件模板数据
  1364. * @param $obj
  1365. * @param $mall_id
  1366. * @param $rules
  1367. * @param $source
  1368. * @return array
  1369. */
  1370. public static function getUpgradeConditionData($obj, $mall_id, $rules, $source = '',$is_show_condition = 1,$ext_params = [])
  1371. {
  1372. $rule_list = [];
  1373. $is_buy_goods = 0;
  1374. $is_buy_store_goods = 0;
  1375. $source_list = [];
  1376. $key_arr = [];
  1377. $enable_goods_protocol = $source == 'user_level' ? 1 : 0;
  1378. $buy_store_goods_limit = $ext_params['buy_store_goods_limit'] ?? 20;
  1379. $checkbox_list = [];
  1380. foreach ($rules as $k => $item) {
  1381. if ($item['type'] == 'buy_goods') {
  1382. $is_buy_goods = 1;
  1383. continue;
  1384. }
  1385. if ($item['type'] == 'buy_store_goods') {
  1386. if(!MallAddons::isInstall($mall_id,'Store')) continue;
  1387. $is_buy_store_goods = 1;
  1388. continue;
  1389. }
  1390. if (!empty($item['setting'])) {
  1391. foreach ($item['setting'] as &$sett) {
  1392. if ($sett['type'] == 'selectGoodsCats') {
  1393. $sett['default_val'] = empty($sett['default_val']) ? Json::encode([]) : $sett['default_val'];
  1394. }
  1395. }
  1396. }
  1397. $rule_list[] = $item;
  1398. $row = [];
  1399. $row['key'] = $item['id'];
  1400. if($item['setting']){
  1401. foreach ($item['setting'] as $value) {
  1402. $row['value'][$value['name']] = '';
  1403. if ($item['id'] == 95) {
  1404. $row['value'][$value['name']] = [];
  1405. }
  1406. if ($value['is_checkbox']) {
  1407. $row['value'][$value['name']] = [];
  1408. if (!empty($value['default_val'])) {
  1409. $row['value'][$value['name']] = $value['default_val'];
  1410. }
  1411. }
  1412. if (!empty($value['source']['class']) && !empty($value['source']['method']) && class_exists($value['source']['class'])) {
  1413. $class = $value['source']['class'];
  1414. $method = $value['source']['method'];
  1415. $rows = $class::$method(['mall_id' => $mall_id]);
  1416. if ($value['type'] == 'checkbox') {
  1417. $checkbox_list[$value['source']['key']] = $rows;
  1418. } else {
  1419. $source_list[$value['source']['key']] = $rows;
  1420. }
  1421. }
  1422. }
  1423. }
  1424. $key_arr[] = $row;
  1425. }
  1426. $rule_list = array_values(array_filter($rule_list, function ($val) {
  1427. return !empty($val);
  1428. }));
  1429. $source_list = json_encode($source_list, JSON_NUMERIC_CHECK);
  1430. $checkbox_list = json_encode($checkbox_list, JSON_NUMERIC_CHECK);
  1431. $key_arr = json_encode($key_arr, JSON_NUMERIC_CHECK);
  1432. $cats = Json::encode(GoodsCate::getTreeCate(GoodsCate::lists([
  1433. 'where' => [
  1434. ['mall_id' => $mall_id],
  1435. ['status' => StatusEnum::ENABLED]
  1436. ],
  1437. 'select'=> 'id, name, parent_id'
  1438. ])));
  1439. $key_arr = Json::decode($key_arr);
  1440. $key_arr = array_values(array_filter($key_arr, function ($val) {
  1441. return !empty($val['key']);
  1442. }));
  1443. $tpl = $obj->renderPartial('@backend/modules/mall/views/upgrade-condition/tpl/tpl.php', ['rules' => $rule_list,
  1444. 'is_buy_goods' => $is_buy_goods,
  1445. 'is_buy_store_goods' => $is_buy_store_goods,
  1446. 'mall_id' => $mall_id,
  1447. 'enable_goods_protocol' => $enable_goods_protocol,
  1448. 'is_show_condition' => $is_show_condition,
  1449. 'buy_store_goods_limit' => $buy_store_goods_limit,
  1450. ]);
  1451. return ['tpl' => $tpl, 'source_list' => $source_list, 'key_arr' => Json::encode($key_arr), 'cat_list' => $cats, 'checkbox_list' => $checkbox_list];
  1452. }
  1453. /**
  1454. * @desc:校验
  1455. * @Author: hua
  1456. * @Date: 2021/10/19
  1457. * @Time: 14:26
  1458. * @Copyright: copyright (c) 2021 广东七件事集团
  1459. * @param $user_id
  1460. * @param $agent_level_arr
  1461. * @param $mall_id
  1462. * @param int $order_id 订单ID
  1463. * @return bool
  1464. */
  1465. public static function check($user_id, $agent_level_arr, $mall_id = 0, $upgrade_level = 0, $order_id = 0)
  1466. {
  1467. if (empty($agent_level_arr['condition_type'])) return false;
  1468. $condition_type = $agent_level_arr['condition_type'];
  1469. $keys_arr = json_decode($agent_level_arr['checked_condition_keys'], true);
  1470. $values_arr = json_decode($agent_level_arr['checked_condition_values'], true);
  1471. if (empty($values_arr)) return false;
  1472. $arr = []; //升级条件
  1473. foreach ($values_arr as $K => $v) {
  1474. $arr[$v['key']] = $v;
  1475. }
  1476. $is_return = false;
  1477. sort($keys_arr);
  1478. foreach ($keys_arr as $id) {
  1479. $function = 'condition' . $id;
  1480. $params['condition_data'] = static::getDataAttr();
  1481. $params['user_id'] = $user_id;
  1482. $params['arr'] = $arr;
  1483. $params['key'] = $id;
  1484. $params['children_id_arr1'] = [];
  1485. $params['children_id_arr2'] = [];
  1486. $params['user_id_arr'] = [];
  1487. $params['children_id_arr'] = [];
  1488. $params['name1'] = '';
  1489. $params['name2'] = '';
  1490. $params['model_class'] = '';
  1491. $params['data'] = [];
  1492. $params['mall_id'] = $mall_id;
  1493. $params['upgrade_level'] = $upgrade_level;
  1494. $params['order_id'] = $order_id;
  1495. if (!method_exists(static::class, $function)) continue;
  1496. $is_bool = static::$function($params);
  1497. //满足其一
  1498. if ($condition_type == 1) {
  1499. if ($is_bool) {
  1500. $is_return = true;
  1501. break;
  1502. } else {
  1503. $is_return = false;
  1504. }
  1505. }
  1506. //满足所有
  1507. if ($condition_type == 2) {
  1508. if ($is_bool) {
  1509. $is_return = true;
  1510. } else {
  1511. $is_return = false;
  1512. break;
  1513. }
  1514. }
  1515. }
  1516. return $is_return;
  1517. }
  1518. /**
  1519. * @desc:购买商品升级
  1520. * @Author: hua
  1521. * @Date: 2021/10/19
  1522. * @Time: 14:51
  1523. * @Copyright: copyright (c) 2021 广东七件事集团
  1524. * @param $user_id
  1525. * @param $goods_type
  1526. * @param $buy_goods_id
  1527. * @param $goods_id_arr
  1528. * @return bool
  1529. */
  1530. public static function buyGoods($goods_type, $buy_goods_id, $goods_id_arr, $extParams = [])
  1531. {
  1532. //任意商品
  1533. if ($goods_type == 1) return true;
  1534. //购买指定商品
  1535. if ($goods_type == 2) {
  1536. $is_custom_condition_num = $extParams['is_custom_condition_num'] ?? 0;
  1537. if (!$is_custom_condition_num) {
  1538. if (array_intersect($buy_goods_id, $goods_id_arr)) return true;
  1539. } else {
  1540. $buy_goods_type = $extParams['buy_goods_type'];
  1541. $condition_num_map = $extParams['condition_num_map'];
  1542. $mall_id = $extParams['mall_id'];
  1543. $user_id = $extParams['user_id'];
  1544. $where = [
  1545. [
  1546. 'mall_id' => $mall_id,
  1547. 'user_id' => $user_id,
  1548. 'status' => StatusEnum::ENABLED,
  1549. 'goods_id' => $goods_id_arr,
  1550. ]
  1551. ];
  1552. // 订单完成
  1553. if (!$buy_goods_type) {
  1554. $where[] = ['order_status' => OrderStatusEnum::ACCOMPLISH];
  1555. } else { // 订单支付
  1556. $where[] = ['>', 'order_status', OrderStatusEnum::NOT_PAY];
  1557. }
  1558. $orderDetailFind = OrderDetail::find();
  1559. OrderDetail::paramPack([
  1560. 'where' => $where,
  1561. 'index' => 'goods_id',
  1562. 'select' => new Expression('goods_id, SUM(num) num'),
  1563. 'group' => 'goods_id',
  1564. ], $orderDetailFind);
  1565. $goodsNums = array_column($orderDetailFind->asArray()->all(), 'num', 'goods_id');
  1566. foreach ($goods_id_arr as $goodsId) {
  1567. if (!isset($goodsNums[$goodsId], $condition_num_map[$goodsId])) {
  1568. continue;
  1569. }
  1570. if ($goodsNums[$goodsId] >= $condition_num_map[$goodsId]) {
  1571. return true;
  1572. }
  1573. }
  1574. }
  1575. }
  1576. return false;
  1577. }
  1578. /**
  1579. * @desc:购买商品分类升级
  1580. * @Author: hua
  1581. * @Date: 2021/10/19
  1582. * @Time: 14:51
  1583. * @Copyright: copyright (c) 2021 广东七件事集团
  1584. * @param $buy_cate_id
  1585. * @param $cate_id_arr
  1586. * @return bool
  1587. */
  1588. public static function buyGoodsCate($buy_cate_id, $cate_id_arr)
  1589. {
  1590. if (array_intersect($buy_cate_id, $cate_id_arr)) return true;
  1591. return false;
  1592. }
  1593. /**
  1594. * @desc: 条件1
  1595. * 个人订单数量满____笔,个人订单满____元
  1596. * @Author: hua
  1597. * @Date: 2021/10/19
  1598. * @Time: 11:41
  1599. * @Copyright: copyright (c) 2021 广东七件事集团
  1600. * @param $params
  1601. * @return bool
  1602. */
  1603. protected static function condition1($params)
  1604. {
  1605. $params['data'] = [];
  1606. return static::upgrade1(
  1607. $params,
  1608. $params['user_id'],
  1609. $params['arr'],
  1610. $params['key']
  1611. );
  1612. }
  1613. /**
  1614. * @desc:条件2
  1615. * 一级客户人数满____个,一级客户订单数量满____笔,一级客户订单满____元
  1616. * @Author: hua
  1617. * @Date: 2021/10/19
  1618. * @Time: 11:43
  1619. * @Copyright: copyright (c) 2021 广东七件事集团
  1620. * @param $params
  1621. * @return false
  1622. */
  1623. protected static function condition2($params)
  1624. {
  1625. $children_id_arr = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  1626. return static::upgrade1($params, $children_id_arr, $params['arr'], $params['key']);
  1627. }
  1628. /**
  1629. * @desc:条件3
  1630. * 二级客户人数满____个,二级客户订单数量满____笔,二级客户订单满____元
  1631. * @Author: hua
  1632. * @Date: 2021/10/19
  1633. * @Time: 14:26
  1634. * @Copyright: copyright (c) 2021 广东七件事集团
  1635. * @param $params
  1636. * @return bool
  1637. */
  1638. protected static function condition3($params)
  1639. {
  1640. $children_id_arr = UserPartitionRelationship::getChildIdArr($params['user_id'], 2);
  1641. return static::upgrade1($params, $children_id_arr, $params['arr'], $params['key']);
  1642. }
  1643. /**
  1644. * @desc:条件4
  1645. * 团队人数(直推和间推)满____个,团队人数(直推和间推)订单数量满____笔,团队人数(直推和间推)订单满____元
  1646. * @Author: hua
  1647. * @Date: 2021/10/19
  1648. * @Time: 14:26
  1649. * @Copyright: copyright (c) 2021 广东七件事集团
  1650. * @param $params
  1651. * @return bool
  1652. */
  1653. protected static function condition4($params)
  1654. {
  1655. $children_id_arr1 = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  1656. $children_id_arr2 = UserPartitionRelationship::getChildIdArr($params['user_id'], 2);
  1657. $children_id_arr = array_merge($children_id_arr1, $children_id_arr2);
  1658. return static::upgrade1($params, $children_id_arr, $params['arr'], $params['key']);
  1659. }
  1660. /**
  1661. * @desc:条件5
  1662. * 直推会员等级____数量____个
  1663. * @Author: hua
  1664. * @Date: 2021/10/19
  1665. * @Time: 14:38
  1666. * @Copyright: copyright (c) 2021 广东七件事集团
  1667. * @param $params
  1668. * @return bool
  1669. */
  1670. protected static function condition5($params)
  1671. {
  1672. $user_id_arr = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  1673. return static::upgrade5(
  1674. $params['condition_data'][$params['key']]['setting'][0]['name'],
  1675. $params['condition_data'][$params['key']]['setting'][1]['name'],
  1676. $user_id_arr,
  1677. $params['arr'],
  1678. $params['key']
  1679. );
  1680. }
  1681. /**
  1682. * @desc:条件6
  1683. * 间推会员等级____数量____个
  1684. * @Author: hua
  1685. * @Date: 2021/10/19
  1686. * @Time: 14:39
  1687. * @Copyright: copyright (c) 2021 广东七件事集团
  1688. * @param $params
  1689. * @return bool
  1690. */
  1691. protected static function condition6($params)
  1692. {
  1693. $user_id_arr = UserPartitionRelationship::getChildIdArr($params['user_id'], 2);
  1694. return static::upgrade5(
  1695. $params['condition_data'][$params['key']]['setting'][0]['name'],
  1696. $params['condition_data'][$params['key']]['setting'][1]['name'],
  1697. $user_id_arr,
  1698. $params['arr'],
  1699. $params['key']
  1700. );
  1701. }
  1702. /**
  1703. * @desc:条件7
  1704. * 团队人数(直推和间推)等级____数量____个
  1705. * @Author: hua
  1706. * @Date: 2021/10/19
  1707. * @Time: 14:43
  1708. * @Copyright: copyright (c) 2021 广东七件事集团
  1709. * @param $params
  1710. * @return bool
  1711. */
  1712. protected static function condition7($params)
  1713. {
  1714. $children_id_arr1 = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  1715. $children_id_arr2 = UserPartitionRelationship::getChildIdArr($params['user_id'], 2);
  1716. $user_id_arr = array_merge($children_id_arr1, $children_id_arr2);
  1717. return static::upgrade5(
  1718. $params['condition_data'][$params['key']]['setting'][0]['name'],
  1719. $params['condition_data'][$params['key']]['setting'][1]['name'],
  1720. $user_id_arr,
  1721. $params['arr'],
  1722. $params['key']
  1723. );
  1724. }
  1725. /**
  1726. * @desc:条件9
  1727. * 直推客户消费满____元的人数满____个,间推客户消费满____元的人数满____个
  1728. * @Author: hua
  1729. * @Date: 2021/10/23
  1730. * @Time: 11:37
  1731. * @Copyright: copyright (c) 2021 广东七件事集团
  1732. * @param $params
  1733. * @return bool
  1734. */
  1735. protected static function condition9($params)
  1736. {
  1737. $children_id_arr1 = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  1738. $children_id_arr2 = UserPartitionRelationship::getChildIdArr($params['user_id'], 2);
  1739. return static::upgrade9(
  1740. $params['condition_data'][$params['key']]['setting'][0]['name'],
  1741. $params['condition_data'][$params['key']]['setting'][1]['name'],
  1742. $params['condition_data'][$params['key']]['setting'][2]['name'],
  1743. $params['condition_data'][$params['key']]['setting'][3]['name'],
  1744. $children_id_arr1,
  1745. $children_id_arr2,
  1746. $params['arr'],
  1747. $params['key']
  1748. );
  1749. }
  1750. /**
  1751. * @desc:条件10
  1752. * 直推____人,并且直推中购买商品ID____的人数____个
  1753. * @Author: hua
  1754. * @Date: 2021/10/23
  1755. * @Time: 11:37
  1756. * @Copyright: copyright (c) 2021 广东七件事集团
  1757. * @param $params
  1758. * @return bool
  1759. */
  1760. protected static function condition10($params)
  1761. {
  1762. $children_id_arr1 = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  1763. return static::upgrade10(
  1764. $params['condition_data'][$params['key']]['setting'][0]['name'],
  1765. $params['condition_data'][$params['key']]['setting'][1]['name'],
  1766. $params['condition_data'][$params['key']]['setting'][2]['name'],
  1767. $children_id_arr1,
  1768. $params['arr'],
  1769. $params['key']
  1770. );
  1771. }
  1772. /**
  1773. * @desc:条件11
  1774. * 个人业绩____元,所有下级业绩____元
  1775. * @Author: hua
  1776. * @Date: 2021/10/23
  1777. * @Time: 14:16
  1778. * @Copyright: copyright (c) 2021 广东七件事集团
  1779. * @param $params
  1780. * @return bool
  1781. */
  1782. protected static function condition11($params)
  1783. {
  1784. return static::upgrade11(
  1785. $params['condition_data'][$params['key']]['setting'][0]['name'],
  1786. $params['condition_data'][$params['key']]['setting'][1]['name'],
  1787. $params['user_id'],
  1788. $params['arr'],
  1789. $params['key']
  1790. );
  1791. }
  1792. /**
  1793. * @desc:条件12
  1794. * 间推客户数量____个,间推客户订单金额____元
  1795. * @Author: hua
  1796. * @Date: 2021/10/23
  1797. * @Time: 14:16
  1798. * @Copyright: copyright (c) 2021 广东七件事集团
  1799. * @param $params
  1800. * @return bool
  1801. */
  1802. protected static function condition12($params)
  1803. {
  1804. $user_id_arr = UserPartitionRelationship::getChildIdArr($params['user_id'], 2);
  1805. return static::upgrade12(
  1806. $params['condition_data'][$params['key']]['setting'][0]['name'],
  1807. $params['condition_data'][$params['key']]['setting'][1]['name'],
  1808. $user_id_arr,
  1809. $params['arr'],
  1810. $params['key']
  1811. );
  1812. }
  1813. /**
  1814. * @desc:条件13
  1815. * 经销商默认等级达到____人
  1816. * @Author: hua
  1817. * @Date: 2021/10/23
  1818. * @Time: 14:16
  1819. * @Copyright: copyright (c) 2021 广东七件事集团
  1820. * @param $params
  1821. * @return bool
  1822. */
  1823. protected static function condition13($params)
  1824. {
  1825. return static::upgrade13(
  1826. $params['condition_data'][$params['key']]['setting'][0]['name'],
  1827. $params['user_id'],
  1828. $params['arr'],
  1829. $params['key']
  1830. );
  1831. }
  1832. /**
  1833. * @desc:条件14
  1834. * 直推经销商等级____数量____个
  1835. * @Author: hua
  1836. * @Date: 2021/10/23
  1837. * @Time: 14:16
  1838. * @Copyright: copyright (c) 2021 广东七件事集团
  1839. * @param $params
  1840. * @return bool
  1841. */
  1842. protected static function condition14($params)
  1843. {
  1844. $user_id_arr = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  1845. return static::upgrade14(
  1846. $params['condition_data'][$params['key']]['setting'][0]['name'],
  1847. $params['condition_data'][$params['key']]['setting'][1]['name'],
  1848. 'addons\Agent\common\models\Agent',
  1849. $user_id_arr,
  1850. $params['arr'],
  1851. $params['key']
  1852. );
  1853. }
  1854. /**
  1855. * @desc:条件15
  1856. * 所有下级经销商等级____数量____个
  1857. * @Author: hua
  1858. * @Date: 2021/10/23
  1859. * @Time: 14:16
  1860. * @Copyright: copyright (c) 2021 广东七件事集团
  1861. * @param $params
  1862. * @return bool
  1863. */
  1864. protected static function condition15($params)
  1865. {
  1866. return static::upgrade15(
  1867. $params['condition_data'][$params['key']]['setting'][0]['name'],
  1868. $params['condition_data'][$params['key']]['setting'][1]['name'],
  1869. 'addons\Agent\common\models\Agent',
  1870. $params['user_id'],
  1871. $params['arr'],
  1872. $params['key']
  1873. );
  1874. }
  1875. /**
  1876. * @desc:条件16
  1877. * 所有下级单量指标____单
  1878. * @Author: hua
  1879. * @Date: 2021/10/23
  1880. * @Time: 14:39
  1881. * @Copyright: copyright (c) 2021 广东七件事集团
  1882. * @param $params
  1883. * @return bool
  1884. */
  1885. protected static function condition16($params)
  1886. {
  1887. return static::upgrade16(
  1888. $params['condition_data'][$params['key']]['setting'][0]['name'],
  1889. $params['user_id'],
  1890. $params['arr'],
  1891. $params['key']
  1892. );
  1893. }
  1894. /**
  1895. * @desc:条件17
  1896. * 团队单量大于____单
  1897. * @Author: hua
  1898. * @Date: 2021/10/23
  1899. * @Time: 14:39
  1900. * @Copyright: copyright (c) 2021 广东七件事集团
  1901. * @param $params
  1902. * @return bool
  1903. */
  1904. protected static function condition17($params)
  1905. {
  1906. return static::upgrade17(
  1907. $params['condition_data'][$params['key']]['setting'][0]['name'],
  1908. $params['user_id'],
  1909. $params['arr'],
  1910. $params['key']
  1911. );
  1912. }
  1913. /**
  1914. * @desc:条件18
  1915. * 直推股东等级____数量____个
  1916. * @Author: hua
  1917. * @Date: 2021/10/23
  1918. * @Time: 14:16
  1919. * @Copyright: copyright (c) 2021 广东七件事集团
  1920. * @param $params
  1921. * @return bool
  1922. */
  1923. protected static function condition18($params)
  1924. {
  1925. $user_id_arr = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  1926. return static::upgrade14(
  1927. $params['condition_data'][$params['key']]['setting'][0]['name'],
  1928. $params['condition_data'][$params['key']]['setting'][1]['name'],
  1929. 'addons\Boss\common\models\AddonsBoss',
  1930. $user_id_arr,
  1931. $params['arr'],
  1932. $params['key']
  1933. );
  1934. }
  1935. /**
  1936. * @desc:条件19
  1937. * 间推股东等级____数量____个
  1938. * @Author: hua
  1939. * @Date: 2021/10/23
  1940. * @Time: 14:16
  1941. * @Copyright: copyright (c) 2021 广东七件事集团
  1942. * @param $params
  1943. * @return bool
  1944. */
  1945. protected static function condition19($params)
  1946. {
  1947. $user_id_arr = UserPartitionRelationship::getChildIdArr($params['user_id'], 2);
  1948. return static::upgrade14(
  1949. $params['condition_data'][$params['key']]['setting'][0]['name'],
  1950. $params['condition_data'][$params['key']]['setting'][1]['name'],
  1951. 'addons\Boss\common\models\AddonsBoss',
  1952. $user_id_arr,
  1953. $params['arr'],
  1954. $params['key']
  1955. );
  1956. }
  1957. /**
  1958. * @desc:条件20
  1959. * 团队股东等级____数量____个
  1960. * @Author: hua
  1961. * @Date: 2021/10/23
  1962. * @Time: 14:16
  1963. * @Copyright: copyright (c) 2021 广东七件事集团
  1964. * @param $params
  1965. * @return bool
  1966. */
  1967. protected static function condition20($params)
  1968. {
  1969. return static::upgrade15(
  1970. $params['condition_data'][$params['key']]['setting'][0]['name'],
  1971. $params['condition_data'][$params['key']]['setting'][1]['name'],
  1972. 'addons\Boss\common\models\AddonsBoss',
  1973. $params['user_id'],
  1974. $params['arr'],
  1975. $params['key']
  1976. );
  1977. }
  1978. /**
  1979. * @desc:条件21
  1980. * 直推客户消费满____元
  1981. * @Author: hua
  1982. * @Date: 2021/10/23
  1983. * @Time: 15:03
  1984. * @Copyright: copyright (c) 2021 广东七件事集团
  1985. * @param $params
  1986. * @return bool
  1987. */
  1988. protected static function condition21($params)
  1989. {
  1990. $user_id_arr = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  1991. return static::upgrade21(
  1992. $params['condition_data'][$params['key']]['setting'][0]['name'],
  1993. $user_id_arr,
  1994. $params['arr'],
  1995. $params['key']
  1996. );
  1997. }
  1998. /**
  1999. * @desc:条件22
  2000. * 一级客户消费满____元的人数满____个
  2001. * @Author: hua
  2002. * @Date: 2021/10/23
  2003. * @Time: 15:41
  2004. * @Copyright: copyright (c) 2021 广东七件事集团
  2005. * @param $params
  2006. * @return bool
  2007. */
  2008. protected static function condition22($params)
  2009. {
  2010. $user_id_arr = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  2011. return static::upgrade22(
  2012. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2013. $params['condition_data'][$params['key']]['setting'][1]['name'],
  2014. $user_id_arr,
  2015. $params['arr'],
  2016. $params['key']
  2017. );
  2018. }
  2019. /**
  2020. * @desc:条件23
  2021. * 分销佣金金额满____元
  2022. * @Author: hua
  2023. * @Date: 2021/10/23
  2024. * @Time: 15:41
  2025. * @Copyright: copyright (c) 2021 广东七件事集团
  2026. * @param $params
  2027. * @return bool
  2028. */
  2029. protected static function condition23($params)
  2030. {
  2031. return static::upgrade23(
  2032. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2033. $params['user_id'],
  2034. $params['arr'],
  2035. $params['key']
  2036. );
  2037. }
  2038. /**
  2039. * @desc:条件24
  2040. * 分销订单数量满____个
  2041. * @Author: hua
  2042. * @Date: 2021/10/23
  2043. * @Time: 15:41
  2044. * @Copyright: copyright (c) 2021 广东七件事集团
  2045. * @param $params
  2046. * @return bool
  2047. */
  2048. protected static function condition24($params)
  2049. {
  2050. return static::upgrade24(
  2051. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2052. $params['user_id'],
  2053. $params['arr'],
  2054. $params['key']
  2055. );
  2056. }
  2057. /**
  2058. * @desc:一级分销佣金金额满____元
  2059. * @Author: hua
  2060. * @Date: 2021/11/18
  2061. * @Time: 16:39
  2062. * @Copyright: copyright (c) 2021 广东七件事集团
  2063. * @param $params
  2064. * @return bool
  2065. */
  2066. protected static function condition25($params)
  2067. {
  2068. return static::upgrade25(
  2069. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2070. $params['user_id'],
  2071. $params['arr'],
  2072. $params['key']
  2073. );
  2074. }
  2075. /**
  2076. * @desc:一级分销订单数量满____个
  2077. * @Author: hua
  2078. * @Date: 2021/11/18
  2079. * @Time: 16:43
  2080. * @Copyright: copyright (c) 2021 广东七件事集团
  2081. * @param $params
  2082. * @return bool
  2083. */
  2084. protected static function condition26($params)
  2085. {
  2086. return static::upgrade24(
  2087. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2088. $params['user_id'],
  2089. $params['arr'],
  2090. $params['key'],
  2091. 'first'
  2092. );
  2093. }
  2094. /**
  2095. * @desc:自购订单金额满____元
  2096. * @Author: hua
  2097. * @Date: 2021/11/18
  2098. * @Time: 16:45
  2099. * @Copyright: copyright (c) 2021 广东七件事集团
  2100. * @param $params
  2101. * @return bool
  2102. */
  2103. protected static function condition27($params)
  2104. {
  2105. return static::upgrade27(
  2106. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2107. $params['user_id'],
  2108. 'order_total_price',
  2109. $params['arr'],
  2110. $params['key']
  2111. );
  2112. }
  2113. /**
  2114. * @desc:自购订单数量满____个
  2115. * @Author: hua
  2116. * @Date: 2021/11/18
  2117. * @Time: 16:45
  2118. * @Copyright: copyright (c) 2021 广东七件事集团
  2119. * @param $params
  2120. * @return bool
  2121. */
  2122. protected static function condition28($params)
  2123. {
  2124. return static::upgrade27(
  2125. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2126. $params['user_id'],
  2127. 'order_num',
  2128. $params['arr'],
  2129. $params['key']
  2130. );
  2131. }
  2132. /**
  2133. * @desc:粉丝人数满____人
  2134. * @Author: hua
  2135. * @Date: 2021/11/18
  2136. * @Time: 16:45
  2137. * @Copyright: copyright (c) 2021 广东七件事集团
  2138. * @param $params
  2139. * @return bool
  2140. */
  2141. protected static function condition29($params)
  2142. {
  2143. return static::upgrade29(
  2144. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2145. $params['user_id'],
  2146. $params['arr'],
  2147. $params['key']
  2148. );
  2149. }
  2150. /**
  2151. * @desc:一级粉丝人数满____人
  2152. * @Author: hua
  2153. * @Date: 2021/11/18
  2154. * @Time: 17:01
  2155. * @Copyright: copyright (c) 2021 广东七件事集团
  2156. * @param $params
  2157. * @return bool
  2158. */
  2159. protected static function condition30($params)
  2160. {
  2161. $user_id = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  2162. return static::upgrade30(
  2163. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2164. $user_id,
  2165. $params['arr'],
  2166. $params['key']
  2167. );
  2168. }
  2169. /**
  2170. * @desc:粉丝分销商人数满____人
  2171. * @Author: hua
  2172. * @Date: 2021/11/18
  2173. * @Time: 17:01
  2174. * @Copyright: copyright (c) 2021 广东七件事集团
  2175. * @param $params
  2176. * @return bool
  2177. */
  2178. protected static function condition31($params)
  2179. {
  2180. return static::upgrade31(
  2181. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2182. $params['user_id'],
  2183. $params['arr'],
  2184. $params['key']
  2185. );
  2186. }
  2187. /**
  2188. * @desc:一级粉丝分销商人数满____人
  2189. * @Author: hua
  2190. * @Date: 2021/11/18
  2191. * @Time: 17:01
  2192. * @Copyright: copyright (c) 2021 广东七件事集团
  2193. * @param $params
  2194. * @return bool
  2195. */
  2196. protected static function condition32($params)
  2197. {
  2198. $user_id = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  2199. return static::upgrade32(
  2200. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2201. $user_id,
  2202. $params['arr'],
  2203. $params['key']
  2204. );
  2205. }
  2206. /**
  2207. * @desc:分销结算佣金总额满____元
  2208. * @Author: hua
  2209. * @Date: 2021/11/18
  2210. * @Time: 17:05
  2211. * @Copyright: copyright (c) 2021 广东七件事集团
  2212. * @param $params
  2213. * @return bool
  2214. */
  2215. protected static function condition33($params)
  2216. {
  2217. return static::upgrade33(
  2218. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2219. $params['user_id'],
  2220. $params['arr'],
  2221. $params['key']
  2222. );
  2223. }
  2224. /**
  2225. * @desc:直推分销商等级____数量____个
  2226. * @Author: hua
  2227. * @Date: 2021/11/18
  2228. * @Time: 17:14
  2229. * @Copyright: copyright (c) 2021 广东七件事集团
  2230. * @param $params
  2231. * @return bool
  2232. */
  2233. protected static function condition34($params)
  2234. {
  2235. $user_id = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  2236. return static::upgrade34(
  2237. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2238. $params['condition_data'][$params['key']]['setting'][1]['name'],
  2239. $user_id,
  2240. $params['arr'],
  2241. $params['key']
  2242. );
  2243. }
  2244. /**
  2245. * @desc:间推分销商等级____数量____个
  2246. * @Author: hua
  2247. * @Date: 2021/11/18
  2248. * @Time: 17:14
  2249. * @Copyright: copyright (c) 2021 广东七件事集团
  2250. * @param $params
  2251. * @return bool
  2252. */
  2253. protected static function condition35($params)
  2254. {
  2255. $user_id = UserPartitionRelationship::getChildIdArr($params['user_id'], 2);
  2256. return static::upgrade34(
  2257. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2258. $params['condition_data'][$params['key']]['setting'][1]['name'],
  2259. $user_id,
  2260. $params['arr'],
  2261. $params['key']
  2262. );
  2263. }
  2264. /**
  2265. * @desc:间推经销等级____数量____个
  2266. */
  2267. protected static function condition75($params)
  2268. {
  2269. $user_id = UserPartitionRelationship::getChildIdArr($params['user_id'], 2);
  2270. return static::upgrade75(
  2271. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2272. $params['condition_data'][$params['key']]['setting'][1]['name'],
  2273. $user_id,
  2274. $params['arr'],
  2275. $params['key']
  2276. );
  2277. }
  2278. /**
  2279. * @desc:团队分销商(直推和间推)等级____数量____个
  2280. * @Author: hua
  2281. * @Date: 2021/11/18
  2282. * @Time: 17:14
  2283. * @Copyright: copyright (c) 2021 广东七件事集团
  2284. * @param $params
  2285. * @return bool
  2286. */
  2287. protected static function condition36($params)
  2288. {
  2289. $user_id1 = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  2290. $user_id2 = UserPartitionRelationship::getChildIdArr($params['user_id'], 2);
  2291. $user_id = array_merge($user_id1, $user_id2);
  2292. return static::upgrade34(
  2293. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2294. $params['condition_data'][$params['key']]['setting'][1]['name'],
  2295. $user_id,
  2296. $params['arr'],
  2297. $params['key']
  2298. );
  2299. }
  2300. /**
  2301. * @desc:条件37
  2302. * 直推服务商等级____数量____个
  2303. * @Author: hua
  2304. * @Date: 2021/10/23
  2305. * @Time: 14:16
  2306. * @Copyright: copyright (c) 2021 广东七件事集团
  2307. * @param $params
  2308. * @return bool
  2309. */
  2310. protected static function condition37($params)
  2311. {
  2312. $user_id_arr = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  2313. return static::upgrade14(
  2314. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2315. $params['condition_data'][$params['key']]['setting'][1]['name'],
  2316. 'addons\ServeBonus\common\models\ServeBonus',
  2317. $user_id_arr,
  2318. $params['arr'],
  2319. $params['key']
  2320. );
  2321. }
  2322. /**
  2323. * @desc:条件38
  2324. * 间推服务商等级____数量____个
  2325. * @Author: hua
  2326. * @Date: 2021/10/23
  2327. * @Time: 14:16
  2328. * @Copyright: copyright (c) 2021 广东七件事集团
  2329. * @param $params
  2330. * @return bool
  2331. */
  2332. protected static function condition38($params)
  2333. {
  2334. $user_id_arr = UserPartitionRelationship::getChildIdArr($params['user_id'], 2);
  2335. return static::upgrade14(
  2336. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2337. $params['condition_data'][$params['key']]['setting'][1]['name'],
  2338. 'addons\ServeBonus\common\models\ServeBonus',
  2339. $user_id_arr,
  2340. $params['arr'],
  2341. $params['key']
  2342. );
  2343. }
  2344. /**
  2345. * @desc:条件39
  2346. * 团队服务商等级____数量____个
  2347. * @Author: hua
  2348. * @Date: 2021/10/23
  2349. * @Time: 14:16
  2350. * @Copyright: copyright (c) 2021 广东七件事集团
  2351. * @param $params
  2352. * @return bool
  2353. */
  2354. protected static function condition39($params)
  2355. {
  2356. return static::upgrade15(
  2357. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2358. $params['condition_data'][$params['key']]['setting'][1]['name'],
  2359. 'addons\ServeBonus\common\models\ServeBonus',
  2360. $params['user_id'],
  2361. $params['arr'],
  2362. $params['key']
  2363. );
  2364. }
  2365. /**
  2366. * @desc:条件40
  2367. * 直推客户消费满____元的人数满____个,团队客户消费满____元的人数满____个
  2368. * @Author: hua
  2369. * @Date: 2021/10/23
  2370. * @Time: 11:37
  2371. * @Copyright: copyright (c) 2021 广东七件事集团
  2372. * @param $params
  2373. * @return bool
  2374. */
  2375. protected static function condition40($params)
  2376. {
  2377. $children_id_arr1 = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  2378. $offset = 1;
  2379. $limit = 1000;
  2380. $team_user_id = [];
  2381. $params['select'] = 'user_id';
  2382. static::batchFunc($params, $params['user_id'], $offset, $limit, function ($user_ids) {
  2383. return $user_ids;
  2384. }, $team_user_id);
  2385. return static::upgrade40(
  2386. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2387. $params['condition_data'][$params['key']]['setting'][1]['name'],
  2388. $params['condition_data'][$params['key']]['setting'][2]['name'],
  2389. $params['condition_data'][$params['key']]['setting'][3]['name'],
  2390. $children_id_arr1,
  2391. $team_user_id,
  2392. $params['arr'],
  2393. $params['key']
  2394. );
  2395. }
  2396. /**
  2397. * @name:
  2398. * @msg: 条件40: 一级客户成功参团的人数满____个一级客户参团订单满____元
  2399. * @param {*} $params
  2400. * @return {*}
  2401. */
  2402. protected static function condition41($params)
  2403. {
  2404. return static::upgrade41Or42(
  2405. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2406. $params['condition_data'][$params['key']]['setting'][1]['name'],
  2407. 'addons\LuckyGroup\common\models\LuckyGroupUser',
  2408. $params['user_id'],
  2409. $params['arr'],
  2410. $params['key'],
  2411. 41
  2412. );
  2413. }
  2414. /**
  2415. * @name:
  2416. * @msg: 二级客户成功参团的人数满____个二级客户参团订单满____元
  2417. * @param {*} $params
  2418. * @return {*}
  2419. */
  2420. protected static function condition42($params)
  2421. {
  2422. return static::upgrade41Or42(
  2423. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2424. $params['condition_data'][$params['key']]['setting'][1]['name'],
  2425. 'addons\LuckyGroup\common\models\LuckyGroupUser',
  2426. $params['user_id'],
  2427. $params['arr'],
  2428. $params['key'],
  2429. 42
  2430. );
  2431. }
  2432. /**
  2433. * @name:
  2434. * @msg: 个人参团订单满____笔个人参团订单满____元
  2435. * @param {*} $params
  2436. * @return {*}
  2437. */
  2438. protected static function condition43($params)
  2439. {
  2440. return static::upgrade43(
  2441. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2442. $params['condition_data'][$params['key']]['setting'][1]['name'],
  2443. 'addons\LuckyGroup\common\models\LuckyGroupOrder',
  2444. $params['user_id'],
  2445. $params['arr'],
  2446. $params['key']
  2447. );
  2448. }
  2449. /**
  2450. * @name:
  2451. * @msg: 直推拼团等级____数量____个
  2452. * @param {*} $params
  2453. * @return {*}
  2454. */
  2455. protected static function condition44($params)
  2456. {
  2457. return static::upgrade44Or45(
  2458. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2459. $params['condition_data'][$params['key']]['setting'][1]['name'],
  2460. 'addons\LuckyGroup\common\models\LuckyGroupUser',
  2461. $params['user_id'],
  2462. $params['arr'],
  2463. $params['key'],
  2464. 44
  2465. );
  2466. }
  2467. /**
  2468. * @name:
  2469. * @msg: 间推拼团等级____数量____个
  2470. * @param {*} $params
  2471. * @return {*}
  2472. */
  2473. protected static function condition45($params)
  2474. {
  2475. return static::upgrade44Or45(
  2476. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2477. $params['condition_data'][$params['key']]['setting'][1]['name'],
  2478. 'addons\LuckyGroup\common\models\LuckyGroupUser',
  2479. $params['user_id'],
  2480. $params['arr'],
  2481. $params['key'],
  2482. 45
  2483. );
  2484. }
  2485. /**
  2486. * @desc:条件47
  2487. * 团队下____条____个____等级
  2488. * @Author: hua
  2489. * @Date: 2022/7/20
  2490. * @Time: 17:16
  2491. * @Copyright: copyright (c) 2021 广东七件事集团
  2492. * @param $params
  2493. * @return bool
  2494. */
  2495. protected static function condition47($params)
  2496. {
  2497. return static::upgrade47(
  2498. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2499. $params['condition_data'][$params['key']]['setting'][1]['name'],
  2500. $params['condition_data'][$params['key']]['setting'][2]['name'],
  2501. 'addons\Agent\common\models\Agent',
  2502. $params['user_id'],
  2503. $params['arr'],
  2504. $params['key']
  2505. );
  2506. }
  2507. /**
  2508. * @desc:48
  2509. * 直推____人是____等级
  2510. * @Author: hua
  2511. * @Date: 2022/7/20
  2512. * @Time: 17:16
  2513. * @Copyright: copyright (c) 2021 广东七件事集团
  2514. * @param $params
  2515. * @return bool
  2516. */
  2517. protected static function condition48($params)
  2518. {
  2519. return static::upgrade48(
  2520. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2521. $params['condition_data'][$params['key']]['setting'][1]['name'],
  2522. 'addons\Agent\common\models\Agent',
  2523. $params['user_id'],
  2524. $params['arr'],
  2525. $params['key']
  2526. );
  2527. }
  2528. /**
  2529. * @desc:条件49
  2530. * 团队业绩达____元
  2531. * @Author: zeng
  2532. * @Date: 2022/11/08
  2533. * @Time: 14:16
  2534. * @Copyright: copyright (c) 2022 广东七件事集团
  2535. * @param $params
  2536. * @return bool
  2537. */
  2538. protected static function condition49($params)
  2539. {
  2540. return static::upgrade49(
  2541. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2542. $params['user_id'],
  2543. $params['arr'],
  2544. $params['key']
  2545. );
  2546. }
  2547. /**
  2548. * @desc:条件49
  2549. * 团队业绩达____元
  2550. * @Author: zeng
  2551. * @Date: 2022/11/08
  2552. * @Time: 14:16
  2553. * @Copyright: copyright (c) 2022 广东七件事集团
  2554. * @param $params
  2555. * @return bool
  2556. */
  2557. protected static function condition50($params)
  2558. {
  2559. return static::upgrade50(
  2560. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2561. $params['condition_data'][$params['key']]['setting'][1]['name'],
  2562. $params['condition_data'][$params['key']]['setting'][2]['name'],
  2563. $params['user_id'],
  2564. $params['arr'],
  2565. $params['key']
  2566. );
  2567. }
  2568. /**
  2569. * 购买指定商品(限定团队购买数量)
  2570. */
  2571. public static function upgrade50($name1, $name2, $name3, $user_id, $arr, $key)
  2572. {
  2573. //购买指定的商品(限定购买数量)
  2574. //团队累计购买商品达到N件,去除购买最多者的团队,其余人购买达到N件
  2575. $offset = 1;
  2576. $limit = 1000;
  2577. $params['select'] = 'user_id';
  2578. list($tree, $parent_deep, $all_tree, $all_tree_arr) = UserPartitionRelationship::getTree($user_id);
  2579. $user_id_arr = [];
  2580. while ($list = UserPartitionRelationship::batchGetTeamData($offset, $limit, $tree, $params)) {
  2581. $user_id_arr = array_merge(array_column($list, 'user_id'));
  2582. $offset++;
  2583. }
  2584. $goods_ids = explode(',', $arr[$key]['value'][$name3]);
  2585. if (empty($goods_ids) || empty($user_id_arr)) {
  2586. return false;
  2587. }
  2588. $where = [
  2589. 'user_id' => $user_id_arr, 'goods_id' => $goods_ids,
  2590. 'order_status' => [OrderStatusEnum::PAY, OrderStatusEnum::SHIPMENTS, OrderStatusEnum::SING, OrderStatusEnum::ACCOMPLISH]
  2591. ];
  2592. $list = OrderDetail::find()->where($where)
  2593. ->groupBy('user_id')
  2594. ->select('user_id,Sum(num) as counts')
  2595. ->asArray()
  2596. ->all();
  2597. if (empty($list)) {
  2598. return false;
  2599. }
  2600. $all_count = array_sum(array_column($list, 'counts')); //总数量
  2601. $max_count = max(array_column($list, 'counts')); ////取团队购买最多者
  2602. $max_user_id = 0;
  2603. foreach ($list as $item) {
  2604. if ($item['counts'] == $max_count) {
  2605. $max_user_id = $item['user_id'];
  2606. }
  2607. }
  2608. $max_user_id_arr = [];
  2609. $offset = 1;
  2610. if ($max_user_id > 0) {
  2611. list($tree2, $parent_deep2, $all_tree2, $all_tree_arr2) = UserPartitionRelationship::getTree($max_user_id);
  2612. $user_id_arr = [];
  2613. while ($max_user_team_list = UserPartitionRelationship::batchGetTeamData($offset, $limit, $tree2, $params)) {
  2614. $user_id_arr = array_merge(array_column($max_user_team_list, 'user_id'));
  2615. $offset++;
  2616. }
  2617. $max_user_id_arr = array_merge($user_id_arr, [$max_user_id]);
  2618. }
  2619. $max_team_count = 0;
  2620. foreach ($list as $item) {
  2621. if (in_array($item['user_id'], $max_user_id_arr)) {
  2622. $max_team_count += $item['counts'];
  2623. }
  2624. }
  2625. //找出最多的这个人的团队
  2626. $other_count = $all_count - $max_team_count; //除了最多者剩下的购买数量
  2627. if ($arr[$key]['value'][$name1] != 0 && $arr[$key]['value'][$name2] != 0) {
  2628. if ($all_count >= $arr[$key]['value'][$name1] && $other_count >= $arr[$key]['value'][$name2]) {
  2629. return true;
  2630. }
  2631. return false;
  2632. }
  2633. if ($all_count >= $arr[$key]['value'][$name1] && $arr[$key]['value'][$name1] != 0) {
  2634. return true;
  2635. }
  2636. if ($other_count >= $arr[$key]['value'][$name2] && $arr[$key]['value'][$name2] != 0) {
  2637. return true;
  2638. }
  2639. //取其它购买总数
  2640. return false;
  2641. }
  2642. /**
  2643. * @desc:条件51
  2644. * 个人充值或消费满___元
  2645. * @Author: hua
  2646. * @Date: 2021/10/19
  2647. * @Time: 11:43
  2648. * @Copyright: copyright (c) 2021 广东七件事集团
  2649. * @param $params
  2650. * @return false
  2651. */
  2652. protected static function condition51($params)
  2653. {
  2654. $children_id_arr = $params['user_id'];
  2655. return static::upgrade51($params, $children_id_arr, $params['arr'], $params['key']);
  2656. }
  2657. /**
  2658. * 好友人数____人,下级团队业绩达到____元
  2659. * @Author: lun
  2660. * @DateTime: 2023/4/1 0001 15:56
  2661. * @Copyright: copyright (c) 2021 广东七件事集团
  2662. * @param $params
  2663. * @return bool
  2664. */
  2665. protected static function condition52($params)
  2666. {
  2667. $direct = $params['condition_data'][$params['key']]['setting'][0]['name'];
  2668. $achievement = $params['condition_data'][$params['key']]['setting'][1]['name'];
  2669. $user_id = $params['user_id'];
  2670. $arr = $params['arr'];
  2671. $key = $params['key'];
  2672. $is_bool = false;
  2673. // 获取用户当前好友人数+团队业绩
  2674. $data = ServeBonusUpgradeCount::find()->select('direct_num,achievement')->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])->asArray()->one();
  2675. if(empty($data)) return $is_bool;
  2676. if ($data['direct_num'] >= $arr[$key]['value'][$direct] && $data['achievement'] >= $arr[$key]['value'][$achievement]) $is_bool = true;
  2677. return $is_bool;
  2678. }
  2679. protected static function condition53($params)
  2680. {
  2681. $direct = $params['condition_data'][$params['key']]['setting'][0]['name'];
  2682. $achievement = $params['condition_data'][$params['key']]['setting'][1]['name'];
  2683. $user_id = $params['user_id'];
  2684. $arr = $params['arr'];
  2685. $key = $params['key'];
  2686. $is_bool = false;
  2687. // 获取用户当前好友人数+团队业绩
  2688. $data = DistributionUpgradeCount::find()->select('direct_num,achievement')->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])->asArray()->one();
  2689. if(empty($data)) return $is_bool;
  2690. if ($data['direct_num'] >= $arr[$key]['value'][$direct] && $data['achievement'] >= $arr[$key]['value'][$achievement]) $is_bool = true;
  2691. return $is_bool;
  2692. }
  2693. /**
  2694. * 链一二号市场总业绩达xx元,且单个市场业绩达xxx元
  2695. * @param $params
  2696. * @return bool
  2697. */
  2698. protected static function condition61($params)
  2699. {
  2700. $mall_id = $params['mall_id'];
  2701. if (!MallAddons::isInstall($mall_id, AddonsEnum::ADDONS_NAME_ZAO_DOUBLE_COPY)) return false;
  2702. $total_achievement = $params['condition_data'][$params['key']]['setting'][0]['name'];
  2703. $single_market = $params['condition_data'][$params['key']]['setting'][1]['name'];
  2704. $user_id = $params['user_id'];
  2705. $arr = $params['arr'];
  2706. $key = $params['key'];
  2707. $total_achievement = $arr[$key]['value'][$total_achievement];
  2708. $single_market = $arr[$key]['value'][$single_market];
  2709. $is_bool = false;
  2710. $team = ZaoDoubleCopyUser::find()->select('achievement')->where(['pid' => $user_id])->andWhere(['<=', 'pos', 2])->asArray()->all();
  2711. $achievement = 0;
  2712. $is_single = true;
  2713. foreach ($team as $info) {
  2714. // 判断单个市场是否及格
  2715. if ($info['achievement'] < $single_market) {
  2716. $is_single = false;
  2717. break;
  2718. }
  2719. $achievement += $info['achievement'];
  2720. }
  2721. if ($is_single && $achievement >= $total_achievement) {
  2722. $is_bool = true;
  2723. }
  2724. return $is_bool;
  2725. }
  2726. /**
  2727. * 链一二号市场购买链动商品订单数达xx件,且单个市场订单数达xx件
  2728. * @param $params
  2729. * @return bool
  2730. */
  2731. protected static function condition62($params)
  2732. {
  2733. $mall_id = $params['mall_id'];
  2734. if (!MallAddons::isInstall($mall_id, AddonsEnum::ADDONS_NAME_ZAO_DOUBLE_COPY)) return false;
  2735. $total_order_num = $params['condition_data'][$params['key']]['setting'][0]['name'];
  2736. $single_market_num = $params['condition_data'][$params['key']]['setting'][1]['name'];
  2737. $user_id = $params['user_id'];
  2738. $arr = $params['arr'];
  2739. $key = $params['key'];
  2740. $total_order_num = $arr[$key]['value'][$total_order_num];
  2741. $single_market_num = $arr[$key]['value'][$single_market_num];
  2742. $is_bool = false;
  2743. $team = ZaoDoubleCopyUser::find()->select('user_id')->where(['pid' => $user_id])->andWhere(['<=', 'pos', 2])->asArray()->all();
  2744. $total_num = 0;
  2745. $is_single = true;
  2746. foreach ($team as $info) {
  2747. //获取用户下级购买订单数量
  2748. $copy_user_id = $info['user_id'];
  2749. $relation_arr = UserPartitionRelationship::getChildIdArrOrderBy($copy_user_id);
  2750. array_push($relation_arr, $user_id);
  2751. $order_num = ZaoDoubleCopyAchievement::find()->where(['user_id' => $relation_arr, 'is_order_user' => 1, 'status' => StatusEnum::ENABLED])->groupBy('order_id')->count();
  2752. if ($order_num < $single_market_num) {
  2753. $is_single = false;
  2754. break;
  2755. }
  2756. $total_num += $order_num;
  2757. }
  2758. if ($is_single && $total_num >= $total_order_num) {
  2759. $is_bool = true;
  2760. }
  2761. return $is_bool;
  2762. }
  2763. /**
  2764. * 链动团队除最大市场外(即业绩最高市场)的团队小市场业绩总和达(不含复购链动商品)达XX 元
  2765. * @param $params
  2766. * @return bool
  2767. */
  2768. protected static function condition63($params)
  2769. {
  2770. $mall_id = $params['mall_id'];
  2771. if (!MallAddons::isInstall($mall_id, AddonsEnum::ADDONS_NAME_ZAO_DOUBLE_COPY)) return false;
  2772. $total_achievement = $params['condition_data'][$params['key']]['setting'][0]['name'];
  2773. $user_id = $params['user_id'];
  2774. $arr = $params['arr'];
  2775. $key = $params['key'];
  2776. $total_achievement = $arr[$key]['value'][$total_achievement];
  2777. $is_bool = false;
  2778. $team = ZaoDoubleCopyUser::find()->select('achievement')->where(['pid' => $user_id])->asArray()->all();
  2779. $achievement_arr = array_column($team,'achievement');
  2780. if(empty($achievement_arr)) return $is_bool;
  2781. $max = max($achievement_arr);
  2782. $total = array_sum($achievement_arr);
  2783. $diff = bcsub($total,$max,2);
  2784. if ($diff >= $total_achievement) {
  2785. $is_bool = true;
  2786. }
  2787. return $is_bool;
  2788. }
  2789. /**
  2790. * 当前用户下单笔数与下单金额
  2791. * @param $params
  2792. * @return bool
  2793. */
  2794. protected static function condition55($params)
  2795. {
  2796. $user_id = $params['user_id'];
  2797. // 积分是否不累计
  2798. $scoreSettingStr = Yii::$app->services->setting->mall->get($params['mall_id'], 'pay.score');
  2799. $isNotCumulative = !empty(json_decode($scoreSettingStr, true)['is_not_cumulative']);
  2800. $orderQuery = Order::find()
  2801. ->where(['user_id' => $user_id, 'pay_status' => StatusEnum::ENABLED])
  2802. ->andWhere(['mch_id' => StatusEnum::DISABLED, 'store_id' => StatusEnum::DISABLED]);
  2803. if (!empty($isNotCumulative)) {
  2804. // 如果开启积分支付不计入
  2805. $orderQuery->andWhere(['<>', 'payment_type', PayTypeEnum::SCORE]);
  2806. }
  2807. $orderList = $orderQuery->select('pay_money')->asArray()->all();
  2808. if (empty($orderList)) return false; // 订单为空直接返回false
  2809. // 计算订单金额
  2810. $orderMoneySum = array_sum(array_column($orderList, 'pay_money'));
  2811. $order_cnt_name = $params['condition_data'][$params['key']]['setting'][0]['name'];
  2812. $order_amount_name = $params['condition_data'][$params['key']]['setting'][1]['name'];
  2813. $arr = $params['arr'];
  2814. $key = $params['key'];
  2815. return count($orderList) >= $arr[$key]['value'][$order_cnt_name] && $orderMoneySum >= $arr[$key]['value'][$order_amount_name];
  2816. }
  2817. /**
  2818. * @desc: 条件56
  2819. * 备注:因为新需求根据用户选择条件进行订单查询
  2820. * 个人订单满____笔,个人订单满____元 (1 平台 2 多商户 3 门店) 备注:括号中为多选。按插件订单进行数据查询
  2821. * @param $params
  2822. * @return bool
  2823. */
  2824. public static function condition56($params)
  2825. {
  2826. $user_id = $params['user_id'];
  2827. // 获取积分支付配置
  2828. $scorePaySetting = Yii::$app->services->setting->mall->get($params['mall_id'], 'pay.score');
  2829. $scorePaySetting = !empty($scorePaySetting) ? json_decode($scorePaySetting, true) : [];
  2830. $orderQuery = Order::find()
  2831. ->where(['user_id' => $user_id, 'pay_status' => StatusEnum::ENABLED]);
  2832. if (!empty($scorePaySetting) && !empty($scorePaySetting['is_not_cumulative'])) {
  2833. // 如果开启积分支付不计入
  2834. $orderQuery->andWhere(['<>', 'payment_type', PayTypeEnum::SCORE]);
  2835. }
  2836. // 获取勾选订单插件
  2837. $checkboxKey = $params['condition_data'][$params['key']]['setting'][2]['name'];
  2838. $checkboxList = $params['arr'][$params['key']]['value'][$checkboxKey];
  2839. if (!empty($checkboxList)) { // 判断是否勾选
  2840. // 判断是否勾选平台
  2841. if (!in_array(1, $checkboxList)) {
  2842. $orderQuery->andWhere(['>', 'mch_id', 0]);
  2843. }
  2844. if (!in_array(2, $checkboxList)) { // 没有勾选多商户
  2845. $orderQuery->andWhere(['mch_id' => 0]);
  2846. }
  2847. if (!in_array(3, $checkboxList)) { // 没有勾选门店
  2848. $orderQuery->andWhere(['store_id' => 0]);
  2849. }
  2850. }
  2851. $orderList = $orderQuery->select('pay_money')->asArray()->all();
  2852. if (empty($orderList)) return false; // 订单为空直接返回false
  2853. // 计算订单金额
  2854. $orderMoneySum = array_sum(array_column($orderList, 'pay_money'));
  2855. // 获取设置的订单数量和金额
  2856. $systemCountKey = $params['condition_data'][$params['key']]['setting'][0]['name'];
  2857. $systemCount = $params['arr'][$params['key']]['value'][$systemCountKey];
  2858. $systemMoneyKey = $params['condition_data'][$params['key']]['setting'][1]['name'];
  2859. $systemMoney = $params['arr'][$params['key']]['value'][$systemMoneyKey];
  2860. return count($orderList) >= $systemCount && $orderMoneySum >= $systemMoney;
  2861. }
  2862. /**
  2863. * @desc:条件64
  2864. * 团队总业绩____达到____元,业绩最高的前____个部门,每个部门的业绩不能低于____元
  2865. * @Author: hua
  2866. * @Date: 2021/10/23
  2867. * @Time: 14:16
  2868. * @Copyright: copyright (c) 2021 广东七件事集团
  2869. * @param $params
  2870. * @return bool
  2871. */
  2872. protected static function condition64($params)
  2873. {
  2874. return self::upgrade64(
  2875. $params['condition_data'][$params['key']]['setting'][0]['name'],
  2876. $params['condition_data'][$params['key']]['setting'][1]['name'],
  2877. $params['condition_data'][$params['key']]['setting'][2]['name'],
  2878. $params['condition_data'][$params['key']]['setting'][3]['name'],
  2879. $params['user_id'],
  2880. $params['arr'],
  2881. $params['key']
  2882. );
  2883. }
  2884. /**
  2885. * @desc:条件65
  2886. * 直推___人,当中___人团队订单大于等于___单,团队总订单___单
  2887. * @Author: hua
  2888. * @Date: 2021/10/23
  2889. * @Time: 14:16
  2890. * @Copyright: copyright (c) 2021 广东七件事集团
  2891. * @param $params
  2892. * @return bool
  2893. */
  2894. protected static function condition65($params)
  2895. {
  2896. $team_achievement_name = $params['condition_data'][$params['key']]['setting'][0]['name'];
  2897. $team_achievement_people_num_name = $params['condition_data'][$params['key']]['setting'][1]['name'];
  2898. $team_achievement_order_num_name = $params['condition_data'][$params['key']]['setting'][2]['name'];
  2899. $team_total_order_num_name = $params['condition_data'][$params['key']]['setting'][3]['name'];
  2900. $team_goods_cats_name = $params['condition_data'][$params['key']]['setting'][4]['name'];
  2901. $arr = $params['arr'];
  2902. $key = $params['key'];
  2903. $team_achievement_value = $arr[$key]['value'][$team_achievement_name] ?? 0;
  2904. $team_achievement_people_num_value = $arr[$key]['value'][$team_achievement_people_num_name] ?? 0;
  2905. $team_achievement_order_num_value = $arr[$key]['value'][$team_achievement_order_num_name] ?? 0;
  2906. $team_total_order_num_value = $arr[$key]['value'][$team_total_order_num_name] ?? 0;
  2907. $team_goods_cats_value = !empty($arr[$key]['value'][$team_goods_cats_name]) ? Json::decode($arr[$key]['value'][$team_goods_cats_name]) : [];
  2908. // 好友人数
  2909. $team_achievement = User::find()->where(['parent_id' => $params['user_id']])
  2910. ->andWhere(['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])->select('id')->column();
  2911. if (count($team_achievement) < $team_achievement_value) {
  2912. return false;
  2913. }
  2914. // 取出商品ID
  2915. $cat_ids = [];
  2916. $goods_ids = [];
  2917. $cat_goods_ids = [];
  2918. if (!empty($team_goods_cats_value)) {
  2919. foreach ($team_goods_cats_value as $cat) {
  2920. $cat_ids[] = array_pop($cat);
  2921. }
  2922. foreach ($cat_ids as $cat_id) {
  2923. $goods_ids = GoodsCateRelate::find()->where(['cate_id' => $cat_id])->select('goods_id')->column();
  2924. $cat_goods_ids[$cat_id] = $goods_ids;
  2925. }
  2926. $goods_ids = array_unique($goods_ids);
  2927. }
  2928. // 必须N个团队N笔订单
  2929. // 取出指定类目团队下单笔数
  2930. $o_cnt_arr = [];
  2931. $o_cnt_total = 0;
  2932. $cat_goods_arr = [];
  2933. foreach ($team_achievement as $user_id) {
  2934. $child_user_ids = UserPartitionRelationship::getChildIdArr($user_id);
  2935. $child_user_ids[] = $user_id;
  2936. $o_cnt = 0;
  2937. foreach ($child_user_ids as $item_user_id) {
  2938. $order_list = OrderDetail::lists([
  2939. 'where' => [
  2940. ['user_id' => $item_user_id],
  2941. ['goods_id'=> $goods_ids],
  2942. ['order_status' =>
  2943. [OrderStatusEnum::PAY, OrderStatusEnum::SHIPMENTS, OrderStatusEnum::SING,
  2944. OrderStatusEnum::ACCOMPLISH, OrderStatusEnum::TAKE, OrderStatusEnum::TAKE_FINISH]
  2945. ],
  2946. ],
  2947. 'select'=> 'order_id, goods_id',
  2948. // 'index' => 'goods_id'
  2949. ]);
  2950. if (!empty($order_list)) {
  2951. foreach ($order_list as $value) {
  2952. foreach ($cat_goods_ids as $cid => $cat_goods) {
  2953. if (in_array($value['goods_id'], $cat_goods) && empty($cat_goods_arr["{$user_id}_{$item_user_id}_{$cid}"])) {
  2954. $o_cnt_total += 1;
  2955. $o_cnt += 1;
  2956. $cat_goods_arr["{$user_id}_{$item_user_id}_{$cid}"] = 1;
  2957. }
  2958. }
  2959. }
  2960. }
  2961. // $o_cnt_total += count($order_list);
  2962. // $o_cnt += count($order_list);
  2963. // $o_cnt += count(array_column($order_list, 'order_id', 'goods_id'));
  2964. }
  2965. if ($o_cnt >= $team_achievement_order_num_value) { // 只有当当前团队总订单数量符合条件才能放入团队订单栈中
  2966. $o_cnt_arr[] = StatusEnum::ENABLED;
  2967. }
  2968. }
  2969. // 判断团队下单数量
  2970. if (count($o_cnt_arr) < $team_achievement_people_num_value) return false;
  2971. // 取出当前用户的订单
  2972. $order_list = OrderDetail::lists([
  2973. 'where' => [
  2974. ['user_id' => $params['user_id']],
  2975. ['goods_id'=> $goods_ids],
  2976. ['order_status' =>
  2977. [OrderStatusEnum::PAY, OrderStatusEnum::SHIPMENTS, OrderStatusEnum::SING,
  2978. OrderStatusEnum::ACCOMPLISH, OrderStatusEnum::TAKE, OrderStatusEnum::TAKE_FINISH]
  2979. ],
  2980. ],
  2981. 'select'=> 'order_id, goods_id',
  2982. // 'index' => 'goods_id'
  2983. ]);
  2984. if (!empty($order_list)) {
  2985. foreach ($order_list as $value) {
  2986. foreach ($cat_goods_ids as $cid => $cat_goods) {
  2987. if (in_array($value['goods_id'], $cat_goods) && empty($cat_goods_arr["{$params['user_id']}_{$cid}"])) {
  2988. $o_cnt_total += 1;
  2989. $cat_goods_arr["{$params['user_id']}_{$cid}"] = 1;
  2990. }
  2991. }
  2992. }
  2993. }
  2994. // 校验当前团队所有订单数量
  2995. return $o_cnt_total >= $team_total_order_num_value;
  2996. }
  2997. /**
  2998. * @desc:条件66
  2999. * 所有下级会员等级>=____,且数量达到____个
  3000. * @Author: hua
  3001. * @Date: 2021/10/23
  3002. * @Time: 14:16
  3003. * @Copyright: copyright (c) 2021 广东七件事集团
  3004. * @param $params
  3005. * @return bool
  3006. */
  3007. protected static function condition66($params)
  3008. {
  3009. $user_level_name = $params['condition_data'][$params['key']]['setting'][0]['name'];
  3010. $user_num_name = $params['condition_data'][$params['key']]['setting'][1]['name'];
  3011. $arr = $params['arr'];
  3012. $key = $params['key'];
  3013. $user_level_value = $arr[$key]['value'][$user_level_name] ?? 0;
  3014. $user_num_value = $arr[$key]['value'][$user_num_name] ?? 0;
  3015. // 取出所有下级
  3016. $child_user_ids = UserPartitionRelationship::getChildIdArr($params['user_id']);
  3017. if (count($child_user_ids) < $user_num_value) return false; // 下级数量不够的情况下直接返回条件不成立
  3018. $cnt = User::find()
  3019. ->where(['id' => $child_user_ids])
  3020. ->andWhere(['>=', 'level', $user_level_value])
  3021. ->andWhere(['status' => StatusEnum::ENABLED])->count();
  3022. return $cnt >= $user_num_value;
  3023. }
  3024. /**
  3025. * @desc:条件67
  3026. * 二二复制____等级直推____等级____人,团队产生____等级____人
  3027. * @Author: hua
  3028. * @Date: 2021/10/23
  3029. * @Time: 14:16
  3030. * @Copyright: copyright (c) 2021 广东七件事集团
  3031. * @param $params
  3032. * @return bool
  3033. */
  3034. protected static function condition67($params)
  3035. {
  3036. return self::upgrade67(
  3037. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3038. $params['condition_data'][$params['key']]['setting'][1]['name'],
  3039. $params['condition_data'][$params['key']]['setting'][2]['name'],
  3040. $params['condition_data'][$params['key']]['setting'][3]['name'],
  3041. $params['condition_data'][$params['key']]['setting'][4]['name'],
  3042. $params['user_id'],
  3043. $params['mall_id'],
  3044. $params['arr'],
  3045. $params['key']
  3046. );
  3047. }
  3048. /**
  3049. * @desc:条件68
  3050. * 直推____个云仓代理____,且补货指定商品____个,商品ID组____
  3051. * @Author: hua
  3052. * @Date: 2021/10/23
  3053. * @Time: 14:16
  3054. * @Copyright: copyright (c) 2021 广东七件事集团
  3055. * @param $params
  3056. * @return bool
  3057. */
  3058. protected static function condition68($params)
  3059. {
  3060. return self::upgrade68(
  3061. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3062. $params['condition_data'][$params['key']]['setting'][1]['name'],
  3063. $params['condition_data'][$params['key']]['setting'][2]['name'],
  3064. $params['condition_data'][$params['key']]['setting'][3]['name'],
  3065. $params['user_id'],
  3066. $params['mall_id'],
  3067. $params['arr'],
  3068. $params['key']
  3069. );
  3070. }
  3071. /**
  3072. * @desc:条件69
  3073. * 个人补货指定____商品____
  3074. * @Author: hua
  3075. * @Date: 2021/10/23
  3076. * @Time: 14:16
  3077. * @Copyright: copyright (c) 2021 广东七件事集团
  3078. * @param $params
  3079. * @return bool
  3080. */
  3081. protected static function condition69($params)
  3082. {
  3083. return self::upgrade69(
  3084. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3085. $params['condition_data'][$params['key']]['setting'][1]['name'],
  3086. $params['user_id'],
  3087. $params['mall_id'],
  3088. $params['arr'],
  3089. $params['key']
  3090. );
  3091. }
  3092. /**
  3093. * @desc:条件70
  3094. * 个人业绩____元,所有下级业绩____元
  3095. * @Author: hua
  3096. * @Date: 2021/10/23
  3097. * @Time: 14:16
  3098. * @Copyright: copyright (c) 2021 广东七件事集团
  3099. * @param $params
  3100. * @return bool
  3101. */
  3102. protected static function condition70($params)
  3103. {
  3104. return static::upgrade70(
  3105. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3106. $params['condition_data'][$params['key']]['setting'][1]['name'],
  3107. $params['user_id'],
  3108. $params['arr'],
  3109. $params['key'],
  3110. $params['mall_id']
  3111. );
  3112. }
  3113. /**
  3114. * @desc:条件120
  3115. * 个人业绩____元
  3116. * @Author: hua
  3117. * @Date: 2021/10/23
  3118. * @Time: 14:16
  3119. * @Copyright: copyright (c) 2021 广东七件事集团
  3120. * @param $params
  3121. * @return bool
  3122. */
  3123. protected static function condition121($params)
  3124. {
  3125. return static::upgrade121(
  3126. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3127. $params['condition_data'][$params['key']]['setting'][1]['name'],
  3128. $params['user_id'],
  3129. $params['arr'],
  3130. $params['key'],
  3131. $params['mall_id']
  3132. );
  3133. }
  3134. /**
  3135. * ____等级,直推____等级数量____个,同时直推业绩____元
  3136. */
  3137. protected static function condition80($params)
  3138. {
  3139. $cond = $params['arr'][$params['key']];
  3140. $user_level = $cond['value']['user_level'];
  3141. $child_level = $cond['value']['child_level'];
  3142. $rec_num = $cond['value']['rec_num'];
  3143. $direct_performance = $cond['value']['direct_performance'];
  3144. $user_id = $params['user_id'];
  3145. $current_user_level = User::find()->where(['id' => $user_id, 'status' => StatusEnum::ENABLED])->select('level')->scalar() ?? 0;
  3146. if($current_user_level < $user_level) {
  3147. return false;
  3148. }
  3149. $direct_child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1);
  3150. $user_child_list = User::find()->where(['and', ['id' => $direct_child_ids], ['status' => StatusEnum::ENABLED]])->andWhere(['>=', 'level', $child_level])->select('id')->asArray()->all() ?? [];
  3151. if(count($user_child_list) < $rec_num){
  3152. return false;
  3153. }
  3154. $order_performance = Order::find()->where(['and', ['user_id' => array_column($user_child_list, 'id')], ['order_status' => OrderStatusEnum::ACCOMPLISH]])
  3155. ->sum('pay_money') ?? 0;
  3156. if($order_performance < $direct_performance){
  3157. return false;
  3158. }
  3159. return true;
  3160. }
  3161. /**
  3162. * ____等级,直推____等级数量____个,同时直推业绩____元
  3163. */
  3164. protected static function condition71($params)
  3165. {
  3166. $cond = $params['arr'][$params['key']];
  3167. $user_level = $cond['value']['user_level'];
  3168. $child_level = $cond['value']['child_level'];
  3169. $rec_num = $cond['value']['rec_num'];
  3170. $direct_performance = $cond['value']['direct_performance'];
  3171. $user_id = $params['user_id'];
  3172. $current_user_level = Distribution::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])->select('level')->scalar() ?? 0;
  3173. if($current_user_level < $user_level) {
  3174. return false;
  3175. }
  3176. $direct_child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1);
  3177. $user_child_list = Distribution::find()->where(['and', ['user_id' => $direct_child_ids], ['status' => StatusEnum::ENABLED]])->andWhere(['>=', 'level', $child_level])->select('user_id')->asArray()->all() ?? [];
  3178. if(count($user_child_list) < $rec_num){
  3179. return false;
  3180. }
  3181. $order_performance = Order::find()->where(['and', ['user_id' => array_column($user_child_list, 'user_id')], ['order_status' => OrderStatusEnum::ACCOMPLISH]])
  3182. ->sum('pay_money') ?? 0;
  3183. if($order_performance < $direct_performance){
  3184. return false;
  3185. }
  3186. return true;
  3187. }
  3188. /**
  3189. * ____等级,直推____等级数量____个,同时直推业绩____元
  3190. */
  3191. protected static function condition72($params)
  3192. {
  3193. $cond = $params['arr'][$params['key']];
  3194. $user_level = $cond['value']['user_level'];
  3195. $child_level = $cond['value']['child_level'];
  3196. $rec_num = $cond['value']['rec_num'];
  3197. $direct_performance = $cond['value']['direct_performance'];
  3198. $user_id = $params['user_id'];
  3199. $current_user_level = Agent::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])->select('level')->scalar() ?? 0;
  3200. if($current_user_level < $user_level) {
  3201. return false;
  3202. }
  3203. $direct_child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1);
  3204. $user_child_list = Agent::find()->where(['and', ['user_id' => $direct_child_ids], ['status' => StatusEnum::ENABLED]])->andWhere(['>=', 'level', $child_level])->select('user_id')->asArray()->all() ?? [];
  3205. if(count($user_child_list) < $rec_num){
  3206. return false;
  3207. }
  3208. $order_performance = Order::find()->where(['and', ['user_id' => array_column($user_child_list, 'user_id')], ['order_status' => OrderStatusEnum::ACCOMPLISH]])
  3209. ->sum('pay_money') ?? 0;
  3210. if($order_performance < $direct_performance){
  3211. return false;
  3212. }
  3213. return true;
  3214. }
  3215. /**
  3216. * ____等级,直推____等级数量____个,同时直推业绩____元
  3217. */
  3218. protected static function condition74($params)
  3219. {
  3220. $cond = $params['arr'][$params['key']];
  3221. $user_level = $cond['value']['user_level'];
  3222. $child_level = $cond['value']['child_level'];
  3223. $rec_num = $cond['value']['rec_num'];
  3224. $direct_performance = $cond['value']['direct_performance'];
  3225. $user_id = $params['user_id'];
  3226. $current_user_level = AddonsBoss::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])->select('level')->scalar() ?? 0;
  3227. if($current_user_level < $user_level) {
  3228. return false;
  3229. }
  3230. $direct_child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1);
  3231. $user_child_list = AddonsBoss::find()->where(['and', ['user_id' => $direct_child_ids], ['status' => StatusEnum::ENABLED]])->andWhere(['>=', 'level', $child_level])->select('user_id')->asArray()->all() ?? [];
  3232. if(count($user_child_list) < $rec_num){
  3233. return false;
  3234. }
  3235. $order_performance = Order::find()->where(['and', ['user_id' => array_column($user_child_list, 'user_id')], ['order_status' => OrderStatusEnum::ACCOMPLISH]])
  3236. ->sum('pay_money') ?? 0;
  3237. if($order_performance < $direct_performance){
  3238. return false;
  3239. }
  3240. return true;
  3241. }
  3242. /**
  3243. * ____等级,直推____等级数量____个,同时直推业绩____元
  3244. */
  3245. protected static function condition90($params)
  3246. {
  3247. $cond = $params['arr'][$params['key']];
  3248. $cond_num = $cond['value']['buy_num'];
  3249. $user_id = $params['user_id'];
  3250. $buy_num = (int) OrderDetail::find()->where(['user_id' => $user_id])
  3251. ->andWhere(['order_status' => OrderStatusEnum::ACCOMPLISH])
  3252. ->sum('num');
  3253. return $buy_num >= $cond_num;
  3254. }
  3255. /**
  3256. * 购买指定商品,商品ID组_______
  3257. * @param $params
  3258. * @return bool
  3259. */
  3260. protected static function condition91($params)
  3261. {
  3262. $cond = $params['arr'][$params['key']];
  3263. $goods_ids = $cond['value']['goods_ids'] ?? '';
  3264. if($goods_ids){
  3265. $goods_ids = explode(',',$goods_ids);
  3266. $user_id = $params['user_id'];
  3267. $detail = OrderDetail::find()->where(['user_id' => $user_id,'goods_id' => $goods_ids])
  3268. ->andWhere(['order_status' => [OrderStatusEnum::PAY,OrderStatusEnum::SHIPMENTS,OrderStatusEnum::SING,OrderStatusEnum::ACCOMPLISH]])->one();
  3269. if($detail) return true;
  3270. }
  3271. return false;
  3272. }
  3273. /**
  3274. * 成为渠道分红等级会员
  3275. * @param $params
  3276. * @return bool
  3277. */
  3278. protected static function condition95($params)
  3279. {
  3280. $user_id = $params['user_id'];
  3281. $cur_key = $params['key'];
  3282. $all_cond = $params['arr'];
  3283. $cur_cond = $all_cond[$cur_key];
  3284. $level_require_set = $cur_cond['value']['checked_level'];
  3285. $cur_user_level = (int) Agent::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])
  3286. ->select('level')->scalar();
  3287. return in_array($cur_user_level, $level_require_set);
  3288. }
  3289. /**
  3290. * 个人团队业绩-直推下级最高团队业绩>=N元,订单完成
  3291. */
  3292. protected static function condition96($params)
  3293. {
  3294. $cond = $params['arr'][$params['key']];
  3295. $money = $cond['value']['money'];
  3296. if ($money <=0 ) {
  3297. return false;
  3298. }
  3299. $self_user_team_order_price_total = 0;
  3300. $user_id = $params['user_id'];
  3301. $user_team_statistics_model = UserTeamStatistics::find()->where(['user_id'=>$user_id])->one();
  3302. $child_ids = UserPartitionRelationship::getChildIdArr($user_id,1);
  3303. if(!empty($user_team_statistics_model)) {
  3304. $self_user_team_order_price_total = $user_team_statistics_model['team_finish_order_price_total'];
  3305. }
  3306. $field = "sum(uts.team_finish_order_price_total+ust.finish_order_money) as total_money";
  3307. $one = \common\models\user\UserTeamStatistics::find()->alias('uts')
  3308. ->leftJoin(UserStatisticsTotal::tableName().' as ust','uts.user_id=ust.user_id')
  3309. ->where(['uts.user_id'=>$child_ids])
  3310. ->select("uts.user_id,{$field}")
  3311. ->orderBy('total_money desc')
  3312. ->groupBy('uts.user_id')
  3313. ->asArray()
  3314. ->one();
  3315. $total_money = $one['total_money']??0;
  3316. $cha = $self_user_team_order_price_total - $total_money;
  3317. return $cha >= $money;
  3318. }
  3319. protected static function condition97($params)
  3320. {
  3321. $user_id_arr = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  3322. return static::upgrade97(
  3323. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3324. $params['condition_data'][$params['key']]['setting'][1]['name'],
  3325. 'addons\AgentBase\common\models\AgentBase',
  3326. $user_id_arr,
  3327. $params['arr'],
  3328. $params['key']
  3329. );
  3330. }
  3331. protected static function condition98($params)
  3332. {
  3333. return static::upgrade98(
  3334. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3335. $params['condition_data'][$params['key']]['setting'][1]['name'],
  3336. 'addons\AgentBase\common\models\AgentBase',
  3337. $params['user_id'],
  3338. $params['arr'],
  3339. $params['key']
  3340. );
  3341. }
  3342. protected static function condition99($params)
  3343. {
  3344. return static::upgrade99(
  3345. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3346. $params['condition_data'][$params['key']]['setting'][1]['name'],
  3347. $params['condition_data'][$params['key']]['setting'][2]['name'],
  3348. 'addons\AgentBase\common\models\AgentBase',
  3349. $params['user_id'],
  3350. $params['arr'],
  3351. $params['key']
  3352. );
  3353. }
  3354. protected static function condition100($params)
  3355. {
  3356. $cond = $params['arr'][$params['key']];
  3357. $user_level = $cond['value']['user_level'];
  3358. $child_level = $cond['value']['child_level'];
  3359. $rec_num = $cond['value']['rec_num'];
  3360. $direct_performance = $cond['value']['direct_performance'];
  3361. $user_id = $params['user_id'];
  3362. $current_user_level = \addons\AgentBase\common\models\AgentBase::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])->select('level')->scalar() ?? 0;
  3363. if($current_user_level < $user_level) {
  3364. return false;
  3365. }
  3366. $direct_child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1);
  3367. $user_child_list = \addons\AgentBase\common\models\AgentBase::find()->where(['and', ['user_id' => $direct_child_ids], ['status' => StatusEnum::ENABLED]])->andWhere(['>=', 'level', $child_level])->select('user_id')->asArray()->all() ?? [];
  3368. if(count($user_child_list) < $rec_num){
  3369. return false;
  3370. }
  3371. $order_performance = Order::find()->where(['and', ['user_id' => array_column($user_child_list, 'user_id')], ['order_status' => OrderStatusEnum::ACCOMPLISH]])
  3372. ->sum('pay_money') ?? 0;
  3373. if($order_performance < $direct_performance){
  3374. return false;
  3375. }
  3376. return true;
  3377. }
  3378. protected static function condition101($params)
  3379. {
  3380. $user_id = UserPartitionRelationship::getChildIdArr($params['user_id'], 2);
  3381. return static::upgrade101(
  3382. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3383. $params['condition_data'][$params['key']]['setting'][1]['name'],
  3384. $user_id,
  3385. $params['arr'],
  3386. $params['key']
  3387. );
  3388. }
  3389. // 指定商品ID____,并且单笔订单金额满____元
  3390. protected static function condition102($params)
  3391. {
  3392. if (empty($params['order_id'])) return false;
  3393. $user_id = $params['user_id'];
  3394. $cond = $params['arr'][$params['key']];
  3395. $goods_ids = $cond['value']['goods_ids'];
  3396. $finish_order_money = $cond['value']['finish_order_money'];
  3397. // 先判断有没有买这个商品
  3398. $order_list = OrderDetail::find()->select('goods_price')->where(['user_id' => $user_id, 'goods_id' => explode(',', $goods_ids), 'order_status' => OrderStatusEnum::ACCOMPLISH, 'status' => StatusEnum::ENABLED])->asArray()->all();
  3399. if(empty($order_list)){
  3400. return false;
  3401. }
  3402. // 再判断买了商品后,钱够不够
  3403. $total_money = OrderDetail::find()->select('goods_price')->where(['user_id' => $user_id, 'goods_id' => explode(',', $goods_ids), 'order_status' => OrderStatusEnum::ACCOMPLISH, 'status' => StatusEnum::ENABLED])->sum('goods_price') ?? 0;
  3404. if ($total_money >= $finish_order_money) return true;
  3405. return false;
  3406. }
  3407. // 群组(团队包含本人)商品售价业绩(支付完成/订单完成)达到N元
  3408. protected static function condition105($params)
  3409. {
  3410. $user_id = $params['user_id'];
  3411. $cond = $params['arr'][$params['key']];
  3412. $is_when_settlement = $cond['value']['is_when_settlement'] ?? null;
  3413. $money = $cond['value']['money'] ?? null;
  3414. if (!isset($is_when_settlement) || !isset($money)) {
  3415. return false;
  3416. }
  3417. $where = ['user_id' => $user_id];
  3418. // 个人商品售价
  3419. $userTotal = 0;
  3420. $userStatisticsTotalField = [
  3421. 0 => 'finish_selling_price',
  3422. 1 => 'pay_selling_price',
  3423. ];
  3424. if (isset($userStatisticsTotalField[$is_when_settlement])) {
  3425. $userTotal = UserAchievementStatisticsTotal::find()
  3426. ->where($where)
  3427. ->select($userStatisticsTotalField[$is_when_settlement])
  3428. ->scalar() ?: 0;
  3429. }
  3430. // 团队商品售价
  3431. $teamTotal = 0;
  3432. $userTeamStatisticsField = [
  3433. 0 => 'team_finish_selling_price',
  3434. 1 => 'team_pay_selling_price',
  3435. ];
  3436. if (isset($userTeamStatisticsField[$is_when_settlement])) {
  3437. $teamTotal = UserTeamAchievementStatistics::find()
  3438. ->where($where)
  3439. ->select($userTeamStatisticsField[$is_when_settlement])
  3440. ->scalar() ?: 0;
  3441. }
  3442. return ($userTotal + $teamTotal) >= $money;
  3443. }
  3444. /**
  3445. * @desc:条件106
  3446. * 特级分销,分销佣金金额满____元
  3447. * @Author: hua
  3448. * @Date: 2021/10/23
  3449. * @Time: 15:41
  3450. * @Copyright: copyright (c) 2021 广东七件事集团
  3451. * @param $params
  3452. * @return bool
  3453. */
  3454. protected static function condition106($params)
  3455. {
  3456. return static::upgrade106(
  3457. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3458. $params['user_id'],
  3459. $params['arr'],
  3460. $params['key']
  3461. );
  3462. }
  3463. /**
  3464. * @desc:条件107
  3465. * 特级分销,分销订单数量满____个
  3466. * @Author: hua
  3467. * @Date: 2021/10/23
  3468. * @Time: 15:41
  3469. * @Copyright: copyright (c) 2021 广东七件事集团
  3470. * @param $params
  3471. * @return bool
  3472. */
  3473. protected static function condition107($params)
  3474. {
  3475. return static::upgrade107(
  3476. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3477. $params['user_id'],
  3478. $params['arr'],
  3479. $params['key']
  3480. );
  3481. }
  3482. /**
  3483. * @desc:特级分销,一级分销佣金金额满____元
  3484. * @Author: hua
  3485. * @Date: 2021/11/18
  3486. * @Time: 16:39
  3487. * @Copyright: copyright (c) 2021 广东七件事集团
  3488. * @param $params
  3489. * @return bool
  3490. */
  3491. protected static function condition108($params)
  3492. {
  3493. return static::upgrade108(
  3494. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3495. $params['user_id'],
  3496. $params['arr'],
  3497. $params['key']
  3498. );
  3499. }
  3500. /**
  3501. * @desc:特级分销,一级分销订单数量满____个
  3502. * @Author: hua
  3503. * @Date: 2021/11/18
  3504. * @Time: 16:43
  3505. * @Copyright: copyright (c) 2021 广东七件事集团
  3506. * @param $params
  3507. * @return bool
  3508. */
  3509. protected static function condition109($params)
  3510. {
  3511. return static::upgrade107(
  3512. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3513. $params['user_id'],
  3514. $params['arr'],
  3515. $params['key'],
  3516. 'first'
  3517. );
  3518. }
  3519. /**
  3520. * @desc:特级分销,粉丝分销商人数满____人
  3521. * @Author: hua
  3522. * @Date: 2021/11/18
  3523. * @Time: 17:01
  3524. * @Copyright: copyright (c) 2021 广东七件事集团
  3525. * @param $params
  3526. * @return bool
  3527. */
  3528. protected static function condition110($params)
  3529. {
  3530. return static::upgrade110(
  3531. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3532. $params['user_id'],
  3533. $params['arr'],
  3534. $params['key']
  3535. );
  3536. }
  3537. /**
  3538. * @desc:特级分销,一级粉丝分销商人数满____人
  3539. * @Author: hua
  3540. * @Date: 2021/11/18
  3541. * @Time: 17:01
  3542. * @Copyright: copyright (c) 2021 广东七件事集团
  3543. * @param $params
  3544. * @return bool
  3545. */
  3546. protected static function condition111($params)
  3547. {
  3548. $user_id = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  3549. return static::upgrade111(
  3550. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3551. $user_id,
  3552. $params['arr'],
  3553. $params['key']
  3554. );
  3555. }
  3556. /**
  3557. * @desc:特级分销,分销结算佣金总额满____元
  3558. * @Author: hua
  3559. * @Date: 2021/11/18
  3560. * @Time: 17:05
  3561. * @Copyright: copyright (c) 2021 广东七件事集团
  3562. * @param $params
  3563. * @return bool
  3564. */
  3565. protected static function condition112($params)
  3566. {
  3567. return static::upgrade112(
  3568. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3569. $params['user_id'],
  3570. $params['arr'],
  3571. $params['key']
  3572. );
  3573. }
  3574. /**
  3575. * @desc:特级分销,直推分销商等级____数量____个
  3576. * @Author: hua
  3577. * @Date: 2021/11/18
  3578. * @Time: 17:14
  3579. * @Copyright: copyright (c) 2021 广东七件事集团
  3580. * @param $params
  3581. * @return bool
  3582. */
  3583. protected static function condition113($params)
  3584. {
  3585. $user_id = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  3586. return static::upgrade113(
  3587. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3588. $params['condition_data'][$params['key']]['setting'][1]['name'],
  3589. $user_id,
  3590. $params['arr'],
  3591. $params['key']
  3592. );
  3593. }
  3594. /**
  3595. * @desc:特级分销,间推分销商等级____数量____个
  3596. * @Author: hua
  3597. * @Date: 2021/11/18
  3598. * @Time: 17:14
  3599. * @Copyright: copyright (c) 2021 广东七件事集团
  3600. * @param $params
  3601. * @return bool
  3602. */
  3603. protected static function condition114($params)
  3604. {
  3605. $user_id = UserPartitionRelationship::getChildIdArr($params['user_id'], 2);
  3606. return static::upgrade113(
  3607. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3608. $params['condition_data'][$params['key']]['setting'][1]['name'],
  3609. $user_id,
  3610. $params['arr'],
  3611. $params['key']
  3612. );
  3613. }
  3614. /**
  3615. * @desc:特级分销,团队分销商(直推和间推)等级____数量____个
  3616. * @Author: hua
  3617. * @Date: 2021/11/18
  3618. * @Time: 17:14
  3619. * @Copyright: copyright (c) 2021 广东七件事集团
  3620. * @param $params
  3621. * @return bool
  3622. */
  3623. protected static function condition115($params)
  3624. {
  3625. $user_id1 = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  3626. $user_id2 = UserPartitionRelationship::getChildIdArr($params['user_id'], 2);
  3627. $user_id = array_merge($user_id1, $user_id2);
  3628. return static::upgrade113(
  3629. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3630. $params['condition_data'][$params['key']]['setting'][1]['name'],
  3631. $user_id,
  3632. $params['arr'],
  3633. $params['key']
  3634. );
  3635. }
  3636. protected static function condition116($params)
  3637. {
  3638. $direct = $params['condition_data'][$params['key']]['setting'][0]['name'];
  3639. $achievement = $params['condition_data'][$params['key']]['setting'][1]['name'];
  3640. $user_id = $params['user_id'];
  3641. $arr = $params['arr'];
  3642. $key = $params['key'];
  3643. $is_bool = false;
  3644. // 特级分销,获取用户当前好友人数+团队业绩
  3645. $data = PremiumDistributionUpgradeCount::find()->select('direct_num,achievement')->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])->asArray()->one();
  3646. if(empty($data)) return $is_bool;
  3647. if ($data['direct_num'] >= $arr[$key]['value'][$direct] && $data['achievement'] >= $arr[$key]['value'][$achievement]) $is_bool = true;
  3648. return $is_bool;
  3649. }
  3650. /**
  3651. * 特级分销
  3652. * ____等级,直推____等级数量____个,同时直推业绩____元
  3653. */
  3654. protected static function condition117($params)
  3655. {
  3656. $cond = $params['arr'][$params['key']];
  3657. $user_level = $cond['value']['user_level'];
  3658. $child_level = $cond['value']['child_level'];
  3659. $rec_num = $cond['value']['rec_num'];
  3660. $direct_performance = $cond['value']['direct_performance'];
  3661. $user_id = $params['user_id'];
  3662. $current_user_level = PremiumDistribution::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])->select('level')->scalar() ?? 0;
  3663. if($current_user_level < $user_level) {
  3664. return false;
  3665. }
  3666. $direct_child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1);
  3667. $user_child_list = PremiumDistribution::find()->where(['and', ['user_id' => $direct_child_ids], ['status' => StatusEnum::ENABLED]])->andWhere(['>=', 'level', $child_level])->select('user_id')->asArray()->all() ?? [];
  3668. if(count($user_child_list) < $rec_num){
  3669. return false;
  3670. }
  3671. $order_performance = Order::find()->where(['and', ['user_id' => array_column($user_child_list, 'user_id')], ['order_status' => OrderStatusEnum::ACCOMPLISH]])
  3672. ->sum('pay_money') ?? 0;
  3673. if($order_performance < $direct_performance){
  3674. return false;
  3675. }
  3676. return true;
  3677. }
  3678. protected static function condition500($params)
  3679. {
  3680. $cond = $params['arr'][$params['key']];
  3681. $is_include_yourself = $cond['value']['is_include_yourself'];
  3682. $is_when_settlement = $cond['value']['is_when_settlement'];
  3683. $settle_achievement = $cond['value']['settle_achievement'] ?? 0;
  3684. $total_performance = $cond['value']['total_performance'];
  3685. $target_big_performance = $cond['value']['max_performance'];
  3686. $target_small_performance = $cond['value']['min_performance'];
  3687. $user_id = $params['user_id'];
  3688. $statistics = UserTeamProfitStatistics::getOne([
  3689. ['user_id' => $user_id]
  3690. ], true);
  3691. if (empty($statistics)) return false;
  3692. //判断用户总业绩
  3693. $real_total_performance = 0;
  3694. $orderBy = 'children_order_finish_profit desc';
  3695. $field = 'id,user_id';
  3696. $field_str = '';
  3697. if ($is_when_settlement == 1) {
  3698. if ($is_include_yourself == 1) {
  3699. $field_str = 'team_order_pay';
  3700. } else {
  3701. $field_str = 'children_order_pay';
  3702. }
  3703. } else {
  3704. if ($is_include_yourself == 1) {
  3705. $field_str = 'team_order_finish';
  3706. } else {
  3707. $field_str = 'children_order_finish';
  3708. }
  3709. }
  3710. if ($settle_achievement == 1) {
  3711. $field_str .= '_achievement';
  3712. } else {
  3713. $field_str .= '_profit';
  3714. }
  3715. $real_total_performance = $statistics[$field_str];
  3716. $orderBy = $field_str . ' desc';
  3717. $field .= ','.$field_str.' as real_performance';
  3718. //判断总业绩是否达标
  3719. var_dump('500:'.$real_total_performance.'-----'.$total_performance);
  3720. if ($real_total_performance < $total_performance) return false;
  3721. //获取直推用户id
  3722. $direct_child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1);
  3723. $real_big_performance = 0;
  3724. $real_small_performance = 0;
  3725. if (!empty($direct_child_ids)) {
  3726. //获取大小市场业绩
  3727. $team_profit_statistics = UserTeamProfitStatistics::lists([
  3728. 'where' => [
  3729. ['user_id' => $direct_child_ids],
  3730. ],
  3731. 'select' => $field,
  3732. 'order' => $orderBy,
  3733. ]);
  3734. if (!empty($team_profit_statistics)) {
  3735. //获取大市场业绩
  3736. $real_big_performance = $team_profit_statistics[0]['real_performance'];
  3737. unset($team_profit_statistics[0]);
  3738. //统计小市场业绩
  3739. if (!empty($team_profit_statistics)) {
  3740. $real_small_performance = array_sum(array_column($team_profit_statistics, 'real_performance'));
  3741. }
  3742. }
  3743. }
  3744. // $real_big_performance = $is_when_settlement == 0 ? $statistics['accomplish_big_market_performance'] : $statistics['pay_big_market_performance'];
  3745. if ($real_big_performance < $target_big_performance) return false;
  3746. // $real_total_performance = $is_when_settlement == 0 ? $statistics['accomplish_team_performance'] : $statistics['pay_team_performance'];
  3747. // $real_small_performance = 0;
  3748. if ($real_small_performance < $target_small_performance) return false;
  3749. return true;
  3750. }
  3751. protected static function condition501($params)
  3752. {
  3753. $cond = $params['arr'][$params['key']];
  3754. $target_consume_amount = $cond['value']['consume_amount'];
  3755. $is_when_settlement = $cond['value']['is_when_settlement'];
  3756. $user_id = $params['user_id'];
  3757. $statistics = UserTeamProfitStatistics::getOne([['user_id' => $user_id]], true);
  3758. if (empty($statistics)) return false;
  3759. $user_consume_amount = $is_when_settlement == 0 ? ($statistics['team_order_finish_profit'] - $statistics['children_order_finish_profit']) : ($statistics['team_order_pay_profit'] - $statistics['children_order_pay_profit']);
  3760. return $user_consume_amount >= $target_consume_amount;
  3761. }
  3762. /**
  3763. * 升级条件502 : 自己+团队累计购买件数达到____件
  3764. * @param $params
  3765. * @return bool
  3766. */
  3767. protected static function condition502($params)
  3768. {
  3769. $params['data'] = [];
  3770. return static::upgrade502(
  3771. $params,
  3772. $params['user_id'],
  3773. $params['arr'],
  3774. $params['key']
  3775. );
  3776. }
  3777. protected static function condition550($params)
  3778. {
  3779. $user_id_arr = UserPartitionRelationship::getChildIdArr($params['user_id'], 1);
  3780. return static::upgrade14(
  3781. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3782. $params['condition_data'][$params['key']]['setting'][1]['name'],
  3783. 'addons\AgentDividend\common\models\Agent',
  3784. $user_id_arr,
  3785. $params['arr'],
  3786. $params['key']
  3787. );
  3788. }
  3789. /**
  3790. * @desc:条件551
  3791. * 代理分红所有下级经销商等级____数量____个
  3792. * @Author: hua
  3793. * @Date: 2021/10/23
  3794. * @Time: 14:16
  3795. * @Copyright: copyright (c) 2021 广东七件事集团
  3796. * @param $params
  3797. * @return bool
  3798. */
  3799. protected static function condition551($params)
  3800. {
  3801. return static::upgrade15(
  3802. $params['condition_data'][$params['key']]['setting'][0]['name'],
  3803. $params['condition_data'][$params['key']]['setting'][1]['name'],
  3804. 'addons\AgentDividend\common\models\Agent',
  3805. $params['user_id'],
  3806. $params['arr'],
  3807. $params['key']
  3808. );
  3809. }
  3810. public static function upgrade1($params, $user_id_arr, $arr, $key)
  3811. {
  3812. $data = $params['data'];
  3813. if ($key == 1) {
  3814. $name1 = $params['condition_data'][$key]['setting'][0]['name'];
  3815. $name2 = $params['condition_data'][$key]['setting'][1]['name'];
  3816. }
  3817. if (in_array($key, [2, 3, 4])) {
  3818. $name1 = $params['condition_data'][$key]['setting'][1]['name']; //字段2
  3819. $name2 = $params['condition_data'][$key]['setting'][2]['name']; //字段3
  3820. $name0 = $params['condition_data'][$params['key']]['setting'][0]['name']; //字段1
  3821. $data[$name0] = count($user_id_arr);
  3822. }
  3823. if (!isset($name1) || !isset($name2)) return false;
  3824. $mall_id = $params['mall_id']??0;
  3825. list($data[$name1], $data[$name2]) = static::getOrderDataByUserUpgrade($user_id_arr,$mall_id,$key);
  3826. $is_bool = true;
  3827. foreach ($arr[$key]['value'] as $k => $v) {
  3828. if (isset($data[$k])) {
  3829. if ($data[$k] < $v) {
  3830. $is_bool = false;
  3831. break;
  3832. }
  3833. } else {
  3834. $is_bool = false;
  3835. }
  3836. }
  3837. return $is_bool;
  3838. }
  3839. public static function upgrade5($name1, $name2, $user_id_arr, $arr, $key)
  3840. {
  3841. $counts = User::find()->where(['id' => $user_id_arr, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])
  3842. ->andWhere(['>=','level',$arr[$key]['value'][$name1]])
  3843. ->count();
  3844. if ($counts >= $arr[$key]['value'][$name2]) return true;
  3845. return false;
  3846. }
  3847. public static function upgrade9($name1, $name2, $name3, $name4, $children_id_arr1, $children_id_arr2, $arr, $key)
  3848. {
  3849. $is_bool = false;
  3850. $num1 = static::consumeNum($arr, $key, $name1, $children_id_arr1); //直推会员消费满多少元的累计人数
  3851. if ($num1 >= $arr[$key]['value'][$name2]) {
  3852. $num2 = static::consumeNum($arr, $key, $name3, $children_id_arr2); //间推会员消费满多少元的累计人数
  3853. if ($num2 >= $arr[$key]['value'][$name4]) $is_bool = true;
  3854. }
  3855. return $is_bool;
  3856. }
  3857. public static function upgrade10($name1, $name2, $name3, $children_id_arr1, $arr, $key)
  3858. {
  3859. $is_bool = false;
  3860. $num = count($children_id_arr1); //直推会员人数
  3861. if ($num >= $arr[$key]['value'][$name1]) {
  3862. $goods_id = $arr[$key]['value'][$name2];
  3863. $goods_id = explode(',', $goods_id);
  3864. $direct_user_buy_goods_id_num = $arr[$key]['value'][$name3];
  3865. $where = [
  3866. 'user_id' => $children_id_arr1, 'goods_id' => $goods_id,
  3867. 'order_status' => [OrderStatusEnum::PAY, OrderStatusEnum::SHIPMENTS, OrderStatusEnum::SING, OrderStatusEnum::ACCOMPLISH]
  3868. ];
  3869. $list = OrderDetail::find()->where($where)
  3870. ->groupBy('user_id')
  3871. ->select('user_id,count("user_id") as counts')
  3872. ->all();
  3873. $count = count($list);
  3874. if ($count >= $direct_user_buy_goods_id_num) $is_bool = true;
  3875. }
  3876. return $is_bool;
  3877. }
  3878. public static function upgrade11($name1, $name2, $user_id, $arr, $key)
  3879. {
  3880. $is_bool = false;
  3881. list($personal_counts, $personal_achievement) = static::getOrderData($user_id);//个人业绩
  3882. if ($personal_achievement >= $arr[$key]['value'][$name1]) {
  3883. // 团队业绩为0则认为达标
  3884. if (!isset($arr[$key]['value'][$name2]) || $arr[$key]['value'][$name2] <= 0) {
  3885. return true;
  3886. }
  3887. $offset = 1;
  3888. $limit = 1000;
  3889. $params['select'] = 'user_id';
  3890. $total_subordinates_achievement = 0;//所有下级业绩
  3891. static::batchFunc($params,$user_id,$offset,$limit,function ($user_id_arr){
  3892. $query = Order::find()->where(['user_id' => $user_id_arr, 'pay_status' => 1]);
  3893. return $query->sum('pay_money');
  3894. },$total_subordinates_achievement);
  3895. // while ($list = UserPartitionRelationship::batchGetTeamData($params,$user_id,$offset,$limit)){
  3896. // $children_id_arr = array_column($list,'user_id');
  3897. // list($subordinates_counts, $subordinates_achievement) = self::getOrderData($children_id_arr);//分段所有下级业绩
  3898. // $total_subordinates_achievement+=$subordinates_achievement;
  3899. // $offset++;
  3900. // }
  3901. if ($total_subordinates_achievement >= $arr[$key]['value'][$name2]) $is_bool = true;
  3902. }
  3903. return $is_bool;
  3904. }
  3905. public static function upgrade12($name1, $name2, $user_id_arr, $arr, $key)
  3906. {
  3907. $is_bool = false;
  3908. $num = count($user_id_arr);//间推会员人数
  3909. if ($num >= $arr[$key]['value'][$name1]) {
  3910. list($indirect_user_order, $indirect_user_order_price) = static::getOrderData($user_id_arr);//间推客户的订单金额
  3911. if ($indirect_user_order_price >= $arr[$key]['value'][$name2]) $is_bool = true;
  3912. }
  3913. return $is_bool;
  3914. }
  3915. public static function upgrade13($name1, $user_id, $arr, $key)
  3916. {
  3917. $is_bool = false;
  3918. $offset = 1;
  3919. $limit = 1000;
  3920. $total_counts = 0;
  3921. $params['select'] = 'user_id';
  3922. static::batchFunc($params,$user_id,$offset,$limit,function ($user_id_arr){
  3923. return Agent::find()->where(['user_id' => $user_id_arr, 'level' => 0, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])->count();
  3924. },$total_counts);
  3925. // while ($list = UserPartitionRelationship::batchGetTeamData($params,$user_id,$offset,$limit)){
  3926. // $user_id_arr = array_column($list,'user_id');
  3927. // $counts = Agent::find()->where(['user_id' => $user_id_arr, 'level' => 0, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])->count();
  3928. // $total_counts+=$counts;
  3929. // $offset++;
  3930. // }
  3931. if ($total_counts >= $arr[$key]['value'][$name1]) $is_bool = true;
  3932. return $is_bool;
  3933. }
  3934. public static function upgrade14($name1, $name2, $model_class, $user_id_arr, $arr, $key)
  3935. {
  3936. $is_bool = false;
  3937. $level = $arr[$key]['value'][$name1];
  3938. $counts = $model_class::find()->where(['user_id' => $user_id_arr, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])
  3939. ->andWhere(['>=','level',$level])
  3940. ->count();
  3941. if ($counts >= $arr[$key]['value'][$name2]) $is_bool = true;
  3942. return $is_bool;
  3943. }
  3944. public static function upgrade15($name1, $name2, $model_class, $user_id, $arr, $key)
  3945. {
  3946. $is_bool = false;
  3947. $level = $arr[$key]['value'][$name1];
  3948. $offset = 1;
  3949. $limit = 1000;
  3950. $total_counts = 0;
  3951. $params['select'] = 'user_id';
  3952. static::batchFunc($params,$user_id,$offset,$limit,function ($user_id_arr)use($model_class,$level){
  3953. return $model_class::find()->where(['user_id' => $user_id_arr, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])
  3954. ->andWhere(['>=','level',$level])
  3955. ->count();
  3956. },$total_counts);
  3957. // while ($list = UserPartitionRelationship::batchGetTeamData($params,$user_id,$offset,$limit)){
  3958. // $user_id_arr = array_column($list,'user_id');
  3959. // $counts = $model_class::find()->where(['user_id' => $user_id_arr, 'level' => $level, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])->count();
  3960. // $total_counts+=$counts;
  3961. // $offset++;
  3962. // }
  3963. if ($total_counts >= $arr[$key]['value'][$name2]) $is_bool = true;
  3964. return $is_bool;
  3965. }
  3966. public static function upgrade16($name1, $user_id, $arr, $key)
  3967. {
  3968. $is_bool = false;
  3969. $offset = 1;
  3970. $limit = 1000;
  3971. $total_counts = 0;
  3972. $params['select'] = 'user_id';
  3973. static::batchFunc($params,$user_id,$offset,$limit,function ($user_ids){
  3974. $query = Order::find()->where(['user_id' => $user_ids, 'pay_status' => 1]);
  3975. return $query->count();
  3976. },$total_counts);
  3977. // while ($list = UserPartitionRelationship::batchGetTeamData($params,$user_id,$offset,$limit)){
  3978. // $user_id_arr = array_column($list,'user_id');
  3979. // list($counts, $x) = self::getOrderData($user_id_arr);//单量指标
  3980. // $total_counts+=$counts;
  3981. // $offset++;
  3982. // }
  3983. if ($total_counts >= $arr[$key]['value'][$name1]) $is_bool = true;
  3984. return $is_bool;
  3985. }
  3986. public static function upgrade17($name1, $user_id, $arr, $key)
  3987. {
  3988. $is_bool = false;
  3989. $offset = 1;
  3990. $limit = 1000;
  3991. $params['select'] = 'user_id';
  3992. $total_nums = 0;
  3993. $max = 0;
  3994. list($tree, $parent_deep, $all_tree, $all_tree_arr) = UserPartitionRelationship::getTree($user_id);
  3995. while ($list = UserPartitionRelationship::batchGetTeamData($offset,$limit,$tree,$params)){
  3996. $user_id_arr = array_column($list,'user_id');
  3997. $list = static::getOrderCountsGroupByUserId($user_id_arr);
  3998. foreach ($list as $val) {
  3999. $total_nums += $val['counts'];
  4000. if ($val['counts'] > $max) {
  4001. $max = $val['counts'];
  4002. }
  4003. }
  4004. $offset++;
  4005. }
  4006. $counts = $total_nums - $max;
  4007. if ($counts >= $arr[$key]['value'][$name1]) $is_bool = true;
  4008. return $is_bool;
  4009. }
  4010. public static function upgrade21($name1, $user_id_arr, $arr, $key)
  4011. {
  4012. $is_bool = false;
  4013. list($order_num, $pay_money) = static::getOrderData($user_id_arr);//消费
  4014. if ($pay_money >= $arr[$key]['value'][$name1]) $is_bool = true;
  4015. return $is_bool;
  4016. }
  4017. public static function upgrade22($name1, $name2, $user_id_arr, $arr, $key)
  4018. {
  4019. $is_bool = false;
  4020. $list = static::getOrderDataGroupByUserId($user_id_arr);
  4021. $num = 0;
  4022. foreach ($list as $value) {
  4023. if ($value['pay_money'] >= $arr[$key]['value'][$name1]) $num++;
  4024. }
  4025. if ($num >= $arr[$key]['value'][$name2]) $is_bool = true;
  4026. return $is_bool;
  4027. }
  4028. public static function upgrade23($name1, $user_id, $arr, $key)
  4029. {
  4030. $is_bool = false;
  4031. $total_commission = static::getDistributionCommission($user_id);
  4032. if ($total_commission >= $arr[$key]['value'][$name1]) $is_bool = true;
  4033. return $is_bool;
  4034. }
  4035. public static function upgrade24($name1, $user_id, $arr, $key, $capital_type = 0)
  4036. {
  4037. $is_bool = false;
  4038. $counts = static::getDistributionCommissionOrderNum($user_id, $capital_type);
  4039. if ($counts >= $arr[$key]['value'][$name1]) $is_bool = true;
  4040. return $is_bool;
  4041. }
  4042. public static function upgrade25($name1, $user_id, $arr, $key)
  4043. {
  4044. $is_bool = false;
  4045. $counts = static::getDistributionCommissionFirst($user_id);
  4046. if ($counts >= $arr[$key]['value'][$name1]) $is_bool = true;
  4047. return $is_bool;
  4048. }
  4049. public static function upgrade27($name1, $user_id, $type, $arr, $key)
  4050. {
  4051. $is_bool = false;
  4052. list($personal_counts, $personal_achievement) = static::getOrderData($user_id);
  4053. if ($type == 'order_total_price' && $personal_achievement >= $arr[$key]['value'][$name1]) $is_bool = true;
  4054. if ($type == 'order_num' && $personal_counts >= $arr[$key]['value'][$name1]) $is_bool = true;
  4055. return $is_bool;
  4056. }
  4057. public static function upgrade29($name1, $user_id, $arr, $key)
  4058. {
  4059. $is_bool = false;
  4060. $offset = 1;
  4061. $limit = 1000;
  4062. $total_counts = 0;
  4063. $params['select'] = 'user_id';
  4064. static::batchFunc($params,$user_id,$offset,$limit,function ($user_ids){
  4065. return count($user_ids);
  4066. },$total_counts);
  4067. if ($total_counts >= $arr[$key]['value'][$name1]) $is_bool = true;
  4068. return $is_bool;
  4069. }
  4070. public static function upgrade30($name1, $user_id, $arr, $key)
  4071. {
  4072. $is_bool = false;
  4073. if (count($user_id) >= $arr[$key]['value'][$name1]) $is_bool = true;
  4074. return $is_bool;
  4075. }
  4076. public static function upgrade31($name1, $user_id, $arr, $key)
  4077. {
  4078. $is_bool = false;
  4079. $offset = 1;
  4080. $limit = 1000;
  4081. $total_counts = 0;
  4082. $params['select'] = 'user_id';
  4083. static::batchFunc($params,$user_id,$offset,$limit,function ($user_ids){
  4084. return Distribution::find()->where(['user_id' => $user_ids, 'status' => StatusEnum::ENABLED])->count();
  4085. },$total_counts);
  4086. if ($total_counts >= $arr[$key]['value'][$name1]) $is_bool = true;
  4087. return $is_bool;
  4088. }
  4089. public static function upgrade32($name1, $user_id, $arr, $key)
  4090. {
  4091. $is_bool = false;
  4092. $counts = Distribution::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])->count();
  4093. if ($counts >= $arr[$key]['value'][$name1]) $is_bool = true;
  4094. return $is_bool;
  4095. }
  4096. public static function upgrade33($name1, $user_id, $arr, $key)
  4097. {
  4098. $is_bool = false;
  4099. $total_commission = static::getSettledDistributionCommission($user_id);
  4100. if ($total_commission >= $arr[$key]['value'][$name1]) $is_bool = true;
  4101. return $is_bool;
  4102. }
  4103. public static function upgrade34($name1, $name2,$user_id, $arr, $key)
  4104. {
  4105. $is_bool = false;
  4106. $level = $arr[$key]['value'][$name1];
  4107. $counts = Distribution::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])
  4108. ->andWhere(['>=','level',$level])->count();
  4109. if ($counts >= $arr[$key]['value'][$name2]) $is_bool = true;
  4110. return $is_bool;
  4111. }
  4112. public static function upgrade75($name1, $name2,$user_id, $arr, $key)
  4113. {
  4114. $is_bool = false;
  4115. $level = $arr[$key]['value'][$name1];
  4116. $counts = Agent::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])
  4117. ->andWhere(['>=','level',$level])->count();
  4118. if ($counts >= $arr[$key]['value'][$name2]) $is_bool = true;
  4119. return $is_bool;
  4120. }
  4121. public static function upgrade40($name1, $name2, $name3, $name4, $children_id_arr1, $children_id_arr2, $arr, $key)
  4122. {
  4123. $is_bool = false;
  4124. $num1 = static::consumeNum($arr, $key, $name1, $children_id_arr1);//直推会员消费满多少元的累计人数
  4125. if ($num1 >= $arr[$key]['value'][$name2]) {
  4126. $num2 = static::consumeNum($arr, $key, $name3, $children_id_arr2);//团队会员消费满多少元的累计人数
  4127. if ($num2 >= $arr[$key]['value'][$name4]) $is_bool = true;
  4128. }
  4129. return $is_bool;
  4130. }
  4131. public static function upgrade41Or42($name1, $name2, $model_class, $user_id, $arr, $key, $no = 40)
  4132. {
  4133. $is_bool = false;
  4134. $lucky_group_user_ids = [];
  4135. $customer_counts = $total_amounts = 0;
  4136. $params['select'] = 'user_id';
  4137. if (41 == $no) {
  4138. $deep = 1;
  4139. } elseif (42 == $no) {
  4140. $deep = 2;
  4141. } else {
  4142. return false;
  4143. }
  4144. $children_id_arr = UserPartitionRelationship::getChildIdArr($user_id, $deep);
  4145. $query = $model_class::find()->select('user_id')->where(['user_id' => $children_id_arr, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]);
  4146. foreach ($query->asArray()->batch(200) as $lg_users) {
  4147. $lucky_group_user_ids = array_merge($lucky_group_user_ids, array_column($lg_users, 'user_id'));
  4148. }
  4149. // 客户数量
  4150. $customer_counts = count($lucky_group_user_ids);
  4151. // 订单总金额
  4152. $total_amounts = LuckyGroupOrder::find()
  4153. ->where(['user_id' => $lucky_group_user_ids, 'is_pay' => 1, 'status' => StatusEnum::ENABLED])
  4154. ->sum('money');
  4155. // \Yii::error('======> upgrade41Or42 --> no => ' . $no . ', customer_counts => ' . $customer_counts . ', set-customer_counts => ' . $arr[$key]['value'][$name1] . ', total_amounts => ' . $total_amounts . ', set-total_amounts => ' . $arr[$key]['value'][$name2]);\Yii::getLogger()->flush(true);
  4156. if ($customer_counts >= $arr[$key]['value'][$name1] && $total_amounts >= $arr[$key]['value'][$name2]) $is_bool = true;
  4157. return $is_bool;
  4158. }
  4159. public static function upgrade43($name1, $name2, $model_class, $user_id, $arr, $key)
  4160. {
  4161. $query = $model_class::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED, 'is_pay' => 1]);
  4162. $counts = $query->count();
  4163. $total_amounts = $query->sum('money');
  4164. // \Yii::error('======> upgrade43 --> counts => ' . $counts . ', set-counts => ' . $arr[$key]['value'][$name1] . ', total_amounts => ' . $total_amounts . ', set-total_amounts => ' . $arr[$key]['value'][$name2]);\Yii::getLogger()->flush(true);
  4165. if ($counts >= $arr[$key]['value'][$name1] && $total_amounts >= $arr[$key]['value'][$name2]) {
  4166. return true;
  4167. } else {
  4168. return false;
  4169. }
  4170. }
  4171. public static function upgrade44Or45($name1, $name2, $model_class, $user_id, $arr, $key, $no = 43)
  4172. {
  4173. if (44 == $no) {
  4174. $deep = 1;
  4175. } elseif (45 == $no) {
  4176. $deep = 2;
  4177. } else {
  4178. return false;
  4179. }
  4180. $level = $arr[$key]['value'][$name1];
  4181. $children_id_arr = UserPartitionRelationship::getChildIdArr($user_id, $deep);
  4182. if (!empty($children_id_arr)) {
  4183. $counts = LuckyGroupUser::find()
  4184. ->where(['user_id' => $children_id_arr, 'status' => StatusEnum::ENABLED, 'level' => $level])
  4185. ->count();
  4186. } else {
  4187. $counts = 0;
  4188. }
  4189. // \Yii::error('======> upgrade44Or45 --> no => ' . $no . ', counts => ' . $counts . ', set-counts => ' . $arr[$key]['value'][$name2]);\Yii::getLogger()->flush(true);
  4190. return $counts >= $arr[$key]['value'][$name2];
  4191. }
  4192. //团队下____条____等级,每条直推团队下,至少有一个人满足该等级
  4193. public static function upgrade47($name1, $name2,$name3, $model_class, $user_id, $arr, $key)
  4194. {
  4195. $is_bool = false;
  4196. $direct_child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1); //查询直推下级
  4197. $team_num = $arr[$key]['value'][$name1];//N条
  4198. if (count($direct_child_ids) < $team_num) return $is_bool;
  4199. $level_num = $arr[$key]['value'][$name2]; //N个
  4200. $is_nums = 0;
  4201. $level = $arr[$key]['value'][$name3];
  4202. foreach ($direct_child_ids as $direct_child_id) {
  4203. //先查直推是否满足,是则不用继续往下查
  4204. $counts = $model_class::find()->where(['user_id' => $direct_child_id, 'level' => $level, 'status' => [StatusEnum::DISABLED, StatusEnum::ENABLED]])->count();
  4205. if (!empty($counts)) {
  4206. $is_nums++;
  4207. continue;
  4208. }
  4209. $offset = 1;
  4210. $limit = 1000;
  4211. $params['select'] = 'user_id';
  4212. list($tree, $parent_deep, $all_tree, $all_tree_arr) = UserPartitionRelationship::getTree($direct_child_id);//查询直推下级的所有下级
  4213. while ($list = UserPartitionRelationship::batchGetTeamData($offset,$limit,$tree,$params)){
  4214. $child_ids = array_column($list,'user_id');
  4215. $counts = $model_class::find()->where(['user_id'=>$child_ids,'level'=>$level,'status'=>[StatusEnum::DISABLED,StatusEnum::ENABLED]])->count();
  4216. if(!empty($counts)){
  4217. $is_nums++;
  4218. break;
  4219. }
  4220. $offset++;
  4221. }
  4222. }
  4223. if ($is_nums >= $level_num) return true;
  4224. return $is_bool;
  4225. }
  4226. public static function upgrade48($name1, $name2, $model_class, $user_id, $arr, $key)
  4227. {
  4228. $is_bool = false;
  4229. $direct_child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1); //查询直推下级
  4230. $direct_push_number = $arr[$key]['value'][$name1]; //N人
  4231. $level = $arr[$key]['value'][$name2];
  4232. $counts = $model_class::find()->where(['user_id' => $direct_child_ids, 'level' => $level, 'status' => [StatusEnum::DISABLED, StatusEnum::ENABLED]])->count();
  4233. if ($counts >= $direct_push_number) return true;
  4234. return $is_bool;
  4235. }
  4236. public static function upgrade49($name1, $user_id, $arr, $key)
  4237. {
  4238. $aa = $arr[$key]['value'][$name1];
  4239. $is_bool = false;
  4240. list($personal_counts, $personal_achievement) = static::getOrderData($user_id); //个人业绩
  4241. $offset = 1;
  4242. $limit = 1000;
  4243. $params['select'] = 'user_id';
  4244. $total_subordinates_achievement = 0; //所有下级业绩
  4245. static::batchFunc($params, $user_id, $offset, $limit, function ($user_id_arr) {
  4246. $query = Order::find()->where(['user_id' => $user_id_arr, 'pay_status' => 1]);
  4247. return $query->sum('pay_money');
  4248. }, $total_subordinates_achievement);
  4249. if ($total_subordinates_achievement + $personal_achievement > $arr[$key]['value'][$name1]) {
  4250. $is_bool = true;
  4251. }
  4252. return $is_bool;
  4253. }
  4254. public static function upgrade51($params, $user_id_arr, $arr, $key)
  4255. {
  4256. $data = $params['data'];
  4257. $name1 = $params['condition_data'][$key]['setting'][0]['name'];
  4258. if (!isset($name1)) return false;
  4259. $created_at = 0;
  4260. $expired = UserLevelExpired::find()->where(['user_id'=>$params['user_id'],'level'=>$params['upgrade_level']])->orderBy('expired_at DESC')->one();
  4261. if($expired){
  4262. $created_at = $expired['expired_at'];
  4263. }
  4264. $data[$name1] = static::getOrderData($user_id_arr,$created_at)[1];
  4265. $data1[$name1] = static::getRechargeData($user_id_arr,$created_at);
  4266. $is_bool = true;
  4267. foreach ($arr[$key]['value'] as $k => $v) {
  4268. if (isset($data[$k]) || isset($data1[$k])) {
  4269. if ($data[$k] < $v && $data1[$k] < $v) {
  4270. $is_bool = false;
  4271. break;
  4272. }
  4273. } else {
  4274. $is_bool = false;
  4275. }
  4276. }
  4277. return $is_bool;
  4278. }
  4279. public static function upgrade64($name1, $name2,$name3, $name4, $user_id, $arr, $key)
  4280. {
  4281. $is_bool = false;
  4282. //个人业绩
  4283. $personal_achievement = 0;
  4284. if($arr[$key]['value'][$name1] == 0){
  4285. $personal_achievement = Order::find()->where(['user_id' => $user_id, 'pay_status' => 1])->sum('pay_money') ?? 0;
  4286. }
  4287. $achievement_arr = [];
  4288. $children_id_arr1 = UserPartitionRelationship::getChildIdArr($user_id, 1);
  4289. foreach($children_id_arr1 as $children_user_id){
  4290. $offset = 1;
  4291. $limit = 1000;
  4292. $params['select'] = 'user_id';
  4293. $total_subordinates_achievement = 0;//所有下级业绩
  4294. self::batchFunc($params,$children_user_id,$offset,$limit,function ($user_id_arr) use ($children_user_id){
  4295. // $user_id_arr[] = $children_user_id;
  4296. $query = Order::find()->where(['user_id' => $user_id_arr, 'pay_status' => 1]);
  4297. return $query->sum('pay_money');
  4298. },$total_subordinates_achievement);
  4299. $children_personal_achievement = Order::find()->where(['user_id' => $children_user_id, 'pay_status' => 1])->sum('pay_money') ?? 0;
  4300. $total_subordinates_achievement += $children_personal_achievement;
  4301. $achievement_arr[] = $total_subordinates_achievement;
  4302. }
  4303. if(!empty($arr[$key]['value'][$name2]) && $arr[$key]['value'][$name2] > $personal_achievement + array_sum($achievement_arr)) return $is_bool;
  4304. if(!empty($arr[$key]['value'][$name3]) && $arr[$key]['value'][$name3] > count($achievement_arr)) return $is_bool;
  4305. rsort($achievement_arr);
  4306. if(!empty($arr[$key]['value'][$name3]) && !empty($arr[$key]['value'][$name4]) && $arr[$key]['value'][$name4] > $achievement_arr[$arr[$key]['value'][$name3]-1]) return $is_bool;
  4307. $is_bool = true;
  4308. return $is_bool;
  4309. }
  4310. public static function upgrade67($name1, $name2,$name3, $name4, $name5, $user_id, $mall_id, $arr, $key)
  4311. {
  4312. //未安装插件
  4313. if(!MallAddons::isInstall($mall_id,AddonsEnum::ADDONS_NAME_DOUBLE_COPY)) return false;
  4314. if(!empty($arr[$key]['value'][$name1])){
  4315. $doubleCopyUser = DoubleCopyUser::findOne(['user_id'=>$user_id,'status'=>StatusEnum::ENABLED]);
  4316. if(!$doubleCopyUser || $doubleCopyUser['level'] < $arr[$key]['value'][$name1]){
  4317. return false;
  4318. }
  4319. }
  4320. $child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1);
  4321. $level_arr = [];
  4322. $use_level_arr = [];
  4323. $key_level = !empty($arr[$key]['value'][$name2]) ? $arr[$key]['value'][$name2] : 0;
  4324. $key_nums = !empty($arr[$key]['value'][$name3]) ? $arr[$key]['value'][$name3] : 0;
  4325. $agent_user_ids = DoubleCopyUser::find()
  4326. ->where(['user_id' => $child_ids, 'status' => StatusEnum::ENABLED])
  4327. ->andWhere(['>=', 'level', $key_level])
  4328. ->select('user_id')
  4329. ->column();
  4330. if (count($agent_user_ids) < $key_nums) return false;
  4331. $c_child_ids = UserPartitionRelationship::getChildIdArr($user_id);
  4332. $key_c_level = !empty($arr[$key]['value'][$name4]) ? $arr[$key]['value'][$name4] : 0;
  4333. $key_c_nums = !empty($arr[$key]['value'][$name5]) ? $arr[$key]['value'][$name5] : 0;
  4334. $c_agent_user_ids = DoubleCopyUser::find()
  4335. ->where(['user_id' => $c_child_ids, 'status' => StatusEnum::ENABLED])
  4336. ->andWhere(['>=', 'level', $key_c_level])
  4337. ->select('user_id')
  4338. ->column();
  4339. if (count($c_agent_user_ids) < $key_c_nums) return false;
  4340. return true;
  4341. }
  4342. public static function upgrade68($name1, $name2,$name3, $name4, $user_id, $mall_id, $arr, $key)
  4343. {
  4344. //未安装插件
  4345. if(!MallAddons::isInstall($mall_id,AddonsEnum::ADDONS_NAME_CLOUD_STOCK)) return false;
  4346. $direct_num = !empty($arr[$key]['value'][$name1]) ? $arr[$key]['value'][$name1] : 0;
  4347. $agent_level = !empty($arr[$key]['value'][$name2]) ? $arr[$key]['value'][$name2] : 0;
  4348. $fill_num = !empty($arr[$key]['value'][$name3]) ? $arr[$key]['value'][$name3] : 0;
  4349. $team_goods = !empty($arr[$key]['value'][$name4]) ? $arr[$key]['value'][$name4] : [];
  4350. if(!empty($team_goods)){
  4351. $team_goods = explode(",",$team_goods);
  4352. }
  4353. $child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1);
  4354. $agent_user_ids = CloudStockAgent::find()
  4355. ->where(['user_id' => $child_ids, 'status' => StatusEnum::ENABLED])
  4356. ->andWhere(['>=', 'level', $agent_level])
  4357. ->select('user_id')
  4358. ->column();
  4359. if (count($agent_user_ids) < $direct_num) return false;
  4360. $agent_full_num = CloudStockIncreaseDetail::find()
  4361. ->where(['changes_type' => CloudStockEnum::STOCK_CHANGE_TYPE100,'mall_id' => $mall_id,'goods_id' => $team_goods,'user_id'=>$user_id])
  4362. ->select('num')
  4363. ->sum('num') ?? 0;
  4364. if ($agent_full_num < $fill_num) return false;
  4365. return true;
  4366. }
  4367. public static function upgrade69($name1, $name2,$user_id, $mall_id, $arr, $key)
  4368. {
  4369. //未安装插件
  4370. if(!MallAddons::isInstall($mall_id,AddonsEnum::ADDONS_NAME_CLOUD_STOCK)) return false;
  4371. $value_goods_ids = array_column($arr[$key]['value'][$name2], 'id');
  4372. //条件 radio_type=0 表示或(满足其一);radio_type=1 表示与(同时满足)
  4373. $radio_type = !empty($arr[$key]['value'][$name1]) ? $arr[$key]['value'][$name1] : 0;
  4374. $fill_order_list = CloudStockFillOrder::lists(['where' => [['user_id' => $user_id], ['goods_id' => $value_goods_ids], ['is_pay' => 1]],
  4375. 'select' => 'sum(num) as num,goods_id',
  4376. 'group' => 'goods_id',
  4377. 'index' => 'goods_id'
  4378. ]);
  4379. $upgrade = false;
  4380. if ($radio_type == 0) {
  4381. $upgrade = false;
  4382. foreach ($arr[$key]['value'][$name2] as $row) {
  4383. $num = 0;
  4384. if (!empty($fill_order_list[$row['id']]['num'])) $num = $fill_order_list[$row['id']]['num'];
  4385. if ($num >= $row['num']) {
  4386. $upgrade = true;
  4387. break;
  4388. }
  4389. }
  4390. } else {
  4391. $upgrade = true;
  4392. if (empty($arr[$key]['value'][$name2])) {
  4393. $upgrade = false;
  4394. } else {
  4395. foreach ($arr[$key]['value'][$name2] as $row) {
  4396. $num = 0;
  4397. if (!empty($fill_order_list[$row['id']])) $num = $fill_order_list[$row['id']]['num'];
  4398. if ($num < $row['num']) {
  4399. $upgrade = false;
  4400. break;
  4401. }
  4402. }
  4403. }
  4404. }
  4405. return $upgrade;
  4406. }
  4407. /**
  4408. * 条件70查询
  4409. *
  4410. * @param string $name1
  4411. * @param string $name2
  4412. * @param int $user_id
  4413. * @param array $arr
  4414. * @param int $key
  4415. * @param int $mall_id
  4416. * @return boolean
  4417. */
  4418. public static function upgrade70($name1, $name2, $user_id, $arr, $key, $mall_id)
  4419. {
  4420. // 结算方式
  4421. $compute_type = \Yii::$app->services->setting->mall->get($mall_id, 'upgrade_condition.compute_type');
  4422. if (empty($compute_type)) $compute_type = 1;
  4423. if ($compute_type == 1) {
  4424. $where['pay_status'] = 1;
  4425. } else {
  4426. $where['order_status'] = OrderStatusEnum::ACCOMPLISH;
  4427. }
  4428. $is_bool = false;
  4429. list($personal_counts, $personal_achievement) = static::getOrderData1($user_id, $where); //个人业绩
  4430. if ($personal_achievement >= $arr[$key]['value'][$name1]) {
  4431. // 团队业绩为0则认为达标
  4432. if (!isset($arr[$key]['value'][$name2]) || $arr[$key]['value'][$name2] <= 0) {
  4433. return true;
  4434. }
  4435. $offset = 1;
  4436. $limit = 1000;
  4437. $params['select'] = 'user_id';
  4438. $total_subordinates_achievement = 0; //所有下级业绩
  4439. static::batchFunc($params, $user_id, $offset, $limit, function ($user_id_arr) use ($where) {
  4440. $where = array_merge($where, ['user_id' => $user_id_arr]);
  4441. $query = Order::find()->where($where);
  4442. return $query->sum('pay_money');
  4443. }, $total_subordinates_achievement);
  4444. if ($total_subordinates_achievement >= $arr[$key]['value'][$name2]) {
  4445. $is_bool = true;
  4446. }
  4447. }
  4448. return $is_bool;
  4449. }
  4450. /**
  4451. * 条件120查询
  4452. *
  4453. * @param string $name1
  4454. * @param string $name2
  4455. * @param int $user_id
  4456. * @param array $arr
  4457. * @param int $key
  4458. * @param int $mall_id
  4459. * @return boolean
  4460. */
  4461. public static function upgrade121($name1, $name2, $user_id, $arr, $key, $mall_id)
  4462. {
  4463. // 结算方式
  4464. $compute_type = \Yii::$app->services->setting->mall->get($mall_id, 'upgrade_condition.compute_type');
  4465. $field = 'id,mall_id,user_id';
  4466. if (empty($compute_type)) $compute_type = 1;
  4467. if ($compute_type == 1) {
  4468. $field .= ',pay_money as personal_achievement';
  4469. } else {
  4470. $field .= ',finish_order_money as personal_achievement';
  4471. }
  4472. $personal_data = UserStatisticsTotal::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])->select($field)->asArray()->one();
  4473. $personal_achievement = $personal_data['personal_achievement'] ?? 0;
  4474. $personal_data_old = UserStatisticsTotalCopy1::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])->select($field)->asArray()->one();
  4475. $personal_achievement = bcadd($personal_achievement, $personal_data_old['personal_achievement'], 2);
  4476. $is_bool = false;
  4477. // list($personal_counts, $personal_achievement) = static::getOrderData1($user_id, $where); //个人业绩
  4478. if ($personal_achievement >= $arr[$key]['value'][$name1]) {
  4479. // 团队业绩为0则认为达标
  4480. // if (!isset($arr[$key]['value'][$name2]) || $arr[$key]['value'][$name2] <= 0) {
  4481. // return true;
  4482. // }
  4483. $is_bool = true;
  4484. // $offset = 1;
  4485. // $limit = 1000;
  4486. // $params['select'] = 'user_id';
  4487. // $total_subordinates_achievement = 0; //所有下级业绩
  4488. // static::batchFunc($params, $user_id, $offset, $limit, function ($user_id_arr) use ($where) {
  4489. // $where = array_merge($where, ['user_id' => $user_id_arr]);
  4490. // $query = Order::find()->where($where);
  4491. // return $query->sum('pay_money');
  4492. // }, $total_subordinates_achievement);
  4493. // if ($total_subordinates_achievement >= $arr[$key]['value'][$name2]) {
  4494. // $is_bool = true;
  4495. // }
  4496. }
  4497. return $is_bool;
  4498. }
  4499. public static function upgrade97($name1, $name2, $model_class, $user_id_arr, $arr, $key)
  4500. {
  4501. $is_bool = false;
  4502. $level = $arr[$key]['value'][$name1];
  4503. $counts = $model_class::find()->where(['user_id' => $user_id_arr, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])
  4504. ->andWhere(['>=','level',$level])
  4505. ->count();
  4506. if ($counts >= $arr[$key]['value'][$name2]) $is_bool = true;
  4507. return $is_bool;
  4508. }
  4509. public static function upgrade98($name1, $name2, $model_class, $user_id, $arr, $key)
  4510. {
  4511. $is_bool = false;
  4512. $level = $arr[$key]['value'][$name1];
  4513. $offset = 1;
  4514. $limit = 1000;
  4515. $total_counts = 0;
  4516. $params['select'] = 'user_id';
  4517. static::batchFunc($params,$user_id,$offset,$limit,function ($user_id_arr)use($model_class,$level){
  4518. return $model_class::find()->where(['user_id' => $user_id_arr, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])
  4519. ->andWhere(['>=','level',$level])
  4520. ->count();
  4521. },$total_counts);
  4522. if ($total_counts >= $arr[$key]['value'][$name2]) $is_bool = true;
  4523. return $is_bool;
  4524. }
  4525. public static function upgrade99($name1, $name2,$name3, $model_class, $user_id, $arr, $key)
  4526. {
  4527. $is_bool = false;
  4528. $direct_child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1); //查询直推下级
  4529. $team_num = $arr[$key]['value'][$name1];//N条
  4530. if (count($direct_child_ids) < $team_num) return $is_bool;
  4531. $level_num = $arr[$key]['value'][$name2]; //N个
  4532. $is_nums = 0;
  4533. $level = $arr[$key]['value'][$name3];
  4534. foreach ($direct_child_ids as $direct_child_id) {
  4535. //先查直推是否满足,是则不用继续往下查
  4536. $counts = $model_class::find()->where(['user_id' => $direct_child_id, 'level' => $level, 'status' => [StatusEnum::DISABLED, StatusEnum::ENABLED]])->count();
  4537. if (!empty($counts)) {
  4538. $is_nums++;
  4539. continue;
  4540. }
  4541. $offset = 1;
  4542. $limit = 1000;
  4543. $params['select'] = 'user_id';
  4544. list($tree, $parent_deep, $all_tree, $all_tree_arr) = UserPartitionRelationship::getTree($direct_child_id);//查询直推下级的所有下级
  4545. while ($list = UserPartitionRelationship::batchGetTeamData($offset,$limit,$tree,$params)){
  4546. $child_ids = array_column($list,'user_id');
  4547. $counts = $model_class::find()->where(['user_id'=>$child_ids,'level'=>$level,'status'=>[StatusEnum::DISABLED,StatusEnum::ENABLED]])->count();
  4548. if(!empty($counts)){
  4549. $is_nums++;
  4550. break;
  4551. }
  4552. $offset++;
  4553. }
  4554. }
  4555. if ($is_nums >= $level_num) return true;
  4556. return $is_bool;
  4557. }
  4558. public static function upgrade101($name1, $name2,$user_id, $arr, $key)
  4559. {
  4560. $is_bool = false;
  4561. $level = $arr[$key]['value'][$name1];
  4562. $counts = \addons\AgentBase\common\models\AgentBase::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])
  4563. ->andWhere(['>=','level',$level])->count();
  4564. if ($counts >= $arr[$key]['value'][$name2]) $is_bool = true;
  4565. return $is_bool;
  4566. }
  4567. public static function upgrade106($name1, $user_id, $arr, $key)
  4568. {
  4569. $is_bool = false;
  4570. $total_commission = static::getPremiumDistributionCommission($user_id);
  4571. if ($total_commission >= $arr[$key]['value'][$name1]) $is_bool = true;
  4572. return $is_bool;
  4573. }
  4574. public static function upgrade107($name1, $user_id, $arr, $key, $capital_type = 0)
  4575. {
  4576. $is_bool = false;
  4577. $counts = static::getPremiumDistributionCommissionOrderNum($user_id, $capital_type);
  4578. if ($counts >= $arr[$key]['value'][$name1]) $is_bool = true;
  4579. return $is_bool;
  4580. }
  4581. public static function upgrade108($name1, $user_id, $arr, $key)
  4582. {
  4583. $is_bool = false;
  4584. $counts = static::getPremiumDistributionCommissionFirst($user_id);
  4585. if ($counts >= $arr[$key]['value'][$name1]) $is_bool = true;
  4586. return $is_bool;
  4587. }
  4588. public static function upgrade110($name1, $user_id, $arr, $key)
  4589. {
  4590. $is_bool = false;
  4591. $offset = 1;
  4592. $limit = 1000;
  4593. $total_counts = 0;
  4594. $params['select'] = 'user_id';
  4595. static::batchFunc($params,$user_id,$offset,$limit,function ($user_ids){
  4596. return PremiumDistribution::find()->where(['user_id' => $user_ids, 'status' => StatusEnum::ENABLED])->count();
  4597. },$total_counts);
  4598. if ($total_counts >= $arr[$key]['value'][$name1]) $is_bool = true;
  4599. return $is_bool;
  4600. }
  4601. public static function upgrade111($name1, $user_id, $arr, $key)
  4602. {
  4603. $is_bool = false;
  4604. $counts = PremiumDistribution::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])->count();
  4605. if ($counts >= $arr[$key]['value'][$name1]) $is_bool = true;
  4606. return $is_bool;
  4607. }
  4608. public static function upgrade112($name1, $user_id, $arr, $key)
  4609. {
  4610. $is_bool = false;
  4611. $total_commission = static::getSettledPremiumDistributionCommission($user_id);
  4612. if ($total_commission >= $arr[$key]['value'][$name1]) $is_bool = true;
  4613. return $is_bool;
  4614. }
  4615. public static function upgrade113($name1, $name2,$user_id, $arr, $key)
  4616. {
  4617. $is_bool = false;
  4618. $level = $arr[$key]['value'][$name1];
  4619. $counts = PremiumDistribution::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])
  4620. ->andWhere(['>=','level',$level])->count();
  4621. if ($counts >= $arr[$key]['value'][$name2]) $is_bool = true;
  4622. return $is_bool;
  4623. }
  4624. public static function upgrade502($params, $user_id, $arr, $key)
  4625. {
  4626. $name = $params['condition_data'][$params['key']]['setting'][0]['name'];
  4627. $self_team_order_goods_num = $arr[$key]['value'][$name];
  4628. $mall_id = $params['mall_id']??0;
  4629. $children_ids = UserPartitionRelationship::getChildIdArr($user_id);
  4630. $children_ids[] = $user_id;
  4631. // 结算方式
  4632. $compute_type = \Yii::$app->services->setting->mall->get($mall_id, 'upgrade_condition.compute_type');
  4633. if (empty($compute_type)) $compute_type = 1;
  4634. if ($compute_type == 1) {
  4635. $where['order_status'] = [OrderStatusEnum::PAY,OrderStatusEnum::SHIPMENTS,OrderStatusEnum::SING,OrderStatusEnum::ACCOMPLISH];
  4636. } else {
  4637. $where['order_status'] = OrderStatusEnum::ACCOMPLISH;
  4638. }
  4639. $where['status'] = StatusEnum::ENABLED;
  4640. $where['user_id'] = $children_ids;
  4641. $where['mall_id'] = $mall_id;
  4642. $buy_num = (int) OrderDetail::find()->where($where)
  4643. ->sum('num');
  4644. return $buy_num >= $self_team_order_goods_num;
  4645. }
  4646. /**
  4647. * TODO 后续优化查询
  4648. * @desc:获取订单数据
  4649. * @Author: hua
  4650. * @Date: 2021/10/19
  4651. * @Time: 10:58
  4652. * @Copyright: copyright (c) 2021 广东七件事集团
  4653. * @param $user_ids
  4654. * @return array
  4655. */
  4656. protected static function getOrderData($user_ids,$created_at = 0)
  4657. {
  4658. $query = Order::find()->where(['user_id' => $user_ids, 'pay_status' => 1]);
  4659. if($created_at){
  4660. $query->andWhere(['>','created_at',$created_at]);
  4661. }
  4662. $counts = $query->count();
  4663. $sum = $query->sum('pay_money');
  4664. return [$counts ?? 0, $sum ?? 0];
  4665. }
  4666. protected static function getOrderData1($user_ids, $condition = [])
  4667. {
  4668. $where = array_merge(['user_id' => $user_ids, 'pay_status' => 1], $condition);
  4669. $query = Order::find()->where($where);
  4670. $counts = $query->count();
  4671. $sum = $query->sum('pay_money');
  4672. return [$counts ?? 0, $sum ?? 0];
  4673. }
  4674. //会员等级升级,增加订单完成/支付后
  4675. protected static function getOrderDataByUserUpgrade($user_ids,$mall_id,$key = null)
  4676. {
  4677. $compute_type = \Yii::$app->services->setting->mall->get($mall_id, 'upgrade_condition.compute_type');
  4678. if(empty($compute_type)){
  4679. $compute_type = 1;
  4680. }
  4681. $where = ['user_id' => $user_ids];
  4682. if($compute_type==1){
  4683. $where['pay_status'] = 1;
  4684. }else{
  4685. $where['order_status'] = OrderStatusEnum::ACCOMPLISH;
  4686. }
  4687. $excludeScorePaymentTypeWhere = [];
  4688. if ($key == 1) {
  4689. // 积分是否不累计
  4690. $scoreSettingStr = Yii::$app->services->setting->mall->get($mall_id, 'pay.score');
  4691. $isNotCumulative = !empty(json_decode($scoreSettingStr, true)['is_not_cumulative']);
  4692. if ($isNotCumulative) {
  4693. $excludeScorePaymentTypeWhere = ['<>', 'payment_type', PayTypeEnum::SCORE];
  4694. }
  4695. }
  4696. // 根据需求需只拿取平台订单
  4697. //条件升级,排除售后的订单
  4698. $query = Order::find()->where($where)->andWhere(['mch_id' => 0, 'store_id' => 0])->andWhere(['<>', 'order_status', OrderStatusEnum::REPEAL])->andWhere($excludeScorePaymentTypeWhere);
  4699. $counts = $query->count();
  4700. $sum = $query->sum('pay_money');
  4701. return [$counts ?? 0, $sum ?? 0];
  4702. }
  4703. public static function getRechargeData($user_ids,$created_at = 0){
  4704. $query = RechargeOrders::find()->where(['user_id'=>$user_ids,'is_pay'=>1]);
  4705. if($created_at){
  4706. $query->andWhere(['>','created_at',$created_at]);
  4707. }
  4708. $sum = $query->sum('pay_price') ?? 0;
  4709. return $sum;
  4710. }
  4711. protected static function getOrderCounts($user_ids)
  4712. {
  4713. $query = Order::find()->where(['user_id' => $user_ids, 'pay_status' => 1]);
  4714. $counts = $query->count();
  4715. return $counts ?? 0;
  4716. }
  4717. /**
  4718. * TODO 后续优化查询
  4719. * @desc:分组数据
  4720. * @Author: hua
  4721. * @Date: 2021/10/23
  4722. * @Time: 11:43
  4723. * @Copyright: copyright (c) 2021 广东七件事集团
  4724. * @param $user_ids
  4725. * @return array|\yii\db\ActiveRecord[]
  4726. */
  4727. protected static function getOrderDataGroupByUserId($user_ids)
  4728. {
  4729. $query = Order::find()->where(['user_id' => $user_ids, 'pay_status' => 1]);
  4730. $query->select('user_id,sum(pay_money) as pay_money');
  4731. return $query->groupBy('user_id')->all();
  4732. }
  4733. /**
  4734. * TODO 后续优化查询
  4735. * @desc:分组数据
  4736. * @Author: hua
  4737. * @Date: 2021/10/23
  4738. * @Time: 11:43
  4739. * @Copyright: copyright (c) 2021 广东七件事集团
  4740. * @param $user_ids
  4741. * @return array|\yii\db\ActiveRecord[]
  4742. */
  4743. protected static function getOrderCountsGroupByUserId($user_ids)
  4744. {
  4745. $query = Order::find()->where(['user_id' => $user_ids, 'pay_status' => 1]);
  4746. $query->select("user_id, count(user_id) as counts");
  4747. return $query->groupBy('user_id')->asArray()->all();
  4748. }
  4749. /**
  4750. * @desc:设置升级条件时,处理与之相关的条件
  4751. * @Author: hua
  4752. * @Date: 2021/10/20
  4753. * @Time: 18:17
  4754. * @Copyright: copyright (c) 2021 广东七件事集团
  4755. * @param $checked_condition_keys
  4756. * @param $handle_class
  4757. * @param $mall_id
  4758. */
  4759. public static function clear($checked_condition_keys, $handle_class, $mall_id)
  4760. {
  4761. $list = $handle_class::findAll(['mall_id' => $mall_id]);
  4762. sort($checked_condition_keys);
  4763. $rows = static::getDataAttr();
  4764. foreach ($list as $agent) {
  4765. $checked_condition_values = json_decode($agent['checked_condition_values'], true);//升级条件
  4766. $condition_keys = json_decode($agent['checked_condition_keys'], true);
  4767. $checked_condition_values_arr = [];
  4768. if ($checked_condition_values) {
  4769. $condition_values_arr = [];
  4770. foreach ($checked_condition_values as $v) {
  4771. if($v['key']==54) continue;//兼容以前数据问题
  4772. $condition_values_arr[$v['key']] = $v;
  4773. }
  4774. if(!$checked_condition_keys) continue;
  4775. foreach ($checked_condition_keys as $k) {
  4776. if (!empty($condition_values_arr[$k])) {
  4777. if (!in_array($condition_values_arr[$k]['type'],['buy_goods','buy_store_goods'])) $checked_condition_values_arr[] = $condition_values_arr[$k];
  4778. } else {
  4779. //新添加,顺序有关,所以一条条取
  4780. $row = $rows[$k];
  4781. if (!in_array($row['type'],['buy_goods','buy_store_goods'])) {
  4782. $arr = ['key' => $row['id']];
  4783. if($row['setting'] ){
  4784. foreach ($row['setting'] as $set) {
  4785. $arr['value'][$set['name']] = $set['default_val'];
  4786. }
  4787. }
  4788. $checked_condition_values_arr[] = $arr;
  4789. }
  4790. }
  4791. }
  4792. $agent->checked_condition_values = json_encode($checked_condition_values_arr);
  4793. }
  4794. $condition_keys_arr = [];
  4795. if ($condition_keys) {
  4796. foreach ($condition_keys as $k => $value) {
  4797. if (!in_array($value, $checked_condition_keys)) continue;
  4798. $condition_keys_arr[] = $value;
  4799. }
  4800. $agent->checked_condition_keys = json_encode($condition_keys_arr);
  4801. }
  4802. $agent->save();
  4803. }
  4804. }
  4805. protected static function consumeNum($arr, $key, $name, $user_id_arr)
  4806. {
  4807. $list = static::getOrderDataGroupByUserId($user_id_arr);
  4808. $num = 0;
  4809. foreach ($list as $v) {
  4810. if ($v['pay_money'] >= $arr[$key]['value'][$name]) {
  4811. $num++;
  4812. }
  4813. }
  4814. return $num;
  4815. }
  4816. /**
  4817. * @desc:分销佣金
  4818. * @Author: hua
  4819. * @Date: 2021/11/18
  4820. * @Time: 16:26
  4821. * @Copyright: copyright (c) 2021 广东七件事集团
  4822. * @param $user_ids
  4823. * @return bool|int|mixed|string
  4824. */
  4825. protected static function getDistributionCommission($user_ids)
  4826. {
  4827. $total_commission = Distribution::find()->where(['user_id' => $user_ids])->sum('total_commission');
  4828. return $total_commission ?? 0;
  4829. }
  4830. /**
  4831. * @desc:特级分销,分销佣金
  4832. * @Author: hua
  4833. * @Date: 2021/11/18
  4834. * @Time: 16:26
  4835. * @Copyright: copyright (c) 2021 广东七件事集团
  4836. * @param $user_ids
  4837. * @return bool|int|mixed|string
  4838. */
  4839. protected static function getPremiumDistributionCommission($user_ids)
  4840. {
  4841. $total_commission = PremiumDistribution::find()->where(['user_id' => $user_ids])->sum('total_commission');
  4842. return $total_commission ?? 0;
  4843. }
  4844. /**
  4845. * @desc:已结算分销佣金
  4846. * @Author: hua
  4847. * @Date: 2021/11/18
  4848. * @Time: 17:12
  4849. * @Copyright: copyright (c) 2021 广东七件事集团
  4850. * @param $user_ids
  4851. * @return bool|int|mixed|string
  4852. */
  4853. protected static function getSettledDistributionCommission($user_ids)
  4854. {
  4855. $wallet_type = 'commission';
  4856. CapitalLog::$capitalType = "{$wallet_type}";
  4857. $total_commission = CapitalLog::find()->where(['user_id' => $user_ids, 'from_type' => DistributionEnum::ADDONS_NAME])->sum('change_num');
  4858. return $total_commission ?? 0;
  4859. }
  4860. /**
  4861. * @desc:特级分销,已结算分销佣金
  4862. * @Author: hua
  4863. * @Date: 2021/11/18
  4864. * @Time: 17:12
  4865. * @Copyright: copyright (c) 2021 广东七件事集团
  4866. * @param $user_ids
  4867. * @return bool|int|mixed|string
  4868. */
  4869. protected static function getSettledPremiumDistributionCommission($user_ids)
  4870. {
  4871. $wallet_type = 'commission';
  4872. CapitalLog::$capitalType = "{$wallet_type}";
  4873. $total_commission = CapitalLog::find()->where(['user_id' => $user_ids, 'from_type' => PremiumDistributionEnum::ADDONS_NAME])->sum('change_num');
  4874. return $total_commission ?? 0;
  4875. }
  4876. /**
  4877. * @desc:分销佣金user_id分组
  4878. * @Author: hua
  4879. * @Date: 2021/11/18
  4880. * @Time: 16:28
  4881. * @Copyright: copyright (c) 2021 广东七件事集团
  4882. * @param $user_ids
  4883. * @return array|\yii\db\ActiveRecord[]
  4884. */
  4885. protected static function getDistributionCommissionGroupByUserId($user_ids)
  4886. {
  4887. $query = Distribution::find()->where(['user_id' => $user_ids]);
  4888. $query->select('user_id,sum(total_commission) as total_commission');
  4889. return $query->groupBy('user_id')->all();
  4890. }
  4891. /**
  4892. * @desc:一级分销佣金
  4893. * @Author: hua
  4894. * @Date: 2021/11/18
  4895. * @Time: 16:31
  4896. * @Copyright: copyright (c) 2021 广东七件事集团
  4897. * @param $user_ids
  4898. * @return bool|int|string分销订单
  4899. */
  4900. protected static function getDistributionCommissionFirst($user_ids)
  4901. {
  4902. $total = 0;
  4903. $wallet_type = 'commission';
  4904. CapitalLog::$capitalType = "{$wallet_type}_frozen";
  4905. $total1 = CapitalLog::find()->where(['user_id' => $user_ids, 'source_table' => 'order_detail','from_type'=>DistributionEnum::ADDONS_NAME, 'capital_type' => 'first', 'status' => CapitalLog::STATUS_WAIT_SEND])
  4906. ->sum('change_num');
  4907. if ($total1) $total += $total1;
  4908. CapitalLog::$capitalType = "{$wallet_type}";
  4909. $total2 = CapitalLog::find()->where(['user_id' => $user_ids, 'source_table' => 'order_detail','from_type'=>DistributionEnum::ADDONS_NAME, 'capital_type' => 'first'])
  4910. ->sum('change_num');
  4911. if ($total2) $total += $total2;
  4912. return $total;
  4913. }
  4914. /**
  4915. * @desc:特级分销,一级分销佣金
  4916. * @Author: hua
  4917. * @Date: 2021/11/18
  4918. * @Time: 16:31
  4919. * @Copyright: copyright (c) 2021 广东七件事集团
  4920. * @param $user_ids
  4921. * @return bool|int|string分销订单
  4922. */
  4923. protected static function getPremiumDistributionCommissionFirst($user_ids)
  4924. {
  4925. $total = 0;
  4926. $wallet_type = 'commission';
  4927. CapitalLog::$capitalType = "{$wallet_type}_frozen";
  4928. $total1 = CapitalLog::find()->where(['user_id' => $user_ids, 'source_table' => 'order_detail','from_type'=>PremiumDistributionEnum::ADDONS_NAME, 'capital_type' => 'first', 'status' => CapitalLog::STATUS_WAIT_SEND])
  4929. ->sum('change_num');
  4930. if ($total1) $total += $total1;
  4931. CapitalLog::$capitalType = "{$wallet_type}";
  4932. $total2 = CapitalLog::find()->where(['user_id' => $user_ids, 'source_table' => 'order_detail','from_type'=>PremiumDistributionEnum::ADDONS_NAME, 'capital_type' => 'first'])
  4933. ->sum('change_num');
  4934. if ($total2) $total += $total2;
  4935. return $total;
  4936. }
  4937. /**
  4938. * @desc:分销订单数量
  4939. * @Author: hua
  4940. * @Date: 2021/11/18
  4941. * @Time: 16:31
  4942. * @Copyright: copyright (c) 2021 广东七件事集团
  4943. * @param $user_ids
  4944. * @param $capital_type
  4945. * @return bool|int|string分销订单
  4946. */
  4947. protected static function getDistributionCommissionOrderNum($user_ids, $capital_type)
  4948. {
  4949. $counts = 0;
  4950. $wallet_type = 'commission';
  4951. CapitalLog::$capitalType = "{$wallet_type}_frozen";
  4952. $query = CapitalLog::find()->where(['user_id' => $user_ids, 'source_table' => 'order_detail', 'from_type' => DistributionEnum::ADDONS_NAME, 'status' => CapitalLog::STATUS_WAIT_SEND]);
  4953. if (!empty($capital_type)) $query->andWhere(['capital_type' => $capital_type]);
  4954. $frozen_counts = $query->count();
  4955. if ($frozen_counts) $counts += $frozen_counts;
  4956. CapitalLog::$capitalType = "{$wallet_type}";
  4957. $query = CapitalLog::find()->where(['user_id' => $user_ids, 'source_table' => 'order_detail', 'from_type' => DistributionEnum::ADDONS_NAME,]);
  4958. if (!empty($capital_type)) $query->andWhere(['capital_type' => $capital_type]);
  4959. $no_frozen_counts = $query->count();
  4960. if ($no_frozen_counts) $counts += $no_frozen_counts;
  4961. return $counts;
  4962. }
  4963. /**
  4964. * @desc:特级分销,分销订单数量
  4965. * @Author: hua
  4966. * @Date: 2021/11/18
  4967. * @Time: 16:31
  4968. * @Copyright: copyright (c) 2021 广东七件事集团
  4969. * @param $user_ids
  4970. * @param $capital_type
  4971. * @return bool|int|string分销订单
  4972. */
  4973. protected static function getPremiumDistributionCommissionOrderNum($user_ids, $capital_type)
  4974. {
  4975. $counts = 0;
  4976. $wallet_type = 'commission';
  4977. CapitalLog::$capitalType = "{$wallet_type}_frozen";
  4978. $query = CapitalLog::find()->where(['user_id' => $user_ids, 'source_table' => 'order_detail', 'from_type' => PremiumDistributionEnum::ADDONS_NAME, 'status' => CapitalLog::STATUS_WAIT_SEND]);
  4979. if (!empty($capital_type)) $query->andWhere(['capital_type' => $capital_type]);
  4980. $frozen_counts = $query->count();
  4981. if ($frozen_counts) $counts += $frozen_counts;
  4982. CapitalLog::$capitalType = "{$wallet_type}";
  4983. $query = CapitalLog::find()->where(['user_id' => $user_ids, 'source_table' => 'order_detail', 'from_type' => PremiumDistributionEnum::ADDONS_NAME,]);
  4984. if (!empty($capital_type)) $query->andWhere(['capital_type' => $capital_type]);
  4985. $no_frozen_counts = $query->count();
  4986. if ($no_frozen_counts) $counts += $no_frozen_counts;
  4987. return $counts;
  4988. }
  4989. /**
  4990. * @desc:分销订单数量按user_id分组
  4991. * @Author: hua
  4992. * @Date: 2021/11/18
  4993. * @Time: 16:34
  4994. * @Copyright: copyright (c) 2021 广东七件事集团
  4995. * @param $user_ids
  4996. * @return array
  4997. */
  4998. protected static function getDistributionCommissionOrderNumGroupByUserId($user_ids)
  4999. {
  5000. $wallet_type = 'commission';
  5001. CapitalLog::$capitalType = "{$wallet_type}_frozen";
  5002. $frozen_list = CapitalLog::find()->where(['user_id' => $user_ids, 'source_table' => 'order_detail','from_type'=>DistributionEnum::ADDONS_NAME, 'status' => CapitalLog::STATUS_WAIT_SEND])
  5003. ->select('user_id,count(*) as counts')->all();
  5004. CapitalLog::$capitalType = "{$wallet_type}";
  5005. $no_frozen_list = CapitalLog::find()->where(['user_id' => $user_ids, 'source_table' => 'order_detail','from_type'=>DistributionEnum::ADDONS_NAME])
  5006. ->select('user_id,count(*) as counts')->all();
  5007. return ['frozen_list' => $frozen_list, 'no_frozen_list' => $no_frozen_list];
  5008. }
  5009. public static function batchFunc($params, $user_id, $offset, $limit, $callback, &$num)
  5010. {
  5011. list($tree, $parent_deep, $all_tree, $all_tree_arr) = UserPartitionRelationship::getTree($user_id);
  5012. while ($list = UserPartitionRelationship::batchGetTeamData($offset, $limit, $tree, $params)) {
  5013. $user_id_arr = array_column($list, 'user_id');
  5014. $result = call_user_func($callback, $user_id_arr);
  5015. if (empty($result)) $result = 0;
  5016. $num += $result;
  5017. $offset++;
  5018. }
  5019. }
  5020. //购买指定商品
  5021. public static function buyGoodsUpgrade($mall_id, $order, $user_id, $order_by, $buy_type, $order_status)
  5022. {
  5023. $order_id = $order['id'];
  5024. $user = User::findOne($user_id);
  5025. $params = [];
  5026. $where = [];
  5027. $where[] = ['mall_id' => $mall_id];
  5028. $where[] = ['order_id' => $order_id];
  5029. $where[] = ['user_id' => $user_id];
  5030. $params['where'] = $where;
  5031. $order_detail_list = OrderDetail::lists($params);
  5032. $buy_goods_id_arr = array_column($order_detail_list, 'goods_id');
  5033. $before_level = $user['level'];
  5034. $params = [];
  5035. $where = [];
  5036. $where[] = ['mall_id' => $mall_id];
  5037. $where[] = ['status' => StatusEnum::ENABLED];
  5038. $where[] = ['>', 'level', $user->level];
  5039. $params['where'] = $where;
  5040. $params['order'] = $order_by;
  5041. $params['with'] = ['upgradeCondition' => function ($query) {
  5042. $query->where(['status' => StatusEnum::ENABLED]);
  5043. }];
  5044. $user_level_list = UserLevel::lists($params);
  5045. $can_upgrade_level = $upgrade_user_id = 0;
  5046. $flag = false;
  5047. //开启购买升级商品
  5048. if (!empty($user_level_list)) {
  5049. foreach ($user_level_list as $level_arr) {
  5050. $can_upgrade_level = $level_arr['level'];
  5051. //开启购买升级商品
  5052. if ($level_arr['upgradeCondition']['upgrade_type_goods'] && $level_arr['upgradeCondition']['is_auto_upgrade']) {
  5053. $goods_id_arr = json_decode($level_arr['upgradeCondition']['goods_ids'], true);
  5054. $level_goods_list = json_decode($level_arr['upgradeCondition']['goods_list'], true);
  5055. $condition_num_map = !is_array($level_goods_list) ? [] : array_column($level_goods_list, 'condition_num', 'id');
  5056. $extParams = [
  5057. 'is_custom_condition_num' => $level_arr['upgradeCondition']['is_custom_condition_num'] ?? 0,
  5058. 'buy_goods_type' => $level_arr['upgradeCondition']['buy_goods_type'],
  5059. 'condition_num_map' => $condition_num_map,
  5060. 'mall_id' => $mall_id,
  5061. 'user_id' => $user_id,
  5062. ];
  5063. $res = UpgradeCondition::buyGoods($level_arr['upgradeCondition']['goods_type'], $buy_goods_id_arr, $goods_id_arr, $extParams);
  5064. if ($res) {
  5065. //购买升级商品触发升级:0订单完成 1下单完成
  5066. if ($level_arr['upgradeCondition']['buy_goods_type'] == $buy_type && $order['order_status'] == $order_status) {
  5067. $flag = true;
  5068. break;
  5069. }
  5070. }
  5071. }
  5072. }
  5073. if ($flag) {
  5074. // 记录升级日志
  5075. $upgrade_log_obj = new UserLevelUpgradeLog();
  5076. $upgrade_log_obj->mall_id = $mall_id;
  5077. $upgrade_log_obj->user_id = $user_id;
  5078. $upgrade_log_obj->before_level = $before_level;
  5079. $upgrade_log_obj->after_level = $can_upgrade_level;
  5080. $upgrade_log_obj->upgrade_type = LevelUpgradeLogEnum::GOODS_UPGRADE;
  5081. $upgrade_log_obj->order_id = $order_id;
  5082. $upgrade_log_obj->upgrade_condition = $goods_id_arr ?? [];
  5083. $upgrade_log_obj->save();
  5084. \Yii::$app->services->statistics->global->set($mall_id, ['upgrade_level' => [$can_upgrade_level => 1]]);
  5085. $user->level = $can_upgrade_level;
  5086. $user->upgrade_level_at = time();
  5087. if (!$user->save()) {
  5088. \Yii::error("{user_id:$user_id}-{order_id:$order_id}" . ',会员升级,失败');
  5089. return false;
  5090. }
  5091. // 触发升级礼包
  5092. if (MallAddons::isInstall($mall_id, AddonsEnum::ADDONS_NAME_UPGRADEGIFT)) {
  5093. $gift['mall_id'] = $mall_id;
  5094. $gift['user_ids'] = $user_id;
  5095. $gift['gift_type'] = GiftEnum::GIFT_TYPE_USER;
  5096. // 事件触发会导致重发发送礼包(原因不明),所以改为直接异步队列处理
  5097. \Yii::$app->services->rabbitMq->push(RabbitMqEnum::EXCHANGE_TASK, RabbitMqEnum::TASK_QUEUE, $gift, UpgradeGiftListener::class, 'async_handle');
  5098. }
  5099. // 升级成功后
  5100. $event = new UserUpgradeAfterEvent($mall_id);
  5101. $data = ['after_level' => $can_upgrade_level, 'before_level' => $before_level, 'mall_id' => $mall_id, 'user_id' => $user_id, 'order_id' => $order_id, 'upgrade_type' => 'buyGoods'];
  5102. \Yii::$app->services->events->dispatch($event, $data, $event->listeners);
  5103. }
  5104. }
  5105. }
  5106. //购买指定门店商品
  5107. public static function buyStoreGoodsUpgrade($mall_id, $order, $user_id, $order_by, $buy_type, $order_status)
  5108. {
  5109. $order_id = $order['id'];
  5110. $user = User::findOne($user_id);
  5111. $params = [];
  5112. $where = [];
  5113. $where[] = ['mall_id' => $mall_id];
  5114. $where[] = ['order_id' => $order_id];
  5115. $where[] = ['user_id' => $user_id];
  5116. $params['where'] = $where;
  5117. $order_detail_list = StoreOrderDetail::lists($params);
  5118. $buy_goods_id_arr = array_column($order_detail_list, 'goods_id');
  5119. $before_level = $user['level'];
  5120. $params = [];
  5121. $where = [];
  5122. $where[] = ['mall_id' => $mall_id];
  5123. $where[] = ['status' => StatusEnum::ENABLED];
  5124. $where[] = ['>', 'level', $user->level];
  5125. $params['where'] = $where;
  5126. $params['order'] = $order_by;
  5127. $params['with'] = ['upgradeCondition' => function ($query) {
  5128. $query->where(['status' => StatusEnum::ENABLED]);
  5129. }];
  5130. $user_level_list = UserLevel::lists($params);
  5131. $can_upgrade_level = 0;
  5132. $flag = false;
  5133. //开启购买升级商品
  5134. if (!empty($user_level_list)) {
  5135. foreach ($user_level_list as $level_arr) {
  5136. $can_upgrade_level = $level_arr['level'];
  5137. //开启购买升级商品
  5138. if ($level_arr['upgradeCondition']['store_upgrade_type_goods'] && $level_arr['upgradeCondition']['is_auto_upgrade']) {
  5139. $goods_id_arr = json_decode($level_arr['upgradeCondition']['store_goods_ids'], true);
  5140. $res = UpgradeCondition::buyGoods($level_arr['upgradeCondition']['store_goods_type'], $buy_goods_id_arr, $goods_id_arr);
  5141. if ($res) {
  5142. //购买升级商品触发升级:0订单完成 1下单完成
  5143. if ($level_arr['upgradeCondition']['store_buy_goods_type'] == $buy_type && $order['order_status'] == $order_status) {
  5144. $flag = true;
  5145. break;
  5146. }
  5147. }
  5148. }
  5149. }
  5150. if ($flag) {
  5151. // 记录升级日志
  5152. $upgrade_log_obj = new UserLevelUpgradeLog();
  5153. $upgrade_log_obj->mall_id = $mall_id;
  5154. $upgrade_log_obj->user_id = $user_id;
  5155. $upgrade_log_obj->before_level = $before_level;
  5156. $upgrade_log_obj->after_level = $can_upgrade_level;
  5157. $upgrade_log_obj->upgrade_type = LevelUpgradeLogEnum::STORE_GOODS_UPGRADE;
  5158. $upgrade_log_obj->order_id = $order_id;
  5159. $upgrade_log_obj->upgrade_condition = $goods_id_arr ?? [];
  5160. $upgrade_log_obj->save();
  5161. \Yii::$app->services->statistics->global->set($mall_id, ['upgrade_level' => [$can_upgrade_level => 1]]);
  5162. $user->level = $can_upgrade_level;
  5163. $user->upgrade_level_at = time();
  5164. if (!$user->save()) {
  5165. var_dump("{user_id:$user_id}-{store_order_id:$order_id}" . ',会员升级,失败');
  5166. return false;
  5167. }
  5168. // 触发升级礼包
  5169. if (MallAddons::isInstall($mall_id, AddonsEnum::ADDONS_NAME_UPGRADEGIFT)) {
  5170. $gift['mall_id'] = $mall_id;
  5171. $gift['user_ids'] = $user_id;
  5172. $gift['gift_type'] = GiftEnum::GIFT_TYPE_USER;
  5173. // 事件触发会导致重发发送礼包(原因不明),所以改为直接异步队列处理
  5174. \Yii::$app->services->rabbitMq->push(RabbitMqEnum::EXCHANGE_TASK, RabbitMqEnum::TASK_QUEUE, $gift, UpgradeGiftListener::class, 'async_handle');
  5175. }
  5176. // 升级成功后
  5177. $event = new UserUpgradeAfterEvent($mall_id);
  5178. $data = ['after_level' => $can_upgrade_level, 'before_level' => $before_level, 'mall_id' => $mall_id, 'user_id' => $user_id, 'order_id' => $order_id, 'upgrade_type' => 'buyStoreGoods'];
  5179. \Yii::$app->services->events->dispatch($event, $data, $event->listeners);
  5180. }
  5181. }
  5182. }
  5183. //购买指定分类
  5184. public static function buyGoodsCateUpgrade($mall_id, $order, $user_id, $order_by, $buy_type, $order_status)
  5185. {
  5186. $order_id = $order['id'];
  5187. $user = User::findOne($user_id);
  5188. $params = [];
  5189. $where = [];
  5190. $where[] = ['mall_id' => $mall_id];
  5191. $where[] = ['order_id' => $order_id];
  5192. $where[] = ['user_id' => $user_id];
  5193. $params['where'] = $where;
  5194. $order_detail_list = OrderDetail::lists($params);
  5195. $buy_goods_id_arr = array_column($order_detail_list, 'goods_id');
  5196. $cate_relate_list = GoodsCateRelate::lists([
  5197. 'where' => [
  5198. ['goods_id' => $buy_goods_id_arr],
  5199. ],
  5200. ]);
  5201. $buy_cate_id_arr = array_column($cate_relate_list, 'cate_id');
  5202. $before_level = $user['level'];
  5203. $params = [];
  5204. $where = [];
  5205. $where[] = ['mall_id' => $mall_id];
  5206. $where[] = ['status' => StatusEnum::ENABLED];
  5207. $where[] = ['>', 'level', $user->level];
  5208. $params['where'] = $where;
  5209. $params['order'] = $order_by;
  5210. $params['with'] = ['upgradeCondition' => function ($query) {
  5211. $query->where(['status' => StatusEnum::ENABLED]);
  5212. }];
  5213. $user_level_list = UserLevel::lists($params);
  5214. $can_upgrade_level = $upgrade_user_id = 0;
  5215. $flag = false;
  5216. //开启购买升级分类
  5217. if (!empty($user_level_list)) {
  5218. foreach ($user_level_list as $level_arr) {
  5219. $can_upgrade_level = $level_arr['level'];
  5220. $cate_ids_arr = json_decode($level_arr['upgradeCondition']['cate_ids'], true);
  5221. if(empty($cate_ids_arr)) continue;
  5222. $res = UpgradeCondition::buyGoodsCate($buy_cate_id_arr, $cate_ids_arr);
  5223. if ($res) {
  5224. //购买升级商品触发升级:0订单完成 1支付完成
  5225. if ($level_arr['upgradeCondition']['buy_cate_type'] == $buy_type&&$order['order_status'] == $order_status) {
  5226. $flag = true;
  5227. break;
  5228. }
  5229. }
  5230. }
  5231. if ($flag) {
  5232. \Yii::$app->services->statistics->global->set($mall_id, ['upgrade_level'=>[$can_upgrade_level=>1]]);
  5233. $user->level = $can_upgrade_level;
  5234. $user->upgrade_level_at = time();
  5235. if (!$user->save()) {
  5236. \Yii::error("{user_id:$user_id}-{order_id:$order_id}" . ',会员升级,失败');
  5237. return false;
  5238. }
  5239. // 触发升级礼包
  5240. if (MallAddons::isInstall($mall_id,AddonsEnum::ADDONS_NAME_UPGRADEGIFT)) {
  5241. $gift['mall_id'] = $mall_id;
  5242. $gift['user_ids'] = $user_id;
  5243. $gift['gift_type'] = GiftEnum::GIFT_TYPE_USER;
  5244. // 事件触发会导致重发发送礼包(原因不明),所以改为直接异步队列处理
  5245. \Yii::$app->services->rabbitMq->push(RabbitMqEnum::EXCHANGE_TASK, RabbitMqEnum::TASK_QUEUE, $gift, UpgradeGiftListener::class, 'async_handle');
  5246. }
  5247. // 升级成功后
  5248. $event = new UserUpgradeAfterEvent($mall_id);
  5249. $data = ['after_level' => $can_upgrade_level, 'before_level' => $before_level,'mall_id'=>$mall_id,'user_id'=>$user_id, 'order_id' => $order_id, 'upgrade_type' => 'buyGoodsCate'];
  5250. \Yii::$app->services->events->dispatch($event, $data, $event->listeners);
  5251. }
  5252. }
  5253. return true;
  5254. }
  5255. //获取团队业绩统计方式
  5256. public static function getAchievementType(){
  5257. return [
  5258. [
  5259. 'level'=> 0,
  5260. 'name' => '包含自己业绩',
  5261. ],
  5262. [
  5263. 'level'=> 1,
  5264. 'name' => '不包含自己业绩',
  5265. ]
  5266. ];
  5267. }
  5268. //获取二二复制等级
  5269. public static function getDoubleCopyLevelList($params)
  5270. {
  5271. $data = [];
  5272. if(MallAddons::isInstall($params['mall_id'],AddonsEnum::ADDONS_NAME_DOUBLE_COPY)){
  5273. $data = DoubleCopyLevel::lists(['where' => [['mall_id' => $params['mall_id']], ['status' => StatusEnum::ENABLED]],'select'=>'level,name'], true);
  5274. }
  5275. return $data;
  5276. }
  5277. //获取云仓等级
  5278. public static function getCloudStockLevelList($params){
  5279. $data = [];
  5280. if(MallAddons::isInstall($params['mall_id'],AddonsEnum::ADDONS_NAME_CLOUD_STOCK)){
  5281. $data = CloudStockLevel::lists(['where' => [['mall_id' => $params['mall_id']], ['status' => StatusEnum::ENABLED]],'select'=>'level,name'], true);
  5282. }
  5283. return $data;
  5284. }
  5285. //获取商品条件
  5286. public static function getConditionType(){
  5287. return [
  5288. [
  5289. 'level'=> 0,
  5290. 'name' => '其一',
  5291. ],
  5292. [
  5293. 'level'=> 1,
  5294. 'name' => '所有',
  5295. ]
  5296. ];
  5297. }
  5298. /**
  5299. * @desc:购买门店商品升级
  5300. * @Author: hua
  5301. * @Date: 2021/10/19
  5302. * @Time: 14:51
  5303. * @Copyright: copyright (c) 2021 广东七件事集团
  5304. * @param $user_id
  5305. * @param $goods_type
  5306. * @param $buy_goods_id
  5307. * @param $goods_id_arr
  5308. * @return bool
  5309. */
  5310. public static function buyStoreGoods($goods_type, $buy_goods_id, $goods_id_arr)
  5311. {
  5312. //任意商品
  5313. if ($goods_type == 1) return true;
  5314. //购买指定商品
  5315. if ($goods_type == 2) if (array_intersect($buy_goods_id, $goods_id_arr)) return true;
  5316. return false;
  5317. }
  5318. public static function getIsIncludesSelf()
  5319. {
  5320. return [
  5321. ['key' => 0, 'value' => '不包含自己'],
  5322. ['key' => 1, 'value' => '包含自己'],
  5323. ];
  5324. }
  5325. public static function getWhenSettlement()
  5326. {
  5327. return [
  5328. ['key' => 0, 'value' => '订单完成'],
  5329. ['key' => 1, 'value' => '订单支付'],
  5330. ];
  5331. }
  5332. public static function getSettleAchievement()
  5333. {
  5334. return [
  5335. ['key' => 0, 'value' => '商品利润'],
  5336. ['key' => 1, 'value' => '实付金额'],
  5337. ];
  5338. }
  5339. /**
  5340. * 购买指定商品,商品ID组_______,累计数量达到_______件
  5341. * @param $params
  5342. * @return bool
  5343. */
  5344. protected static function condition609($params)
  5345. {
  5346. $cond = $params['arr'][$params['key']];
  5347. $goods_ids = $cond['value']['goods_ids'] ?? '';
  5348. $goods_num = $cond['value']['goods_num'] ?? '';
  5349. if ($goods_ids) {
  5350. $goods_ids = explode(',', $goods_ids);
  5351. $user_id = $params['user_id'];
  5352. $sum = OrderDetail::find()->where(['user_id' => $user_id, 'goods_id' => $goods_ids])
  5353. ->andWhere(['order_status' => [OrderStatusEnum::PAY, OrderStatusEnum::SHIPMENTS, OrderStatusEnum::SING, OrderStatusEnum::ACCOMPLISH]])->sum('num');
  5354. if ($sum >= $goods_num) return true;
  5355. }
  5356. return false;
  5357. }
  5358. protected static function condition700($params)
  5359. {
  5360. return static::upgrade700(
  5361. $params['condition_data'][$params['key']]['setting'][0]['name'],
  5362. $params['condition_data'][$params['key']]['setting'][1]['name'],
  5363. $params['condition_data'][$params['key']]['setting'][2]['name'],
  5364. 'addons\ServeBonus\common\models\ServeBonus',
  5365. $params['user_id'],
  5366. $params['arr'],
  5367. $params['key']
  5368. );
  5369. }
  5370. // 团队满足____条线内,达到____个成员,晋升____以上等级
  5371. public static function upgrade700($name1, $name2, $name3, $model_class, $user_id, $arr, $key)
  5372. {
  5373. $is_bool = false;
  5374. $direct_child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1); //查询直推下级
  5375. $team_num = $arr[$key]['value'][$name1];//N条
  5376. if (count($direct_child_ids) < $team_num) return $is_bool;
  5377. $level_num = $arr[$key]['value'][$name2]; //N个
  5378. $level = $arr[$key]['value'][$name3];
  5379. $num_level = [];
  5380. foreach ($direct_child_ids as $direct_child_id) {
  5381. $temp_level_num = 0;
  5382. $direct_child_level = $model_class::find()->where(['user_id' => $direct_child_id, 'status' => [StatusEnum::DISABLED, StatusEnum::ENABLED]])->andWhere(['>=', 'level', $level])->one();
  5383. if ($direct_child_level) {
  5384. $temp_level_num++;
  5385. }
  5386. $offset = 1;
  5387. $limit = 1000;
  5388. $params['select'] = 'user_id';
  5389. list($tree, $parent_deep, $all_tree, $all_tree_arr) = UserPartitionRelationship::getTree($direct_child_id);//查询直推下级的所有下级
  5390. while ($list = UserPartitionRelationship::batchGetTeamData($offset, $limit, $tree, $params)){
  5391. $child_ids = array_column($list, 'user_id');
  5392. $counts = $model_class::find()->where(['user_id' => $child_ids, 'status' => [StatusEnum::DISABLED, StatusEnum::ENABLED]])->andWhere(['>=', 'level', $level])->count();
  5393. if(!empty($counts)){
  5394. $temp_level_num += $counts;
  5395. }
  5396. $offset++;
  5397. }
  5398. if ($temp_level_num > 0) {
  5399. array_push($num_level, $temp_level_num);
  5400. }
  5401. if (count($num_level) >= $team_num) {
  5402. rsort($num_level);
  5403. $sum = array_sum(array_slice($num_level, 0, $team_num));
  5404. if ($sum >= $level_num) {
  5405. // 如果前N条线内达到N个成员,晋升N以上等级,则返回true
  5406. return true;
  5407. }
  5408. }
  5409. }
  5410. return false;
  5411. }
  5412. protected static function condition701($params)
  5413. {
  5414. $cond = $params['arr'][$params['key']];
  5415. $is_include_yourself = $cond['value']['is_include_yourself'];
  5416. $is_when_settlement = $cond['value']['is_when_settlement'];
  5417. $total_performance = $cond['value']['total_performance'];
  5418. $target_big_performance = $cond['value']['max_performance'];
  5419. $target_small_performance = $cond['value']['min_performance'];
  5420. $user_id = $params['user_id'];
  5421. $statistics = UserTeamStatistics::getOne([['user_id' => $user_id], ['status' => StatusEnum::ENABLED]], true);
  5422. $user_statistics = UserStatisticsTotal::getOne([['user_id' => $user_id], ['status' => StatusEnum::ENABLED]], true);
  5423. if (empty($statistics)) return false;
  5424. $real_total_performance = $is_when_settlement == 0 ? $statistics['team_finish_order_price_total'] : $statistics['user_team_order_price_total'];
  5425. $real_total_performance = $is_include_yourself ? $real_total_performance + ($is_when_settlement == 0 ? $user_statistics['finish_order_money'] : $user_statistics['pay_money']) : $real_total_performance;
  5426. if ($real_total_performance < $total_performance) return false;
  5427. //获取下级团队
  5428. $user_id_arr = UserPartitionRelationship::getChildIdArr($user_id);
  5429. //获取下级团队业绩数据
  5430. $team_statistics = UserTeamStatistics::lists([
  5431. 'where' => [
  5432. ['user_id' => $user_id_arr],
  5433. ['status' => StatusEnum::ENABLED]
  5434. ],
  5435. 'index' => 'user_id'
  5436. ]);
  5437. $team_user_statistics = UserStatisticsTotal::lists([
  5438. 'where' => [
  5439. ['user_id' => $user_id_arr],
  5440. ['status' => StatusEnum::ENABLED]
  5441. ],
  5442. 'index' => 'user_id'
  5443. ]);
  5444. $pay_performance_arr = [];
  5445. $accomplish_performance_arr = [];
  5446. //累计团队业绩
  5447. foreach ($team_statistics as $key => $value) {
  5448. $pay_performance_arr[] = bcadd($value['user_team_order_price_total'], $team_user_statistics[$value['user_id']]['pay_money'], 2);
  5449. $accomplish_performance_arr[] = bcadd($value['team_finish_order_price_total'], $team_user_statistics[$value['user_id']]['finish_order_money'], 2);
  5450. }
  5451. //获取团队业绩最大值
  5452. $accomplish_big_market = max($accomplish_performance_arr);
  5453. $pay_big_market = max($pay_performance_arr);
  5454. $real_big_performance = $is_when_settlement == 0 ? $accomplish_big_market : $pay_big_market;
  5455. if ($real_big_performance < $target_big_performance) return false;
  5456. $real_total_performance = $is_when_settlement == 0 ? $statistics['team_finish_order_price_total'] : $statistics['user_team_order_price_total'];
  5457. $real_small_performance = 0;
  5458. if ($real_big_performance > 0) $real_small_performance = $real_total_performance - $real_big_performance;
  5459. return $real_small_performance >= $target_small_performance;
  5460. }
  5461. protected static function condition702($params)
  5462. {
  5463. return static::upgrade700(
  5464. $params['condition_data'][$params['key']]['setting'][0]['name'],
  5465. $params['condition_data'][$params['key']]['setting'][1]['name'],
  5466. $params['condition_data'][$params['key']]['setting'][2]['name'],
  5467. 'addons\AgentDividend\common\models\Agent',
  5468. $params['user_id'],
  5469. $params['arr'],
  5470. $params['key']
  5471. );
  5472. }
  5473. protected static function condition703($params)
  5474. {
  5475. if (!MallAddons::isInstall($params['mall_id'], AddonsEnum::ADDONS_NAME_CLOUD_STOCK)) return false;
  5476. $cond = $params['arr'][$params['key']];
  5477. $user_id = $params['user_id'];
  5478. $nums = $cond['value']['num'] ?? 0;
  5479. $pay_money = CloudStockFillOrder::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED])->sum('pay_money');
  5480. $pay_money = $pay_money ?? 0;
  5481. $after_distribution_price = CloudStockBuyingOrder::find()->where(['user_id' => $user_id, 'status' => StatusEnum::ENABLED, 'is_return' => 0])->sum('after_distribution_price');
  5482. $after_distribution_price = $after_distribution_price ?? 0;
  5483. $after_distribution_price = $after_distribution_price + $pay_money;
  5484. if ($after_distribution_price >= $nums) return true;
  5485. return false;
  5486. }
  5487. protected static function condition704($params)
  5488. {
  5489. return ConditionUpgradeLogic::condition704($params);
  5490. }
  5491. protected static function condition705($params)
  5492. {
  5493. return ConditionUpgradeLogic::condition705($params);
  5494. }
  5495. /**
  5496. * @desc:条件118
  5497. * 团队下____条____个____等级
  5498. * @Author: whq
  5499. * @Date: 2025/6/26
  5500. * @Time: 15:10
  5501. * @param $params
  5502. * @return bool
  5503. */
  5504. protected static function condition118($params)
  5505. {
  5506. return static::upgrade118(
  5507. $params['condition_data'][$params['key']]['setting'][0]['name'],
  5508. $params['condition_data'][$params['key']]['setting'][1]['name'],
  5509. $params['condition_data'][$params['key']]['setting'][2]['name'],
  5510. $params['user_id'],
  5511. $params['arr'],
  5512. $params['key']
  5513. );
  5514. }
  5515. /**
  5516. * 团队下____条____个____等级 条件118
  5517. * @param $team_num
  5518. * @param $level_num
  5519. * @param $agent_level
  5520. * @param $user_id
  5521. * @param array $arr
  5522. * @param string $key
  5523. * @return bool
  5524. */
  5525. public static function upgrade118($team_num, $level_num,$agent_level, $user_id, $arr = [], $key = '')
  5526. {
  5527. $direct_child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1); //查询直推下级
  5528. $teamNum = $arr[$key]['value'][$team_num];//N条
  5529. if (count($direct_child_ids) < $teamNum) return false;
  5530. $levelNum = $arr[$key]['value'][$level_num]; //N个
  5531. $level = $arr[$key]['value'][$agent_level];
  5532. $isNums = 0;
  5533. foreach ($direct_child_ids as $direct_child_id) {
  5534. $count = 0;
  5535. $userInfo = User::getOne([['id' => $direct_child_id]], true); //用户自己
  5536. if($userInfo['level'] == $level){
  5537. $count++;
  5538. if($count >= $levelNum) {
  5539. $isNums++;
  5540. continue;
  5541. }
  5542. }
  5543. $count += User::getTeamlevelCount($direct_child_id,$level);
  5544. if($count < $levelNum) continue;
  5545. $isNums++;
  5546. if($isNums >= $teamNum) return true;
  5547. }
  5548. if ($isNums >= $teamNum) return true;
  5549. return false;
  5550. }
  5551. protected static function condition119($params)
  5552. {
  5553. $cond = $params['arr'][$params['key']];
  5554. $is_include_yourself = $cond['value']['is_include_yourself'];
  5555. $is_when_settlement = $cond['value']['is_when_settlement'];
  5556. $total_performance = $cond['value']['total_performance'];
  5557. $target_big_performance = $cond['value']['max_performance'];
  5558. $target_small_performance = $cond['value']['min_performance'];
  5559. $user_id = $params['user_id'];
  5560. $statistics = UserTeamProfitStatistics::getOne([
  5561. ['user_id' => $user_id]
  5562. ], true);
  5563. if (empty($statistics)) return false;
  5564. //判断用户总业绩
  5565. $field = 'id,user_id';
  5566. if ($is_when_settlement == 1) {
  5567. $orderBy = 'team_order_pay_achievement desc';
  5568. $field .= ',team_order_pay_achievement as real_performance';
  5569. if ($is_include_yourself == 1) {
  5570. $real_total_performance = $statistics['team_order_pay_achievement'];
  5571. } else {
  5572. $real_total_performance = $statistics['children_order_pay_achievement'];
  5573. }
  5574. } else {
  5575. $orderBy = 'team_order_finish_achievement desc';
  5576. $field .= ',team_order_finish_achievement as real_performance';
  5577. if ($is_include_yourself == 1) {
  5578. $real_total_performance = $statistics['team_order_finish_achievement'];
  5579. } else {
  5580. $real_total_performance = $statistics['children_order_finish_achievement'];
  5581. }
  5582. }
  5583. //判断总业绩是否达标
  5584. if ($real_total_performance < $total_performance) return false;
  5585. //获取直推用户id
  5586. $direct_child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1);
  5587. $real_big_performance = 0;
  5588. $real_small_performance = 0;
  5589. if (!empty($direct_child_ids)) {
  5590. //获取大小市场业绩
  5591. $team_profit_statistics = UserTeamProfitStatistics::lists([
  5592. 'where' => [
  5593. ['user_id' => $direct_child_ids],
  5594. ],
  5595. 'select' => $field,
  5596. 'order' => $orderBy,
  5597. 'limit' => 2,
  5598. ]);
  5599. if (!empty($team_profit_statistics)) {
  5600. //获取大市场业绩
  5601. $real_big_performance = $team_profit_statistics[0]['real_performance']??0;
  5602. //最大的小市场业绩
  5603. $real_small_performance = $team_profit_statistics[1]['real_performance']??0;
  5604. }
  5605. }
  5606. if ($real_big_performance < $target_big_performance) return false;
  5607. if ($real_small_performance < $target_small_performance) return false;
  5608. return true;
  5609. }
  5610. /**
  5611. * key 为56 的配置参数
  5612. * @return array[]
  5613. */
  5614. public static function getPersonalCheckbox56() {
  5615. return [
  5616. ['value' => 1, 'label' => '平台'],
  5617. ['value' => 2, 'label' => '多商户'],
  5618. ];
  5619. }
  5620. /**
  5621. * @desc:条件120
  5622. * 指定商品,个人累计达到___元、小区业绩达到___元升级
  5623. * @Author: hua
  5624. * @Date: 2021/10/23
  5625. * @Time: 14:16
  5626. * @Copyright: copyright (c) 2021 广东七件事集团
  5627. * @param $params
  5628. * @return bool
  5629. */
  5630. protected static function condition120($params)
  5631. {
  5632. $cond = $params['arr'][$params['key']];
  5633. return static::upgrade120(
  5634. $cond,
  5635. $params['mall_id'],
  5636. $params['user_id'],
  5637. );
  5638. }
  5639. public static function getSettlePrice()
  5640. {
  5641. return [
  5642. ['key' => 0, 'value' => '实付金额'],
  5643. ['key' => 1, 'value' => '商品售价'],
  5644. ];
  5645. }
  5646. public static function upgrade120($cond, $mall_id, $user_id)
  5647. {
  5648. $set_personal_achievement = $cond['value']['personal_achievement'];
  5649. $set_min_performance = $cond['value']['min_performance'];
  5650. $set_settle_price = $cond['value']['settle_price'];
  5651. //统计商品的个人业绩
  5652. $user_achievement = UserTeamProfitStatistics::find()
  5653. ->where([
  5654. 'mall_id' => $mall_id,
  5655. 'user_id' => $user_id,
  5656. ])
  5657. ->one();
  5658. if ($set_settle_price == 1) {
  5659. //商品售价
  5660. $personal_achievement = $user_achievement['team_order_pay_goods_achievement'] - $user_achievement['children_order_pay_goods_achievement'];
  5661. } else {
  5662. //商品实付
  5663. $personal_achievement = $user_achievement['team_order_pay_achievement'] - $user_achievement['children_order_pay_achievement'];
  5664. }
  5665. //判断个人业绩是否达标
  5666. if ($set_personal_achievement > $personal_achievement) {
  5667. return false;
  5668. }
  5669. //判断小区业绩是否达标
  5670. $field = 'id,user_id';
  5671. if ($set_settle_price == 1) {
  5672. $orderBy = 'team_order_pay_goods_achievement desc';
  5673. $field .= ',team_order_pay_goods_achievement as real_performance';
  5674. } else {
  5675. $orderBy = 'team_order_pay_achievement desc';
  5676. $field .= ',team_order_pay_achievement as real_performance';
  5677. }
  5678. //获取直推用户id
  5679. $direct_child_ids = UserPartitionRelationship::getChildIdArr($user_id, 1);
  5680. $real_small_performance = 0;
  5681. if (!empty($direct_child_ids)) {
  5682. //获取大小区业绩
  5683. $team_profit_statistics = UserTeamProfitStatistics::lists([
  5684. 'where' => [
  5685. ['user_id' => $direct_child_ids],
  5686. ],
  5687. 'select' => $field,
  5688. 'order' => $orderBy,
  5689. ]);
  5690. if (!empty($team_profit_statistics)) {
  5691. //小区业绩 = 除了大区的所有的业绩
  5692. //先去掉大区
  5693. array_shift($team_profit_statistics);
  5694. foreach ($team_profit_statistics as $statistic) {
  5695. $real_small_performance += $statistic['real_performance'];
  5696. }
  5697. }
  5698. }
  5699. if ($set_min_performance > $real_small_performance) {
  5700. return false;
  5701. }
  5702. return true;
  5703. }
  5704. }